1084 Commits
v4.2.4 ... pg

Author SHA1 Message Date
misworga831
c813ed0062 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2025-10-11 11:49:51 +09:00
misworga831
f658d43a5a fix: 添加空指针检查以优化日志记录逻辑 (pg)
- 在日志切面中为方法返回值和请求对象增加空指针检查,确保稳定性。
- 调整日志记录逻辑以避免潜在异常。
2025-10-11 11:49:36 +09:00
chc
fe0b9c37a4 获取订单货物售后数量调整,以防止申请售后未审核依然取消订单 2025-09-24 15:20:19 +08:00
chc
28cc0617c3 获取订单货物售后数量调整,以防止申请售后未审核依然取消订单 2025-09-23 18:06:40 +08:00
chc
f2cb6b56ea 商品审核swagger 2025-09-23 13:31:11 +08:00
chc
81b7da07f4 sql增加 2025-09-12 16:53:45 +08:00
OceansDeep
db3f775c50 !367 修复商品索引无效促销活动清理逻辑
Merge pull request !367 from 羚羊跳/N/A
2025-09-11 11:47:30 +00:00
羚羊跳
93a45319ac update framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java.
fix: 修复商品索引无效促销活动清理逻辑,方法(executeCleanInvalidPromotions)
- 修复分页查询起始索引错误,从1改为0,避免跳过第一页数据
- 修复促销活动清洗后未同步更新到索引的问题,清洗后的promotionMap需重新序列化并设置回goodsIndex

Signed-off-by: 羚羊跳 <zxc2399897@vip.qq.com>
2025-09-11 08:49:49 +00:00
pikachu1995@126.com
7627614284 feat(order): 添加订单数量统计功能
- 新增 OrderNumVO 类用于订单数量统计
- 在 OrderService 接口中添加 getOrderNumVO 方法
- 在 OrderServiceImpl 类中实现 getOrderNumVO 方法
- 在 OrderMapper 接口中添加 getOrderNumVO SQL 查询
- 在 OrderManagerController 和 OrderStoreController 中添加获取订单数量的 API 接口- 优化物流公司的获取方式,
2025-08-29 11:37:41 +08:00
pikachu1995@126.com
ca5887028a feat(order): 添加订单数量统计功能
- 新增 OrderNumVO 类用于订单数量统计
- 在 OrderService 接口中添加 getOrderNumVO 方法
- 在 OrderServiceImpl 类中实现 getOrderNumVO 方法
- 在 OrderMapper 接口中添加 getOrderNumVO SQL 查询
- 在 OrderManagerController 和 OrderStoreController 中添加获取订单数量的 API 接口- 优化物流公司的获取方式,
2025-08-28 11:22:32 +08:00
pikachu1995@126.com
1a3736fd29 refactor(framework): 优化代码中的空值判断和字符串处理- 使用 CollUtil.isNotEmpty() 替代空集合判断
- 使用 CharSequenceUtil.isNotEmpty() 替代空字符串判断
- 使用 Objects.nonNull() 替代对象非空判断- 优化部分代码结构以提高可读性
2025-08-28 09:34:39 +08:00
pikachu1995@126.com
09d00260f6 feat(goods): 添加商品数量统计接口并优化商品查询
- 新增 getGoodsNumVO 接口,用于获取不同状态的商品数量统计
- 在 GoodsSearchParams 中添加 goodsStatus 字段,用于筛选商品状态
- 修改 queryByParams 方法,支持按商品状态进行筛选
- 新增 GoodsNumVO 类,用于返回商品数量统计结果
-优化商品查询性能,通过聚合查询一次性获取所有状态的商品数量
2025-08-27 16:15:56 +08:00
pikachu1995@126.com
2e019ef933 feat(order): 优化订单搜索功能
- 在订单查询中增加用户
2025-08-27 10:12:50 +08:00
pikachu1995@126.com
6acc99c7cf perf(es): 优化品牌聚合查询和网络连接配置
-增加 connectionRequestTimeout 配置,设置为 1000 毫秒
-调整 maxConnPerRoute 为 50,maxConnTotal为 200
-限制 terms 聚合 size,防止内存压力
- 优化品牌聚合查询逻辑,提高查询效率和准确性
2025-08-26 19:33:15 +08:00
pikachu1995@126.com
b57e7813d6 feat(statistics): 添加营业概览统计功能
- 新增营业概览、收款构成、营业构成等统计接口和页面
- 实现订单数、营业额、优惠金额等统计指标
- 添加虚拟发货的物流方式
- 优化订单和充值相关查询方法
2025-08-26 17:32:16 +08:00
OceansDeep
09e6f4a1a1 !366 docs: 为 README.md 中的徽章添加链接 (pg)
Merge pull request !366 from OceansDeep/pg
2025-06-20 02:19:44 +00:00
misworga831
872bb220dc docs: 为 README.md 中的徽章添加链接 (pg) 2025-06-20 10:18:09 +08:00
misworga831
2498e57600 docs: 重构README.md,完善项目介绍与功能说明 (pg)
- 更新项目标题为“Lilishop B2B2C 商城系统”
- 新增GitHub、Gitee、Spring Boot等徽章展示
- 重新组织项目简介,突出技术栈和架构特点
- 详细列出平台管理端与商家端功能模块
- 优化快速开始、数据库初始化及在线演示说明
- 补充技术架构图及前后端技术栈说明
- 增加开源协议与商业授权说明
- 丰富社区支持与贡献内容介绍
- 调整图片大小及格式,提升文档可读性
2025-06-20 10:14:22 +08:00
misworga831
cfbb673387 feat: 添加项目概述、技术架构、开发指南和部署指南文档 2025-06-20 09:57:16 +08:00
chc
05db6501f7 优惠券价格未渲染,但是优惠券却使用问题 2025-06-03 10:52:01 +08:00
chc
a5aa090f4a 使用优惠券时的价格获取方式修改 2025-05-28 10:02:13 +08:00
chc
09aae17a02 渲染优惠券时,增加一次遍历,确保优惠券一定可以正常使用 2025-05-27 19:31:13 +08:00
chc
7f5739f89b 查询bill时间参数错误问题 2025-05-16 14:36:27 +08:00
chc
131d4eb156 config下的application中服务IP地址更换为127.0.0.1 2025-05-08 14:26:03 +08:00
chc
ffa0b0db30 h5支付没有传入sceneInfo问题 2025-04-02 11:00:03 +08:00
chc
7bd0084802 Merge remote-tracking branch 'origin/master' 2025-04-01 15:25:13 +08:00
pikachu1995@126.com
d88762f3ab refactor(connect): 修改微信连接器用户名获取逻辑
- 在 BaseAuthWeChatPCRequest 和 BaseAuthWeChatRequest 中,将用户名获取方式从 nickname 改为 unionid- 更新 Kuaidi100Plugin 中的物流订单请求逻辑,增加多个电子面单相关参数- 在 StoreLogistics 和 StoreLogisticsCustomerDTO 中添加电子面单客户账户名称字段
2025-03-17 15:00:06 +08:00
pikachu1995@126.com
ebdbed6d08 docs(README): 更新交流群信息并优化文档内容
- 移除已满的 QQ 交流群信息
- 添加微信群交流信息- 删除重复的商业授权联系方式- 简化交流群部分的信息
2025-03-04 11:09:06 +08:00
Chopper711
efdf505e63 fix: 修复ServiceException类中异常消息拼接问题 (master)
修改ServiceException类中默认异常消息的设置方式,使用
ResultCode.ERROR.message()代替DEFAULT_MESSAGE。
2025-02-21 11:11:05 +08:00
Chopper711
98f25179d3 fix: 异常消息拼接问题处理 2025-02-20 10:53:40 +08:00
chc
9a0c7dd73d Merge remote-tracking branch 'origin/master' 2025-02-20 10:41:07 +08:00
pikachu1995@126.com
0cf464e549 feat(payment): 微信支付支持公钥和证书两种验证方式- 在 WechatPaymentSetting 中添加 publicType 字段,用于选择验证方式
- 修改 WechatPlugin 中的支付、退款等方法,支持两种验证方式
- 新增 getPublicKeyConfig 和 getCertificateConfig 方法,分别用于获取公钥和证书配置
- 优化退款通知处理逻辑,使用 NotificationParser 进行验证和解析
2025-02-11 15:42:35 +08:00
chc
2e6ddeafdd 优惠券删除时,只有指定商品时,才传递scopeId。 2025-01-22 15:48:10 +08:00
chc
633b94c375 获取用户信息时判断用户是否已禁用 2025-01-20 17:09:24 +08:00
chc
6441018d95 获取用户信息时判断用户是否已禁用 2025-01-20 16:38:10 +08:00
pikachu1995@126.com
e706431df5 refactor(payment): 重构微信支付模块
- 更新微信支付相关工具类和接口实现
- 新增微信支付配置项
- 优化微信支付流程和参数处理
- 引入微信支付官方SDK
2025-01-08 16:13:39 +08:00
pikachu1995@126.com
db1a3566ae 初始化 2024-12-27 14:07:35 +08:00
pikachu1995@126.com
9225b4ff10 refactor(payment): 重构微信支付私钥处理逻辑
- 将方法参数从 keyPath 修改为 key,移除对文件路径的依赖
- 更新方法签名和文档注释,以适应新的参数
- 删除 WechatPaymentSetting 中未使用的证书字段
2024-12-27 11:02:57 +08:00
chc
586a507bb1 订单分包裹发货问题修复 2024-12-25 10:01:47 +08:00
OceansDeep
034f29c734 !362 fix & improve
Merge pull request !362 from OceansDeep/pg
2024-12-12 08:54:57 +00:00
misworga831
478dd1d201 fix: 添加订单和商品存在性检查以改善评价流程 (pg)
- 在MemberEvaluationServiceImpl中引入订单和商品存在性检查。
- 当订单或商品不存在时,抛出异常以避免错误日志的产生。
- 同时,在OrderEveryDayTaskExecute中捕获异常时更新评价状态。
2024-12-12 16:53:20 +08:00
misworga831
554aed024c fix: 添加会员评价时商品存在性检查以修复潜在的空指针异常 (pg)
- 在会员评价时获取商品信息后增加商品存在性检查,避免空指针异常。当商品不存在时,记录错误日志并返回null。
2024-12-12 16:08:13 +08:00
OceansDeep
b2e0fe1de4 !361 fix & improve
Merge pull request !361 from OceansDeep/pg
2024-12-11 08:20:07 +00:00
misworga831
b69a558df0 fix: 优化积分商品,修复促销时间段重叠问题 (pg)
- 添加方法以检查促销时间段是否重叠
- 更新文档注释以提高可读性
- 使用@NotNull注解来增强空值检查
2024-12-11 16:18:58 +08:00
misworga831
2f180a73ed fix: 优化积分商品,移除异步删除索引 (pg)
- 重构deleteByQuery方法,移除异步调用,改为同步处理。
添加了异常处理以记录删除索引时的错误日志。
2024-12-11 16:18:37 +08:00
chc
82f3223a03 订单取消时,将订单货物设置为全部退款 2024-12-11 14:53:47 +08:00
chc
cfe48d539b 拼团问题处理 2024-11-06 18:19:02 +08:00
OceansDeep
8ef00ae285 !360 fix & improve
Merge pull request !360 from pg
2024-10-31 08:47:11 +00:00
misworga831
ed032653ee fix: 优化积分商品活动可以同一时间创建多个 2024-10-31 16:45:38 +08:00
OceansDeep
9108a1585c !359 fix & improve
Merge pull request !359 from pg
2024-10-31 03:50:57 +00:00
misworga831
d4855b702b fix: 增加添加验证码时,检查验证码是否可以正常生成问题 2024-10-31 11:47:41 +08:00
chc
40822ca05b 砍价活动,当随机金额超过剩余砍价金额时,返回剩余金额,防止超过 2024-10-24 14:04:39 +08:00
chc
4dac80f084 砍价活动时间校验问题导致可以创建多个砍价活动 2024-10-23 17:51:31 +08:00
chc
8609216ef5 重复砍价商品导致获取商品信息错误问题 2024-10-23 11:18:26 +08:00
chc
9678c7f506 缺少事务导致发货消息发送失败问题处理 2024-10-18 15:56:23 +08:00
pikachu1995@126.com
63cdebdf1f 微信支付,微信小程序订单,推送发货信息 2024-10-15 10:17:09 +08:00
Chopper711
e89be8eb8c !358 优化 web-二维码登录 优化睡眠时间使用指数退避策略来延长每次轮询的时间间隔,减少CPU占用率
Merge pull request !358 from 铉清/N/A
2024-09-25 01:59:23 +00:00
铉清
3559971a8d 优化 web-二维码登录 优化睡眠时间使用指数退避策略来延长每次轮询的时间间隔,减少CPU占用率
Signed-off-by: 铉清 <13698617+xuanqings@user.noreply.gitee.com>
2024-09-21 16:17:53 +00:00
Chopper711
dc1d1a7e7e Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2024-09-18 15:40:02 +08:00
Chopper711
10ecce1e0d fix:修复代码与注释不匹配问题 2024-09-18 15:39:56 +08:00
chc
2520c27f77 Merge remote-tracking branch 'origin/master' 2024-09-18 15:16:35 +08:00
chc
63d684c972 订单增加部分发货状态。
部分发货无法申请售后
2024-09-18 15:16:28 +08:00
Chopper711
35739b64a3 fix: 部分字段重复问题处理 2024-09-18 14:20:13 +08:00
Chopper711
ddcda57a08 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2024-09-18 12:24:16 +08:00
Chopper711
16ae69ed06 fix: 脚本问题导致限流脚本无效,不确定是否是版本升级带来的问题。 2024-09-18 12:24:11 +08:00
Chopper711
fd067d8abf update DB/version4.3toMASTER.sql.
缺少标点符号导致无法一次性执行 sql

Signed-off-by: Chopper711 <1814994716@qq.com>
2024-09-18 02:09:02 +00:00
pikachu1995@126.com
42b3c72977 微信小程序发货信息录入参数错误,短信发送使用系统后台配置的短信CODE 2024-09-14 16:11:05 +08:00
OceansDeep
e34b4172b8 !356 fix & improve
Merge pull request !356 from OceansDeep/pg
2024-09-14 03:30:15 +00:00
misworga831
30d6ab64f8 fix & improvement 2024-09-14 11:29:39 +08:00
Chopper711
2e8c40bcf3 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2024-09-14 11:17:44 +08:00
Chopper711
f2385c3ace fix: 订单物流费用展示问题处理 2024-09-14 11:17:37 +08:00
OceansDeep
a45355b125 !355 fix & improve
Merge pull request !355 from OceansDeep/pg
2024-09-13 17:44:17 +00:00
misworga831
b3bb771066 fix: 修复可能会出现在购物车内多促销活动多商品的清空下的促销金额分配问题 2024-09-14 01:39:19 +08:00
OceansDeep
068c6b986e !354 fix & improve
Merge pull request !354 from OceansDeep/pg
2024-09-13 09:29:15 +00:00
misworga831
18e2c89891 fix: 修复批量更新商品配送模版,没有更新sku问题 2024-09-13 17:27:39 +08:00
OceansDeep
7b485753a6 !353 fix & improve
Merge pull request !353 from OceansDeep/pg
2024-07-26 02:33:51 +00:00
misworga831
8556d27173 fix & improvement 2024-07-26 10:31:39 +08:00
chc
d677aabbf4 判断手机号是否存在,如果存在抛出异常 2024-07-24 10:37:41 +08:00
pikachu1995@126.com
aaa0748409 删除文件夹需判断,优化删除逻辑。是否文件夹下存在图片。 2024-07-18 14:28:59 +08:00
pikachu1995@126.com
57ee156798 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2024-07-18 13:51:44 +08:00
pikachu1995@126.com
5ae4d8b4fa 微信小程序-上传发货信息 2024-07-18 13:51:37 +08:00
OceansDeep
681327274c !352 fix & improve
Merge pull request !352 from OceansDeep/pg
2024-07-18 03:46:26 +00:00
misworga831
6ab2888fd0 fix: 修复部分情况下秒杀活动商品无法添加问题 2024-07-18 11:45:18 +08:00
pikachu1995@126.com
80a0e0e8c7 增加导出订单数据判断,升级poi版本
传递删除则使用字段内容
2024-07-07 15:55:11 +08:00
pikachu1995@126.com
80773e2d58 优化支付、短信的配置内容 2024-07-07 14:48:11 +08:00
pikachu1995@126.com
065bcc8a55 优化支付、短信的配置内容 2024-07-07 14:03:31 +08:00
pikachu1995@126.com
9398413999 添加qq群 2024-07-02 15:07:51 +08:00
pikachu1995@126.com
cf623f6756 优化店铺结算单、店铺流水生成规则。
优化分销申请逻辑,分销佣金不转入预存款
2024-07-02 14:55:19 +08:00
pikachu1995@126.com
1b316baac6 将微信支付的调用appid进行优化。 2024-06-28 09:08:32 +08:00
pikachu1995@126.com
4fc1d0e346 升级poi 版本 2024-06-27 17:13:33 +08:00
pikachu1995@126.com
159fe37120 支持店铺通过excel批量更新商品库存功能 2024-06-27 17:09:25 +08:00
pikachu1995@126.com
6f9486f065 优化订单导出功能。 2024-06-26 11:50:45 +08:00
Chopper711
94da71336a Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2024-06-18 09:55:21 +08:00
Chopper711
8c5ce396b2 fix: 2024-03-25被错误的修改一个问题,导致分销订单无法结算,当前 commit 修复问题并优化问题,解决可能出现的事务问题,采用一条 sql 执行 2024-06-18 09:55:15 +08:00
OceansDeep
0063820fdf !351 fix & improve
Merge pull request !351 from OceansDeep/pg
2024-06-17 10:41:51 +00:00
misworga831
fe80edebbd fix: 修复 精确发券 类型的优惠券活动重复领取问题 2024-06-17 18:41:02 +08:00
OceansDeep
6b59c1e643 !350 fix & improve
Merge pull request !350 from OceansDeep/pg
2024-06-17 09:10:44 +00:00
misworga831
1b52381c71 fix: 修复可能出现的手机号登录重复问题 2024-06-17 17:09:33 +08:00
OceansDeep
763519876e !349 fix & improve
Merge pull request !349 from OceansDeep/pg
2024-06-17 07:14:46 +00:00
misworga831
cede181bc0 fix: 生成索引时,店铺商品分类优惠券判断条件补全 2024-06-17 15:13:07 +08:00
Chopper711
cb776eb4c0 merge 2024-06-17 08:31:49 +08:00
Chopper711
8ed4f6eb3c fix: 极端情况下,结算单可能存在未能被同级的订单流水 2024-06-17 08:31:28 +08:00
OceansDeep
9cf97f3203 !348 fix & improve
Merge pull request !348 from OceansDeep/pg
2024-06-14 03:31:36 +00:00
misworga831
2a984b8c56 fix: 优化店铺优惠券商品分类生成 2024-06-14 11:27:54 +08:00
OceansDeep
22ecf48168 !347 fix & improve
Merge pull request !347 from OceansDeep/pg
2024-06-14 01:55:33 +00:00
misworga831
89422b2736 fix: 自动领取优惠券判定同时,将精准发券功能同时判定 2024-06-14 09:54:26 +08:00
Chopper711
bcd4bf4ff1 fix: 用户领取优惠券时,无法领取精准赠送的优惠券 2024-06-12 18:07:53 +08:00
OceansDeep
a263bc6301 !346 fix & improve
Merge pull request !346 from OceansDeep/pg
2024-06-04 06:44:23 +00:00
misworga831
27ae773e20 fix & improvement 2024-06-04 14:43:37 +08:00
Chopper711
085b61c2ab fix: 单个文件夹删除报错问题处理,pom.xml 配置编译运行环境指定,开发测试环境 jdk22 导致无法编译 1.8版本 jdk 问题。 2024-05-27 14:45:42 +08:00
Chopper711
c7682680ee fix:文件目录为空时无法删除文件报错 2024-05-27 10:12:50 +08:00
lele0521
a301432a87 fix: 修复判断订单是否可以售后接口异常 2024-05-27 08:53:43 +08:00
OceansDeep
526de18a42 !343 上传图片时,选择的目录为空时,生成的图片访问不了
Merge pull request !343 from imalasong/pr/1
2024-05-24 03:15:48 +00:00
OceansDeep
c940bf6cb2 !342 多了一个结束符号进行移除
Merge pull request !342 from 铉清/N/A
2024-05-24 03:15:02 +00:00
OceansDeep
a7643a6b93 !345 fix & improve
Merge pull request !345 from OceansDeep/pg
2024-05-23 07:40:45 +00:00
misworga831
24f6b9e80f fix: 修复拼单订单失败时,未付款订单没有取消问题。 2024-05-23 15:39:26 +08:00
lele0521
d349616957 fix: 过滤订单售后状态(砍价、积分、赠品订单不可进行售后) 2024-05-20 11:16:36 +08:00
imalasong
f7c9ba820d Merge remote-tracking branch 'origin/pr/1' into pr/1 2024-05-16 21:16:28 +08:00
imalasong
f99f59963a fix: 上传图片时,选择的目录为空时,生成的图片访问不了 2024-05-16 21:16:17 +08:00
imalasong
caaf9c74f3 fix: 上次图片时,选择的目录为空时,生成的图片访问不了 2024-05-16 21:14:41 +08:00
lele0521
076f47f5c4 fix: 回滚用户注销逻辑 2024-05-16 09:36:52 +08:00
lele0521
f0e4e4c2bc fix: 修改注销账号的实现方式 2024-05-16 08:56:25 +08:00
lele0521
c87fe45dfa fix: 修改注销账号的实现方式 2024-05-15 18:38:41 +08:00
lele0521
49fd03df7f fix: 修改注销账号的实现方式 2024-05-13 19:44:51 +08:00
lele0521
6deed61311 fix: 增加商家订单备注功能 2024-05-11 09:21:27 +08:00
Chopper711
6311767320 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2024-05-10 17:05:19 +08:00
Chopper711
2463d1b5bb 验证 TOKEN 2024-05-10 17:04:32 +08:00
chc
9d41ae3cae 分销订单立即结算功能注释,新版本逻辑必须通过定时任务处理 2024-05-07 11:13:56 +08:00
chc
2be8bf27bf 虚拟订单无法售后问题 2024-05-07 10:51:01 +08:00
铉清
2d052ffb1a 多了一个结束符号进行移除
Signed-off-by: 铉清 <13698617+xuanqings@user.noreply.gitee.com>
2024-04-19 05:17:44 +00:00
Chopper711
88ab071ac7 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2024-04-01 19:14:34 +08:00
Chopper711
bda72da679 fix: 足迹为空展示空信息问题,商品库存回滚数量错误问题 2024-04-01 19:14:28 +08:00
Lele
95e5ef2d33 !341 统计数据转换异常
Merge pull request !341 from Lele/dev
2024-03-29 03:29:19 +00:00
lele0521
48a294e7c6 fix: 统计数据转换异常 2024-03-29 11:28:24 +08:00
Chopper711
794fa63302 fix: 核销订单如果订单不存在则抛出异常 2024-03-28 15:36:56 +08:00
lele0521
cdb8e851a8 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2024-03-27 15:16:39 +08:00
lele0521
f8ee3a8d15 fix: 统计数据转换异常 2024-03-27 15:16:26 +08:00
Lele
76ab997922 !340 修复会员基本信息显示null异常
Merge pull request !340 from Lele/dev
2024-03-27 01:03:02 +00:00
lele0521
97e7a130f1 fix: 修复会员基本信息显示null异常 2024-03-26 18:50:24 +08:00
Lele
2a96ad4af7 !339 修复商城问题文档中的bug
Merge pull request !339 from Lele/dev
2024-03-25 08:32:24 +00:00
lele0521
e1aee4a744 fix: 修复商城问题文档中的bug 2024-03-25 16:29:24 +08:00
lele0521
ecfe1524d4 fix: 修复商城问题文档中的bug 2024-03-25 16:26:21 +08:00
chc
42ea2dc986 订单后台收款后返回状态不对 2024-03-22 19:07:02 +08:00
Lele
230e2e7407 !336 【交易投诉】交由商家处理报错。
Merge pull request !336 from Lele/dev
2024-03-21 08:22:49 +00:00
lele0521
92639ba309 fix: 【交易投诉】交由商家处理报错。bug修复 2024-03-21 16:21:29 +08:00
Lele
19b3225312 !335 修复添加APP版本控制异常
Merge pull request !335 from Lele/dev
2024-03-21 05:54:53 +00:00
lele0521
e56c20469d fix: APP版本控制区分APP类型 2024-03-21 13:42:58 +08:00
Lele
a28eceaf61 !334 OSS资源管理中增加店铺名称搜索条件
Merge pull request !334 from Lele/dev
2024-03-19 10:03:16 +00:00
lele0521
1925c6d33c fix: OSS资源增加按店铺筛选 2024-03-19 17:55:11 +08:00
lele0521
fcac4002b1 fix: OSS资源增加按店铺筛选 2024-03-19 17:03:55 +08:00
lele0521
ed3a2ae9fc Merge branch 'master' into dev 2024-03-19 16:39:47 +08:00
lele0521
4955d2135b fix: OSS资源增加按店铺筛选 2024-03-19 16:39:36 +08:00
chc
9f1dacc1d4 方法名修改 2024-03-11 15:35:14 +08:00
lele0521
f0765a6627 fix: 修复分销申请逻辑 2024-03-07 11:23:50 +08:00
lele0521
a31a9fdfbd fix: 修复字段错误 2024-03-07 09:22:54 +08:00
Chopper711
fd2d0724a7 fix: token 过期后图片访问抛出一个未被捕获的异常问题处理,优化一个店铺审核的提示语 2024-02-01 15:37:59 +08:00
chc
82d7389092 Merge remote-tracking branch 'origin/master' 2024-01-29 18:33:53 +08:00
chc
a53eb3cfde 售后关闭功能同步 2024-01-29 18:33:47 +08:00
Lele
bd048d725c !333 增加默认退款金额显示
Merge pull request !333 from Lele/dev
2024-01-29 06:37:37 +00:00
lele0521
8e275613e1 fix: 增加默认退款金额显示 2024-01-29 14:35:19 +08:00
Lele
fc869a34e0 !332 fix: 修复分销提现异常
Merge pull request !332 from Lele/dev
2024-01-25 10:42:13 +00:00
lele0521
48c84acb7c fix: 分销提现bug修复 2024-01-25 18:39:27 +08:00
OceansDeep
40d40a344e !331 fix & improve
Merge pull request !331 from OceansDeep/pg
2024-01-25 08:46:48 +00:00
misworga831
d31257ba76 fix: 修复促销拼团订单取消后,活动结束后,检查成团没有筛选取消后的订单返还多余库存问题 2024-01-25 16:12:33 +08:00
chc
f0a80338da Merge remote-tracking branch 'origin/master' 2024-01-25 14:02:24 +08:00
chc
6b5ca5b337 分类缓存获取 2024-01-25 14:02:18 +08:00
OceansDeep
61f9d7812d !330 fix & improve
Merge pull request !330 from OceansDeep/pg
2024-01-24 10:54:33 +00:00
misworga831
d5eeafc554 fix: 优化虚拟商品不需要填写收货地址 2024-01-24 18:53:31 +08:00
misworga831
2175433444 fix: 优化取消订单返还促销商品库存 2024-01-24 18:52:43 +08:00
pikachu1995@126.com
cfbb1a1519 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2024-01-24 14:54:29 +08:00
pikachu1995@126.com
1302ca6de4 优化结算单退款计算逻辑 2024-01-24 14:54:23 +08:00
chc
239b520939 Merge remote-tracking branch 'origin/master' 2024-01-24 11:32:43 +08:00
chc
56d9dbee5b 库存预警功能,预警为0不进行预警 2024-01-24 11:32:28 +08:00
OceansDeep
41decf1fa1 !329 fix & improve
Merge pull request !329 from OceansDeep/pg
2024-01-24 02:11:26 +00:00
misworga831
1d2cb5737d fix: 修复促销商品库存扣减问题 2024-01-24 10:10:43 +08:00
misworga831
a2496b267a fix: 优化商品图片获取 2024-01-24 10:10:11 +08:00
pikachu1995@126.com
178544fe2d 管理端支持下载结算单账单 2024-01-24 09:48:25 +08:00
pikachu1995@126.com
9e3b9c8f38 店铺结算单增加积分/砍价商品退款统计 2024-01-23 15:06:14 +08:00
OceansDeep
b439d8283f !328 fix & improve
Merge pull request !328 from OceansDeep/pg
2024-01-22 10:57:02 +00:00
misworga831
fb48bce38d fix: 优化商品图片地址存储结构,只保留图片地址,去除其他无效参数,优化商品图片规则,改为全部通用spu图片,可为第一个 规格项 单独设置一个图片。 2024-01-22 18:56:13 +08:00
pikachu1995@126.com
b189fbe238 腾讯COS图片路径缺少符号 2024-01-22 15:59:33 +08:00
OceansDeep
26c1c97442 !327 fix & improve
Merge pull request !327 from OceansDeep/pg
2024-01-22 02:55:04 +00:00
misworga831
ee8f5b6e1e fix: 优化商品图片地址存储结构,只保留图片地址,去除其他无效参数,优化商品图片规则,改为全部通用spu图片,可为第一个 规格项 单独设置一个图片。 2024-01-22 10:44:24 +08:00
misworga831
6755515b1f upgrade: 更新 hutool 和 mybatis plus 版本 2024-01-22 10:43:09 +08:00
Lele
074036c0b5 !326 退款状态功能增加字段
Merge pull request !326 from Lele/dev
2024-01-18 09:45:11 +00:00
lele0521
c7d0820eed Merge branch 'master' into dev
# Conflicts:
#	DB/version4.3toMASTER.sql
2024-01-18 17:42:37 +08:00
lele0521
97c0fdbf1d feat: 退款状态功能增加字段 2024-01-18 17:40:05 +08:00
chc
a962939db8 库存预警功能 2024-01-18 11:44:08 +08:00
Lele
a9802710ef !325 修复日志格式异常
Merge pull request !325 from Lele/dev
2024-01-17 10:30:54 +00:00
lele0521
aaaa0b1ebf Merge branch 'master' into dev 2024-01-17 18:06:13 +08:00
lele0521
f34d10146a fix: 修复日志异常 2024-01-17 17:07:20 +08:00
Lele
b875cbdda4 !324 补充提交部分退款售后逻辑
Merge pull request !324 from Lele/dev
2024-01-16 09:24:05 +00:00
lele0521
d80a3f7f48 fix: 补充提交部分退款售后逻辑 2024-01-16 17:18:28 +08:00
Lele
259946e78f !323 增加操作日志、新增会员昵称默认规则、增加退款状态
Merge pull request !323 from Lele/dev
2024-01-16 08:49:35 +00:00
lele0521
9c24adf77d fix: 补充提交部分退款售后逻辑 2024-01-16 16:45:27 +08:00
lele0521
4c47d4aba2 fix: 区分商家、管理端OSS资源文件夹的创建 2024-01-16 15:53:37 +08:00
lele0521
7f9061cfc5 fix: Merging dev 2024-01-16 11:29:03 +08:00
chc
085dad2107 库存预警功能回退 2024-01-16 10:10:07 +08:00
chc
055a7fffdb 首页暂不显示预警 2024-01-11 13:33:46 +08:00
chc
6cea6af59b 分包裹发货,库存预警 2024-01-11 13:33:13 +08:00
chc
6f0f8106e0 分包裹SQL 2024-01-08 19:15:07 +08:00
lele0521
c9a0ce7985 feat: 增加退款状态(部分退款、全部退款) 2024-01-05 17:29:34 +08:00
lele0521
b40533c553 feat: 增加操作日志(商品、用户、促销相关修改操作) 2024-01-04 18:10:57 +08:00
lele0521
e2fff23080 feat: 新增会员昵称默认规则 2024-01-04 17:36:39 +08:00
Chopper711
72482ee395 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-12-18 08:40:31 +08:00
Chopper711
5366034556 fix: 禁用演示站点地区维护功能费 2023-12-18 08:40:24 +08:00
OceansDeep
484e2a2318 !320 fix & improve
Merge pull request !320 from OceansDeep/pg
2023-12-05 06:23:34 +00:00
misworga831
0873fba7df fix: 优化商品参数聚合搜索 2023-12-05 14:21:55 +08:00
OceansDeep
4aa6f864f0 !319 fix & improve
Merge pull request !319 from OceansDeep/pg
2023-12-05 06:07:08 +00:00
misworga831
183b2ba30c fix: 优化商品参数聚合搜索 2023-12-05 11:48:56 +08:00
lele0521
071f15347e feat: 新增会员绑定手机号功能 2023-12-04 16:05:17 +08:00
OceansDeep
71ed58e665 !318 fix & improve
Merge pull request !318 from OceansDeep/pg
2023-11-23 03:17:21 +00:00
misworga831
50c7e20ba6 fix: 修复活动优惠券,没有生成商品促销信息问题 2023-11-23 11:16:08 +08:00
misworga831
876b801fa1 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-11-21 10:15:06 +08:00
misworga831
bd42b88b71 fix: 优化商品索引不存在,搜索商品报错 2023-11-21 10:14:59 +08:00
Chopper711
b2dfb3abe2 update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2023-11-08 08:18:00 +00:00
Chopper711
164f726222 fix: 将订单创建消息发送节点从业务类内部调整为事务提交节点 2023-11-08 09:15:06 +08:00
misworga831
24cdf5cf00 fix: 商品评价更新后,清除sku缓存不全问题。获取有图评价过滤条件缺少状态问题 2023-11-06 17:50:24 +08:00
OceansDeep
93cb9da558 !317 fix & improve
Merge pull request !317 from OceansDeep/pg
2023-11-06 07:21:01 +00:00
misworga831
66c6bfa0fb fix: 优化自定义分词插入(修改为插入时,遇到唯一索引错误跳过) 2023-11-06 15:19:53 +08:00
Chopper711
edd93a6ad4 update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2023-11-03 07:05:29 +00:00
OceansDeep
ea1626a2ef !315 fix & improve
Merge pull request !315 from OceansDeep/pg
2023-10-24 08:30:44 +00:00
misworga831
1f3b7f21bb fix: 优化更新商品评价为所有Sku的评价 2023-10-24 16:29:04 +08:00
OceansDeep
e6fe055cd5 !314 fix & improve
Merge pull request !314 from OceansDeep/pg
2023-10-24 06:42:40 +00:00
misworga831
1422b6fdbc fix: 优化更新商品评价为所有Sku的评价 2023-10-24 14:41:41 +08:00
misworga831
cfb70eff8a fix: 优化特殊情况下出现的商品数据无商品分类查询报错的问题 2023-10-24 08:27:02 +08:00
misworga831
dfe6085432 fix: buyer端增加获取sku接口 2023-10-23 18:13:54 +08:00
OceansDeep
b8e8db0e36 !313 fix & improve
Merge pull request !313 from OceansDeep/pg
2023-10-23 06:22:27 +00:00
misworga831
fb2e41422b fix: 优化虚拟订单收货地址校验 2023-10-23 14:21:33 +08:00
OceansDeep
f3db8f2e45 !312 fix & improve
Merge pull request !312 from OceansDeep/pg
2023-10-23 03:55:33 +00:00
misworga831
6bc2c0adf1 fix: 优化虚拟订单收货地址校验 2023-10-23 11:54:53 +08:00
OceansDeep
df75e08d22 !311 fix & improve
Merge pull request !311 from OceansDeep/pg
2023-10-23 03:46:10 +00:00
misworga831
b2ccdad483 fix: 去除虚拟订单收货地址校验 2023-10-23 11:45:00 +08:00
misworga831
3d6eb7b4fa fix: 去除虚拟订单收货地址校验 2023-10-23 11:42:22 +08:00
Chopper711
96cfb8a8ce !305 fix bug: 小程序分享二维码,请求参数类型应为Object
Merge pull request !305 from GeekMo/master
2023-10-19 01:54:44 +00:00
OceansDeep
4a4672c80a !310 fix & improve
Merge pull request !310 from OceansDeep/pg
2023-10-18 02:54:03 +00:00
misworga831
a0c1cd1019 fix: 修复订单未完成,售后完成扣减积分问题 2023-10-18 10:53:22 +08:00
OceansDeep
ed20d1abbb !309 fix & improve
Merge pull request !309 from OceansDeep/pg
2023-10-17 09:13:33 +00:00
misworga831
0ebb9c01f8 fix: 优化售后完成扣减积分问题 2023-10-17 17:11:25 +08:00
OceansDeep
dd3176f841 !308 fix & improve
Merge pull request !308 from OceansDeep/pg
2023-10-17 01:07:36 +00:00
misworga831
a910a97719 fix: 优化更新商品索引评论条件 2023-10-17 09:05:33 +08:00
OceansDeep
cdf8ab3a3c !307 fix & improve
Merge pull request !307 from OceansDeep/pg
2023-10-17 00:27:50 +00:00
misworga831
074e4ed5b7 fix: 优化更新商品索引评论,改为实时统计spu的评论总量 2023-10-17 08:26:34 +08:00
OceansDeep
9e43d186d7 !306 fix & improve
Merge pull request !306 from OceansDeep/pg
2023-10-16 10:36:21 +00:00
misworga831
8b61d40ff8 fix: 优化部分优惠券初始化及搜索条件 2023-10-16 18:34:55 +08:00
misworga831
f9b3001eb3 fix: 优化售后搜索条件 2023-10-16 18:34:21 +08:00
misworga831
f1ec44869d Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-10-16 16:40:48 +08:00
misworga831
72341acb57 fix: 优化楼层装修代码 2023-10-16 16:40:37 +08:00
misworga831
fa696e6c11 fix: 优化更新商品评论,改为实时统计评论总量 2023-10-16 16:40:20 +08:00
misworga831
b30909942a fix: 优化im搜索 2023-10-16 11:49:42 +08:00
misworga831
7c64e1f11d fix: 优化更新商品索引,销量,评论方法 2023-10-16 11:48:52 +08:00
Chopper711
d1c6988d0f fix: 定时精准发送优惠券被立即发送问题处理。自动领取优惠券时会触发精准发券全平台会员 2023-10-13 15:35:47 +08:00
misworga831
efe0bd4bad Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-10-11 10:07:25 +08:00
Milo
7523481be0 小程序参数有其它非String类型的值需要设置
例如check_path:false
2023-10-05 19:15:34 +08:00
Chopper711
23182106b9 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-09-27 18:43:15 +08:00
Chopper711
515ffbcf0a fix: 下单人数统计问题处理 2023-09-27 18:43:10 +08:00
misworga831
8f52a1e2a2 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-09-27 09:20:03 +08:00
misworga831
bdd9045fc1 fix: 优化商品分类、售后及拼团相关 2023-09-27 09:16:49 +08:00
pikachu1995@126.com
518616483b Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-09-26 18:51:04 +08:00
pikachu1995@126.com
817f662cb7 添加文件-文件夹 2023-09-26 18:50:52 +08:00
Chopper711
01419cde15 refactor: 增加店铺菜单维护页面 2023-09-25 11:58:08 +08:00
Chopper711
118efe0833 merge master 2023-09-25 11:05:04 +08:00
Chopper711
46911004db refactor: 虚拟订单增加取消判定,解决订单退款,待审核订单状态不变的问题。 2023-09-25 10:54:47 +08:00
pikachu1995@126.com
b87190d135 1.判断分销订单是否包含退款
2.订单货物全部退款则订单取消
2023-09-22 17:25:46 +08:00
pikachu1995@126.com
39e22f5561 订单退款,即刻扣减分销员冻结佣金 2023-09-21 18:46:32 +08:00
misworga831
02dd37c87f fix: 优化商品单位不能为空 2023-09-19 17:12:28 +08:00
misworga831
7db7afad4a fix: 优化商品单位不能为空 2023-09-19 17:09:14 +08:00
chc
25582e2958 QQ状态调整 2023-09-19 15:04:14 +08:00
misworga831
3c5609545b fix: 移除促销活动,活动起始时间小于现在时间限制 2023-09-18 16:50:46 +08:00
misworga831
061d924d46 fix: 优化弃用状态 2023-09-18 10:00:44 +08:00
misworga831
49af6777ee Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-09-14 17:04:46 +08:00
misworga831
e9d9a95cb4 improve: 优化订单投诉查询 2023-09-14 17:04:30 +08:00
Chopper711
7e70e7d6cd 优化注释 2023-09-11 17:18:10 +08:00
Chopper711
ebb48c7d0f fix: 商品批量设置物流模板时,没有删除缓存问题处理 2023-08-29 16:00:29 +08:00
Chopper711
e0d464906e fix: minio缩略图需要特殊配置,这里默认不压缩处理 2023-08-28 13:01:51 +08:00
misworga831
9189a6d433 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-08-25 14:06:07 +08:00
Chopper711
b3f6bad6f8 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-08-25 11:48:10 +08:00
Chopper711
105162aa89 fix: 某种不知名的情况下,微信联合登陆会报错问题处理 2023-08-25 11:48:03 +08:00
misworga831
51c4161f68 fix: 简单优化扫码登录,创建多个线程池导致的性能问题 2023-08-24 18:54:10 +08:00
OceansDeep
488d9352f3 !302 fix & improve
Merge pull request !302 from OceansDeep/pg
2023-08-24 09:02:52 +00:00
Chopper711
56b800e4ff Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-08-24 15:49:20 +08:00
Chopper711
03864ca1a9 fix: 部分sql过滤会导致一些问题处理。 2023-08-24 15:49:14 +08:00
misworga831
94c87f5645 fix: 优化商品搜索出现分类id问题 2023-08-24 14:17:21 +08:00
chc
dadf48ac25 fix: sql名称修改 2023-08-23 15:49:37 +08:00
chc
a47bfcc5fd 更新4.3版本 2023-08-23 15:37:31 +08:00
Chopper711
1798916bf9 fix: 特殊情况下,平台会同时开启多个楼层问题处理 2023-08-18 15:39:18 +08:00
Chopper711
5af1238e02 fix: minio 无法删除磁盘文件问题处理 2023-08-18 15:20:48 +08:00
Chopper711
a62db61221 improvement:调优sql关键词过滤方法 2023-08-16 16:37:58 +08:00
Chopper711
8104947aec sql 排序关键字 orderby注入风险处理 2023-08-16 13:39:57 +08:00
Chopper711
d5f9fbf99d Merge branch 'master' of github.com:lilishop/lilishop 2023-08-16 12:41:50 +08:00
Chopper711
d3910bb931 update readme 2023-08-16 11:49:34 +08:00
Chopper711
7cac57bd79 update readme 2023-08-16 11:47:40 +08:00
misworga831
07874ca210 Merge pull request #91
pg
2023-08-16 10:54:21 +08:00
chc
0267597b20 fix: 联合登录 2023-08-14 14:30:21 +08:00
Chopper711
1cc939f457 fix : 行政地区无法删除或修改,由于缓存没有被清空导致问题处理 2023-08-10 16:08:23 +08:00
Chopper711
b12245bb94 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-08-10 13:34:09 +08:00
Chopper711
006ec15000 fix:砍价商品活动结束后,点击跳转后报错信息优化 2023-08-10 13:34:07 +08:00
misworga831
4f4593e5f7 fix: 优化微信登录异常问题 2023-08-10 11:52:36 +08:00
pikachu1995@126.com
58ff71a863 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-08-04 18:23:09 +08:00
pikachu1995@126.com
7d8a31c55a APP端第三方登录 2023-08-04 18:23:03 +08:00
OceansDeep
29e6637399 !301 fix & improve
Merge pull request !301 from OceansDeep/pg
2023-08-03 08:18:06 +00:00
misworga831
d61fc41465 fix: 优化消费者部分异常处理 2023-08-03 16:16:55 +08:00
misworga831
1cc692a3c9 fix: 优化消费者部分异常处理 2023-08-03 16:13:52 +08:00
OceansDeep
a2a1bed3e0 !300 fix & improve
Merge pull request !300 from OceansDeep/pg
2023-08-03 07:58:37 +00:00
misworga831
557366a3ec fix: 优化elasticsearch 配置,解决I/O reactor问题。 2023-08-03 15:57:57 +08:00
Chopper711
80c8b4b4d4 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-08-03 12:57:08 +08:00
Chopper711
9dd6bc2d6f fix:地区修改后不生效,需要清空缓存才能得到最新的数据问题处理 2023-08-03 12:57:01 +08:00
pikachu1995@126.com
9c1db92824 腾讯云COS 使用地域标识路径 2023-07-31 15:35:15 +08:00
misworga831
e3172c28b7 Merge pull request #90
pg
2023-07-28 16:20:10 +08:00
OceansDeep
b0b3747760 !299 fix & improve
Merge pull request !299 from OceansDeep/pg
2023-07-28 08:18:04 +00:00
misworga831
e8af34995b fix: 优化elasticsearch 配置,解决I/O reactor问题。 2023-07-28 16:16:16 +08:00
Chopper711
9f17dcafbb 商品导入消息不够明确问题处理 2023-07-21 18:45:00 +08:00
Chopper711
347877cdad Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-07-21 18:30:01 +08:00
Chopper711
8f1541c338 fix:秒杀活动异常消息resultcode 修正 2023-07-21 18:29:58 +08:00
chc
89f3e8f980 fix: sku的商品视频 2023-07-20 14:23:12 +08:00
OceansDeep
e945f93032 !297 fix & improve
Merge pull request !297 from OceansDeep/pg
2023-07-19 03:11:19 +00:00
misworga831
4f9841d443 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-07-19 11:10:40 +08:00
misworga831
c73204a828 fix: 增加文件上传类型,video格式支持 2023-07-19 11:10:19 +08:00
OceansDeep
b2681d443d !296 fix: 优化拼团活动流程,活动结束时间小于24小时则按照拼团结束时间延时
Merge pull request !296 from OceansDeep/pg
2023-07-17 09:57:15 +00:00
misworga831
05a1d880c5 Merge pull request #89
pg
2023-07-17 17:56:39 +08:00
misworga831
7b13ae13ad fix: 优化拼团活动流程,活动结束时间小于24小时则按照拼团结束时间延时 2023-07-17 17:55:34 +08:00
pikachu1995@126.com
ecb330cc57 fix:删除遗留引用 2023-07-13 16:04:35 +08:00
pikachu1995@126.com
af5e866853 不同的对象存储渠道有不同的图片压缩规则。 2023-07-13 16:03:38 +08:00
OceansDeep
007b145c2e !295 fix & improve
Merge pull request !295 from OceansDeep/pg
2023-06-16 09:01:20 +00:00
misworga831
201943994b fix: 修复添加管理员失败无信息提示 2023-06-16 16:21:57 +08:00
misworga831
b17f3c08b7 Merge pull request #88
pg
2023-06-13 10:51:59 +08:00
OceansDeep
c46c59e4a1 !294 fix: 修复移除@Resource后的订单每日任务,执行sql错误问题
Merge pull request !294 from OceansDeep/pg
2023-06-13 02:49:56 +00:00
misworga831
0bdb39797d fix: 修复移除@Resource后的订单每日任务,执行sql错误问题 2023-06-13 10:48:03 +08:00
Chopper711
71061ad861 fix:用户足迹的处理sql已经在逻辑中处理好了数据问题,这这里的事务在特殊情况下会导致sql异常,将非必要的事务注解去除即可。 2023-06-09 15:42:50 +08:00
Chopper711
f14875e679 fix:在redis集群中,促销库存与商品库存不在同一个槽内会导致执行异常 2023-06-09 15:27:56 +08:00
misworga831
e8a1f6a02f Merge pull request #87
pg
2023-06-07 11:08:31 +08:00
OceansDeep
036035f51b !292 fix & improve
Merge pull request !292 from OceansDeep/pg
2023-06-06 11:14:20 +00:00
misworga831
104b6c2f5d fix: 修复权限更新后,登录用户权限没有更新问题。 2023-06-06 19:13:52 +08:00
OceansDeep
7dffd7dcb9 !291 fix & improve
Merge pull request !291 from OceansDeep/pg
2023-06-06 10:07:14 +00:00
misworga831
63f1f0df21 fix: 修复权限更新后,登录用户权限没有更新问题。 2023-06-06 18:06:41 +08:00
OceansDeep
dda955219a !290 fix & improve
Merge pull request !290 from OceansDeep/pg
2023-06-06 09:27:11 +00:00
misworga831
5d6e99dc8a fix: 移除@Resource注解,修复权限更新后,登录用户权限没有更新问题。 2023-06-06 17:26:04 +08:00
Chopper711
b61a5e8f7b style: 代码扫描规范问题处理 2023-06-05 10:05:40 +08:00
Chopper711
d9018ef317 fix:邀新赠券邀请人信息写入代码被删除问题还原 2023-06-01 18:51:49 +08:00
Chopper711
9993b9bbf6 fix:虚拟成团无法成功触发问题处理 2023-05-31 15:42:17 +08:00
Chopper711
03fd9b222a !288 拼团订单延时任务优化
Merge pull request !288 from hucker520
2023-05-31 07:41:12 +00:00
Chopper711
3d7cfb1c63 fix:描述问题处理,将代码枚举注释更加接近逻辑寓意 2023-05-31 15:03:50 +08:00
Chopper711
ca6e45fb92 fix: 重复退货时,商品数量问题处理 2023-05-31 15:02:22 +08:00
Chopper711
e9950652a6 fix:缺少java引用问题处理 2023-05-31 13:43:43 +08:00
Chopper711
cddc6571f7 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-05-30 18:15:24 +08:00
Chopper711
708ba929f0 1 2023-05-30 18:15:22 +08:00
hucker520
6e820d745c 触发器参数 object 是 PintuanOrderMessage 对象,见第35行,直接转为 Pintuan 对象必为空,须要根据id重新查询
Signed-off-by: hucker520 <505169544@qq.com>
2023-05-26 09:02:41 +00:00
Chopper711
ae9e0e27ff !287 分销订单列表查询结束时间优化 from@hucker520
Merge pull request !287 from hucker520/N/A
2023-05-26 07:23:46 +00:00
hucker520
3485c5a5dd 分销订单列表查询结束日期,默认查询到当天0点,导致当天0点后的订单查询不出来,优化后成查询到结束日期当天23:59:59:999
Signed-off-by: hucker520 <505169544@qq.com>
2023-05-26 03:33:55 +00:00
misworga831
62ac16b705 Merge pull request #86
pg
2023-05-17 14:23:10 +08:00
OceansDeep
048ca0e64a !286 fix & improve
Merge pull request !286 from OceansDeep/pg
2023-05-17 06:17:41 +00:00
misworga831
d413de75d3 fix: 修复购物车商品促销价格特殊情况处理中优惠券金额为0的情况(购物车商品促销价格特殊情况处理只处理优惠券不足的情况) 2023-05-17 14:16:16 +08:00
Chopper711
4f8d4f7a74 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-05-11 11:21:34 +08:00
Chopper711
a0619abfc4 补充参考配置文档 2023-05-11 11:21:27 +08:00
OceansDeep
5e950b9766 !285 fix & improve
Merge pull request !285 from OceansDeep/pg
2023-05-10 06:53:45 +00:00
misworga831
1f02818692 fix: 优化购物车商品促销价格特殊情况处理 2023-05-10 14:50:19 +08:00
Chopper711
c0a370ad47 fix:交易投诉,交易售后,兼容设置中描述的内容:设置为0则表示不限制 2023-05-10 14:44:55 +08:00
Chopper711
a502420c5f refactor: 去除两个无效引用 2023-05-10 14:07:30 +08:00
Chopper711
b4aef1461c fix: 订单定时任务可能存在极端情况,影响其他业务流程,做一下兼容处理,以免部分数据导致订单定时任务无法处理 2023-05-10 14:03:16 +08:00
OceansDeep
54b40c35f4 !284 fix & improve
Merge pull request !284 from OceansDeep/pg
2023-05-09 06:01:31 +00:00
misworga831
a33e053bc7 fix: 特殊情况处理,如参与多个促销活动,部分商品在其他促销计算后的金额不足以满足与当前参与的促销活动的优惠金额 2023-05-09 13:59:55 +08:00
misworga831
ae93661763 fix: 优化es搜索,增加如搜索超过10000条信息的处理 2023-05-09 13:59:23 +08:00
OceansDeep
349bee7405 !283 fix & improve
Merge pull request !283 from OceansDeep/pg
2023-05-08 10:50:06 +00:00
misworga831
c286d05ad8 fix: 促销状态更新和满减活动范围商品判定 2023-05-08 18:49:37 +08:00
chc
49b2c2f7a3 fix: 导入商品增加填写验证 2023-05-08 18:35:57 +08:00
chc
b469fcfee3 Merge remote-tracking branch 'origin/master' 2023-05-08 17:59:09 +08:00
chc
5e6fde594b fix: 店铺设置是自提、楼层为空导致无法保存 2023-05-08 17:59:01 +08:00
OceansDeep
5d598d9034 !282 优化es生成索引sku取分可能为复数问题
Merge pull request !282 from OceansDeep/pg
2023-05-08 09:38:19 +00:00
misworga831
8181f2602a fix: 优化es生成索引sku取分可能为复数问题 2023-05-08 17:37:29 +08:00
misworga831
3e74697215 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-05-08 16:51:01 +08:00
Chopper711
fac10debd5 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-05-06 16:32:48 +08:00
Chopper711
74941f7243 feat: 兼容提现失败场景,对失败消息持久化 2023-05-06 16:32:42 +08:00
chc
621b2e322c fix: 快递鸟抛出异常 2023-05-05 13:40:38 +08:00
pikachu1995@126.com
948b67558a 微信小程序/公众号发送消息。 2023-05-05 07:12:39 +08:00
pikachu1995@126.com
dcf48db2ac fix:用户后期通过小程序登录,保存用户手机号 2023-04-28 08:47:09 +08:00
pikachu1995@126.com
072d31e8df fix:微信小程序登录记录手机号信息 2023-04-26 05:58:56 +08:00
pikachu1995@126.com
25240f445d fix:阿里登录没有传source 2023-04-25 18:40:39 +08:00
pikachu1995@126.com
279b473793 使用手机号为唯一身份进行登录 2023-04-25 17:59:42 +08:00
pikachu1995@126.com
959e24f51b fix:使用用户openID错误 2023-04-25 14:16:36 +08:00
pikachu1995@126.com
c720d53389 fix:合并代码错误,解决小程序无法登录问题。 2023-04-25 14:01:49 +08:00
17600048398
335d3f7ff1 1.修改商品分类同步分类名称 2.修改店铺名称同步对应店铺名称场景 2023-04-25 11:31:54 +08:00
Chopper711
16608d4950 fix:售后日志注解异常抛出问题 2023-04-19 16:16:01 +08:00
Chopper711
7b6a150bd2 fix: 用户被禁用、店铺被禁用、管理员被禁用,token未被清除问题处理。 2023-04-19 12:08:47 +08:00
17600048398
1f21d80dc0 用户签到为空时 无法签到问题 2023-04-18 10:57:41 +08:00
misworga831
76c8a23721 Merge pull request #85
pg
2023-04-18 10:36:44 +08:00
misworga831
08933ad92f fix: 优化足迹搜索 2023-04-18 10:35:56 +08:00
misworga831
06d0fb5b86 Merge pull request #83
pg
2023-04-17 16:42:37 +08:00
OceansDeep
05c3c8a80c !279 fix: 优化足迹搜索
Merge pull request !279 from OceansDeep/pg
2023-04-17 07:38:52 +00:00
misworga831
41796774dc fix: 优化足迹搜索 2023-04-17 15:37:05 +08:00
Chopper711
4594752470 签到代码问题回滚 2023-04-14 18:29:51 +08:00
chc
d818b396c4 fix: 腾讯云COS问题处理 2023-04-14 11:20:54 +08:00
OceansDeep
cf7b333662 !278 fix & improve
Merge pull request !278 from OceansDeep/pg
2023-04-13 07:45:50 +00:00
misworga831
7cc0a90acf fix: 修复签到条件判定错误问题 2023-04-13 15:44:40 +08:00
misworga831
f9eed2f2ab Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-04-13 15:38:02 +08:00
chc
f8ff163aee fix: 审核商铺后删除缓存 2023-04-13 15:04:32 +08:00
misworga831
38ad5bb394 fix: 优化更新促销状态流程,增加促销检查 2023-04-12 16:13:29 +08:00
misworga831
b2fb415ab5 fix: 优化足迹搜索 2023-04-12 16:12:53 +08:00
最菜的蔡
4c03676a3e !269 存在问题
Merge pull request !269 from zhaoyang0415/N/A
2023-04-11 09:03:38 +00:00
Chopper711
efce977bd6 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-04-10 18:26:43 +08:00
Chopper711
071974c74b fix:足迹保留100条 2023-04-10 18:26:39 +08:00
OceansDeep
7f202506b5 !277 fix & improve
Merge pull request !277 from OceansDeep/pg
2023-04-10 10:13:06 +00:00
misworga831
a9c9886210 fix: 优化购物车对于更新商品的检查验证 2023-04-10 14:43:47 +08:00
misworga831
e18b62da6e fix: 优化促销相关流程,修复部分促销相关bug。 2023-04-10 14:43:04 +08:00
Chopper711
59c6dedd35 merge master 2023-04-10 10:06:34 +08:00
Chopper711
a673db222e refactor:微信小程序登录兼容没有手机号的情况 2023-04-10 10:04:41 +08:00
misworga831
1cb72a5bdd Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-04-10 09:58:38 +08:00
misworga831
c1e45242a7 fix: 优化编辑商品,没有清除商品缓存问题 2023-04-07 16:47:32 +08:00
misworga831
efe9a1a6e4 fix: 修复管理员修改会员收货地址无效问题 2023-04-07 16:45:50 +08:00
OceansDeep
e91f0e7ee4 !276 fix & improve
Merge pull request !276 from OceansDeep/pg
2023-04-06 02:30:29 +00:00
misworga831
3716691366 merge code 2023-04-06 10:29:47 +08:00
misworga831
675830045d fix: 修复更新es商品索引促销信息时,批量更新分页起始页错误问题 2023-04-06 10:28:54 +08:00
pikachu1995@126.com
9294f77163 微信小程序登录错误 2023-04-06 08:16:23 +08:00
pikachu1995@126.com
864701adfb wrapper 错误 2023-04-05 10:28:19 +08:00
chc
81f47a7fb6 fix: 优惠券时间查询问题 2023-04-04 17:55:47 +08:00
OceansDeep
a56ceca3c5 !275 fix: 优化生成es索引,只生成库存大于0的商品
Merge pull request !275 from OceansDeep/pg
2023-03-31 10:42:29 +00:00
misworga831
bc670d263d fix: 优化生成es索引,只生成库存大于0的商品 2023-03-31 18:23:30 +08:00
OceansDeep
36068d7197 !274 fix & improve
Merge pull request !274 from OceansDeep/pg
2023-03-31 09:15:41 +00:00
misworga831
4ebe0d4f43 fix: 优化生成es索引,只生成库存大于0的商品 2023-03-31 16:58:34 +08:00
misworga831
9f01078fe0 feat: 升级druid依赖,解决mysql一直打印日志问题 2023-03-31 16:50:53 +08:00
misworga831
b07fc790e5 fix: 优化es商品搜索返回结果。减少重复返回结果 2023-03-31 16:49:42 +08:00
misworga831
ab2bb11eee fix: 增加mac m芯片启动支持 2023-03-31 16:48:43 +08:00
Chopper711
919367162b Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-03-31 15:22:55 +08:00
Chopper711
ec4d91b37f 修改资源目录 2023-03-31 15:22:48 +08:00
misworga831
799aa8f90c Merge pull request #82
pg
2023-03-30 16:06:22 +08:00
OceansDeep
cfbd1d68ee !273 fix: 优化es日志createTime类型
Merge pull request !273 from OceansDeep/pg
2023-03-30 08:05:22 +00:00
misworga831
4cf8c4e81f Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-03-30 16:02:52 +08:00
misworga831
87bde2c53f fix: 优化es日志createTime类型 2023-03-30 16:02:41 +08:00
Chopper711
2aaf677605 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-03-29 16:05:04 +08:00
Chopper711
fad7c4a39d fix: 商家修改商品价格后,购物车的商品价格不变动不提示问题。购物车sku集合引用地址修改无效导致。 2023-03-29 16:04:53 +08:00
OceansDeep
fc464c0564 !271 fix
Merge pull request !271 from OceansDeep/pg
2023-03-27 07:24:56 +00:00
misworga831
53c28359bb fix: 优化es搜索相关品牌、分类及属性为分页查询。修改全部查询可能会导致es默认返回集不能大于100m问题 2023-03-27 15:24:18 +08:00
pikachu1995@126.com
4737cc5ae8 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-03-27 11:01:21 +08:00
pikachu1995@126.com
97845bbaf5 修改订单金额不能小于等于0 2023-03-27 11:00:50 +08:00
chc
8f516f7be7 fix: 修改商品后清除商品缓存,修改Store、StoreServiceImpl的注释 2023-03-24 18:30:55 +08:00
chc
5c164f89cc fix: config/application.yml 地址更改127 2023-03-24 17:39:43 +08:00
chc
da28859398 fix: 关闭物流公司无效问题 2023-03-24 16:27:20 +08:00
Chopper711
25f8b103bf fix:代码中两次对店铺进行保存问题处理,以及店铺写入属性的无效代码去除 2023-03-23 16:54:28 +08:00
Chopper711
8b0513aece Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-03-23 16:45:21 +08:00
Chopper711
b95712aef3 fix: 店铺被拒绝后无法再次申请店铺问题修正。修改为店铺状态在申请中、开启、关闭状态时无法申请 2023-03-23 16:45:14 +08:00
17600048398
917d9437b6 分销订单佣金结算 2023-03-23 11:31:30 +08:00
zhaoyang0415
123388d059 查询店铺详情实现中管理端操作是从缓存取得,状态更新后未及时清空缓存,导致详情信息不是最新的
Signed-off-by: zhaoyang0415 <944381517@qq.com>
2023-03-23 02:33:19 +00:00
OceansDeep
226d66c22e !268 优化、修复和升级
Merge pull request !268 from OceansDeep/pg
2023-03-23 02:01:47 +00:00
misworga831
d8f09b6039 Merge pull request #81
pg
2023-03-23 10:00:18 +08:00
misworga831
fae4dcaae2 fix: 优化会员优惠券退还后,可能无法再次使用问题。优化删除商品索引,可能失败问题 2023-03-23 09:59:35 +08:00
misworga831
b957df648b Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-03-23 09:56:25 +08:00
Chopper711
a21f4800ab > feat: 新功能(feature)热词过滤sql注入关键字问题, 2023-03-22 17:34:57 +08:00
misworga831
4abf2205c1 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg 2023-03-21 14:39:57 +08:00
misworga831
0c652eac63 fix: hutool 依赖更新,依赖优化,获取商品详情优化 2023-03-21 14:39:53 +08:00
Chopper711
3fef330707 update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2023-03-21 06:26:02 +00:00
chc
c2abc4e2e4 fix: 修复IM新用户与自己对话问题 2023-03-20 12:03:34 +08:00
pikachu1995@126.com
d48e5a05a6 修改华为云obs引入版本
微信jsapi支付修改使用openID
2023-03-20 08:43:13 +08:00
chc
72471168d7 更新read me 交流群 5 2023-03-17 19:34:24 +08:00
Chopper711
08a2f7dfcd refactor:演示站点微信消息相关限制,由于出现部分微信消息被删问题 2023-03-17 08:57:01 +08:00
Chopper711
ceb61318f0 refactor:代码逻辑可能出现问题,重构代码执行顺序 2023-03-17 08:55:25 +08:00
Chopper711
11778a632a Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-03-17 08:29:18 +08:00
Chopper711
f3e11fd368 fix:店员可编辑店长问题处理 2023-03-17 08:29:15 +08:00
Chopper711
69fdd4b756 !260 修改
Merge pull request !260 from zhaoyang0415/N/A
2023-03-16 11:09:06 +00:00
Chopper711
507a6e6525 !262 修改 Merge pull request !262 from zhaoyang0415/N/A
Merge pull request !262 from zhaoyang0415/N/A
2023-03-16 11:01:29 +00:00
17600048398
82a9c6dbf7 分销金额显示错误 2023-03-15 16:28:48 +08:00
17600048398
21d66f719d 分销佣金为空时计算错误 2023-03-15 16:22:03 +08:00
misworga831
c793c47d45 fix: 优化日志搜索,关闭商品删除索引 2023-03-14 19:37:22 +08:00
Chopper711
a81faf4ba4 fix : 批量商品选择状态问题 尝试处理 2023-03-13 16:09:51 +08:00
Chopper711
e60d47163e Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-03-13 10:33:08 +08:00
Chopper711
e7215cec9e improvement: 优化日志级别问题,减少无效日志输出 2023-03-13 10:33:01 +08:00
17600048398
f7e6789e23 会员收藏功能拆分 2023-03-10 17:42:48 +08:00
17600048398
4af58aea4a 商品结算时无快递费用 2023-03-10 16:36:33 +08:00
chc
4d379d6006 fix: 聊天无法获取问题 2023-03-10 14:49:27 +08:00
Chopper711
519ccb7ddd fix: 足迹模块sql优化,增加事务控制 2023-03-10 10:38:46 +08:00
Chopper711
79ccab6869 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-03-10 09:37:34 +08:00
Chopper711
ccac5226d5 fix: httpclient 在请求后会在final中进行关闭,导致无法再次请求 2023-03-10 09:37:11 +08:00
pikachu1995@126.com
674e585eff 去除错误打印内容 2023-03-10 07:45:56 +08:00
pikachu1995@126.com
7e1b7f2725 微信小程序,添加来源 2023-03-10 07:32:30 +08:00
pikachu1995@126.com
256f2ba480 微信-公众号登录,还原内容 2023-03-10 07:25:06 +08:00
pikachu1995@126.com
72f63e7e31 修复:第三方登录(微信)重复赋值 2023-03-10 07:14:23 +08:00
pikachu1995@126.com
606f9d2ccf 添加第三方登录,判断是否为当前用户信息 2023-03-10 06:46:21 +08:00
pikachu1995@126.com
0261b7e9ab 小程序赋值unionId 2023-03-10 06:20:14 +08:00
pikachu1995@126.com
71abf32d82 Merge branch 'master' into Bulbsaur 2023-03-09 17:57:52 +08:00
Chopper711
f6030cc918 fix: 微信消息格式化问题处理,最新版本无法正常发送公众号消息问题处理。以及订单状态判定修复,之前存在消息发送状态判定错误问题 2023-03-09 16:54:47 +08:00
misworga831
f7ba021799 Merge pull request #80
pg
2023-03-09 16:45:27 +08:00
pikachu1995@126.com
f506fa86cc APP第三方信任登录通过unionid进行登录 2023-03-09 15:39:50 +08:00
Chopper711
1a0130dd1a fix:微信消息发送字符串格式化问题导致无法正确发送消息,尝试解决 2023-03-09 11:55:45 +08:00
pikachu1995@126.com
6f746e3aff 微信登录业务进行调整 2023-03-08 19:44:06 +08:00
pikachu1995@126.com
36a3a0a0e1 Merge branch 'master' into Bulbsaur 2023-03-08 18:27:39 +08:00
chc
323e1cd6eb fix: ShunfengPlugin无法创建问题 2023-03-08 18:07:14 +08:00
chc
06fb54c65c feat: 集成顺丰开放平台功能,增加商家忘记密码,手机号登录功能 2023-03-08 10:32:47 +08:00
chc
07d4a2cda9 fix: 去除无用的ImUserController,调整IM代码 2023-03-02 15:10:51 +08:00
pikachu1995@126.com
53e753c3ef 解决问题:短信发送,未调用实际发送短信方法 2023-03-02 11:00:05 +08:00
pikachu1995@126.com
8d8cffca71 第三方登录集成unionID 2023-03-02 10:45:43 +08:00
chc
352a19b91c 修改物流模板,清除商品缓存 2023-03-01 17:09:20 +08:00
pikachu1995@126.com
74972eaa37 合并master,解决冲突 2023-03-01 11:50:54 +08:00
pikachu1995@126.com
5ee07ec34d 用户提现-第三方支付提现,功能完善 2023-03-01 10:59:27 +08:00
Chopper711
61104b9cd3 fixbug:提现申请充值业务问题处理 2023-03-01 10:37:08 +08:00
zhaoyang0415
032ecc4a3e UpdateWrapper替换为QueryWrapper
Signed-off-by: zhaoyang0415 <944381517@qq.com>
2023-02-25 14:52:47 +00:00
zhaoyang0415
7337cf6fa5 修改了商品参数集合判空方式
Signed-off-by: zhaoyang0415 <944381517@qq.com>
2023-02-25 14:11:46 +00:00
pikachu1995@126.com
967852f84d 去除误提交代码 2023-02-24 14:55:29 +08:00
pikachu1995@126.com
17734e7a3d 银联支付-云闪付 2023-02-24 14:53:49 +08:00
pikachu1995@126.com
b8398ac1d1 微信、支付宝提现 2023-02-23 17:50:56 +08:00
OceansDeep
0a3696ac56 !257 优化生成索引,增加批量生成参数
Merge pull request !257 from OceansDeep/pg
2023-02-21 04:09:16 +00:00
misworga831
8e0b77c232 fix: 优化生成索引,增加批量生成参数 2023-02-21 12:08:33 +08:00
misworga831
88efc2da38 fix: 优化生成索引,修改批量生成 2023-02-21 12:04:56 +08:00
Chopper711
48f9398e72 fix:去除无效类 2023-02-17 08:09:42 +08:00
pikachu1995@126.com
b147bbef3d 解决编译错误问题。 2023-02-17 07:31:23 +08:00
pikachu1995@126.com
013e8f8f70 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-02-16 18:16:43 +08:00
pikachu1995@126.com
98907b33aa 存储新增:腾讯云、华为云
短信新增:腾讯云、华为云
物流新增:快递100
物流查询方式新增:快递查询地图轨迹
2023-02-16 18:16:37 +08:00
Chopper711
49003f4d9a refactor:当token过期,重新生成token时,authuser对象中的字段与方法参数重复,进行优化 2023-02-16 16:25:39 +08:00
Chopper711
46c869ca8a fix:jwt中长期有效标识字段赋值错误bug修复。 2023-02-16 16:24:28 +08:00
pikachu1995@126.com
f92756c103 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-02-13 16:46:04 +08:00
Chopper711
57c3fa04db update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2023-02-10 03:37:37 +00:00
Chopper711
30d8d34976 update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2023-02-10 03:35:55 +00:00
pikachu1995@126.com
c49f968d82 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-02-09 16:24:19 +08:00
misworga831
894a75beb3 Merge pull request #76
pg
2023-02-09 16:06:45 +08:00
misworga831
cb7e1cc03e fix: 优化代码结构 2023-02-08 00:56:08 +08:00
misworga831
9e1837e89c fix: 优化商品根据id搜索 2023-02-04 11:13:32 +08:00
misworga831
475f96d00a Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-02-03 17:55:54 +08:00
misworga831
96854ca00c fix: 优化商品根据id搜索 2023-02-03 17:55:38 +08:00
misworga831
0bf6aab43b fix: 增加获取购物车商品日志,修复可能出现的获取购物车空指针问题 2023-02-03 17:54:50 +08:00
chc
856aee6c18 选择自提购物车商品不取消问题 2023-02-03 17:26:08 +08:00
misworga831
0f2ed23b02 fix: 优化购物车检查数据集合操作问题 2023-02-03 15:34:00 +08:00
chc
10b4d0b16b 自提功能完善核销功能 2023-02-02 17:05:35 +08:00
chc
7f44b29fbc 电子面单报错信息问题修改 2023-02-01 17:12:50 +08:00
chc
a66c6e5504 购物车商品失效问题 2023-02-01 15:51:11 +08:00
chc
255d5a4550 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-01-31 18:03:24 +08:00
chc
6df2b92bc6 增加IM接口 2023-01-31 18:03:14 +08:00
misworga831
8c38c9e145 fix: 修复会员签到判断条件错误问题 2023-01-31 16:45:23 +08:00
Chopper711
501b9777b5 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-01-29 10:02:50 +08:00
Chopper711
8fc18458c2 冲突处理 2023-01-29 10:02:44 +08:00
chc
457793b4d2 订单选择自提提示无法配送问题 2023-01-19 17:27:21 +08:00
Chopper
4bb00bc006 删除缓存修复 2023-01-16 14:56:41 +08:00
17600048398
1a0515361e Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-01-13 17:10:27 +08:00
17600048398
2df8df1a0d im功能拆分 2023-01-13 17:10:15 +08:00
misworga831
96a9a32079 fix: 增加获取购物车商品日志,修复可能出现的获取购物车空指针问题 2023-01-13 14:37:13 +08:00
misworga831
5d6b475e09 fix: 增加获取购物车商品日志,修复可能出现的获取购物车空指针问题 2023-01-13 14:22:44 +08:00
Chopper711
cb3eca29d8 店铺更新店铺信息,缓存未同步问题处理 2023-01-13 10:07:57 +08:00
Chopper711
bdb62de868 im问题部分处理 2023-01-12 15:44:44 +08:00
misworga831
b416e56b98 Merge pull request #75
feature/pg
2023-01-11 11:38:47 +08:00
Chopper711
1728be9c36 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-01-11 11:38:12 +08:00
Chopper711
ea85710c05 优惠券活动领取周期问题 2023-01-11 11:38:01 +08:00
OceansDeep
e1af67beb3 !256 resolve issue
Merge pull request !256 from OceansDeep/feature/pg
2023-01-11 03:36:50 +00:00
Chopper711
d9de601e8a 售后数量问题梳理解决 2023-01-11 11:34:54 +08:00
paulGao
3c568a7d42 fix: 修复商品索引初始化时,店铺全品类优惠券和平台全品类优惠券没有区分问题 2023-01-11 11:32:27 +08:00
paulGao
5080cf65c7 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2023-01-10 14:34:52 +08:00
paulGao
eefca656c6 fix: 优化会员优惠券搜索 2023-01-10 14:34:48 +08:00
Chopper711
3a63f87807 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2023-01-10 09:25:24 +08:00
Chopper711
d71628adfe 多websocket掉线问题处理 2023-01-10 09:25:18 +08:00
chc
585fc96bca 历史足迹sql 2023-01-10 09:11:37 +08:00
chc
28b1820bfa 历史足迹sql 2023-01-10 09:11:13 +08:00
chc
85e74014b1 im和自提的SQL 2023-01-09 18:33:53 +08:00
Chopper711
cc12cecc2a merge 自提、IM功能 2023-01-09 18:00:40 +08:00
Chopper711
197a7bcc43 '秒杀活动额外适配' 2023-01-09 11:21:46 +08:00
Chopper711
613f397c33 '优惠券领取改良完成' 2023-01-05 18:02:40 +08:00
pikachu1995@126.com
a3bd0f2c0b Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2023-01-05 15:31:22 +08:00
paulGao
bda297b90d Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2023-01-05 14:39:33 +08:00
paulGao
8ddba831f0 feat: 增加根据促销活动搜索商品索引。增加获取优惠券领取记录。增加优惠券关闭后同时作废所有会员领取的优惠券。 2023-01-05 14:39:23 +08:00
Chopper711
5218702005 '商品索引空处理' 2023-01-03 11:52:30 +08:00
Chopper711
fbabd2f340 '快递鸟报错兼容问题' 2023-01-03 11:52:02 +08:00
chc
a38bc6b534 IM功能 2023-01-03 09:30:43 +08:00
chc
73aa36fc69 IM消息功能 2022-12-27 18:14:47 +08:00
pikachu1995@126.com
d627fca7d6 分销员 分销佣金添加默认值 2022-12-27 16:35:07 +08:00
Chopper711
06325a7ce1 '促销详情完善' 2022-12-26 19:00:13 +08:00
Chopper711
903b779ebe '价格记录详细处理' 2022-12-26 10:55:37 +08:00
Chopper711
0e3d582d13 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-12-23 15:13:08 +08:00
Chopper711
cd17f3d755 '构建促销详情模型' 2022-12-23 15:13:05 +08:00
Chopper711
8543a228fd '优惠券功能改版' 2022-12-23 14:51:06 +08:00
chc
b97c8e7fda 商品价格修改后同步到购物车 2022-12-22 18:19:52 +08:00
chc
1346614a30 站点图标与logo分开添加与展示 2022-12-22 15:17:54 +08:00
paulGao
0eec40673f Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-12-07 15:17:12 +08:00
Chopper711
602678e2b9 '搜索商品功能过滤关键字以及特殊字符' 2022-12-07 15:14:25 +08:00
Chopper711
d6393e39f7 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-12-07 09:49:15 +08:00
Chopper711
b3f22866b5 '店铺申请流程规范化,防止恶意攻击' 2022-12-07 09:38:10 +08:00
Chopper711
51d2880392 '增加优惠券关闭作废优惠券' 2022-12-07 09:37:50 +08:00
paulGao
ede7a37e37 fix: 修复修改商品库存时,促销商品库存没有同步修改问题 2022-12-05 17:17:05 +08:00
pikachu1995@126.com
8373303651 储存OrderVO的订单货物列表错误。 2022-12-05 11:30:32 +08:00
OceansDeep
f3ccabe253 !255 fix: 优化es价格搜索,设置超出限制,则默认搜索最大值
Merge pull request !255 from OceansDeep/feature/pg
2022-11-29 07:04:32 +00:00
paulGao
ba6bb56e81 fix: 优化es价格搜索,设置超出限制,则默认搜索最大值 2022-11-29 15:03:16 +08:00
OceansDeep
73124f016d !254 fix: 优化批发商品,没有匹配规则时,显示异常,不在默认为第一个规则
Merge pull request !254 from OceansDeep/feature/pg
2022-11-28 10:30:35 +00:00
paulGao
32ca2e4298 fix: 优化批发商品,没有匹配规则时,提示的错误信息 2022-11-28 15:47:41 +08:00
paulGao
1cc7486b0a fix: 优化批发商品,没有匹配规则时,显示异常,不在默认为第一个规则 2022-11-28 10:52:34 +08:00
paulGao
26b58442c5 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-11-28 10:44:33 +08:00
lilili
20de17bef1 重复签到 2022-11-27 20:13:15 +08:00
chc
54e04be768 im 2022-11-24 18:13:30 +08:00
chc
49b517f1ab im 2022-11-23 18:44:54 +08:00
chc
fc71d2d1ca Merge branch 'lili_self' of https://gitee.com/beijing_hongye_huicheng/lilishop into lili_self 2022-11-22 17:32:20 +08:00
chc
340b5b7248 im 2022-11-22 17:31:45 +08:00
chc
cfd292ef18 自提 2022-11-22 17:20:17 +08:00
paulGao
f7ea17a9cf Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-11-22 15:29:27 +08:00
paulGao
096ab34ae8 fix: 优化文件上传,删除冗余文件 2022-11-22 15:29:22 +08:00
Chopper711
e72b35c7eb update LICENSE.
Signed-off-by: Chopper711 <1814994716@qq.com>
2022-11-21 03:21:52 +00:00
Chopper711
9141f21cf8 LICENSE
Signed-off-by: Chopper711 <1814994716@qq.com>
2022-11-21 03:02:55 +00:00
paulGao
65d9efef94 fix: 增加店员错误信息回
2022-11-18 10:15:50 +08:00
OceansDeep
c5b19db662 !253 fix: 修复下载商品导入模版错误问题
Merge pull request !253 from OceansDeep/feature/pg
2022-11-17 10:36:42 +00:00
paulGao
f6a50cc43a fix: 修复下载商品导入模版错误问题 2022-11-17 18:36:04 +08:00
Chopper711
a13260b8c6 '楼层参数写入错误修正' 2022-11-14 09:44:53 +08:00
Chopper711
66c0200457 '商家楼层装修权限放开' 2022-11-14 09:31:20 +08:00
Chopper711
e244883165 '两个装修类合并' 2022-11-14 09:21:35 +08:00
Chopper711
92367c9020 '店铺保存模板配置问题处理' 2022-11-14 09:05:43 +08:00
Chopper711
e78ea60644 '限制演示站点部分功能' 2022-11-11 15:18:48 +08:00
Chopper711
29f73eaaa1 '楼层装修演示站点被覆盖问题处理' 2022-11-08 14:35:29 +08:00
OceansDeep
22c004a892 !250 pref: 优化es生成全部商品索引,减少数据库操作 优化文件
Merge pull request !250 from OceansDeep/feature/pg
2022-11-02 12:02:48 +00:00
paulGao
ef0507cf1d fix: 优化文件 2022-11-02 19:59:13 +08:00
paulGao
9df9e33ce1 fix: 优化代码 2022-11-02 19:54:57 +08:00
paulGao
52a2caaa6d Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-11-02 19:43:44 +08:00
paulGao
0b6aa9e857 fix: 优化代码 2022-11-02 19:43:38 +08:00
paulGao
3b078cfd6b pref: 优化es生成全部商品索引,减少数据库操作 2022-11-02 19:43:17 +08:00
Chopper711
67b746998f update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2022-10-31 03:04:13 +00:00
Chopper711
52f62f0c1d update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2022-10-31 03:04:01 +00:00
Chopper711
ca23b5ab33 防重复提交问题å‘处理 2022-10-28 17:58:28 +08:00
Chopper711
5a14790ec2 平台脱敏 2022-10-28 17:33:06 +08:00
Chopper711
67542eebfb 用户信息脱敏 2022-10-28 16:58:30 +08:00
Chopper711
88c62bc238 用戶信息查看脫敏字段處理 2022-10-28 16:09:26 +08:00
Chopper711
0c4ed91335 update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2022-10-27 07:31:48 +00:00
Chopper711
74dbb611ab update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2022-10-27 07:31:19 +00:00
Chopper711
07e72c7e72 !248 更新无法更新分销员待提现总金额的bug Merge pull request !248 from 隔壁老黄/tempbranch 2022-10-27 01:30:00 +00:00
chc
2c0700c10e lilishop.sql 2022-10-26 17:38:51 +08:00
Chopper711
191cee25a4 !246 fix: 限流次数不对 Merge pull request !246 from @xiaochangbai/pr/optime_lock
Merge pull request !246 from @xiaochangbai/pr/optime_lock
2022-10-26 09:26:19 +00:00
Chopper711
1b4fad72ed !249 修改xxl-job合并冲突配置文件 Merge pull request !249 from 欢哥/master
Merge pull request !249 from 欢哥/master
2022-10-26 09:13:43 +00:00
code huan
3fce0dba48 fix 修改合并冲突文件 2022-10-26 14:58:55 +08:00
chc
706346338b 获取店铺首页 2022-10-25 19:13:03 +08:00
neo0820
aee846764b 更新无法更新分销员待提现总金额的bug 2022-10-25 19:00:59 +08:00
chc
391b35ef1f sql错误 2022-10-25 18:37:12 +08:00
蔡洪呈
9364841cf4 update README.md.
Signed-off-by: 蔡洪呈 <1501738723@qq.com>
2022-10-24 08:39:35 +00:00
OceansDeep
0d7b44fe51 !247 fix: 优化生成商品索引,取消检查库存不为0 优化es商品搜索及es商品特定查询条件的分页
Merge pull request !247 from OceansDeep/feature/pg
2022-10-24 06:40:33 +00:00
paulGao
47734cfca6 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-10-24 14:38:08 +08:00
paulGao
a272e53519 fix: 优化es商品搜索及es商品特定查询条件的分页 2022-10-24 14:37:36 +08:00
xiaochangbai
710fe1998b fix: 限流次数不对 2022-10-21 17:36:26 +08:00
蔡洪呈
31c76c08b8 update pom.xml.
修改revision版本号

Signed-off-by: 蔡洪呈 <1501738723@qq.com>
2022-10-21 08:48:17 +00:00
chc
e8e2e8e315 v4.2.5 2022-10-21 11:27:28 +08:00
chc
5a1c6b9e7f v4.2.5 2022-10-21 11:26:55 +08:00
chc
1d98d8eecb 店员 2022-10-20 17:28:37 +08:00
paulGao
7d5e609f7b Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-10-18 17:47:14 +08:00
paulGao
4d2cb2d1dc fix: 优化生成商品索引,取消检查库存不为0 2022-10-18 17:46:46 +08:00
OceansDeep
fa2806e3aa !245 fix: 修复商品模版/商品草稿时,增加检查sku列表和配送规则列表不为空
Merge pull request !245 from OceansDeep/feature/pg
2022-10-18 02:35:59 +00:00
paulGao
761d9f45da fix: 修复商品模版/商品草稿时,增加检查sku列表和配送规则列表不为空 2022-10-18 10:34:33 +08:00
OceansDeep
07d9cfe5bc !244 fix: 修复商品模版/商品草稿,保存批发规则无效问题
Merge pull request !244 from OceansDeep/feature/pg
2022-10-14 07:47:57 +00:00
paulGao
b9d7e0787c fix: 修复商品模版/商品草稿,保存批发规则无效问题 2022-10-14 10:31:47 +08:00
paulGao
4ea6660402 fix: 修复售后订单完成后没有返还优惠券问题 2022-10-14 10:30:27 +08:00
Chopper
8391596e2a Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-10-13 14:32:46 +08:00
Chopper
0f1cfc129c keys判定优化为精准判定 2022-10-13 14:32:40 +08:00
OceansDeep
3e33f9b363 !242 修复bug,优化代码
Merge pull request !242 from OceansDeep/feature/pg
2022-10-13 04:04:40 +00:00
paulGao
a76cc4693f fix: 修复首页获取秒杀活动时,有时会报错问题 2022-10-13 12:03:01 +08:00
paulGao
d75bb7b7cf pref:
优化商品草稿/商品模版,sku和批发规则保存规则。

BREAKING CHANGE: li_wholesale 表 增加 template_id(商品模版id)字段
2022-10-13 12:02:02 +08:00
paulGao
6c87de7a97 pref: 优化售后日志,状态显示 2022-10-13 11:56:16 +08:00
paulGao
0ba493d71d fix: 修复店铺商品标签排序不正确问题 2022-10-13 11:55:25 +08:00
paulGao
bd0f1f0b23 fix: 修复退还优惠券时,不能同时退还商家和平台 2022-10-13 11:54:36 +08:00
Chopper
d45a96a919 购物车渲染注释修正 2022-10-13 11:06:53 +08:00
Chopper
55e02dde5e token无法验证问题处理 2022-10-12 10:36:38 +08:00
chc
cb7814cbd6 买家端专题 2022-10-11 17:13:12 +08:00
Chopper
2b1abc8aeb Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-10-10 15:22:55 +08:00
OceansDeep
3376ce54cc !241 fix: 更新商品状态时,更新es索引信息
Merge pull request !241 from OceansDeep/feature/pg
2022-10-08 03:54:30 +00:00
paulGao
d35b4d1ad6 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-10-08 11:52:00 +08:00
paulGao
7a2c45ddb5 fix: 更新商品状态时,更新es索引信息 2022-10-08 11:51:36 +08:00
Chopper
d3648a7e89 无关紧要的地方减少keys使用,改为精准匹配 2022-09-29 09:26:48 +08:00
Chopper
c794bb6a26 redis keys命令可能导致阻塞问题解决以及单元测试 2022-09-29 09:26:18 +08:00
Chopper711
3f8b2f7a30 !233 导出待发货订单bug修复 商品价格显示成订单价格 from lqc520
Merge pull request !233 from lqc520/master

感谢反馈
2022-09-28 07:46:31 +00:00
Chopper711
2bc6d1bc9a !240 🐛 修复在部分linux服务器上由此导致接口中中文参数乱码问题 from 聆听
Merge pull request !240 from 聆听/N/A
感谢反馈
2022-09-28 07:45:46 +00:00
聆听
ee53ddd097 🐛 修复在部分linux服务器上由此导致接口中中文参数乱码问题
Signed-off-by: 聆听 <sunlisten.gzm@foxmail.com>
2022-09-23 09:29:30 +00:00
OceansDeep
1705817128 !239 fix: 更新商品状态时,更新es索引信息
Merge pull request !239 from OceansDeep/feature/pg
2022-09-22 10:40:13 +00:00
paulGao
0f8936e9a9 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-09-22 18:36:50 +08:00
paulGao
e3792cde12 fix: 更新商品状态时,更新es索引信息 2022-09-22 18:36:26 +08:00
Chopper
4792d83119 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-09-22 17:51:26 +08:00
Chopper
27888f503a 去除无效的控制器,规范站点基础设置控制器的规范 2022-09-22 17:51:18 +08:00
OceansDeep
8b0823f504 !238 fix: 优化统一接口返回值
Merge pull request !238 from OceansDeep/feature/pg
2022-09-21 08:34:52 +00:00
paulGao
12476fc173 fix: 优化统一接口返回值 2022-09-21 16:28:46 +08:00
OceansDeep
56cc0a92f6 !237 fix: 修复查询系统日志报错问题,修复添加直播商品报错问题
Merge pull request !237 from OceansDeep/feature/pg
2022-09-20 11:07:12 +00:00
paulGao
88db57c64b fix: 修复查询系统日志报错问题,修复添加直播商品报错问题 2022-09-20 19:06:21 +08:00
OceansDeep
cd1f465a81 !236 fix: 优化库存扣减后清除商品缓存信息
Merge pull request !236 from OceansDeep/feature/pg
2022-09-20 02:17:47 +00:00
paulGao
a80b5ed961 fix: 优化库存扣减后清除商品缓存信息 2022-09-20 09:52:22 +08:00
OceansDeep
7f54cb0de8 !235 fix: 优化扫描登录相关代码
Merge pull request !235 from OceansDeep/feature/pg
2022-09-19 01:30:54 +00:00
paulGao
3549b216b0 fix: 优化扫描登录相关代码 2022-09-19 09:23:56 +08:00
OceansDeep
3786c53cad !219 app端扫码登录
Merge pull request !219 from @xiaochangbai/feature/code_scanning_login
2022-09-16 02:14:49 +00:00
OceansDeep
178e0d18cd !234 修复查询满减活动和优惠券活动报错问题
Merge pull request !234 from OceansDeep/feature/pg
2022-09-14 09:13:56 +00:00
paulGao
cbdcb6f1ce fix: 修复查询满减活动和优惠券活动报错问题 2022-09-14 17:11:26 +08:00
Chopper
74cc5af5c9 被批量请求报错信息导致磁盘沾满问题处理 2022-09-14 01:32:36 +08:00
lqc520
392d90db57 导出待发货订单bug 商品价格显示成订单价格 2022-09-13 17:23:24 +08:00
Chopper
c87081f673 活动商品在商品下架或者删除时数据未能同步处理的问题 2022-09-13 15:17:53 +08:00
paulGao
f375432e7d fix: 为部分异常捕捉添加错误日志展示 2022-09-13 11:33:39 +08:00
OceansDeep
3011645c44 !232 fix: 修复编辑规格值顺序错误问题
Merge pull request !232 from OceansDeep/feature/pg
2022-09-09 11:41:28 +00:00
paulGao
322256cc5a fix: 修复编辑规格值顺序错误问题 2022-09-09 19:08:24 +08:00
OceansDeep
02d017eb9e !231 fix: 修复保存草稿商品规格顺序问题
Merge pull request !231 from OceansDeep/feature/pg
2022-09-09 07:40:59 +00:00
paulGao
2f13bce20d fix: 修复保存草稿商品规格顺序问题 2022-09-09 15:32:49 +08:00
Chopper
e2bf90e340 编译问题处理 2022-09-06 19:36:11 +08:00
Chopper
9bc1247544 促销活动清洗,先处理砍价,其他的后续处理 2022-09-06 19:34:43 +08:00
Chopper
90a2ec9719 商品删除则删除相关促销商品 2022-09-06 19:22:34 +08:00
Chopper
b61cfe8b6b 虚拟商品设置物流模版问题兼容处理 2022-09-06 19:16:26 +08:00
Chopper711
28d57dff72 update README.md.
Signed-off-by: Chopper711 <1814994716@qq.com>
2022-09-06 02:39:07 +00:00
chc
55270548c7 SQL,福禄清除 2022-09-05 14:43:37 +08:00
Chopper
a45f9e7843 特喵的 mybatis bug方法名重复会出现问题,唉服了 2022-09-02 20:43:18 +08:00
Chopper
37cfcde476 参数无法识别问题处理 2022-09-02 20:02:39 +08:00
Chopper
9517f0eedf 统计占位符问题处理 2022-09-02 19:45:52 +08:00
Chopper
a9da0cdcc8 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-09-02 19:09:22 +08:00
Chopper
b3c537d034 订单统计付款人数bug处理 2022-09-02 19:09:17 +08:00
chc
2d4cf29da8 导出功能,福禄清除 2022-09-02 10:31:35 +08:00
chc
eea47aea55 导出 2022-09-02 09:52:11 +08:00
chc
2648a0b57e 店员,商品导入,sql 2022-09-01 18:53:12 +08:00
OceansDeep
46dfe4650e !230 优化规格信息存储顺序,HashMap 替换为 LinkedHashMap
Merge pull request !230 from OceansDeep/feature/pg
2022-09-01 09:37:12 +00:00
paulGao
7eca11d51b 优化规格信息存储顺序,HashMap 替换为 LinkedHashMap 2022-09-01 17:27:13 +08:00
Chopper711
43022a9838 !229 bug 优惠券领取数量错误 from @Fxz
Merge pull request !229 from Fxz/N/A
2022-09-01 01:59:23 +00:00
chc
b873ec2095 电子面单接口完善,商家导入商品功能 2022-08-31 17:37:07 +08:00
Fxz
18f8718de2 bug 优惠券领取数量错误
对于每一张优惠券扣减数量应该是会员数量 * 每张优惠券发放的数量 
即memberList.size()*couponActivityItem.getNum() 也就是memberCouponList.size()

![](https://minio.pigx.vip/oss/2022/08/nb5p9Y.png)
![](https://minio.pigx.vip/oss/2022/08/eMZZnl.png)

如演示环境,3人没人领取3张,应该是9张

Signed-off-by: Fxz <2235602974@qq.com>
2022-08-31 09:11:06 +00:00
OceansDeep
c6c0801d14 !228 优惠券折扣条件判断不可能同时成立
Merge pull request !228 from Fxz/N/A
2022-08-30 09:18:23 +00:00
Chopper
196d27b7c5 店铺入驻问题处理 2022-08-29 15:48:39 +08:00
Fxz
daed961a99 优惠券折扣条件判断不可能同时成立
Signed-off-by: Fxz <2235602974@qq.com>
2022-08-27 06:07:44 +00:00
OceansDeep
8387e03254 !227 修复consumer每日任务更新会员评价异常问题;优化生成每日秒杀活动
Merge pull request !227 from OceansDeep/feature/pg
2022-08-25 02:48:55 +00:00
paulGao
b6d43a069f a 2022-08-25 10:47:31 +08:00
paulGao
558eea94e2 修复consumer每日任务更新会员评价异常问题;优化生成每日秒杀活动 2022-08-25 10:43:56 +08:00
OceansDeep
f5f99efff6 !226 增加商品sku参数空值判断
Merge pull request !226 from OceansDeep/feature/pg
2022-08-19 09:47:26 +00:00
paulGao
cc95fa92e7 增加商品sku参数空值判断 2022-08-19 17:46:12 +08:00
OceansDeep
9eba3287b2 !225 增加订单取消返还优惠券
Merge pull request !225 from OceansDeep/feature/pg
2022-08-16 00:36:58 +00:00
paulGao
46845dd4b9 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-08-15 09:42:52 +08:00
paulGao
c3be2cdfe5 增加订单取消返还优惠券 2022-08-12 17:35:42 +08:00
OceansDeep
443cf1829e !224 修复秒杀活动商品时间不正确问题
Merge pull request !224 from OceansDeep/feature/pg
2022-08-12 03:02:33 +00:00
paulGao
ae833b245e 修复秒杀活动商品时间不正确问题 2022-08-12 11:00:33 +08:00
OceansDeep
88338877b0 !223 优化秒杀活动获取时,当前时间大于活动最后一个时间时,显示最后一个时间
Merge pull request !223 from OceansDeep/feature/pg
2022-08-11 12:25:57 +00:00
paulGao
0d74a4aecc 优化秒杀活动获取时,当前时间大于活动最后一个时间时,显示最后一个时间。优化订单促销类型显示 2022-08-11 20:17:58 +08:00
OceansDeep
1cf0496cd1 !222 优化清除无效促销活动任务,改为批量清除
Merge pull request !222 from OceansDeep/feature/pg
2022-08-11 04:01:38 +00:00
paulGao
050b026166 优化清除无效促销活动任务,改为批量清除 2022-08-11 11:57:58 +08:00
Chopper
8d95319e39 每日任务日志前缀修复 2022-08-11 10:16:53 +08:00
OceansDeep
fe12b0a665 !221 修复新增编辑商品时,生成商品索引时,参数没有传递问题。优化商品新增编辑代码
Merge pull request !221 from OceansDeep/feature/pg
2022-08-10 12:37:17 +00:00
paulGao
93dd2e06d8 修复新增编辑商品时,生成商品索引时,参数没有传递问题。优化商品新增编辑代码 2022-08-10 20:27:38 +08:00
fengtianyangyang
05f29a264e 启动报错 2022-08-09 20:26:40 +08:00
fengtianyangyang
26dd8ed13a Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop into fengtianyangyang_clerk
 Conflicts:
	DB/version4.2.3toMASTER.sql
	common-api/src/main/java/cn/lili/controller/common/SiteController.java
	common-api/src/main/java/cn/lili/controller/common/UploadController.java
	config/application.yml
	framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java
	framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
	framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java
	framework/src/main/java/cn/lili/modules/page/serviceimpl/PageDataServiceImpl.java
2022-08-09 18:54:19 +08:00
Chopper
72c58059bd 优惠券活动创建限制 2022-08-09 16:08:54 +08:00
xiaochangbai
7e596d47a6 fix: 修复相关bug 2022-08-08 11:11:28 +08:00
Chopper
c38a8c0475 地址重复存在的问题处理 2022-08-08 09:14:15 +08:00
xiaochangbai
15adbf489e feat: app扫码登录 2022-08-07 21:35:27 +08:00
Chopper
98b863be6f 后台操作店铺验证存在问题处理 2022-08-05 17:14:20 +08:00
Chopper
ecd40523d4 演示站点限制修改密码 2022-08-04 11:17:14 +08:00
OceansDeep
7f6de6e64e !218 修复商品索引生成报错问题
Merge pull request !218 from OceansDeep/feature/pg
2022-08-02 07:22:56 +00:00
paulGao
002163fbdc 修复商品索引生成报错问题 2022-08-02 15:21:00 +08:00
paulGao
da9ea504fb Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-08-02 15:15:43 +08:00
Chopper
bb171f6e23 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop
# Conflicts:
#	framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java
2022-08-02 10:57:31 +08:00
Chopper
b860c2eed0 优化结构 2022-08-02 10:52:47 +08:00
Chopper
fdf81d1b39 分词问题优化 2022-08-02 10:51:10 +08:00
paulGao
40bf6d3010 优化获取秒杀活动 2022-07-27 22:13:56 +08:00
OceansDeep
2d63d36f51 !217 优化促销验证商品,检查商品是否可以参与促销
Merge pull request !217 from OceansDeep/feature/pg
2022-07-27 09:22:37 +00:00
paulGao
ed976e90dc 优化促销验证商品,检查商品是否可以参与促销 2022-07-27 17:21:48 +08:00
OceansDeep
6f4994b5da !216 add transactional
Merge pull request !216 from OceansDeep/feature/pg
2022-07-27 04:07:29 +00:00
paulGao
a2a923809e add transactional 2022-07-27 12:06:47 +08:00
OceansDeep
8d06ccace9 !215 修复小程序注册用户没有发送会员注册信息问题
Merge pull request !215 from OceansDeep/feature/pg
2022-07-26 11:30:20 +00:00
paulGao
99479e722a 修复小程序注册用户没有发送会员注册信息问题 2022-07-26 19:18:01 +08:00
OceansDeep
70890cdc19 !214 修复积分商品购买时,价格问题
Merge pull request !214 from OceansDeep/feature/pg
2022-07-25 13:00:47 +00:00
paulGao
0eebc544a6 修复积分商品购买时,价格问题 2022-07-25 20:52:03 +08:00
OceansDeep
12280e5769 !213 优化代码,修复自动生成的es分词无效问题
Merge pull request !213 from OceansDeep/feature/pg
2022-07-21 03:53:36 +00:00
paulGao
4ec2c1b943 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-07-21 11:52:17 +08:00
paulGao
d6edb93403 优化代码,修复自动生成的es分词无效问题 2022-07-21 11:52:12 +08:00
Chopper
3236a05ae9 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-07-19 18:45:42 +08:00
Chopper
5576ae7305 解决 lilishop4.2.4中存在序列化购物车,促销信息会在序列化后丢失,无法反序列化。 2022-07-19 18:45:08 +08:00
Chopper
d5aadf6926 店铺入驻分批保存可能存在无法入住问题解决 2022-07-19 18:38:38 +08:00
paulGao
2eb469b228 improve code 2022-07-19 15:24:39 +08:00
Chopper
088c6faae1 店铺保存问题处理,解决可能存在多次入驻店铺无法申请失败问题 2022-07-19 15:15:59 +08:00
OceansDeep
04f7d22e3f !212 优化商品索引的促销信息生成。优化批量生成分词
Merge pull request !212 from OceansDeep/feature/pg
2022-07-18 11:12:12 +00:00
paulGao
950274f6be 优化商品索引的促销信息生成。优化批量生成分词 2022-07-18 19:06:17 +08:00
OceansDeep
c6596fff1a !211 更新部分es日志
Merge pull request !211 from OceansDeep/feature/pg
2022-07-18 04:11:55 +00:00
paulGao
7cbbc57514 更新部分es日志 2022-07-18 12:11:16 +08:00
fengtianyangyang
8041a4a4fc 店铺退款流水金额计算错误 2022-07-15 14:27:10 +08:00
OceansDeep
1fa247aa35 !210 优化保存楼层装修。优化管理端优惠券搜索
Merge pull request !210 from OceansDeep/feature/pg
2022-07-13 13:05:15 +00:00
paulGao
7de49dcfb8 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-07-13 20:03:12 +08:00
paulGao
b21e307640 优化保存楼层装修。优化管理端优惠券搜索 2022-07-13 20:03:05 +08:00
Chopper
aae7eedd49 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-07-13 19:06:06 +08:00
Chopper
bce60310c5 minio增加字段,可配置前端访问地址。endpoint可以继续走局域网ip 2022-07-13 19:05:59 +08:00
OceansDeep
d17cb4ce96 !209 修复批发商品订单下单时,订单单项价格错误问题
Merge pull request !209 from OceansDeep/feature/pg
2022-07-12 09:16:09 +00:00
paulGao
4b25a03b1d Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-07-12 17:13:35 +08:00
paulGao
682433efe4 修复批发商品订单下单时,订单单项价格错误问题 2022-07-12 17:13:17 +08:00
Chopper
a6f28d67eb 代码格式化一下 2022-07-12 10:17:34 +08:00
Chopper
c663aa2799 minio上传失败前端无感知问题处理 2022-07-11 18:53:07 +08:00
Chopper
2c02b816b5 一个分销时间展示以及一个字段没有正确的存储值问题处理 2022-07-11 18:52:31 +08:00
Chopper711
d14b87729a !208 解决短信发送失败 时,前端无感知问题。from zypy333/N/A
Merge pull request !208 from zypy333/N/A
2022-07-11 03:51:16 +00:00
fengtianyangyang
70b41ab8a8 sql修改 2022-07-08 15:17:59 +08:00
zypy333
d185b548f7 update framework/src/main/java/cn/lili/modules/sms/impl/SmsUtilAliImplService.java.
抛出返回码错误
2022-07-08 03:57:53 +00:00
OceansDeep
4b5dcec08b !207 优化取消订单生成店铺流水
Merge pull request !207 from OceansDeep/feature/pg
2022-07-07 10:11:04 +00:00
paulGao
13a7a875a4 优化取消订单生成店铺流水 2022-07-07 18:10:31 +08:00
OceansDeep
8743bf4b93 !206 增加取消订单生成店铺流水,优化代码
Merge pull request !206 from OceansDeep/feature/pg
2022-07-07 09:26:32 +00:00
paulGao
d8792e9e27 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-07-07 17:25:36 +08:00
paulGao
82a0cd0336 增加取消订单生成店铺流水,优化代码 2022-07-07 17:25:15 +08:00
Chopper
60ae5b8965 后台用户编辑问题处理 2022-07-06 17:30:01 +08:00
Chopper
4d4b54ec36 分销订单0元佣金记录订单问题处理 2022-07-06 16:41:40 +08:00
Chopper
53f6910a34 积分商品不允许使用优惠券 2022-07-06 15:57:49 +08:00
OceansDeep
826c3a8f8f !205 代码优化,修复订单投诉问题
Merge pull request !205 from OceansDeep/feature/pg
2022-07-04 10:32:34 +00:00
paulGao
727ddd3198 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-07-04 18:31:49 +08:00
paulGao
7b535434ae 代码优化,修复订单投诉问题 2022-07-04 18:31:36 +08:00
Chopper711
da8ed53c60 !204 修正方法命名
Merge pull request !204 from zypy333/N/A 感谢支持
2022-07-04 09:14:40 +00:00
Chopper
40e9d6f392 时间不归零导致无法展示订单统计历史数据 2022-07-01 15:36:07 +08:00
zypy333
d189f55de1 修正方法命名 2022-07-01 03:18:20 +00:00
Chopper711
893f4a0388 !202 update framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java.
Merge pull request !202 from zypy333/N/A
2022-06-30 07:21:35 +00:00
zypy333
a28547c581 update framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java.
修正错别字
2022-06-29 03:10:05 +00:00
OceansDeep
a8079e0d35 !201 优化生成索引时,自动将分词信息添加到分词表
Merge pull request !201 from OceansDeep/feature/pg
2022-06-29 01:42:36 +00:00
paulGao
60a210a45f 优化生成索引时,自动将分词信息添加到分词表 2022-06-29 09:33:02 +08:00
Chopper
170aa01946 变更购物车会导致优惠券金额错误问题处理 2022-06-27 17:57:48 +08:00
OceansDeep
f4c8e5d493 !200 优化商品索引,如数据库中无当前商品则删除商品索引
Merge pull request !200 from OceansDeep/feature/pg
2022-06-23 01:58:22 +00:00
paulGao
b3a0a402d7 优化监听事务提交发送mq事件,为订单变更发送mq增加事务提交监听 2022-06-23 09:55:52 +08:00
Chopper711
b6c70d1530 update README.md. 2022-06-23 01:46:05 +00:00
Chopper
8fbc7b9f5c Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-06-23 09:11:37 +08:00
Chopper
3c2e73b5f5 调整es日志级别 2022-06-23 09:11:33 +08:00
paulGao
1a221eefe3 优化商品索引,如数据库中无当前商品则删除商品索引 2022-06-22 18:42:04 +08:00
OceansDeep
5912428c00 !199 优化监听事务提交发送mq事件,为订单变更发送mq增加事务提交监听
Merge pull request !199 from OceansDeep/feature/pg
2022-06-22 09:46:45 +00:00
paulGao
f01236cc96 优化监听事务提交发送mq事件,为订单变更发送mq增加事务提交监听 2022-06-22 17:44:40 +08:00
paulGao
ad1f5a297e 修复获取会员钱包可能发生的异常 2022-06-22 17:32:19 +08:00
paulGao
96697e11fd 优化监听事务提交发送mq事件,为订单变更发送mq增加事务提交监听 2022-06-22 17:31:26 +08:00
OceansDeep
25e8b9b578 !198 修复编辑有参加商品的促销活动的时间时,原参与活动的商品的时间没有更新问题
Merge pull request !198 from OceansDeep/feature/pg
2022-06-22 07:06:39 +00:00
paulGao
49603e29bd 修复编辑有参加商品的促销活动的时间时,原参与活动的商品的时间没有更新问题 2022-06-22 15:05:25 +08:00
OceansDeep
6a18489c15 !197 代码结构优化。默认拼团结束时间修改为24小时
Merge pull request !197 from OceansDeep/feature/pg
2022-06-22 06:53:21 +00:00
paulGao
cb52fca2a4 代码结构优化。默认拼团结束时间修改为24小时 2022-06-22 14:44:58 +08:00
paulGao
00964e6bbf Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-06-20 15:29:10 +08:00
Chopper
ea1b91af2a 日志内容意义不明确优化,补充备注。去除一行无效的代码。 2022-06-20 12:01:32 +08:00
Chopper
8894e5482f minio删除文件错误bug修复 2022-06-20 11:06:20 +08:00
paulGao
e17e3474ca 优化商品索引搜索 2022-06-17 19:08:08 +08:00
paulGao
6d09bd4987 优化商品索引搜索 2022-06-17 15:40:52 +08:00
OceansDeep
84f3907140 !194 修复生成索引时no such index问题
Merge pull request !194 from OceansDeep/feature/pg
2022-06-17 03:21:07 +00:00
paulGao
d704e2eb55 修复生成索引时no such index问题 2022-06-17 11:20:22 +08:00
OceansDeep
2e4c6f4284 !193 增加批发商品不能参加促销活动的限制 修复批发商品购买数量限制
Merge pull request !193 from OceansDeep/feature/pg
2022-06-16 08:47:21 +00:00
paulGao
61c77e0047 修复批发商品购买数量限制 2022-06-16 16:46:09 +08:00
paulGao
cf1e6fc283 增加批发商品不能参加促销活动的限制 2022-06-16 16:40:28 +08:00
OceansDeep
b361e46fb7 !192 优化代码,修复bug
Merge pull request !192 from OceansDeep/feature/pg
2022-06-16 02:22:47 +00:00
paulGao
7bb06e7fdc 优化代码,修复bug 2022-06-16 10:21:41 +08:00
caihongcheng
9f83b40be4 错误提交 2022-06-15 18:21:06 +08:00
caihongcheng
1edd3441bc 电子面单 2022-06-15 18:09:55 +08:00
OceansDeep
079a4a2cf6 !191 优化编辑店铺信息后,清除缓存
Merge pull request !191 from OceansDeep/feature/pg
2022-06-14 07:38:31 +00:00
paulGao
049a759cda 优化编辑店铺信息后,清除缓存 2022-06-14 15:36:29 +08:00
OceansDeep
a6ff38159f !190 优化索引生成,商品索引查询
Merge pull request !190 from OceansDeep/feature/pg
2022-06-13 10:51:16 +00:00
paulGao
056f040317 优化索引生成,商品索引查询 2022-06-13 18:50:09 +08:00
chopper711
c161206832 update README.md. 2022-06-13 06:54:12 +00:00
chopper711
e9a0c293f8 update README.md. 2022-06-13 06:53:48 +00:00
OceansDeep
24de62f5f4 !189 优化代码结构
Merge pull request !189 from OceansDeep/feature/pg
2022-06-10 10:43:28 +00:00
paulGao
b7b278f296 优化代码结构 2022-06-10 18:42:56 +08:00
OceansDeep
712941038b !188 优化初始化商品索引,增加编辑商品时,保留原商品的销量、好评率和评价量
Merge pull request !188 from OceansDeep/feature/pg
2022-06-09 08:46:56 +00:00
paulGao
4316fa8953 优化初始化商品索引,增加编辑商品时,保留原商品的销量、好评率和评价量 2022-06-09 16:43:16 +08:00
paulGao
d14763d52c 优化代码,增加buyer启动时检测es索引存在,如不存在则自动创建 2022-06-09 15:32:24 +08:00
OceansDeep
79e1f34890 !187 优化代码,修复bug
Merge pull request !187 from OceansDeep/feature/pg
2022-06-09 01:19:19 +00:00
paulGao
3cb8e066b3 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-06-09 09:16:18 +08:00
paulGao
5e6a56e193 优化代码,修改一个可能出现的获取商品分类的错误 2022-06-09 09:15:57 +08:00
paulGao
478ba2048a 修改商品有效性判定中,根据商品更新时间比较改为商品创建时间比较(因修改了商品更新逻辑,每次都是删除后新增,所以无商品更新时间) 2022-06-09 09:13:13 +08:00
paulGao
8426294a0f 修复判断会员存在条件参数传递顺序错误问题 2022-06-08 16:35:44 +08:00
OceansDeep
178954c8b2 !186 适配优化的sql,将平台id改为0
Merge pull request !186 from OceansDeep/feature/pg
2022-06-08 08:16:05 +00:00
paulGao
6ce2b65d89 适配优化的sql,将平台id改为0 2022-06-08 16:15:14 +08:00
fengtianyangyang
fb45fee426 提现申请时,预存款金额为0无法审核通过错误 2022-06-07 18:41:31 +08:00
Chopper
ffca49f469 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-06-07 18:30:24 +08:00
Chopper
f32c7a7253 运费计算模式调整 同一运费模版的商品,采用累加计算,起送费/虚件(重)费用。 2022-06-07 18:30:21 +08:00
OceansDeep
a64ccdba78 !185 修复一个可能出现的获取促销信息的bug
Merge pull request !185 from OceansDeep/feature/pg
2022-06-07 07:24:58 +00:00
paulGao
5f6bae6fa9 修复一个可能出现的获取促销信息的bug 2022-06-07 15:18:07 +08:00
OceansDeep
fd503b4071 !184 过滤无效促销信息异常增加日志
Merge pull request !184 from OceansDeep/feature/pg
2022-06-07 07:07:54 +00:00
paulGao
9ece357e39 过滤无效促销信息异常增加日志 2022-06-07 15:07:14 +08:00
OceansDeep
d53c8362a2 !183 修复一个可能出现的获取促销信息的bug
Merge pull request !183 from OceansDeep/feature/pg
2022-06-07 04:31:08 +00:00
paulGao
8f3ca8c28d 修复一个可能出现的获取促销信息的bug 2022-06-07 12:30:29 +08:00
OceansDeep
7f5675ae3c !182 修复一个可能出现的获取促销信息的bug
Merge pull request !182 from OceansDeep/feature/pg
2022-06-07 04:16:37 +00:00
paulGao
7b9f4be98c 修复一个可能出现的获取促销信息的bug 2022-06-07 12:16:08 +08:00
Chopper
ca352ca341 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-06-07 09:37:25 +08:00
Chopper
a22ccbdda5 兼容MINIO 2022-06-07 09:35:58 +08:00
OceansDeep
e6b50248de !181 修复券活动获取的优惠券某些情况不能使用问题
Merge pull request !181 from OceansDeep/feature/pg
2022-06-06 07:26:12 +00:00
paulGao
ee3f8a9261 修复券活动获取的优惠券某些情况不能使用问题 2022-06-06 15:24:52 +08:00
OceansDeep
922d7222cd !180 修复一个可能发生的获取订单信息时发生的错误
Merge pull request !180 from OceansDeep/feature/pg
2022-06-06 02:13:39 +00:00
paulGao
4a8900105b Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-06-06 10:12:17 +08:00
paulGao
65a4bb7778 修复一个可能发生的获取订单信息时发生的错误 2022-06-06 10:12:09 +08:00
OceansDeep
3944551c06 !179 修复取消订单商品时库存更新问题
Merge pull request !179 from OceansDeep/feature/pg
2022-06-02 09:13:07 +00:00
paulGao
66d7ffbb17 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-06-02 16:58:42 +08:00
paulGao
c4d879a0ad 修复取消订单商品时库存更新问题 2022-06-02 16:50:26 +08:00
OceansDeep
b97f77c740 !176 智能商品推荐
Merge pull request !176 from viper/Intelligent_recommendation
2022-06-02 07:17:40 +00:00
OceansDeep
27ad9b0599 !177 增加结算时当前商品促销最新状态的查询
Merge pull request !177 from OceansDeep/feature/pg
2022-06-02 02:32:37 +00:00
paulGao
234b8ab31c 增加结算时当前商品促销最新状态的查询(修复手动删除或下架促销活动时,购物车商品还是促销价格问题) 2022-06-02 10:31:24 +08:00
Chopper
519a608316 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-06-02 09:16:46 +08:00
Chopper
d4a13c8a82 店铺商品数量,店铺缓存数据2小时。优化 2022-06-02 09:16:30 +08:00
xiaochangbai
ccb57411a2 refactor:优化代码 2022-06-01 21:27:51 +08:00
xiaochangbai
486bebe6d2 feat:智能商品推荐 2022-06-01 18:03:30 +08:00
OceansDeep
5b3129bf01 !174 优化商品信息变更时,删除商品缓存流程
Merge pull request !174 from OceansDeep/feature/pg
2022-06-01 07:24:22 +00:00
paulGao
23c742c4c6 优化商品信息变更时,删除商品缓存流程 2022-06-01 15:23:21 +08:00
OceansDeep
90d3bbd79e !173 修复新增商品时,批发商品规则没有保存问题
Merge pull request !173 from OceansDeep/feature/pg
2022-05-31 09:27:36 +00:00
paulGao
400a06d2ac 修复新增商品时,批发商品规则没有保存问题 2022-05-31 17:23:21 +08:00
OceansDeep
594d2f620c !172 修复编辑商品时默认读取缓存中的数据
Merge pull request !172 from OceansDeep/feature/pg
2022-05-31 09:01:34 +00:00
paulGao
1a6ec578de 修复编辑商品时默认读取缓存中的数据 2022-05-31 17:01:01 +08:00
OceansDeep
e009604595 !171 修复无法新建批发商品
Merge pull request !171 from OceansDeep/feature/pg
2022-05-31 08:34:24 +00:00
paulGao
8b23c623d1 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-05-31 16:34:01 +08:00
paulGao
a3c4e72902 修复无法新建批发商品 2022-05-31 16:33:10 +08:00
chopper711
7e54412fc3 !167 修复直播延迟消息状态错误
Merge pull request !167 from viper/fix_broadcast-status-msg
2022-05-31 08:09:02 +00:00
OceansDeep
564970a324 !170 分类编辑时,清除缓存;优化代码
Merge pull request !170 from OceansDeep/feature/pg
2022-05-31 06:38:52 +00:00
paulGao
1ecd32027e 分类编辑时,清除缓存;优化代码 2022-05-31 14:37:18 +08:00
OceansDeep
ceb5727337 !169 修复新增编辑商品无商品图片问题
Merge pull request !169 from OceansDeep/feature/pg
2022-05-30 02:42:56 +00:00
paulGao
17c7552f7f 增加商品批发销售模式的处理。优化生成商品sku的结构。 2022-05-30 10:39:12 +08:00
OceansDeep
8fbcad8856 !168 增加商品批发销售模式的处理。优化生成商品sku的结构。
Merge pull request !168 from OceansDeep/feature/pg
2022-05-27 10:28:46 +00:00
paulGao
a61fd454b4 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-05-27 16:32:56 +08:00
paulGao
c0337afbaa 优化代码。升级hutool和lombok依赖 2022-05-27 16:32:39 +08:00
paulGao
acb9e78a36 增加商品批发销售模式的处理。优化生成商品sku的结构。 2022-05-27 16:32:00 +08:00
xiaochangbai
431ff04644 fix: 修复直播延迟消息状态错误 2022-05-26 16:24:39 +08:00
Chopper
201fb0a136 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-05-25 17:41:36 +08:00
Chopper
90671729ea 上一周期数据问题处理 2022-05-25 17:41:31 +08:00
OceansDeep
8596175f8e !166 修复商品编辑规格时,删除规格后。es中没有删除问题。
Merge pull request !166 from OceansDeep/feature/pg
2022-05-25 03:25:34 +00:00
paulGao
e9fdec6bb0 修复商品编辑规格时,删除规格后。es中没有删除问题。 2022-05-25 11:22:53 +08:00
OceansDeep
026b6aca07 !165 优化更新商品sku的方式
Merge pull request !165 from OceansDeep/feature/pg
2022-05-19 09:41:30 +00:00
paulGao
fafe3c0c55 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-05-19 17:35:23 +08:00
paulGao
f2b327c811 添加一种更新商品sku的方式。mysql replace into(先查找,如存在则删除,新增。如不存在新增) 2022-05-19 17:34:55 +08:00
caihongcheng
7fccbc2aa2 根据类型查看文章接口缺失 2022-05-19 15:23:44 +08:00
Chopper
7c40f5988b Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-05-18 22:38:18 +08:00
Chopper
b19e4043cd 字符串长度处理 2022-05-18 22:38:13 +08:00
OceansDeep
db75aa1cab !159 优化修改sku时,如存在sku则不新增
Merge pull request !159 from OceansDeep/feature/pg
2022-05-18 14:02:16 +00:00
paulGao
f5718b4062 优化修改sku时,如存在sku则不新增 2022-05-18 22:00:42 +08:00
Chopper
d25f17782b 规范长度限制 2022-05-18 21:35:17 +08:00
Chopper
e3626a094d 支付参数长度进行限制 2022-05-18 16:48:03 +08:00
Chopper
fc7b17fe40 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-05-18 15:15:31 +08:00
Chopper
87e13b3677 支付问题处理 2022-05-18 15:15:22 +08:00
caihongcheng
a540e42460 siteController 2022-05-18 14:35:34 +08:00
OceansDeep
c4e24fb0a3 !158 优化生成商品索引,分批生成
Merge pull request !158 from OceansDeep/feature/pg
2022-05-13 10:19:42 +00:00
paulGao
31fb55635e 优化生成商品索引,分批生成 2022-05-13 18:18:46 +08:00
Chopper
3dcff0b682 在线人数流量展示少一个小时问题处理 2022-05-13 17:42:36 +08:00
Chopper
81f48d9c92 对上一周期的参数赋值做处理 2022-05-13 11:45:30 +08:00
Chopper
6331b0d587 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-05-13 11:19:11 +08:00
Chopper
57cf3b94e0 足迹分页相关问题处理 2022-05-13 11:19:02 +08:00
OceansDeep
b683eac996 !157 优化修改sku时,如存在sku则不新增
Merge pull request !157 from OceansDeep/feature/pg
2022-05-13 03:09:18 +00:00
paulGao
ccdcb1d0f6 优化修改sku时,如存在sku则不新增 2022-05-13 11:03:26 +08:00
Chopper
4f5f02f030 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-05-13 09:19:24 +08:00
Chopper
0629ce51af 默认值给予0 2022-05-13 09:19:21 +08:00
paulGao
46f1fcc269 优化修改sku时,如存在sku则不新增 2022-05-13 09:01:06 +08:00
fengtianyangyang
b49b0290f8 还原多合并代码 2022-05-12 15:30:53 +08:00
fengtianyangyang
7ca351f7cd 结算单-平台优惠券补贴金额错误修改 2022-05-11 19:20:35 +08:00
Chopper
850b124da3 流量统计增加对上一周期的数据填充 2022-05-11 17:49:44 +08:00
OceansDeep
49a2d3cab3 !156 更新阿里云maven地址。更新部分依赖到最新
Merge pull request !156 from OceansDeep/feature/pg
2022-05-10 06:47:19 +00:00
paulGao
038eda1562 更新阿里云maven地址。更新部分依赖到最新 2022-05-10 14:38:57 +08:00
caihongcheng
b91c8e34c2 电子面单 2022-05-09 09:27:30 +08:00
caihongcheng
0a631a7c93 requestData多了个引号 2022-05-07 21:24:51 +08:00
caihongcheng
4705c2595a 追踪物流信息增加手机号后四位参数 2022-05-06 16:16:34 +08:00
Chopper
0ff6809d63 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-05-06 15:51:19 +08:00
Chopper
a375feabfc 售后流水问题,售后代码被多个地方调用的方式优化,以后只有一个入口 2022-05-06 15:51:13 +08:00
OceansDeep
5b9fd139a3 !155 修复结算时,清空购物车问题
Merge pull request !155 from OceansDeep/feature/pg
2022-05-06 07:51:04 +00:00
paulGao
fd92d93289 修复结算时,清空购物车问题 2022-05-06 15:50:20 +08:00
paulGao
840637c0d0 优化编辑商品状态时,商品缓存的删除 2022-05-05 17:58:13 +08:00
OceansDeep
f41f5386cc !154 修复防重复提交bug
Merge pull request !154 from OceansDeep/feature/pg
2022-05-05 04:01:58 +00:00
paulGao
f4a7d8ea92 修复防重复提交bug 2022-05-05 11:57:05 +08:00
OceansDeep
26c9160c75 !152 优化默认生成的es商品索引结构。解决初次启动时,搜索商品报错
Merge pull request !152 from OceansDeep/feature/pg
2022-04-27 10:17:58 +00:00
paulGao
4c1955da75 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-27 18:15:30 +08:00
paulGao
66e6272571 优化默认生成的es商品索引结构。解决初次启动时,搜索商品报错 2022-04-27 18:15:11 +08:00
Chopper
e9d5e705ed Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-04-26 14:16:44 +08:00
Chopper
16fdb28141 多修改的代码还原 2022-04-26 14:16:39 +08:00
OceansDeep
e289cf29fe !151 优化合并
Merge pull request !151 from OceansDeep/feature/pg
2022-04-26 03:40:22 +00:00
paulGao
1cd74cc26a Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-26 11:37:53 +08:00
paulGao
27112e35b3 优化搜索关键字不能为空格。优化管理端商品上下架时没有清空goods缓存问题 2022-04-26 11:37:48 +08:00
paulGao
b2a8578f43 增加异常重试机制。(目前作用于es批量更新删除时,有时会出现的内容版本冲突问题) 2022-04-26 11:36:28 +08:00
Chopper
0e0a8b039d 管理员用户权限不再放在永久缓存,而是放在临时缓存(5分钟),由于访问频率较低,在加上涉及的业务太复杂,所以去除了之前对权限的永久缓存以及模糊删除用户权限缓存相关代码 2022-04-26 09:33:54 +08:00
Chopper
cbd201c43b 还原配置 2022-04-25 18:58:01 +08:00
Chopper
a6d734bacf Merge branch 'hotwords'
热词功能,管理端权限存在的问题处理
# Conflicts:
#	framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java
#	framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java
#	manager-api/src/main/java/cn/lili/controller/hotwords/HotWordsManagerController.java
2022-04-25 18:32:46 +08:00
Chopper
8dc86e0482 热词功能完善 2022-04-25 18:08:06 +08:00
paulGao
d0226611d7 增加初始化生成索引日志 2022-04-25 17:34:24 +08:00
OceansDeep
2b21c3cd09 !150 优化生成索引mapping日志
Merge pull request !150 from OceansDeep/feature/pg
2022-04-25 09:23:34 +00:00
paulGao
b1bdd9b8a5 优化生成索引mapping日志 2022-04-25 17:22:52 +08:00
Chopper
bb50510ecb 解决管理员权限相关问题 2022-04-25 10:31:39 +08:00
paulGao
aa185c8bd2 优化consumer生成商品索引。改为批量生成 2022-04-25 10:26:51 +08:00
fengtianyangyang
99e3b234c9 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop 2022-04-22 18:47:10 +08:00
fengtianyangyang
5168d8d08d 配置文件还原 2022-04-22 18:45:43 +08:00
fengtianyangyang
230a8810ef 积分商品,砍价商品结算单错误问题 2022-04-22 18:44:32 +08:00
OceansDeep
e8e8c1abcc !149 修复结算时,无有效商品,造成空订单问题
Merge pull request !149 from OceansDeep/feature/pg
2022-04-22 08:50:52 +00:00
paulGao
0354d6dc3e 修复结算时,无有效商品,造成空订单问题 2022-04-22 16:27:13 +08:00
fengtianyangyang
47ad388f7d 售后申请数量错误 2022-04-22 11:10:42 +08:00
fengtianyangyang
2d57483805 结算单优惠券退款异常 2022-04-22 11:02:23 +08:00
OceansDeep
363dbd3a7f !148 修复项目启动时可能会造成es client must not be null的问题
Merge pull request !148 from OceansDeep/feature/pg
2022-04-22 01:13:07 +00:00
paulGao
5b5863c899 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-22 09:12:11 +08:00
paulGao
4c1ae8c3cc 修复一个项目启动时可能会造成es client must not be null的问题 2022-04-22 09:11:51 +08:00
OceansDeep
29ed211519 !147 优化
Merge pull request !147 from OceansDeep/feature/pg
2022-04-21 08:28:26 +00:00
paulGao
9f965c4e56 修复主订单取消后赠品订单不会取消问题。优化热词 2022-04-21 16:25:43 +08:00
Chopper
0148868129 分类递归错误的参数传递问题解决 2022-04-21 15:49:53 +08:00
paulGao
d46863b5b5 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-21 15:12:27 +08:00
fengtianyangyang
1917aa13d5 店铺结算空指针问题 2022-04-21 10:51:12 +08:00
Chopper
2994131048 当结算周期只有一天时,无法结算问题处理 2022-04-21 10:11:21 +08:00
paulGao
f0d6938127 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-20 17:54:21 +08:00
paulGao
0203630d6a 增加店铺商品索引操作 2022-04-20 09:39:03 +08:00
Chopper
89c5c2dd83 评价数量展示异常问题处理 2022-04-19 10:18:25 +08:00
Chopper
ce1954e7d3 消费者一个错误处理 2022-04-19 09:39:33 +08:00
Chopper
947a82eac5 热词统计,热词功能改版 2022-04-19 09:28:26 +08:00
fengtianyangyang
9dc01f6057 店铺结算单结算问题 2022-04-18 19:09:05 +08:00
paulGao
37c5ce541b 优化楼层装修 2022-04-17 21:46:34 +08:00
paulGao
726eb06714 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-17 21:45:49 +08:00
fengtianyangyang
df505e0e17 店铺结算单金额问题 2022-04-15 19:05:27 +08:00
paulGao
06fffac835 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-14 09:09:25 +08:00
paulGao
264a423444 remove invalid class 2022-04-14 09:09:22 +08:00
Chopper
6ae9692358 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-04-13 16:58:23 +08:00
Chopper
7270564b10 由于代码调用顺序错误,导致总是输出一段错误的日志内容。 2022-04-13 16:58:19 +08:00
paulGao
a485a29868 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-13 14:30:40 +08:00
fengtianyangyang
ec04c3221f 移除文章类型删除 2022-04-13 12:00:40 +08:00
Chopper
761982474c Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-04-13 11:49:32 +08:00
Chopper
d13b0404fb 增加一下短信验证码在info级别的日志打印 2022-04-13 11:49:23 +08:00
fengtianyangyang
6966376f91 文章增加文章类型修改及文章类型删除 2022-04-13 11:06:51 +08:00
Chopper
2720f5c0bb Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-04-11 14:18:42 +08:00
paulGao
881f039e44 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-11 14:18:39 +08:00
Chopper
81c7a72b9c 解决优惠券在购物车中缓存会出现的一些极端bug 2022-04-11 14:18:37 +08:00
fengtianyangyang
c0391e3fc1 微信同步消息时删除模板问题 2022-04-11 11:23:02 +08:00
paulGao
7e542750f6 增加每次获取优惠券信息时,检查优惠券是否过期 2022-04-08 16:59:12 +08:00
fengtianyangyang
7cbf638822 配置文件修改 2022-04-07 17:37:59 +08:00
fengtianyangyang
4cdb461c22 配置文件修改及sql 2022-04-07 17:35:22 +08:00
fengtianyangyang
ba57f19ee7 Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/shengxing into clerk 2022-04-07 17:13:04 +08:00
fengtianyangyang
9ba2693698 店员错误 2022-04-07 17:09:25 +08:00
OceansDeep
3439b7aee5 !146 修复秒杀活动相同商品参与时,删除其他活动商品信息问题
Merge pull request !146 from OceansDeep/feature/pg
2022-04-07 08:31:23 +00:00
paulGao
63b23fbe76 修复秒杀活动相同商品参与时,删除其他活动商品信息问题 2022-04-07 16:06:23 +08:00
paulGao
63fff2398e Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-07 14:32:12 +08:00
chopper711
db8796df99 update README.md. 2022-04-07 04:07:23 +00:00
Chopper
4095481411 会员促销运算时,优惠券会被缓存,可能导致无效数据返回。 2022-04-07 10:19:19 +08:00
paulGao
8e30defa0e 优化es商品搜索,全分词匹配改为2分词匹配 2022-04-06 10:39:51 +08:00
paulGao
06ee6d6359 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-06 09:29:38 +08:00
paulGao
a988dedfbf 增加根据名称获取地址信息 2022-04-02 18:42:03 +08:00
fengtianyangyang
f90c6fb27d 注释 2022-04-01 21:59:44 +08:00
OceansDeep
5292d6ef90 !145 fix bugs and improve code
Merge pull request !145 from OceansDeep/feature/pg
2022-04-01 07:25:20 +00:00
paulGao
e760af7216 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-04-01 15:21:55 +08:00
paulGao
e4889d82f2 替换弃用的hutool的SSLSocketFactoryBuilder 2022-04-01 15:21:28 +08:00
paulGao
9d170ecc30 修复获取店铺分类缓存key错误问题 2022-04-01 15:18:35 +08:00
Chopper
cf01011504 注销功能接口提供完善 2022-03-31 16:49:12 +08:00
Chopper
b1291d3c43 文件内容错误,恢复内容 2022-03-31 14:04:56 +08:00
Chopper
82546eed06 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-03-31 09:21:23 +08:00
Chopper
bf667e2aa6 签到问题处理 2022-03-31 09:21:18 +08:00
OceansDeep
5b6f208f53 !144 修复更新商品索引促销时,更新的促销信息不正确问题
Merge pull request !144 from OceansDeep/feature/pg
2022-03-30 09:24:23 +00:00
paulGao
210d56447c 优化更新全部商品索引时的性能 2022-03-30 17:21:57 +08:00
paulGao
c093261369 修复更新商品索引促销时,更新的促销信息不正确问题 2022-03-30 17:17:09 +08:00
paulGao
ee4f87d12d Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-03-30 14:27:29 +08:00
paulGao
74b0a5b081 修复一个搜索es商品时可能会发生的date格式转换问题 2022-03-30 14:27:12 +08:00
Chopper
f51774c077 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-03-30 11:54:58 +08:00
Chopper
bd9f7b8b9f 收款单创建时间字段问题处理 2022-03-30 11:54:56 +08:00
chopper711
dc55bd63f5 !141 ResultCode虚拟商品无需配送模板提示更正 from @Assure
Merge pull request !141 from Assure/master
2022-03-29 09:05:26 +00:00
chopper711
07ce947f78 !142 优化CommonUtil.getRandomNum() 提升随机数性能。 from @原批王
Merge pull request !142 from 原批王/master
2022-03-29 09:02:36 +00:00
OceansDeep
0f6cc70f66 !143 修复秒杀活动时间段为一个时。不显示问题。修复可能会出现的es代码编译问题。improve code
Merge pull request !143 from OceansDeep/feature/pg
2022-03-29 06:16:14 +00:00
paulGao
6d014a01bc 修复秒杀活动时间段为一个时。不显示问题。修复可能会出现的es代码编译问题。improve code 2022-03-29 10:04:36 +08:00
***
de5e97ac3a 优化cn.lili.common.utils.CommonUtil.getRandomNum方法逻辑 2022-03-27 07:41:34 +08:00
胡程
40e866aadd fix:修复配虚拟商品送模板提示 2022-03-25 18:12:40 +08:00
Chopper
36ce7593a9 由于铭感信息过滤手机号,导致管理端无法修改会员问题处理 2022-03-18 17:41:05 +08:00
Chopper
a2a28af41d 微信消息删除调用时,微信返回参数无法解析,尝试解决此问题。 2022-03-15 17:16:24 +08:00
Chopper
203a30a236 商品评价问题处理 2022-03-14 15:50:55 +08:00
Chopper
b7d418b5b7 修复虚拟订单核销校验问题 2022-03-14 10:44:06 +08:00
Chopper
1625f7ca76 自动关闭售后字段读取错误,修正 2022-03-10 15:52:12 +08:00
Chopper
8a67b905fc Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-03-10 15:31:39 +08:00
Chopper
9ee76b5328 取消一个无实际作用的限流注解
订单买家端可以查询到别人的订单问题处理
2022-03-10 15:31:23 +08:00
paulGao
df9dd7f435 merge conflict origin/master 2022-03-09 18:39:48 +08:00
paulGao
9d0d318d66 优化更新es商品促销流程 2022-03-09 18:39:04 +08:00
Chopper
ee1723a76b Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-03-08 20:37:17 +08:00
Chopper
c715422814 会员签到接口限制问题 2022-03-08 20:37:12 +08:00
fengtianyangyang
72e7941230 '权限修改' 2022-03-08 14:19:22 +08:00
paulGao
ac475ca456 增加促销活动更新日志 2022-03-08 12:08:12 +08:00
Chopper
ee5355668d 创建时间字段自动插入问题处理,签到增加访问限制 2022-03-08 11:57:48 +08:00
paulGao
1b30f0ad31 优化代码,修复编辑秒杀活动时执行顺序问题 2022-03-07 14:54:15 +08:00
paulGao
348f362b30 优化代码,修复编辑秒杀活动时执行顺序问题 2022-03-07 14:43:17 +08:00
fengtianyangyang
6bef12b91b '合并' 2022-03-03 18:36:42 +08:00
fengtianyangyang
5b4113be4d Merge branch 'clerk' of https://gitee.com/beijing_hongye_huicheng/lilishop
 Conflicts:
	config/application.yml
2022-03-03 18:05:32 +08:00
fengtianyangyang
a82d3fe57c '店员权限bug处理合并' 2022-03-03 18:03:04 +08:00
fengtianyangyang
4d551366ed Merge branches 'clerk' and 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop into clerk 2022-03-03 17:44:53 +08:00
fengtianyangyang
441cb6ddcb '代码合并' 2022-03-03 17:22:13 +08:00
itheinjury@163.com
f14efa2612 BUG修改 2022-03-03 16:11:08 +08:00
OceansDeep
f4d7c07f57 !137 修复更新秒杀活动时间,秒杀活动商品更新数据问题
Merge pull request !137 from OceansDeep/feature/pg
2022-03-03 03:27:08 +00:00
paulGao
66b2f1f55d 修复更新秒杀活动时间,秒杀活动商品更新数据问题 2022-03-03 11:22:20 +08:00
OceansDeep
b9b2c10ca0 !136 增加检测促销商品库存
Merge pull request !136 from OceansDeep/feature/pg
2022-03-02 12:41:01 +00:00
paulGao
0d5f871da7 增加检测促销商品库存 2022-03-02 20:39:17 +08:00
paulGao
1688a7ba15 修复秒杀活动 2022-03-02 20:33:45 +08:00
paulGao
3506e1c738 增加检测促销商品库存 2022-03-02 20:26:50 +08:00
lifenlong
ae0c4aea12 展示店铺设置 2022-03-02 18:42:56 +08:00
itheinjury@163.com
a52b672e9b 更新,BUG修改 2022-03-02 15:17:06 +08:00
paulGao
c4307aa821 修复秒杀商品下单时,不会更新秒杀商品的出售数量问题 2022-03-02 11:49:41 +08:00
OceansDeep
a2c32009f5 !135 修复未开始的秒杀活动修改时,先添加秒杀商品后修改时间时,秒杀活动商品时间没有改变问题
Merge pull request !135 from OceansDeep/feature/pg
2022-03-01 03:50:15 +00:00
paulGao
e27185d424 修复未开始的秒杀活动修改时,先添加秒杀商品后修改时间时,秒杀活动商品时间没有改变问题 2022-03-01 11:49:35 +08:00
paulGao
0714480e01 Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into feature/pg 2022-03-01 09:12:02 +08:00
lifenlong
504ee766f8 店铺楼层装修 2022-02-28 09:08:43 +08:00
paulGao
7358fd0c23 增加搜索商品时,无商品索引时初始化索引 2022-02-25 16:23:35 +08:00
OceansDeep
25be7094a2 !134 优化代码
Merge pull request !134 from OceansDeep/feature/pg
2022-02-24 02:17:05 +00:00
paulGao
627a1d7d5a 优化代码 2022-02-24 09:33:36 +08:00
Chopper
63b84ee69d 敏感词为空极端情况处理 2022-02-23 16:23:00 +08:00
Chopper
5eb76176ab Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-02-23 14:38:29 +08:00
Chopper
6115ecf673 秒杀活动自动新增bug处理 2022-02-23 14:38:23 +08:00
OceansDeep
d1a112d3a3 !133 修复秒杀活动
Merge pull request !133 from OceansDeep/feature/pg
2022-02-22 14:46:15 +00:00
paulGao
7d67e6a007 修复秒杀活动 2022-02-22 22:37:51 +08:00
Chopper
b824ee625e Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop 2022-02-21 22:59:59 +08:00
Chopper
961ac20213 更新IM相关 2022-02-21 22:59:55 +08:00
OceansDeep
f213b6f53f !132 优化rocketmq日志到logback
Merge pull request !132 from OceansDeep/feature/pg
2022-02-21 04:04:15 +00:00
paulGao
631600ab3f 优化rocketmq日志到logback 2022-02-21 12:03:07 +08:00
Chopper
d95fce2efb 注解日志异常问题处理 2022-02-21 10:57:57 +08:00
OceansDeep
1c6c009f14 !131 优化自动生成秒杀活动
Merge pull request !131 from OceansDeep/feature/pg
2022-02-18 12:27:53 +00:00
paulGao
f555f6423a 优化自动生成秒杀活动 2022-02-18 20:26:35 +08:00
paulGao
cd374f2d98 关闭consumer spring security身份验证页面 2022-02-18 15:38:58 +08:00
itheinjury@163.com
c62f31c387 更新 2022-02-18 11:14:01 +08:00
itheinjury@163.com
87ccad6ec7 更新 2022-02-18 11:04:56 +08:00
itheinjury@163.com
1600f7cdab 更新 2022-02-18 10:52:03 +08:00
itheinjury@163.com
dc3256566b 更新 2022-02-18 00:09:09 +08:00
itheinjury@163.com
b0858429fb 更新 2022-02-17 13:58:46 +08:00
itheinjury@163.com
2f3e2a5ae8 更新 2022-02-17 13:58:16 +08:00
itheinjury@163.com
f280ab88ec 更新 2022-02-17 13:57:43 +08:00
itheinjury@163.com
5b1b75cbbe 更新 2022-02-15 15:30:33 +08:00
itheinjury@163.com
b5e709f5e5 更新 2022-02-15 15:29:09 +08:00
itheinjury@163.com
65bd2ff35f 删除更新后文件 2022-02-14 20:01:44 +08:00
itheinjury@163.com
4468657030 删除更新后文件 2022-02-14 20:00:35 +08:00
itheinjury@163.com
4ad95a65cf 删除更新后文件 2022-02-14 19:57:32 +08:00
itheinjury@163.com
31f6c19e87 删除更新后文件 2022-02-14 19:55:43 +08:00
itheinjury@163.com
612d1d1646 删除更新后文件 2022-02-14 19:32:47 +08:00
itheinjury@163.com
eddf3ecdeb 删除更新后文件 2022-02-14 19:27:45 +08:00
itheinjury@163.com
bf8f8d9382 初始化代码 2022-02-11前 最新版本 2022-02-11 19:30:50 +08:00
zhenghao
d5091bf659 店员 2022-02-10 20:29:53 +08:00
zhenghao
fd003eff8b 店员 2022-02-10 20:18:05 +08:00
zhenghao
4d1dfebacd 店员 2022-02-10 20:05:00 +08:00
745 changed files with 31984 additions and 7947 deletions

View File

@@ -0,0 +1,30 @@
---
description:
globs:
alwaysApply: false
---
# Lilishop Project Overview
This is a comprehensive B2B2C e-commerce system built with Spring Boot (backend) and Vue/uniapp (frontend). The project supports multi-tenant merchant access and distributed deployment.
## Key Project Components
### Backend APIs
- [buyer-api/](mdc:buyer-api) - Buyer-facing APIs for shopping functionality
- [seller-api/](mdc:seller-api) - Merchant-facing APIs for store management
- [manager-api/](mdc:manager-api) - Platform admin APIs
- [common-api/](mdc:common-api) - Shared API components
- [im-api/](mdc:im-api) - Instant messaging APIs
### Core Components
- [framework/](mdc:framework) - Core framework and shared utilities
- [consumer/](mdc:consumer) - Message queue consumers
- [config/](mdc:config) - System configuration files
### Documentation
- [docs/](mdc:docs) - Project documentation
- [README.md](mdc:README.md) - Project overview and setup instructions
### Build & Deployment
- [pom.xml](mdc:pom.xml) - Maven project configuration
- [deploy-api.yml](mdc:deploy-api.yml) - Deployment configuration

View File

@@ -0,0 +1,38 @@
---
description:
globs:
alwaysApply: false
---
# Technical Architecture
## Backend Stack
- Spring Boot - Core framework
- Spring MVC - Web framework
- Mybatis-Plus - ORM framework
- Spring Security - Security framework
- JWT - Authentication
- RocketMQ - Message queue
- Redis & MongoDB - Caching
- Elasticsearch - Search engine
- MySQL - Primary database
- Sharding - Database sharding
- XXL-Job - Distributed scheduling
## Frontend Stack
### Admin & Seller Portals ([admin/](mdc:admin))
- Vue.js - Frontend framework
- iView - UI components
- Vuex - State management
- Vue Router - Routing
- Axios - HTTP client
### Mobile Applications
- Uni-app - Cross-platform framework
- uViewui - UI components
- SCSS - Styling
## Infrastructure
- Nginx - Load balancing & reverse proxy
- Aliyun OSS - Object storage
- Docker - Containerization
- Docker Compose - Container orchestration

View File

@@ -0,0 +1,43 @@
---
description:
globs:
alwaysApply: false
---
# Development Guidelines
## Project Setup
1. Ensure you have the following prerequisites:
- JDK 1.8+
- Maven 3.x
- MySQL 5.7+
- Redis
- RocketMQ
- Elasticsearch
- Node.js 12+
## Database Setup
- Initial database scripts can be found in [DB/](mdc:DB)
- For Docker deployment, refer to docker-compose configuration
## API Development Guidelines
1. All new APIs should be placed in appropriate modules:
- Customer-facing APIs in [buyer-api/](mdc:buyer-api)
- Merchant APIs in [seller-api/](mdc:seller-api)
- Admin APIs in [manager-api/](mdc:manager-api)
- Shared components in [common-api/](mdc:common-api)
2. Follow RESTful API conventions:
- Use appropriate HTTP methods (GET, POST, PUT, DELETE)
- Use consistent URL patterns
- Implement proper error handling
## Security Guidelines
1. All sensitive operations must be authenticated
2. Use Spring Security for access control
3. Store sensitive configuration in environment variables
4. Never commit sensitive credentials to version control
## Testing
1. Write unit tests for critical business logic
2. Ensure API endpoints are properly documented
3. Test both success and error scenarios

View File

@@ -0,0 +1,37 @@
---
description:
globs:
alwaysApply: false
---
# Deployment Guide
## Local Development Setup
1. Clone the repository
2. Import as Maven project
3. Configure environment variables in [config/](mdc:config)
4. Start required services (MySQL, Redis, RocketMQ, Elasticsearch)
5. Run individual API modules
## Docker Deployment
- Use [deploy-api.yml](mdc:deploy-api.yml) for container configuration
- Execute [docker-image.sh](mdc:docker-image.sh) to build images
## Production Deployment
1. Configure load balancer (Nginx recommended)
2. Set up database replication/clustering
3. Configure message queue clusters
4. Set up monitoring and logging
5. Configure CDN for static assets
## Configuration Files
- Database: [DB/](mdc:DB)
- API deployment: [deploy-api.yml](mdc:deploy-api.yml)
- Docker scripts: [docker-image.sh](mdc:docker-image.sh)
## Deployment Checklist
1. Database migration and backup
2. Environment variable configuration
3. Service dependencies verification
4. SSL certificate setup
5. Monitoring and alerting setup
6. Backup and recovery procedures

14
DB/index.sql Normal file
View File

@@ -0,0 +1,14 @@
-- 针对WHERE条件、排序和分组的组合索引
CREATE INDEX idx_order_delete_flag_create_time_id_sn ON li_order (delete_flag, create_time DESC, id DESC, sn);
-- 针对WHERE条件和连接条件的组合索引
CREATE INDEX idx_order_status_delete_flag_sn ON li_order (order_status, delete_flag, sn);
-- 针对连接条件的索引
CREATE INDEX idx_order_item_order_sn ON li_order_item (order_sn);
-- 针对过滤条件、排序字段的组合索引
CREATE INDEX idx_li_member_disabled_create_time ON li_member (disabled, create_time DESC);
-- 针对过滤条件、排序字段的组合索引
CREATE INDEX idx_li_goods_delete_flag_create_time ON li_goods (delete_flag, create_time DESC);

View File

@@ -7,6 +7,7 @@
Source Host : 192.168.0.116:3306
Source Schema : lilishop
Target Server Type : MySQL
Target Server Version : 80023
File Encoding : 65001

View File

@@ -6,7 +6,7 @@ ALTER TABLE li_distribution ADD settlement_bank_branch_name varchar ( 200 );
/** 文章分类添加默认值**/
ALTER TABLE li_article_category alter column sort set default 0;
/** 添加分销提现菜单**/
INSERT INTO `lilishop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-02 15:27:45', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null');
INSERT INTO `rxshop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-02 15:27:45', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null');
/** 促销商品添加商品类型**/
ALTER TABLE li_promotion_goods ADD goods_type varchar (200);
@@ -16,7 +16,7 @@ update li_member_points_history set point_type = 'INCREASE' where point_type=1;
update li_member_points_history set point_type = 'REDUCE' where point_type=0;
/** 添加分词管理菜单*/
INSERT INTO `lilishop`.`li_menu` (`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1349247640584085511, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-02-25 09:02:59', 'null', 'customWords/index', 'ios-american-football', 2, 'customWords', '1349237129847005184', 'customWords', 8.00, '分词管理', 'null');
INSERT INTO `rxshop`.`li_menu` (`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1349247640584085511, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-02-25 09:02:59', 'null', 'customWords/index', 'ios-american-football', 2, 'customWords', '1349237129847005184', 'customWords', 8.00, '分词管理', 'null');
/** 修改会员评价店铺图片字段类型 **/
alter table li_member_evaluation modify column reply_image text;
@@ -25,4 +25,4 @@ alter table li_member_evaluation modify column reply_image text;
alter table li_after_sale modify column after_sale_image text;
/** 提现申请审核sql **/
INSERT INTO `lilishop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', NULL, NULL, NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL);
INSERT INTO `rxshop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', NULL, NULL, NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL);

View File

@@ -1,2 +1,64 @@
/** 新增已退货数量 **/
ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 ';
ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 ';
-- 促销重构sql
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 '关联范围类型';
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;
-- 增加会员表索引
ALTER TABLE li_member ADD INDEX query_mobile (`mobile`) COMMENT 'query_member';
-- 会员签到唯一索引 惠券查询索引
ALTER TABLE li_member_sign ADD INDEX query_create_time (`create_time`) COMMENT 'query_create_time';
ALTER TABLE li_member_sign ADD INDEX query_member_id (`member_id`) COMMENT 'query_member_id';
ALTER TABLE li_member_sign add unique uk_member_day (member_id, create_time) COMMENT 'uk_member_day';

View File

@@ -1,64 +0,0 @@
/** 新增已退货数量 **/
ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 ';
-- 促销重构sql
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 '关联范围类型';
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;
-- 增加会员表索引
ALTER TABLE li_member ADD INDEX query_mobile (`mobile`) COMMENT 'query_member';
-- 会员签到唯一索引 惠券查询索引
ALTER TABLE li_member_sign ADD INDEX query_create_time (`create_time`) COMMENT 'query_create_time';
ALTER TABLE li_member_sign ADD INDEX query_member_id (`member_id`) COMMENT 'query_member_id';
ALTER TABLE li_member_sign add unique uk_member_day (member_id, create_time) COMMENT 'uk_member_day';

521
DB/version4.2.4to4.2.5.sql Normal file
View File

@@ -0,0 +1,521 @@
/**增加店铺发货信息**/
ALTER TABLE li_store_detail ADD `sales_consignor_address_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货地址id';
ALTER TABLE li_store_detail ADD `sales_consignor_address_path` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货地址名称';
ALTER TABLE li_store_detail ADD `sales_consignor_detail` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货详细地址';
ALTER TABLE li_store_detail ADD `sales_consignor_mobile` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货人手机';
ALTER TABLE li_store_detail ADD `sales_consignor_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货人姓名';
/**增加电子面单店铺信息**/
ALTER TABLE `li_store_logistics` ADD `customer_name` varchar(255) DEFAULT NULL COMMENT '客户代码';
ALTER TABLE `li_store_logistics` ADD `customer_pwd` varchar(255) DEFAULT NULL COMMENT '客户密码';
ALTER TABLE `li_store_logistics` ADD `month_code` varchar(255) DEFAULT NULL COMMENT '月结号/密钥';
ALTER TABLE `li_store_logistics` ADD `send_site` varchar(255) DEFAULT NULL COMMENT '归属网点';
ALTER TABLE `li_store_logistics` ADD `send_staff` varchar(255) DEFAULT NULL COMMENT '收件快递员';
ALTER TABLE `li_store_logistics` ADD `face_sheet_flag` bit(1) DEFAULT NULL COMMENT '是否使用电子面单';
ALTER TABLE `li_store_logistics` ADD `pay_type` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '支付方式';
ALTER TABLE `li_store_logistics` ADD `exp_type` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '快递类型';
/** 店铺--默认页面是否开启**/
ALTER TABLE li_store ADD page_show bit(1) DEFAULT NULL COMMENT '默认页面是否开启';
/** 创建店员表 **/
/*
Navicat Premium Data Transfer
Source Server : lilishop
Source Server Type : MySQL
Source Server Version : 80025
Source Host : 192.168.0.116:3306
Source Schema : zhimai1
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 03/03/2022 19:30:20
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for li_clerk
-- ----------------------------
DROP TABLE IF EXISTS `li_clerk`;
CREATE TABLE `li_clerk` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
`clerk_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店员名称',
`member_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '会员id',
`store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店铺id',
`department_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '部门id',
`role_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色',
`shopkeeper` bit(1) NULL DEFAULT NULL COMMENT '是否是店主',
`is_super` bit(1) NULL DEFAULT NULL COMMENT '是否是超级管理员 超级管理员/普通管理员',
`status` bit(1) NULL DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
/** 店员角色**/
/*
Navicat Premium Data Transfer
Source Server : lilishop
Source Server Type : MySQL
Source Server Version : 80025
Source Host : 192.168.0.116:3306
Source Schema : zhimai1
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 03/03/2022 19:30:39
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for li_clerk_role
-- ----------------------------
DROP TABLE IF EXISTS `li_clerk_role`;
CREATE TABLE `li_clerk_role` (
`id` bigint NOT NULL COMMENT 'ID',
`clerk_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店员唯一id',
`role_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色唯一id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
/** 店铺部门 **/
/*
Navicat Premium Data Transfer
Source Server : lilishop
Source Server Type : MySQL
Source Server Version : 80025
Source Host : 192.168.0.116:3306
Source Schema : zhimai1
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 03/03/2022 19:31:39
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for li_store_department
-- ----------------------------
DROP TABLE IF EXISTS `li_store_department`;
CREATE TABLE `li_store_department` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '部门名称',
`store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店铺id',
`parent_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '父id',
`sort_order` decimal(20, 2) NULL DEFAULT NULL COMMENT '排序值',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
/** 部门角色关联 **/
/*
Navicat Premium Data Transfer
Source Server : lilishop
Source Server Type : MySQL
Source Server Version : 80025
Source Host : 192.168.0.116:3306
Source Schema : zhimai1
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 03/03/2022 19:32:01
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for li_store_department_role
-- ----------------------------
DROP TABLE IF EXISTS `li_store_department_role`;
CREATE TABLE `li_store_department_role` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
`role_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色id',
`department_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '部门id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
/**店铺角色菜单**/
/*
Navicat Premium Data Transfer
Source Server : lilishop
Source Server Type : MySQL
Source Server Version : 80025
Source Host : 192.168.0.116:3306
Source Schema : zhimai1
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 03/03/2022 19:34:42
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for li_store_menu_role
-- ----------------------------
DROP TABLE IF EXISTS `li_store_menu_role`;
CREATE TABLE `li_store_menu_role` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
`role_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色id',
`menu_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '菜单',
`store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店铺id',
`is_super` bit(1) NULL DEFAULT NULL COMMENT '是否拥有操作数据权限,为否则只有查看权限',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
/**店铺角色**/
/*
Navicat Premium Data Transfer
Source Server : lilishop
Source Server Type : MySQL
Source Server Version : 80025
Source Host : 192.168.0.116:3306
Source Schema : zhimai1
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 03/03/2022 19:32:59
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for li_store_role
-- ----------------------------
DROP TABLE IF EXISTS `li_store_role`;
CREATE TABLE `li_store_role` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色名称',
`store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店铺id',
`default_role` bit(1) NULL DEFAULT NULL COMMENT '是否为注册默认角色',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
/*
Navicat Premium Data Transfer
Source Server : lilishop
Source Server Type : MySQL
Source Server Version : 80025
Source Host : 192.168.0.116:3306
Source Schema : zhimai1
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 02/03/2022 09:57:49
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for li_menu
-- ----------------------------
DROP TABLE IF EXISTS `li_menu`;
CREATE TABLE `li_menu` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
`update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '说明备注',
`front_route` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前端路由',
`icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标',
`level` int NULL DEFAULT NULL COMMENT '层级',
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单/权限名称',
`parent_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父id',
`path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '赋权API地址,正则表达式',
`sort_order` decimal(10, 2) NULL DEFAULT NULL COMMENT '排序值',
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单标题',
`front_component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件地址',
`permission` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限url',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of li_menu
-- ----------------------------
INSERT INTO `li_menu` VALUES (1348810750596767744, 'admin', '2021-01-12 09:55:17', b'0', 'admin', '2021-01-15 09:42:50', 'null', '1', 'ios-american-football', 0, 'settings', '0', '1', 2.00, '设置', 'null', NULL);
INSERT INTO `li_menu` VALUES (1348810864748945408, 'admin', '2021-01-12 09:55:45', b'0', 'admin', '2021-03-15 20:57:12', 'null', 'null', 'ios-american-football', 0, 'log', '0', 'null', 3.00, '日志', 'null', '/manager/setting/log*');
INSERT INTO `li_menu` VALUES (1349237129847005184, 'admin', '2021-01-13 14:09:34', b'0', 'admin', '2021-01-15 09:43:16', 'null', 'Main', 'ios-american-football', 1, 'sys', '1348810750596767744', '/sys', 1.00, '系统设置', 'null', NULL);
INSERT INTO `li_menu` VALUES (1349237207378714624, 'admin', '2021-01-13 14:09:53', b'0', 'admin', '2021-07-27 16:07:49', 'null', 'Main', 'ios-american-football', 1, 'member', '1348810750596767744', '/member', 0.00, '用户管理', 'null', '/manager/permission/department*,/manager/passport/user*,/manager/permission/role*,/manager/permission/menu*,/manager/passport/user/admin/edit*');
INSERT INTO `li_menu` VALUES (1349237928434098176, 'admin', '2021-01-13 14:13:03', b'0', 'admin', '2021-07-27 16:09:11', 'null', 'Main', 'ios-american-football', 1, 'log', '1348810864748945408', '/log', 1.00, '系统监控', 'null', '/manager/log*');
INSERT INTO `li_menu` VALUES (1349246048900243456, 'admin', '2021-01-13 14:45:00', b'0', 'admin', '2021-07-27 16:07:57', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'setting', '1349237129847005184', 'setting', 1.00, '系统设置', 'null', '/manager/system/setting/get*,/manager/system/setting/put*,/manager/setting/setting*');
INSERT INTO `li_menu` VALUES (1349246347597602816, 'admin', '2021-01-13 14:46:12', b'0', 'admin', '2021-07-27 16:08:03', 'null', 'sys/oss-manage/ossManage', 'ios-american-football', 2, 'oss-manage', '1349237129847005184', 'oss-manage', 3.00, 'OSS资源', '', '/manager/common/file*');
INSERT INTO `li_menu` VALUES (1349246468775239680, 'admin', '2021-01-13 14:46:41', b'0', 'admin', '2021-07-27 16:08:14', 'null', 'region/index', 'ios-american-football', 2, 'region', '1349237129847005184', 'region', 4.00, '行政地区', 'null', '/manager/region*');
INSERT INTO `li_menu` VALUES (1349246671158796288, 'admin', '2021-01-13 14:47:29', b'0', 'admin', '2021-07-27 16:08:09', 'null', 'logistics/index', 'ios-american-football', 2, 'logistics', '1349237129847005184', 'logistics', 5.00, '物流公司', 'null', '/manager/other/logistics*');
INSERT INTO `li_menu` VALUES (1349246896661356544, 'admin', '2021-01-13 14:48:23', b'0', 'admin', '2021-07-27 16:08:23', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'authLogin', '1349237129847005184', 'authLogin', 6.00, '信任登录', 'null', '/manager/system/setting/get*,/manager/system/setting/put*,/manager/setting/setting*\r\n');
INSERT INTO `li_menu` VALUES (1349247081504333824, 'admin', '2021-01-13 14:49:07', b'0', 'admin', '2021-07-27 16:08:45', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'pay', '1349237129847005184', 'pay', 7.00, '支付设置', 'null', '/manager/system/setting/get*,/manager/system/setting/put*,/manager/system/setting*');
INSERT INTO `li_menu` VALUES (1349247640584085504, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-07-27 16:08:56', 'null', 'sensitiveWords/index', 'ios-american-football', 2, 'sensitiveWords', '1349237129847005184', 'sensitiveWords', 8.00, '敏感词', 'null', '/manager/other/sensitiveWords*');
INSERT INTO `li_menu` VALUES (1349254815809298432, 'admin', '2021-01-13 15:19:51', b'0', 'admin', '2021-01-15 11:15:40', 'null', 'sys/user-manage/userManage', 'ios-american-football', 2, 'user-manage', '1349237207378714624', 'user-manage', 1.00, '用户管理', 'null', NULL);
INSERT INTO `li_menu` VALUES (1349255214977015808, 'admin', '2021-01-13 15:21:26', b'0', 'admin', '2021-01-15 11:16:21', 'null', 'sys/department-manage/departmentManage', 'ios-american-football', 2, 'department-manage', '1349237207378714624', 'department-manage', 3.00, '部门管理', 'null', '/manager/permission/department*,/manager/permission/departmentRole*,');
INSERT INTO `li_menu` VALUES (1349255404425338880, 'admin', '2021-01-13 15:22:11', b'0', 'admin', '2021-02-24 09:22:21', 'null', 'sys/role-manage/roleManage', 'ios-american-football', 2, 'role-manage', '1349237207378714624', 'role-manage', 4.00, '角色权限', 'null', '/manager/permission/role*,/manager/permission/roleMenu*');
INSERT INTO `li_menu` VALUES (1349256082979840000, 'admin', '2021-01-13 15:24:53', b'0', 'admin', '2021-01-15 11:18:14', 'null', 'sys/log-manage/logManage', 'ios-american-football', 2, 'log-manage', '1349237928434098176', 'log-manage', 2.00, '日志管理', 'null', NULL);
INSERT INTO `li_menu` VALUES (1357584224760102912, 'admin', '2021-02-05 06:57:57', b'0', 'admin', '2021-07-27 16:09:02', 'null', 'sys/app-version/appVersion', 'ios-american-football', 2, 'appVersion', '1349237129847005184', 'appVersion', 9.00, 'APP版本', 'null', '/manager/other/appVersion*');
INSERT INTO `li_menu` VALUES (1357873097859923969, 'admin', '2021-02-24 09:53:02', b'0', 'admin', '2021-02-24 09:53:12', NULL, 'sys/menu-manage/menuManage', 'ios-american-football', 2, 'menuManage', '1349237207378714624', 'menu-manage', 2.00, '菜单管理', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367038467288072192, 'admin', '2021-03-03 09:05:44', b'0', 'admin', '2021-03-03 09:09:27', 'null', 'null', 'ios-person-add', 0, 'member', '0', 'null', 0.00, '会员', 'null', NULL);
INSERT INTO `li_menu` VALUES (1367039534616805376, 'admin', '2021-03-03 09:09:58', b'0', 'admin', '2021-05-18 10:51:12', 'null', 'null', 'md-reorder', 0, 'order', '0', 'null', 0.00, '订单', 'null', NULL);
INSERT INTO `li_menu` VALUES (1367039950368800768, 'admin', '2021-03-03 09:11:37', b'0', NULL, NULL, NULL, NULL, 'ios-share', 0, 'goods', '0', NULL, 0.20, '商品', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367040067201138688, 'admin', '2021-03-03 09:12:05', b'0', 'admin', '2021-12-02 19:45:22', NULL, 'null', 'ios-hammer', 0, 'promotions', '0', 'null', 0.30, '促销', NULL, 'null');
INSERT INTO `li_menu` VALUES (1367040599596728320, 'admin', '2021-03-03 09:14:12', b'0', 'admin', '2021-03-03 09:52:13', 'null', 'null', 'ios-color-palette', 0, 'operate', '0', 'null', 0.50, '运营', 'null', NULL);
INSERT INTO `li_menu` VALUES (1367040819248234496, 'admin', '2021-03-03 09:15:04', b'0', 'lili_ftyy', '2022-03-01 15:13:04', NULL, 'null', 'ios-stats', 0, 'statistics', '0', 'null', 0.70, '统计', NULL, 'null');
INSERT INTO `li_menu` VALUES (1367041332861730816, 'admin', '2021-03-03 09:17:07', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 0.00, '会员管理', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367041461194850304, 'admin', '2021-03-03 09:17:37', b'0', 'admin', '2021-07-27 16:02:17', NULL, 'member/list/index', 'ios-aperture', 2, 'memberList', '1367041332861730816', 'memberList', 0.00, '会员列表', NULL, '/manager/common/file*,/manager/passport/member*');
INSERT INTO `li_menu` VALUES (1367041575619657728, 'admin', '2021-03-03 09:18:05', b'0', 'admin', '2021-07-27 15:59:50', NULL, 'member/list/memberRecycle', 'ios-aperture', 2, 'memberRecycle', '1367041332861730816', 'memberRecycle', 1.00, '回收站', NULL, '/manager/member*');
INSERT INTO `li_menu` VALUES (1367042490443497472, 'admin', '2021-03-03 09:21:43', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 1.00, '预存款', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367042664410644480, 'admin', '2021-03-03 09:22:24', b'0', 'admin', '2021-07-27 16:02:44', 'null', 'member/advance/walletLog', 'ios-aperture', 2, 'walletLog', '1367042490443497472', 'walletLog', 0.00, '会员资金', 'null', '/manager/wallet/log*');
INSERT INTO `li_menu` VALUES (1367042804944994304, 'admin', '2021-03-03 09:22:58', b'0', 'admin', '2021-07-27 16:02:48', NULL, 'member/advance/recharge', 'ios-alert', 2, 'recharge', '1367042490443497472', 'recharge', 1.00, '充值记录', NULL, '/manager/wallet/recharge*');
INSERT INTO `li_menu` VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', 'admin', '2021-07-27 16:02:52', NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL, '/manager/wallet/withdrawApply*');
INSERT INTO `li_menu` VALUES (1367042917113266176, 'admin', '2021-03-03 09:23:25', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'commont', '1367038467288072192', '/', 0.00, '评价', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367043020976816128, 'admin', '2021-03-03 09:23:49', b'0', 'admin', '2021-07-27 16:02:35', NULL, 'goods/goods-review/index', 'md-aperture', 2, 'goodsReview', '1367042917113266176', 'goodsReview', 0.00, '会员评价', NULL, '/manager/memberEvaluation*');
INSERT INTO `li_menu` VALUES (1367043443917848576, 'admin', '2021-03-03 09:25:30', b'0', 'admin', '2021-07-27 16:03:00', NULL, 'Main', 'md-aperture', 1, 'order', '1367039534616805376', '/', 0.00, '订单', NULL, '/manager/orders*');
INSERT INTO `li_menu` VALUES (1367043505771249664, 'admin', '2021-03-03 09:25:45', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'aftersale', '1367039534616805376', '/', 0.00, '售后', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367043642379730944, 'admin', '2021-03-03 09:26:17', b'0', NULL, NULL, NULL, 'order/order/orderList', 'ios-aperture', 2, 'orderList', '1367043443917848576', 'orderList', 0.00, '商品订单', NULL, '/manager/order/order*');
INSERT INTO `li_menu` VALUES (1367043791105556480, 'admin', '2021-03-03 09:26:53', b'0', NULL, NULL, NULL, 'order/order/fictitiousOrderList', 'ios-aperture', 2, 'fictitiousOrderList', '1367043443917848576', 'fictitiousOrderList', 1.00, '虚拟订单', NULL, '/manager/order/order*');
INSERT INTO `li_menu` VALUES (1367043980407078912, 'admin', '2021-03-03 09:27:38', b'0', 'admin', '2021-07-27 16:03:43', NULL, 'order/after-order/afterSaleOrder', 'md-alert', 2, 'afterSaleOrder', '1367043505771249664', 'afterSaleOrder', 0.00, '售后管理', NULL, '/manager/order/afterSale*');
INSERT INTO `li_menu` VALUES (1367044121163726848, 'admin', '2021-03-03 09:28:12', b'0', 'admin', '2021-07-27 16:03:48', NULL, 'order/after-order/orderComplaint', 'md-alert', 2, 'orderComplaint', '1367043505771249664', 'orderComplaint', 2.00, '交易投诉', NULL, '/manager/order/complain*');
INSERT INTO `li_menu` VALUES (1367044247978508288, 'admin', '2021-03-03 09:28:42', b'0', 'admin', '2021-07-27 16:03:52', NULL, 'order/after-order/afterSale', 'md-aperture', 2, 'afterSaleReason', '1367043505771249664', 'afterSaleReason', 3.00, '售后原因', NULL, '/manager/order/afterSaleReason*');
INSERT INTO `li_menu` VALUES (1367044376391319552, 'admin', '2021-03-03 09:29:12', b'0', 'admin', '2021-07-27 16:04:08', NULL, 'Main', 'md-aperture', 1, 'goodsManager', '1367039950368800768', '/', 0.00, '商品管理', NULL, '/manager/goods*');
INSERT INTO `li_menu` VALUES (1367044657296441344, 'admin', '2021-03-03 09:30:19', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'association', '1367039950368800768', '/', 1.00, '关联管理', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367045529720061952, 'admin', '2021-03-03 09:33:47', b'0', 'admin', '2021-07-27 15:38:46', NULL, 'goods/goods-info/goods', 'md-aperture', 2, 'managerGoods', '1367044376391319552', 'managerGoods', 0.00, '平台商品', NULL, 'null');
INSERT INTO `li_menu` VALUES (1367045630710513664, 'admin', '2021-03-03 09:34:11', b'0', 'admin', '2021-07-27 15:38:56', NULL, 'goods/goods-info/goodsApply', 'ios-alert', 2, 'applyGoods', '1367044376391319552', 'applyGoods', 1.00, '商品审核', NULL, 'null');
INSERT INTO `li_menu` VALUES (1367045794284175360, 'admin', '2021-03-03 09:34:50', b'0', 'admin', '2021-07-27 16:04:18', NULL, 'goods/goods-manage/category', 'md-alert', 2, 'goodsCategory', '1367044657296441344', 'goodsCategory', 0.00, '商品分类', NULL, '/manager/goods/category*,/manager/goods/brand*,/manager/goods/spec*,/manager/goods/parameters*');
INSERT INTO `li_menu` VALUES (1367045921434501120, 'admin', '2021-03-03 09:35:21', b'0', 'admin', '2021-07-27 16:04:23', NULL, 'goods/goods-manage/brand', 'md-alert', 2, 'goodsBrand', '1367044657296441344', 'goodsBrand', 1.00, '品牌列表', NULL, '/manager/goods/brand*');
INSERT INTO `li_menu` VALUES (1367046068369358848, 'admin', '2021-03-03 09:35:56', b'0', 'admin', '2021-07-27 16:04:27', NULL, 'goods/goods-manage/spec', 'md-aperture', 2, 'goodsSpec', '1367044657296441344', 'goodsSpec', 2.00, '规格列表', NULL, '/manager/goods/spec*');
INSERT INTO `li_menu` VALUES (1367046266214678528, 'admin', '2021-03-03 09:36:43', b'0', 'admin', '2021-07-27 16:04:32', NULL, 'goods-unit/index', 'md-alert', 2, 'goodsUnit', '1367044657296441344', 'goodsUnit', 4.00, '计量单位', NULL, '/manager/goods/goodsUnit*');
INSERT INTO `li_menu` VALUES (1367048084701315072, 'admin', '2021-03-03 09:43:57', b'0', 'admin', '2021-03-03 09:52:17', 'null', 'null', 'ios-pricetags', 0, 'shop', '0', 'null', 0.40, '店铺', 'null', NULL);
INSERT INTO `li_menu` VALUES (1367048684339986432, 'admin', '2021-03-03 09:46:20', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'shopManager', '1367048084701315072', '/', 0.00, '店铺管理', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367048754229673984, 'admin', '2021-03-03 09:46:36', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'bill', '1367048084701315072', '/', 0.00, ' 店铺结算', NULL, NULL);
INSERT INTO `li_menu` VALUES (1367048832210173952, 'admin', '2021-03-03 09:46:55', b'0', 'admin', '2021-07-27 16:05:30', NULL, 'seller/shop/shopList', 'md-aperture', 2, 'shopList', '1367048684339986432', 'shopList', 0.00, '店铺列表', NULL, '/manager/order/order*,/manager/store*');
INSERT INTO `li_menu` VALUES (1367048967635861504, 'admin', '2021-03-03 09:47:27', b'0', 'admin', '2021-07-27 16:05:32', NULL, 'seller/shop/shopAuditList', 'md-alert', 2, 'shopAuth', '1367048684339986432', 'shopAuth', 1.00, '店铺审核', NULL, '/manager/store*');
INSERT INTO `li_menu` VALUES (1367049068122996736, 'admin', '2021-03-03 09:47:51', b'0', 'admin', '2021-07-27 16:05:36', NULL, 'seller/bill/bill', 'md-alert', 2, 'billList', '1367048754229673984', 'billList', 0.00, '店铺结算', NULL, '/manager/order/bill*');
INSERT INTO `li_menu` VALUES (1367049214198022144, 'admin', '2021-03-03 09:48:26', b'0', 'admin', '2021-12-02 19:45:28', NULL, 'Main', 'md-aperture', 1, 'promotionsManager', '1367040067201138688', '/', 0.00, '促销管理', NULL, 'null');
INSERT INTO `li_menu` VALUES (1367049384792948736, 'admin', '2021-03-03 09:49:07', b'0', 'admin', '2021-12-02 19:54:12', NULL, 'promotions/coupon/coupon', 'md-alert', 2, 'promotions/coupon', '1367049214198022144', 'promotions/coupon', 0.00, '优惠券', NULL, '/manager/promotion/coupon*');
INSERT INTO `li_menu` VALUES (1367049500782231552, 'admin', '2021-03-03 09:49:34', b'0', 'admin', '2021-12-02 19:41:37', 'null', 'promotions/full-discount/full-discount', 'md-alert', 2, 'promotions/full-discount', '1367049214198022144', 'promotions/full-discount', 1.00, '满额活动', 'null', '/manager/promotion/fullDiscount*');
INSERT INTO `li_menu` VALUES (1367049611578966016, 'admin', '2021-03-03 09:50:01', b'0', 'admin', '2021-12-02 20:16:10', 'null', 'promotions/seckill/seckill', 'md-alert', 2, 'promotions/seckill', '1367049214198022144', 'promotions/seckill', 2.00, '秒杀活动', 'null', '/manager/promotion/seckill*');
INSERT INTO `li_menu` VALUES (1367049712657498112, 'admin', '2021-03-03 09:50:25', b'0', 'admin', '2021-12-02 20:22:04', 'null', 'promotions/pintuan/pintuan', 'md-alert', 2, 'promotions/pintuan', '1367049214198022144', 'promotions/pintuan', 3.00, '拼团活动', 'null', '/manager/promotion/pintuan*');
INSERT INTO `li_menu` VALUES (1367050250249830400, 'admin', '2021-03-03 09:52:33', b'0', 'admin', '2021-03-22 20:38:14', 'null', 'Main', 'md-aperture', 1, 'document', '1367040599596728320', '/', 2.00, '文章管理', 'null', NULL);
INSERT INTO `li_menu` VALUES (1367050320584114176, 'admin', '2021-03-03 09:52:50', b'0', 'admin', '2021-07-27 16:05:49', NULL, 'Main', 'md-aperture', 1, 'floor', '1367040599596728320', '/', 0.00, '楼层装修', NULL, '/manager/pageData*,/manager/file*,/manager/article-category*,/manager/article*,/manager/promotion*,/manager/goods*,/manager/store*');
INSERT INTO `li_menu` VALUES (1367050530030878720, 'admin', '2021-03-03 09:53:40', b'0', 'admin', '2021-03-04 01:05:57', 'null', 'page-decoration/floorList', 'md-alert', 2, 'pcFloor', '1367050320584114176', 'pcFloor', 0.00, 'PC端', 'null', '/manager/other/pageData*');
INSERT INTO `li_menu` VALUES (1367050673312497664, 'admin', '2021-03-03 09:54:14', b'0', 'admin', '2021-03-04 01:06:04', 'null', 'page-decoration/wap/wapList', 'md-aperture', 2, 'wapList', '1367050320584114176', 'wapList', 1.00, '移动端', 'null', '/manager/other/pageData*');
INSERT INTO `li_menu` VALUES (1367050829697122304, 'admin', '2021-03-03 09:54:51', b'0', 'admin', '2021-07-27 16:06:32', 'null', 'page/article-manage/hotWords', 'md-aperture', 2, 'hotKeyWord', '1367050250249830400', 'hotKeyWord', 0.00, '搜索热词', 'null', '/manager/hotwords*');
INSERT INTO `li_menu` VALUES (1367050939084570624, 'admin', '2021-03-03 09:55:17', b'0', 'admin', '2021-07-27 16:06:38', NULL, 'page/article-manage/ArticleCategory', 'md-aperture', 2, 'article-category', '1367050250249830400', 'article-category', 1.00, '文章分类', NULL, '/manager/other/articleCategory*');
INSERT INTO `li_menu` VALUES (1367051048232943616, 'admin', '2021-03-03 09:55:43', b'0', 'admin', '2021-07-27 16:06:42', NULL, 'page/article-manage/articleList', 'md-alert', 2, 'articleList', '1367050250249830400', 'articleList', 3.00, '文章管理', NULL, '/manager/other/article*,/manager/other/articleCategory*');
INSERT INTO `li_menu` VALUES (1367052616634204160, 'admin', '2021-03-03 10:01:57', b'0', 'admin', '2021-07-27 16:07:38', NULL, 'Main', 'md-aperture', 1, 'statistics', '1367040819248234496', '/', 0.00, '统计', NULL, '/manager/store*,/manager/member*');
INSERT INTO `li_menu` VALUES (1367052705725415424, 'admin', '2021-03-03 10:02:18', b'0', 'admin', '2021-03-11 22:11:05', 'null', 'statistics/member', 'md-alert', 2, 'memberStatistics', '1367052616634204160', 'memberStatistics', 0.00, '会员统计', 'null', NULL);
INSERT INTO `li_menu` VALUES (1367052805503713280, 'admin', '2021-03-03 10:02:42', b'0', 'admin', '2021-03-11 22:11:14', 'null', 'statistics/order', 'md-alert', 2, 'orderStatistics', '1367052616634204160', 'orderStatistics', 1.00, '订单统计', 'null', NULL);
INSERT INTO `li_menu` VALUES (1367052915314786304, 'admin', '2021-03-03 10:03:08', b'0', 'admin', '2021-03-11 22:11:23', 'null', 'statistics/goods', 'md-alert', 2, 'goodsStatistics', '1367052616634204160', 'goodsStatistics', 2.00, '商品统计', 'null', NULL);
INSERT INTO `li_menu` VALUES (1367053087121866752, 'admin', '2021-03-03 10:03:49', b'0', 'admin', '2021-03-11 22:11:34', 'null', 'statistics/traffic', 'md-alert', 2, 'trafficStatistics', '1367052616634204160', 'trafficStatistics', 4.00, '流量统计', 'null', NULL);
INSERT INTO `li_menu` VALUES (1372807928452481024, 'admin', '2021-03-19 02:11:30', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'flow', '1367039534616805376', '/', 3.00, '流水', NULL, NULL);
INSERT INTO `li_menu` VALUES (1372808148565360640, 'admin', '2021-03-19 02:12:23', b'0', 'admin', '2021-07-27 16:03:57', NULL, 'order/flow/paymentLog', 'md-alert', 2, 'paymentLog', '1372807928452481024', 'paymentLog', 1.00, '收款记录', NULL, '/manager/order/paymentLog*');
INSERT INTO `li_menu` VALUES (1372808352295288832, 'admin', '2021-03-19 02:13:11', b'0', 'admin', '2021-07-27 16:04:01', NULL, 'order/flow/refundLog', 'ios-aperture', 2, 'refundLog', '1372807928452481024', 'refundLog', 2.00, '退款流水', NULL, '/manager/order/refundLog*');
INSERT INTO `li_menu` VALUES (1373166892465782784, 'admin', '2021-03-20 01:57:54', b'0', 'admin', '2021-03-22 20:13:48', 'null', 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 0.00, '积分', 'null', NULL);
INSERT INTO `li_menu` VALUES (1373167227385151488, 'admin', '2021-03-20 01:59:14', b'0', 'admin', '2021-07-27 16:02:40', 'null', 'member/point/point', 'ios-aperture', 2, 'point', '1373166892465782784', 'point', 0.00, '积分历史', 'null', '/manager/member/memberPointsHistory*');
INSERT INTO `li_menu` VALUES (1373791578371391488, 'admin', '2021-03-21 19:20:11', b'0', 'admin', '2021-07-27 16:05:38', NULL, 'seller/bill/accountStatementBill', 'md-alert', 2, 'accountStatementBill', '1367048754229673984', 'accountStatementBill', 0.00, '商家对账', NULL, '/manager/order/bill*');
INSERT INTO `li_menu` VALUES (1374154349697040384, 'admin', '2021-03-22 19:21:42', b'0', 'admin', '2021-07-27 16:06:55', 'null', 'Main', 'md-aperture', 1, 'feedback', '1367040599596728320', '/', 3.00, '意见反馈', 'null', '/manager/other/feedback*');
INSERT INTO `li_menu` VALUES (1374155741123837952, 'admin', '2021-03-22 19:27:14', b'0', 'admin', '2021-07-27 15:41:40', 'null', 'page/feedback/feedback', 'md-aperture', 2, 'feedback', '1374154349697040384', 'feedback', 0.00, '意见反馈', 'null', 'null');
INSERT INTO `li_menu` VALUES (1374173575405109248, 'admin', '2021-03-22 20:38:06', b'0', 'admin', '2021-03-22 20:52:58', 'null', 'Main', 'ios-analytics', 1, 'distributionManager', '1367040599596728320', '/', 1.00, '分销管理', 'null', NULL);
INSERT INTO `li_menu` VALUES (1374177618072436736, 'admin', '2021-03-22 20:54:10', b'0', 'admin', '2021-07-27 16:05:58', 'null', 'distribution/distributionSetting', 'ios-basketball', 2, 'distributionSetting', '1374173575405109248', 'distributionSetting', 0.00, '分销设置', 'null', '/manager/system/setting/put/DISTRIBUTION_SETTING*,/manager/system/setting/get/DISTRIBUTION_SETTING*');
INSERT INTO `li_menu` VALUES (1374177789581721600, 'admin', '2021-03-22 20:54:51', b'0', 'admin', '2021-07-27 16:06:15', 'null', 'distribution/distributionGoods', 'ios-chatbubbles', 2, 'distributionGoods', '1374173575405109248', 'distributionGoods', 3.00, '分销商品', 'null', '/manager/distribution/goods*');
INSERT INTO `li_menu` VALUES (1374177910411231232, 'admin', '2021-03-22 20:55:19', b'0', 'admin', '2021-07-27 16:06:20', 'null', 'distribution/distributionOrder', 'ios-cloudy', 2, 'distributionOrder', '1374173575405109248', 'distributionOrder', 4.00, '分销订单', 'null', '/manager/distribution/order*,/manager/store*');
INSERT INTO `li_menu` VALUES (1374178079181635584, 'admin', '2021-03-22 20:56:00', b'0', 'admin', '2021-07-27 16:06:05', 'null', 'distribution/distributionApply', 'md-egg', 2, 'distributionApply', '1374173575405109248', 'distributionApply', 1.00, '分销申请', 'null', '/manager/distribution*');
INSERT INTO `li_menu` VALUES (1374178303975358464, 'admin', '2021-03-22 20:56:53', b'0', 'admin', '2021-07-27 16:06:08', 'null', 'distribution/distribution', 'md-person', 2, 'distribution', '1374173575405109248', 'distribution', 2.00, '分销员', 'null', '/manager/distribution*');
INSERT INTO `li_menu` VALUES (1374916594269945856, 'admin', '2021-03-24 21:50:35', b'0', 'admin', '2021-07-27 16:08:51', NULL, 'sys/slider/slider', 'ios-aperture', 2, 'slider', '1349237129847005184', 'slider', 7.00, '验证码', NULL, '/manager/other/verificationSource*');
INSERT INTO `li_menu` VALUES (1376450531517530112, 'admin', '2021-03-29 03:25:55', b'0', NULL, NULL, NULL, 'Main', 'md-basketball', 1, 'notice', '1367040599596728320', '/', 5.00, '站内信', NULL, NULL);
INSERT INTO `li_menu` VALUES (1376450662098796544, 'admin', '2021-03-29 03:26:26', b'0', 'admin', '2021-07-27 16:07:23', NULL, 'sys/message/noticeMessageTemplate', 'ios-american-football', 2, 'noticeMessageTemplate', '1376450531517530112', 'noticeMessageTemplate', 1.00, '站内信', NULL, '/manager/other/message*');
INSERT INTO `li_menu` VALUES (1376450766817984512, 'admin', '2021-03-29 03:26:51', b'0', 'admin', '2021-03-29 03:27:25', 'null', 'Main', 'md-checkmark', 1, 'sms', '1367040599596728320', '/', 6.00, '短信管理', 'null', NULL);
INSERT INTO `li_menu` VALUES (1376450876423536640, 'admin', '2021-03-29 03:27:17', b'0', 'admin', '2021-07-27 16:07:29', NULL, 'sys/message/sms', 'ios-timer', 2, 'sms', '1376450766817984512', 'sms', 1.00, '短信', NULL, '/manager/sms/sms*,/manager/passport/member*');
INSERT INTO `li_menu` VALUES (1384035281702748160, 'admin', '2021-04-19 14:45:00', b'0', 'admin', '2021-07-27 16:08:18', 'null', 'member/message-manage/weChatMessageManager', 'md-aperture', 2, 'message-manage', '1349237129847005184', 'message-manage', 5.00, '微信消息', 'null', '/manager/wechat/wechatMessage*');
INSERT INTO `li_menu` VALUES (1403988156444962818, 'admin', '2021-06-13 16:10:36', b'0', 'admin', '2021-12-02 19:54:37', 'null', 'promotions/coupon-activity/coupon', '', 2, 'promotions/coupon-activity', '1367049214198022144', 'promotions/coupon-activity', 0.00, '券活动', 'null', '/manager/promotion/couponActivity*');
INSERT INTO `li_menu` VALUES (1407601962899230721, 'admin', '2021-06-23 15:30:35', b'0', 'admin', '2021-07-27 16:05:08', NULL, 'Main', '', 1, 'liveManage', '1367040067201138688', '/', 2.00, '直播管理', NULL, '/manager/broadcast*');
INSERT INTO `li_menu` VALUES (1407602049759072258, 'admin', '2021-06-23 15:30:55', b'0', 'admin', '2021-12-07 10:54:54', NULL, 'promotions/live/live', '', 2, 'promotions/live', '1407601962899230721', 'promotions/live', 1.00, '直播管理', NULL, 'null');
INSERT INTO `li_menu` VALUES (1407602441964244994, 'admin', '2021-06-23 15:32:29', b'0', NULL, NULL, NULL, 'Main', '', 1, 'pointManage', '1367040067201138688', '/', 3.00, '积分活动', NULL, NULL);
INSERT INTO `li_menu` VALUES (1407602516912263170, 'admin', '2021-06-23 15:32:47', b'0', 'admin', '2021-12-03 19:18:30', NULL, 'promotions/points-goods/points-goods', '', 2, 'promotions/points-goods', '1407602441964244994', 'promotions/points-goods', 1.00, '积分商品', NULL, '/manager/promotion/pointsGoods*,/manager/goods*');
INSERT INTO `li_menu` VALUES (1407602673334636546, 'admin', '2021-06-23 15:33:24', b'0', 'admin', '2021-12-03 19:19:23', NULL, 'promotions/points-goods-category/points-goods-category', '', 2, 'promotions/points-goods-category', '1407602441964244994', 'promotions/points-goods-category', 2.00, '积分分类', NULL, '/manager/promotion/pointsGoodsCategory*');
INSERT INTO `li_menu` VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-27 16:06:26', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null', '/manager/distribution/cash*');
INSERT INTO `li_menu` VALUES (1419926569920536578, 'admin', '2021-07-27 15:44:10', b'0', 'admin', '2021-07-27 16:07:10', NULL, 'customWords/index', NULL, 2, 'customWords', '1367050250249830400', 'customWords', 4.00, 'ES分词', NULL, '/manager/other/customWords*');
INSERT INTO `li_menu` VALUES (1430799171593535490, 'admin', '2021-08-26 15:48:00', b'0', 'admin', '2021-12-02 20:21:34', NULL, 'promotions/kanjia/kanjia-activity-goods', NULL, 2, 'promotions/kanjia', '1367049214198022144', 'promotions/kanjia', 6.00, '砍价活动', NULL, '/manager/promotion/kanJiaGoods*');
INSERT INTO `li_menu` VALUES (1495665663207432193, 'admin', '2022-02-21 15:44:17', b'0', 'admin', '2022-02-21 15:45:44', NULL, 'distribution/distrbutionGrade', NULL, 2, 'distrbutionGrade', '1374173575405109248', 'distrbutionGrade', 0.00, '分销等级', NULL, '/manager/distrbutionGrade*');
SET FOREIGN_KEY_CHECKS = 1;
/*
Navicat Premium Data Transfer
Source Server : lilishop
Source Server Type : MySQL
Source Server Version : 80025
Source Host : 192.168.0.116:3306
Source Schema : zhimai1
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 01/03/2022 15:36:03
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for li_store_menu
-- ----------------------------
DROP TABLE IF EXISTS `li_store_menu`;
CREATE TABLE `li_store_menu` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '说明备注',
`front_route` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '前端路由',
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '图标',
`level` int NULL DEFAULT NULL COMMENT '层级',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '菜单/权限名称',
`parent_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '父id',
`path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '赋权API地址,正则表达式',
`sort_order` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '排序值',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '菜单标题',
`permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '权限url',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of li_store_menu
-- ----------------------------
INSERT INTO `li_store_menu` VALUES (1348810750596767744, NULL, '2022-01-11 22:35:33.000000', b'0', NULL, '2022-01-11 22:36:52', NULL, 'Main', 'ios-american-football', 0, 'goods', '0', '/', '1', '商品', NULL);
INSERT INTO `li_store_menu` VALUES (1348810864748945408, NULL, '2022-01-11 22:35:37.000000', b'0', NULL, '2022-01-11 22:36:55', NULL, 'Main', 'ios-american-football', 1, 'Main', '1348810750596767744', '/', '1.1', '商品管理', '');
INSERT INTO `li_store_menu` VALUES (1349237129847005184, NULL, '2022-01-11 22:35:40.000000', b'0', NULL, '2022-01-11 22:36:59', NULL, 'goods-operation', 'ios-american-football', 2, 'goods-operation', '1348810864748945408', '/goods-operation', '1.11', '商品发布', '/store/goods/category*,/store/goods/categorySpec*,/store/goods/categoryParameters*,/store/goods/draftGoods*,/store/goods/label*,/store/goods/goods*,/store/goods/goodsUnit*,/store/goods/spec*');
INSERT INTO `li_store_menu` VALUES (1349237207378714624, NULL, '2022-01-11 22:35:42.000000', b'0', NULL, '2022-01-11 22:37:02', NULL, 'goods/goods-seller/goods', 'ios-american-football', 2, 'goods', '1348810864748945408', 'goods', '1.12', '商品列表', NULL);
INSERT INTO `li_store_menu` VALUES (1349237928434098176, NULL, '2022-01-11 22:35:45.000000', b'0', NULL, '2022-01-11 22:37:05', NULL, 'goods/goods-seller/draftGoods', 'ios-american-football', 2, 'template-goods', '1348810864748945408', 'template-goods', '1.13', '商品模板', NULL);
INSERT INTO `li_store_menu` VALUES (1349246048900243456, NULL, '2022-01-11 22:35:48.000000', b'0', NULL, '2022-01-11 22:37:08', NULL, 'goods/goods-manage/category', 'ios-american-football', 2, 'category', '1348810864748945408', 'category', '1.14', '店铺分类', NULL);
INSERT INTO `li_store_menu` VALUES (1349246347597602816, NULL, '2022-01-11 22:35:51.000000', b'0', NULL, '2022-01-11 22:37:11', NULL, 'Main', 'ios-american-football', 0, 'order', '0', '/', '2', '订单', NULL);
INSERT INTO `li_store_menu` VALUES (1349246468775239680, NULL, '2022-01-11 22:38:28.000000', b'0', NULL, '2022-01-11 22:38:31', NULL, 'Main', 'ios-american-football', 1, 'Main', '1349246347597602816', '/', '2.1', '订单管理', NULL);
INSERT INTO `li_store_menu` VALUES (1349246671158796288, NULL, '2022-01-11 22:38:42.000000', b'0', NULL, '2022-01-11 22:38:35', NULL, 'order/order/orderList', 'ios-american-football', 2, 'orderList', '1349246468775239680', 'orderList', '2.11', '商品订单', '/store/order/order*');
INSERT INTO `li_store_menu` VALUES (1349246896661356544, NULL, '2022-01-11 22:40:27.000000', b'0', NULL, '2022-01-11 22:40:34', NULL, 'order/order/virtualOrderList', 'ios-american-football', 2, 'virtualOrderList', '1349246468775239680', 'virtualOrderList', '2.12', '虚拟订单', '/store/order/order*');
INSERT INTO `li_store_menu` VALUES (1349247081504333824, NULL, '2022-01-11 22:41:47.000000', b'0', NULL, '2022-01-11 22:41:50', NULL, 'Main', 'ios-american-football', 1, 'Main', '1349246347597602816', '/', '2.2', '评价管理', NULL);
INSERT INTO `li_store_menu` VALUES (1349247640584085504, NULL, '2022-01-11 22:43:29.000000', b'0', NULL, '2022-01-11 22:45:47', NULL, 'member/memberComment', 'ios-american-football', 2, 'memberComment', '1349247081504333824', 'memberComment', '2.21', '评价管理', '/store/member/evaluation*');
INSERT INTO `li_store_menu` VALUES (1349254815809298432, NULL, '2022-01-11 22:45:35.000000', b'0', NULL, '2022-01-11 22:45:50', NULL, 'Main', 'ios-american-football', 1, 'Main', '1349246347597602816', '/', '2.3', '售后管理', NULL);
INSERT INTO `li_store_menu` VALUES (1349255214977015808, NULL, '2022-01-11 22:49:22.000000', b'0', NULL, '2022-01-11 22:49:27', NULL, 'order/after-order/returnGoodsOrder', 'ios-american-football', 2, 'returnGoodsOrder', '1349254815809298432', 'returnGoodsOrder', '2.31', '退货管理', '/store/order/afterSale*');
INSERT INTO `li_store_menu` VALUES (1349255404425338880, NULL, '2022-01-11 22:51:20.000000', b'0', NULL, '2022-01-11 22:51:22', NULL, 'order/after-order/returnMoneyOrder', 'ios-american-football', 2, 'returnMoneyOrder', '1349254815809298432', 'returnMoneyOrder', '2.32', '退款管理', '/store/order/afterSale*');
INSERT INTO `li_store_menu` VALUES (1349256082979840000, NULL, '2022-01-11 22:52:50.000000', b'0', NULL, '2022-01-11 22:52:55', NULL, 'order/after-order/orderComplaint', 'ios-american-football', 2, 'orderComplaint', '1349254815809298432', 'orderComplaint', '2.33', '投诉管理', '/store/order/complain*');
INSERT INTO `li_store_menu` VALUES (1357584224760102912, NULL, '2022-01-11 23:02:20.000000', b'0', NULL, '2022-01-11 23:02:25', NULL, 'Main', 'ios-american-football', 0, 'bill', '0', '/', '3', '财务', NULL);
INSERT INTO `li_store_menu` VALUES (1357873097859923969, NULL, '2022-01-11 23:04:13.000000', b'0', NULL, '2022-01-11 23:04:17', NULL, 'Main', 'ios-american-football', 1, 'Main', '1357584224760102912', '/', '3.1', '财务管理', '');
INSERT INTO `li_store_menu` VALUES (1367038467288072192, NULL, '2022-01-11 23:06:11.000000', b'0', NULL, '2022-01-11 23:06:16', NULL, 'shop/bill/accountStatementBill', 'ios-american-football', 2, 'accountStatementBill', '1357873097859923969', 'accountStatementBill', '3.11', '财务对账', '/store/order/bill*');
INSERT INTO `li_store_menu` VALUES (1367039534616805376, NULL, '2022-01-11 23:07:54.000000', b'0', NULL, '2022-01-11 23:07:57', NULL, 'shop/bill/storeBill', 'ios-american-football', 2, 'storeBill', '1357873097859923969', 'storeBill', '3.12', '店铺结算', '/store/order/bill*');
INSERT INTO `li_store_menu` VALUES (1367039950368800768, NULL, '2022-01-11 23:09:26.000000', b'0', NULL, '2022-01-11 23:09:29', NULL, 'Main', 'ios-american-football', 1, 'Main', '1357584224760102912', '/', '3.2', '发票管理', NULL);
INSERT INTO `li_store_menu` VALUES (1367040067201138688, NULL, '2022-01-11 23:11:14.000000', b'0', NULL, '2022-01-11 23:11:18', NULL, 'order/receiptManager/receipt', 'ios-american-football', 2, 'receipt', '1367039950368800768', 'receipt', '3.21', '发票管理', '/store/trade/receipt*');
INSERT INTO `li_store_menu` VALUES (1367040599596728320, NULL, '2022-01-11 23:12:49.000000', b'0', NULL, '2022-01-11 23:12:52', NULL, 'Main', 'ios-american-football', 0, 'promotion', '0', '/', '4', '营销', NULL);
INSERT INTO `li_store_menu` VALUES (1367040819248234496, NULL, '2022-01-11 23:14:35.000000', b'0', NULL, '2022-01-11 23:14:38', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367040599596728320', '/', '4.1', '平台活动', NULL);
INSERT INTO `li_store_menu` VALUES (1367041332861730816, NULL, '2022-01-11 23:15:42.000000', b'0', NULL, '2022-01-11 23:15:48', NULL, 'promotion/pintuan/pintuan', 'ios-american-football', 2, 'pintuan', '1367040819248234496', 'pintuan', '4.11', '拼团活动', '/store/promotion/pintuan*');
INSERT INTO `li_store_menu` VALUES (1367041461194850304, NULL, '2022-01-11 23:17:32.000000', b'0', NULL, '2022-01-11 23:17:44', NULL, 'promotion/seckill/seckill', 'ios-american-football', 2, 'seckill', '1367040819248234496', 'seckill', '4.12', '秒杀活动', '/store/promotion/seckill*');
INSERT INTO `li_store_menu` VALUES (1367041575619657728, NULL, '2022-01-11 23:20:19.000000', b'0', NULL, '2022-01-11 23:20:24', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367040599596728320', '/', '4.2', '直播活动', '');
INSERT INTO `li_store_menu` VALUES (1367042490443497472, NULL, '2022-01-11 23:21:13.000000', b'0', NULL, '2022-01-11 23:21:22', NULL, 'promotion/live/live', 'ios-american-football', 2, 'live', '1367041575619657728', 'live', '4.21', '直播管理', '/store/broadcast/studio*');
INSERT INTO `li_store_menu` VALUES (1367042664410644480, NULL, '2022-01-11 23:22:42.000000', b'0', NULL, '2022-01-11 23:22:59', NULL, 'promotion/live/liveGoods', 'ios-american-football', 2, 'liveGoods', '1367041575619657728', 'liveGoods', '4.22', '直播商品', '/store/broadcast/commodity*');
INSERT INTO `li_store_menu` VALUES (1367042804944994304, NULL, '2022-01-11 23:24:24.000000', b'0', NULL, '2022-01-11 23:24:38', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367040599596728320', '/', '4.3', '商家活动', NULL);
INSERT INTO `li_store_menu` VALUES (1367042804944994305, NULL, '2022-01-11 23:24:29.000000', b'0', NULL, '2022-01-11 23:24:42', NULL, 'promotion/full-discount/full-discount', 'ios-american-football', 2, 'full-cut', '1367042804944994304', 'full-discount', '4.31', '满额活动', '/store/promotion/fullDiscount*');
INSERT INTO `li_store_menu` VALUES (1367042917113266176, NULL, '2022-01-11 23:26:45.000000', b'0', NULL, '2022-01-11 23:26:50', NULL, 'promotion/coupon/coupon', 'ios-american-football', 2, 'coupon', '1367042804944994304', 'coupon', '4.32', '优惠券', '/store/promotion/coupon*');
INSERT INTO `li_store_menu` VALUES (1367043020976816128, NULL, '2022-01-11 23:28:50.000000', b'0', NULL, '2022-01-11 23:29:02', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367040599596728320', '/', '4.4', '分销管理', NULL);
INSERT INTO `li_store_menu` VALUES (1367043443917848576, NULL, '2022-01-11 23:28:53.000000', b'0', NULL, '2022-01-11 23:29:04', NULL, 'distribution/distributionGoods', 'ios-american-football', 2, 'distributionGoods', '1367043020976816128', 'distributionGoods', '4.41', '分销商品', '/store/distribution/goods*');
INSERT INTO `li_store_menu` VALUES (1367043505771249664, NULL, '2022-01-11 23:28:56.000000', b'0', NULL, '2022-01-11 23:29:07', NULL, 'distribution/distributionOrder', 'ios-american-football', 2, 'distributionOrder', '1367043020976816128', 'distributionOrderdistributionOrder', '4.42', '分销订单', '/store/distribution/order*');
INSERT INTO `li_store_menu` VALUES (1367044121163726848, NULL, '2022-01-12 21:47:03.000000', b'0', NULL, '2022-01-12 21:47:25', NULL, 'Main', 'ios-american-football', 0, 'statistics', '0', '/', '5', '统计', NULL);
INSERT INTO `li_store_menu` VALUES (1367044247978508288, NULL, '2022-01-12 21:47:19.000000', b'0', NULL, '2022-01-12 21:47:28', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367044121163726848', '/', '5.1', '统计管理', NULL);
INSERT INTO `li_store_menu` VALUES (1367044376391319552, NULL, '2022-01-12 21:49:45.000000', b'0', NULL, '2022-01-12 21:50:01', NULL, 'statistics/goods', 'ios-american-football', 2, 'goodsStatistics', '1367044247978508288', 'goodsStatistics', '5.11', '商品统计', '/store/statistics/goods*');
INSERT INTO `li_store_menu` VALUES (1367044657296441344, NULL, '2022-01-12 21:49:48.000000', b'0', NULL, '2022-01-12 21:49:58', NULL, 'statistics/order', 'ios-american-football', 2, 'orderStatistics', '1367044247978508288', 'orderStatistics', '5.12', '订单统计', '/store/statistics/order*,/store/statistics/order*,/store/statistics/order*,/store/statistics/order*');
INSERT INTO `li_store_menu` VALUES (1367045529720061952, NULL, '2022-01-12 21:49:51.000000', b'0', NULL, '2022-01-12 21:50:03', NULL, 'statistics/traffic', 'ios-american-football', 2, 'trafficStatistics', '1367044247978508288', 'trafficStatistics', '5.13', '流量统计', '/store/statistics/view*');
INSERT INTO `li_store_menu` VALUES (1367045630710513664, NULL, '2022-01-12 21:52:59.000000', b'0', NULL, '2022-01-12 21:53:09', NULL, 'Main', 'ios-american-football', 0, 'settings', '0', '/', '6', '设置', NULL);
INSERT INTO `li_store_menu` VALUES (1367045794284175360, NULL, '2022-01-12 21:53:03.000000', b'0', NULL, '2022-01-12 21:53:12', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367045630710513664', '/', '6.1', '配送设置', NULL);
INSERT INTO `li_store_menu` VALUES (1367045921434501120, NULL, '2022-01-12 21:55:49.000000', b'0', NULL, '2022-01-12 21:55:52', NULL, 'shop/ship/shipTemplate', 'ios-american-football', 2, 'shipTemplate', '1367045794284175360', 'shipTemplate', '6.11', '配送模板', '/store/setting/freightTemplate*');
INSERT INTO `li_store_menu` VALUES (1367046068369358848, NULL, '2022-01-12 21:58:05.000000', b'0', NULL, '2022-01-12 21:58:13', NULL, 'shop/ship/logistics', 'ios-american-football', 2, 'logistics', '1367045794284175360', 'logistics', '6.12', '物流公司', '/store/other/logistics*');
INSERT INTO `li_store_menu` VALUES (1367046266214678528, NULL, '2022-01-12 21:59:07.000000', b'0', NULL, '2022-01-12 21:59:43', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367045630710513664', '/', '6.2', '店铺管理', NULL);
INSERT INTO `li_store_menu` VALUES (1367048084701315072, NULL, '2022-01-12 21:59:32.000000', b'0', NULL, '2022-01-12 21:59:48', NULL, 'shop/shopSetting', 'ios-american-football', 2, 'shopSetting', '1367046266214678528', 'shopSetting', '6.21', '店铺设置', NULL);
INSERT INTO `li_store_menu` VALUES (1367048684339986432, NULL, '2022-01-12 21:59:36.000000', b'0', NULL, '2022-01-12 21:59:51', NULL, 'shop/shopAddress', 'ios-american-football', 2, 'shopAddress', '1367046266214678528', 'shopAddress', '6.22', '自提管理', '/store/member/storeAddress*');
INSERT INTO `li_store_menu` VALUES (1367048754229673984, NULL, '2022-01-12 22:02:11.000000', b'0', NULL, '2022-01-12 22:04:36', NULL, 'Main', 'ios-american-football', 0, 'Main', '0', '/', '7', '消息', NULL);
INSERT INTO `li_store_menu` VALUES (1367048832210173952, NULL, '2022-01-12 22:02:49.000000', b'0', NULL, '2022-01-12 22:04:39', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367048754229673984', '/', '7.1', '系统消息', NULL);
INSERT INTO `li_store_menu` VALUES (1367048967635861503, NULL, '2022-02-18 16:08:30.000000', b'0', NULL, '2022-02-18 16:08:36', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367045630710513664', '/', '6.3', '店员设置', '');
INSERT INTO `li_store_menu` VALUES (1367048967635861504, NULL, '2022-01-12 22:02:51.000000', b'0', NULL, '2022-01-12 22:04:45', NULL, 'message', 'ios-american-football', 2, 'message_index', '1367048832210173952', 'message', '7.11', '系统消息', '/store/message/storeMessage*');
INSERT INTO `li_store_menu` VALUES (1367048967635861505, NULL, '2022-02-18 16:12:18.000000', b'0', NULL, '2022-02-18 16:12:21', NULL, 'shop/system/clerk/clerkManage', 'ios-american-football', 2, '\nclerkManage', '1367048967635861503', '\nclerkManage', '6.31', '店员管理', '/store/department*,/store/clerk*,/store/role*,/store/department*');
INSERT INTO `li_store_menu` VALUES (1367048967635861506, NULL, '2022-02-18 16:25:27.000000', NULL, NULL, '2022-02-18 16:25:31', NULL, 'shop/system/department/storeDepartmentManage', 'ios-american-football', 2, 'storeDepartmentManage', '1367048967635861503', 'storeDepartmentManage', '6.32', '部门管理', '/store/department*');
INSERT INTO `li_store_menu` VALUES (1367048967635861507, NULL, '2022-02-18 16:27:28.000000', NULL, NULL, '2022-02-18 16:27:30', NULL, 'shop/system/role/storeRoleManage', 'ios-american-football', 2, 'storeRoleManage', '1367048967635861503', 'storeRoleManage', '6.33', '角色权限', '/store/role*');
INSERT INTO `li_store_menu` VALUES (1367048967635861510, NULL, '2022-03-07 14:45:10.000000', b'0', NULL, '2022-03-07 14:45:13', NULL, 'shop/floorList', 'ios-american-football', 2, 'floorList', '1367046266214678528', 'floorList', '6.23', 'PC端', '/store/other/pageData*');
INSERT INTO `li_store_menu` VALUES (1367048967635861511, NULL, '2022-03-07 15:13:52.000000', b'0', NULL, '2022-03-07 15:13:55', NULL, 'shop/wap/wapList', 'ios-american-football', 2, 'wapList', '1367046266214678528', 'wapList', '6.24', '移动端', '/store/other/pageData*');
SET FOREIGN_KEY_CHECKS = 1;
insert li_clerk(id,create_by,create_time,store_id,clerk_name,member_id,shopkeeper,is_super,`status`) select id,member_name,current_date(),id,member_name,member_id ,TRUE,TRUE,TRUE from li_store

91
DB/version4.2.5to4.3.sql Normal file
View File

@@ -0,0 +1,91 @@
/** 优惠券活动增加领取周期字段 **/
ALTER TABLE li_coupon_activity ADD coupon_frequency_enum varchar(255) COMMENT '领取周期';
-- 会员优惠券标识
CREATE TABLE `li_member_coupon_sign` (
`id` bigint NOT NULL,
`coupon_activity_Id` bigint NULL DEFAULT NULL COMMENT '优惠券活动id',
`member_id` bigint NULL DEFAULT NULL COMMENT '会员id',
`invalid_time` datetime NULL DEFAULT NULL COMMENT '过期时间',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
/**
IM聊天
*/
CREATE TABLE `li_im_talk` (
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) DEFAULT NULL COMMENT '删除标志',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改者',
`update_time` datetime(6) DEFAULT NULL COMMENT '修改时间',
`user_id1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户1Id',
`user_id2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户2Id',
`name1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户1名称',
`name2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户2名称',
`face1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户1头像',
`face2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户2头像',
`top1` bit(1) DEFAULT NULL COMMENT '用户1置顶标识',
`top2` bit(1) DEFAULT NULL COMMENT '用户2置顶标识',
`disable1` bit(1) DEFAULT NULL COMMENT '用户1禁用标识',
`disable2` bit(1) DEFAULT NULL COMMENT '用户2禁用标识',
`store_flag1` bit(1) DEFAULT NULL COMMENT '用户1店铺标识',
`store_flag2` bit(1) DEFAULT NULL COMMENT '用户2店铺标识',
`last_talk_time` datetime DEFAULT NULL COMMENT '最后聊天时间',
`last_talk_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '最后的消息',
`last_message_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最后消息类型',
`talk_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '聊天Id',
`tenant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '坐席Id',
`tenant_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '坐席名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/**
IM消息
*/
CREATE TABLE `li_im_message` (
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) DEFAULT NULL COMMENT '删除标识',
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改者',
`update_time` datetime(6) DEFAULT NULL COMMENT '修改标识',
`from_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发送用户Id',
`to_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '接收用户Id',
`is_read` bit(1) DEFAULT NULL COMMENT '已读标识',
`message_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '聊天类型',
`text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '聊天内容',
`talk_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '聊天Id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/**
订单增加自提信息
*/
ALTER TABLE li_order ADD `store_address_path` varchar(255) DEFAULT NULL;
ALTER TABLE li_order ADD `store_address_center` varchar(255) DEFAULT NULL;
ALTER TABLE li_order ADD `store_address_mobile` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
/**
店铺是否开启自提
*/
ALTER TABLE li_store ADD `self_pick_flag` bit(1) DEFAULT NULL;
/**
历史足迹增加店铺Id
*/
ALTER TABLE li_foot_print ADD `store_id` varchar(255) DEFAULT NULL COMMENT '店铺ID';
/**
用户提现申请增加字段
*/
ALTER TABLE li_member_withdraw_apply ADD `real_name` varchar(255) DEFAULT NULL;
ALTER TABLE li_member_withdraw_apply ADD `connect_number` varchar(255) DEFAULT NULL;
ALTER TABLE li_member_withdraw_apply ADD `error_message` text DEFAULT NULL;

173
DB/version4.3to4.4.sql Normal file
View File

@@ -0,0 +1,173 @@
CREATE TABLE `li_file_directory`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
`delete_flag` tinyint(1) NULL DEFAULT 0 COMMENT '删除标志 true/false 删除/未删除',
`directory_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件目录类型',
`directory_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拥有者名称',
`owner_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拥有者id',
`parent_id` bigint NULL DEFAULT NULL COMMENT '父分类ID',
`level` int NULL DEFAULT NULL COMMENT '层级',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 1698937596963311619
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT = '文件夹'
ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
ALTER TABLE li_file
ADD file_directory_id varchar(255) COMMENT '文件夹ID';
/**
订单包裹
*/
CREATE TABLE `li_order_package` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '创建者',
`create_time` datetime(6) DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) DEFAULT NULL COMMENT '是否删除',
`update_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '修改者',
`update_time` datetime(6) DEFAULT NULL COMMENT '修改时间',
`package_no` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '包裹单号',
`order_sn` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '订单编号',
`logistics_no` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '发货单号',
`logistics_code` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '物流公司CODE',
`logistics_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '物流公司名称',
`consignee_mobile` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '收件人手机',
`status` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC;
/**
分包货物
*/
CREATE TABLE `li_order_package_item` (
`id` bigint NOT NULL COMMENT 'ID',
`create_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '创建者',
`create_time` datetime(6) DEFAULT NULL COMMENT '创建时间',
`delete_flag` bit(1) DEFAULT NULL COMMENT '是否删除',
`update_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '修改者',
`update_time` datetime(6) DEFAULT NULL COMMENT '修改时间',
`package_no` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '包裹单号',
`order_sn` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '订单编号',
`order_item_sn` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL COMMENT '子订单编号',
`deliver_number` int DEFAULT NULL COMMENT '发货数量',
`logistics_time` datetime(6) DEFAULT NULL COMMENT '发货时间',
`goods_name` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
`thumbnail` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC;
/*
订单货物增加发货数量
*/
ALTER TABLE li_order_item ADD `deliver_number` int DEFAULT NULL COMMENT '发货数量';
/*
sku增加预警库存
*/
ALTER TABLE li_goods_sku ADD `alert_quantity` int DEFAULT NULL COMMENT '预警库存';
/*
增加库存预警菜单
*/
INSERT INTO `lilishop`.`li_store_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `permission`) VALUES (1349237928434098177, NULL, '2022-01-11 22:35:45.000000', b'0', NULL, '2022-01-11 22:37:05', NULL, 'goods/goods-seller/alertQuantity', 'ios-american-football', 2, 'alert-goods-quantity', '1348810864748945408', 'alert-goods-quantity', '1.14', '库存预警', NULL);
/**
交易唤醒表,增加交易流水详情
*/
ALTER TABLE li_order_item ADD `is_refund` varchar(255) DEFAULT NULL COMMENT '是否退款';
/**
交易表增加订单状态字段
*/
ALTER TABLE li_order_item ADD `refund_price` decimal(10,2) DEFAULT NULL COMMENT '退款金额';
/**
结算单表,增加砍价/积分退款金额字段
*/
ALTER TABLE li_bill ADD `point_refund_settlement_price` decimal(10,2) DEFAULT NULL COMMENT '退货积分补贴返还';
ALTER TABLE li_bill ADD `kanjia_refund_settlement_price` decimal(10,2) DEFAULT NULL COMMENT '退货砍价补贴返还';
UPDATE li_bill b
SET b.point_refund_settlement_price =IFNULL((
SELECT
SUM( point_settlement_price )
FROM
li_store_flow sf
WHERE
sf.flow_type = 'REFUND'
AND sf.store_id=b.store_id
AND sf.create_time BETWEEN b.start_time
AND b.end_time),0);
UPDATE li_bill b
SET b.kanjia_refund_settlement_price =IFNULL((
SELECT
SUM( kanjia_settlement_price )
FROM
li_store_flow sf
WHERE
sf.flow_type = 'REFUND'
AND sf.store_id=b.store_id
AND sf.create_time BETWEEN b.start_time
AND b.end_time),0);
/**
文件表增加拥有者名称
*/
ALTER TABLE li_file ADD `owner_name` varchar(255) DEFAULT NULL COMMENT '拥有者名称';
/**
初始化文件拥有者名称
*/
UPDATE li_file f JOIN li_store s ON f.owner_id = s.id
SET f.owner_name = s.store_name
WHERE user_enums = 'STORE';
UPDATE li_file f JOIN li_admin_user a ON f.owner_id = a.id
SET f.owner_name = a.nick_name
WHERE user_enums = 'MANAGER';
UPDATE li_file f JOIN li_member m ON f.owner_id = m.id
SET f.owner_name = m.nick_name
WHERE user_enums = 'MEMBER';
ALTER TABLE `li_order`
ADD COLUMN `seller_remark` varchar(255) NULL COMMENT '商家订单备注' AFTER `remark`;
ALTER TABLE `li_distribution_cash`
ADD COLUMN `name` varchar(255) NULL COMMENT '会员姓名';
ALTER TABLE `li_distribution_cash`
ADD COLUMN `id_number` varchar(255) NULL COMMENT '身份证号' ;
ALTER TABLE `li_distribution_cash`
ADD COLUMN `settlement_bank_account_name` varchar(255) NULL COMMENT '结算银行开户行名称' ;
ALTER TABLE `li_distribution_cash`
ADD COLUMN `settlement_bank_account_num` varchar(255) NULL COMMENT '结算银行开户账号' ;
ALTER TABLE `li_distribution_cash`
ADD COLUMN `settlement_bank_branch_name` varchar(255) NULL COMMENT '结算银行开户支行名称' ;
ALTER TABLE `li_distribution` ADD `distribution_order_price` decimal(10,2) DEFAULT NULL COMMENT '分销订单金额';
ALTER TABLE `li_distribution_order` ADD `refund_num` int DEFAULT NULL COMMENT '退款商品数量';
ALTER TABLE `li_store_flow` ADD `bill_time` datetime(6) DEFAULT NULL COMMENT '结算时间';
ALTER TABLE `li_store_flow` ADD `full_refund` bit(1) DEFAULT NULL COMMENT '是否全部退款';
ALTER TABLE `li_store_flow` ADD `profit_sharing_status` varchar(255) NULL COMMENT '分账状态';
ALTER TABLE `li_store_flow` ADD `profit_sharing` varchar(255) NULL COMMENT '分账详情';
INSERT INTO `lilishop`.`li_setting` (`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `setting_value`) VALUES ('CONNECT_SETTING', 'admin', '2024-07-07 13:55:38.686000', b'0', NULL, NULL, '{\"callbackUrl\":\"https://buyer-api.pickmall.cn\",\"pc\":\"https://pc-b2b2c.pickmall.cn\",\"wap\":\"https://m-b2b2c.pickmall.cn\"}');
UPDATE `lilishop`.`li_setting` SET `create_by` = 'admin', `create_time` = '2021-01-23 02:18:03.299000', `delete_flag` = b'0', `update_by` = 'admin', `update_time` = '2024-07-07 13:53:44.732000', `setting_value` = '{\"accessKeyId\":\"test\",\"tencentSdkAppId\":\"null\",\"registerTemplateCode\":\"SMS_205755298\",\"huaweiSender\":\"null\",\"signName\":\"lili\",\"tencentSecretId\":\"null\",\"huaweiAppKey\":\"null\",\"isTestModel\":\"true\",\"tencentSecretKey\":\"null\",\"type\":\"ALI\",\"accessSecret\":\"test\",\"tencentSignName\":\"null\",\"huaweiSignature\":\"null\",\"payPasswordTemplateCode\":\"SMS_205755301\",\"walletPasswordTemplateCode\":\"SMS_205755297\",\"findPasswordTemplateCode\":\"SMS_205755301\",\"huaweiAppSecret\":\"null\",\"loginTemplateCode\":\"SMS_205755300\"}' WHERE `id` = 'SMS_SETTING';
ALTER TABLE li_store_logistics ADD `partner_name` varchar(255) DEFAULT NULL COMMENT '电子面单客户账户名称';

1335
LICENSE

File diff suppressed because it is too large Load Diff

233
README.md
View File

@@ -1,161 +1,166 @@
## Lilishop B2B2C商城系统
# Lilishop B2B2C 商城系统
##### 开源不易如有帮助请点Star
[![GitHub Stars](https://img.shields.io/github/stars/hongyehuicheng/lilishop.svg?style=social&logo=github)](https://github.com/hongyehuicheng/lilishop)
[![Gitee Stars](https://gitee.com/beijing_hongye_huicheng/lilishop/badge/star.svg?theme=dark)](https://gitee.com/beijing_hongye_huicheng/lilishop)
[![License](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0.html)
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-2.7.18-brightgreen)](https://spring.io/projects/spring-boot)
[![Vue.js](https://img.shields.io/badge/Vue.js-2.x-green)](https://vuejs.org/)
[![uni-app](https://img.shields.io/badge/uni--app-3.x-green)](https://uniapp.dcloud.io/)
---
### 1. 项目简介
#### 欢迎交流需求,交流业务,交流技术(基础问题自行解决,进群先看文档后提问)
**Lilishop** 是一款功能完善的B2B2C多商户商城系统采用前后端分离架构全端代码开源。后端基于 **SpringBoot** 构建具备高内聚、低耦合的特性支持分布式部署。前端覆盖PC、H5、小程序和APP基于 **Vue****uni-app** 开发。
- **官方网站**: <https://pickmall.cn>
- **官方文档**: <https://docs.pickmall.cn>
- **Gitee 仓库**: <https://gitee.com/beijing_hongye_huicheng/lilishop>
- **GitHub 仓库**: <https://github.com/lilishop/lilishop>
##### 交流 qq 1群 961316482已满
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=BAhURE3DG2YWhQk6kRxVapbLykqMoPS8&jump_from=webapi"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="Lilishop交流群" title="Lilishop交流群">点击快捷加群</a>
> **聚合版**: 为简化部署我们提供了API聚合版仅需启动单个JAR包即可运行。详情请访问[lilishop-simplify](https://gitee.com/beijing_hongye_huicheng/lilishop-simplify)
##### 交流 qq 2群 875294241
---
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=_lrekOvr5k2p5uTn5GRidI-chKEmpCX3&jump_from=webapi"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="Lilishop交流群2群" title="Lilishop交流群2群">点击快捷加群</a>
### 2. 核心特性
- **全端覆盖**: 一套代码库支持PC、H5、小程序、APP降低开发和维护成本。
- **商家入驻**: 支持多商家入驻,构建平台化电商生态。
- **分布式架构**: 后端API服务化支持独立部署和弹性伸缩。
- **前后端分离**: 清晰的职责划分,便于团队协作和独立开发。
- **容器化支持**: 提供Docker镜像和docker-compose配置实现一键部署。
- **功能完善**: 涵盖会员、订单、商品、促销、店铺、运营、统计等完整电商业务模块。
##### 体验 公众号/小程序/APP 体验,扫描二维码
---
![image-20210511171611793](https://pickmall.cn/assets/imgs/h5-qrcode.png)
### 3. 在线演示
[![star](https://gitee.com/beijing_hongye_huicheng/lilishop/badge/star.svg?theme=dark)](https://gitee.com/beijing_hongye_huicheng/lilishop/stargazers)
&nbsp;&nbsp;![github](https://img.shields.io/github/stars/hongyehuicheng/lilishop.svg?style=social&logo=#181717)
**注意**: 演示站手机验证码统一为 `111111`。演示环境部署于 `master` 分支。
- **平台管理端**: <https://admin-b2b2c.pickmall.cn>
- 账号: `admin`
- 密码: `123456`
- **店铺管理端**: <https://store-b2b2c.pickmall.cn>
- 账号: `13011111111`
- 密码: `111111`
- **商城PC端**: <https://pc-b2b2c.pickmall.cn>
- **移动端 (H5/小程序/APP)**:
![移动端体验二维码](https://static.pickmall.cn/images/h5-qrcode.png)
### 商城介绍
**官网**https://pickmall.cn
---
Lilishop商城系统支持商家入驻后端基于SpringBoot 研发,前端使用 Vue、uniapp开发 **系统全端全部代码开源**
### 4. 快速开始
商城前后端分离支持分布式部署支持Docker各个API独立并且有独立的消费者。
#### 环境准备与部署
详细的本地部署指南,请参考官方文档:
[**部署文档 -> 环境准备**](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html)
### 商城 API/消费者 聚合版
api不需要单独部署只需启动一个jar包就可以正常运转 如有需要,可以点击跳转
https://gitee.com/beijing_hongye_huicheng/lilishop-simplify
#### 数据库初始化
- **推荐方式**: 使用项目提供的 `docker-compose` 配置可自动完成数据库MySQL, Redis, Elasticsearch等的部署与初始化。
- **手动方式**: 如果您选择手动部署SQL脚本位于以下地址。请确保获取与您代码版本一致的SQL文件。
[**数据库脚本 (Gitee)**](https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql)
### 商城 开发/使用/常见问题 帮助文档
---
https://docs.pickmall.cn
### 5. 技术架构
### 项目地址
#### 5.1 架构图
![系统架构图](https://lili-system.oss-cn-beijing.aliyuncs.com/docs/%E6%9E%B6%E6%9E%84.png)
gitee : https://gitee.com/beijing_hongye_huicheng
#### 5.2 后端技术栈
github 镜像: https://github.com/lilishop?tab=repositories
| 技术 | 选型 | 备注/用途 |
| :-------------- | :-------------- | :--------- |
| 核心框架 | Spring Boot | 简化应用开发 |
| ORM框架 | Mybatis-Plus | 数据持久化 |
| 数据库 | MySQL | 关系型数据存储 |
| 消息队列 | RocketMQ | 异步任务与解耦 |
| 缓存 | Redis, MongoDB | 数据缓存与存储 |
| 搜索引擎 | Elasticsearch | 商品搜索 |
| 安全框架 | Spring Security | 认证与授权 |
| 分库分表 | ShardingSphere | 数据水平扩展 |
| 定时任务 | XXL-Job | 分布式任务调度 |
| 认证方案 | JWT | Token |
商城UI 项目下3个文件夹
buyer买家PC端seller商家端manager后台管理端
#### 5.3 前端技术栈
**管理端 (平台/商家)**
### 演示地址
PS手机验证码为 111111
**平台管理端**https://admin-b2b2c.pickmall.cn 账号admin/123456
**店铺管理端**https://store-b2b2c.pickmall.cn 账号13011111111/111111
**商城PC页面**https://pc-b2b2c.pickmall.cn
**商城 小程序/公众号/APP**:扫描二维码
![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)
**商城数据库**
使用docker-compose部署数据库自动初始化数据库不需要手动下载等操作
如果手动部署才需要获取sql [点击跳转](https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql) PS这里有与tag版本一致的sql如果是历史版本则docker项目也切换至历史版本获取sql即可历史版本升级则根据java相聚的根目录DB目录下的升级sql按需执行
| 技术 | 选型 | 备注/用途 |
| :--------- | :--------- | :--------- |
| JS框架 | Vue.js | 核心框架 |
| UI库 | iView | 界面组件 |
| 状态管理 | Vuex | 全局状态管理 |
| 路由 | Vue Router | 页面路由 |
| HTTP客户端 | axios | API请求 |
**移动端 (H5/小程序/APP)**
| 技术 | 选型 | 备注/用途 |
| :-------- | :------ | :------------- |
| 核心框架 | uni-app | 跨平台开发框架 |
| UI库 | uViewUI | 丰富的组件库 |
| CSS预处理 | SCSS | 样式开发 |
### 功能列表
### 6. 功能清单
#### 6.1 平台管理端
#### 平台管理端功能
| 模块 | 主要功能 |
| :--- | :--------------------------------------------------------------------- |
| 首页 | 数据看板、待办事项 |
| 会员 | 会员管理、会员评价、积分管理、资金流水、充值管理 |
| 订单 | 商品订单、虚拟订单、售后处理、订单投诉、收款与退款流水 |
| 商品 | 商品管理、商品审核、分类、品牌、规格、计量单位管理 |
| 促销 | 优惠券、秒杀、砍价、拼团、积分商品等营销活动 |
| 店铺 | 店铺管理、入驻审核、结算管理、店铺对账 |
| 运营 | 页面装修、分销管理、文章管理、意见反馈、站内信、短信配置 |
| 统计 | 会员、订单、流量、商品销量等多维度统计 |
| 设置 | 权限、角色、部门、管理员、系统参数、OSS、支付、物流、敏感词等基础配置 |
![平台管理端功能](https://pickmall.cn/assets/imgs/other/managerList1.jpg)
#### 6.2 商家端
| 模块 | 主要功能 |
| :--- | :----------------------------------------------------------- |
| 首页 | 店铺看板、待办事项、公告 |
| 商品 | 商品发布、商品管理、运费模板、店铺内分类 |
| 订单 | 订单处理、评价管理、投诉处理、退款/退货申请 |
| 财务 | 店铺对账、结算管理、发票管理 |
| 促销 | 优惠券、满减、秒杀、拼团、分销商品管理 |
| 统计 | 订单统计、流量分析、商品销量排行 |
| 设置 | 物流配送、自提点、店铺信息、PC/移动端装修、店员与权限管理 |
---
#### 卖家功能
### 7. 界面展示
![商家端功能](https://pickmall.cn/assets/imgs/other/storeList.jpg)
### 商城前端功能展示
#### 商城移动端
<img src="https://pickmall.cn/assets/imgs/other/app.gif" alt="移动端功能展示" style="zoom:50%;" />
#### 移动端
<img src="https://static.pickmall.cn/images/other/app.gif" alt="移动端功能展示" width="300"/>
#### 平台管理端
![管理端功能展示](https://static.pickmall.cn/images/other/manager.gif)
![管理端功能展示](https://pickmall.cn/assets/imgs/other/manager.gif)
---
### 8. 开源与授权
### 技术选型
1. **开源协议**: 本项目遵循 `AGPL-3.0` 开源协议。
2. **使用范围**: 仅允许用于个人学习、研究和非商业用途。
3. **禁止行为**: 禁止将本项目的代码和资源用于任何形式的商业销售。
4. **商业授权**: 如需商业使用,必须获得官方授权。授权为一次性永久授权,并提供持续的版本升级服务。详情请联系官网客服。
5. **软件著作权**: 本软件受国家计算机软件著作权保护登记号2021SR0805085
#### 架构图
---
![技术选型](https://lili-system.oss-cn-beijing.aliyuncs.com/docs/%E6%9E%B6%E6%9E%84.png)
### 9. 社区与支持
##### 后台技术选型
我们欢迎任何形式的交流与贡献。在提问前,请先查阅 [官方文档](https://docs.pickmall.cn/) 和 [常见问题](https://docs.pickmall.cn/faq/常见问题.html),并参考 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md) 以便高效沟通。
| 说明 | 框架 | 说明 | |
| -------------- | --------------- | -------------- | ------------- |
| 基础框架 | Spring Boot | MVC框架 | Spring MVC |
| 持久框架 | Mybatis-Plus | 程序构建 | Maven |
| 关系型数据库 | MySQL | 消息中间件AMQP | RocketMQ |
| 缓存 | Redis +MongoDB | 搜索引擎 | Elasticsearch |
| 安全框架 | Spring Security | 数据库连接池 | Druid |
| 数据库分库分表 | sharding | 定时任务 | xxl-job |
| 负载均衡 | Nginx | 静态资源 | 阿里云OSS |
| 短信 | 阿里云短信 | 认证 | JWT |
| 日志处理 | Log4j | 接口规范 | RESTful |
##### 前端-运营后台、店铺后台
| 说明 | 框架 | 说明 | 框架 |
| ---------- | ---------- | ---------- | ------- |
| 构建工具 | webpack | JS版本 | ES6 |
| 基础JS框架 | Vue.js | 视频播放器 | Dplayer |
| 路由管理 | Vue Router | 状态管理 | Vuex |
| 基础UI库 | iView | UI界面基于 | iView |
| 网络请求 | axios | | |
##### 前端-移动端
| 说明 | 架构 | 说明 | 架构 |
| --------- | ------- | -------- | ------- |
| 基础UI库 | uViewui | 基础框架 | uni-app |
| CSS预处理 | scss | 地图引擎 | amap |
### 版本升级
```
商城后续会持续版本升级修复bug完善功能覆盖更多业务场景 o2o/b2b/s2b2b2c/跨境电商
后续会考虑推出微服务商城系统/商城中台等
```
### 开源须知
1.仅允许用于个人学习研究使用.
2.禁止将本开源的代码和资源进行任何形式任何名义的出售.
3.软件受国家计算机软件著作权保护登记号2021SR0805085
4.限制商用如果需要商业使用请联系我们。QQ3409056806.
### 交流群
##### 官方qq 1群 961316482已满
##### 官方qq 2群 875294241
- **微信交流群**:
![微信群](https://lilishop-wechat.oss-cn-beijing.aliyuncs.com/wechat.jpg)
- **社区贡献内容**:
- 清晨敲代码的分析: <https://blog.csdn.net/vaevaevae233/category_12103567.html>
- DeepWiki: <https://deepwiki.com/lilishop/lilishop>

View File

@@ -32,10 +32,10 @@
<artifactId>logstash-logback-encoder</artifactId>
<version>${logstash-logback-encoder}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-mail</artifactId>-->
<!-- </dependency> -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-mail</artifactId>-->
<!-- </dependency> -->
</dependencies>
<build>

View File

@@ -16,5 +16,6 @@ spring.mail.username=1814994716@qq.com
spring.mail.password=abcdefg123456!@#$%^
# 日志文件路径
logging.file.path=lili-logs/admin
lili.data.logstash.server=106.124.130.167:4560
# 文件格式
logging.pattern.file=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx

View File

@@ -29,6 +29,7 @@ public class BuyerApiApplication {
public static void main(String[] args) {
System.setProperty("es.set.netty.runtime.available.processors", "false");
System.setProperty("rocketmq.client.logUseSlf4j","true");
SpringApplication.run(BuyerApiApplication.class, args);
}
}

View File

@@ -54,22 +54,22 @@ public class DistributionGoodsBuyerController {
@PreventDuplicateSubmissions
@ApiOperation(value = "选择分销商品")
@ApiImplicitParams({
@ApiImplicitParam(name = "distributionGoodsId", value = "分销ID", required = true, dataType = "String", paramType = "path"),
@ApiImplicitParam(name = "distributionGoodsId", value = "分销ID", required = true, dataType = "String", paramType = "path"),
@ApiImplicitParam(name = "checked", value = "是否选择", required = true, dataType = "boolean", paramType = "query")
})
@GetMapping(value = "/checked/{distributionGoodsId}")
public ResultMessage<Object> distributionCheckGoods(
@NotNull(message = "分销商品不能为空") @PathVariable("distributionGoodsId") String distributionGoodsId,Boolean checked) {
Boolean result=false;
if(checked){
result=distributionSelectedGoodsService.add(distributionGoodsId);
}else {
result=distributionSelectedGoodsService.delete(distributionGoodsId);
@NotNull(message = "分销商品不能为空") @PathVariable("distributionGoodsId") String distributionGoodsId, Boolean checked) {
Boolean result = false;
if (checked) {
result = distributionSelectedGoodsService.add(distributionGoodsId);
} else {
result = distributionSelectedGoodsService.delete(distributionGoodsId);
}
//判断操作结果
if(result){
if (result) {
return ResultUtil.success(ResultCode.SUCCESS);
}else{
} else {
throw new ServiceException(ResultCode.ERROR);
}

View File

@@ -6,6 +6,7 @@ import cn.lili.common.exception.ServiceException;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.goods.entity.dos.Goods;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
import cn.lili.modules.goods.entity.vos.GoodsVO;
import cn.lili.modules.goods.service.GoodsService;
@@ -14,17 +15,17 @@ import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.entity.dos.EsGoodsRelatedInfo;
import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO;
import cn.lili.modules.search.service.EsGoodsSearchService;
import cn.lili.modules.search.service.HotWordsService;
import cn.lili.modules.statistics.aop.PageViewPoint;
import cn.lili.modules.statistics.aop.enums.PageViewEnum;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.elasticsearch.core.SearchPage;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -62,6 +63,9 @@ public class GoodsBuyerController {
@Autowired
private EsGoodsSearchService goodsSearchService;
@Autowired
private HotWordsService hotWordsService;
@ApiOperation(value = "通过id获取商品信息")
@ApiImplicitParam(name = "goodsId", value = "商品ID", required = true, paramType = "path", dataType = "Long")
@GetMapping(value = "/get/{goodsId}")
@@ -98,12 +102,17 @@ public class GoodsBuyerController {
return ResultUtil.data(goodsService.queryByParams(goodsSearchParams));
}
@ApiOperation(value = "获取商品sku列表")
@GetMapping("/sku")
public ResultMessage<List<GoodsSku>> getSkuByPage(GoodsSearchParams goodsSearchParams) {
return ResultUtil.data(goodsSkuService.getGoodsSkuByList(goodsSearchParams));
}
@ApiOperation(value = "从ES中获取商品信息")
@GetMapping("/es")
public ResultMessage<SearchPage<EsGoodsIndex>> getGoodsByPageFromEs(EsGoodsSearchDTO goodsSearchParams, PageVO pageVO) {
public ResultMessage<Page<EsGoodsIndex>> getGoodsByPageFromEs(EsGoodsSearchDTO goodsSearchParams, PageVO pageVO) {
pageVO.setNotConvert(true);
SearchPage<EsGoodsIndex> esGoodsIndices = goodsSearchService.searchGoods(goodsSearchParams, pageVO);
return ResultUtil.data(esGoodsIndices);
return ResultUtil.data(goodsSearchService.searchGoodsByPage(goodsSearchParams, pageVO));
}
@ApiOperation(value = "从ES中获取相关商品品牌名称分类名称及属性")
@@ -117,7 +126,7 @@ public class GoodsBuyerController {
@ApiOperation(value = "获取搜索热词")
@GetMapping("/hot-words")
public ResultMessage<List<String>> getGoodsHotWords(Integer count) {
List<String> hotWords = goodsSearchService.getHotWords(count);
List<String> hotWords = hotWordsService.getHotWords(count);
return ResultUtil.data(hotWords);
}

View File

@@ -1,13 +1,17 @@
package cn.lili.controller.member;
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.dto.FootPrintQueryParams;
import cn.lili.modules.member.service.FootprintService;
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -34,8 +38,9 @@ public class FootprintController {
@ApiOperation(value = "分页获取")
@GetMapping
public ResultMessage<List<EsGoodsIndex>> getByPage(PageVO page) {
return ResultUtil.data(footprintService.footPrintPage(page));
public ResultMessage<IPage<EsGoodsIndex>> getByPage(FootPrintQueryParams params) {
params.setMemberId(UserContext.getCurrentUser().getId());
return ResultUtil.data(footprintService.footPrintPage(params));
}
@ApiOperation(value = "根据id删除")
@@ -60,4 +65,10 @@ public class FootprintController {
return ResultUtil.data(footprintService.getFootprintNum());
}
@GetMapping("/history")
@ApiOperation(value = "获取会员的历史足迹")
public ResultMessage<IPage<EsGoodsIndex>> getMemberHistory(FootPrintQueryParams params) {
return ResultUtil.data(footprintService.footPrintPage(params));
}
}

View File

@@ -59,7 +59,7 @@ public class MemberAddressBuyerController {
public ResultMessage<MemberAddress> addShippingAddress(@Valid MemberAddress shippingAddress) {
//添加会员地址
shippingAddress.setMemberId(Objects.requireNonNull(UserContext.getCurrentUser()).getId());
if(shippingAddress.getIsDefault()==null){
if(Objects.isNull(shippingAddress.getIsDefault())){
shippingAddress.setIsDefault(false);
}
return ResultUtil.data(memberAddressService.saveMemberAddress(shippingAddress));
@@ -68,6 +68,8 @@ public class MemberAddressBuyerController {
@ApiOperation(value = "修改会员收件地址")
@PutMapping
public ResultMessage<MemberAddress> editShippingAddress(@Valid MemberAddress shippingAddress) {
OperationalJudgment.judgment(memberAddressService.getById(shippingAddress.getId()));
shippingAddress.setMemberId(Objects.requireNonNull(UserContext.getCurrentUser()).getId());
return ResultUtil.data(memberAddressService.updateMemberAddress(shippingAddress));
}

View File

@@ -1,96 +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.member.service.GoodsCollectionService;
import cn.lili.modules.member.service.StoreCollectionService;
import io.swagger.annotations.Api;
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.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
/**
* 买家端,会员收藏接口
*
* @author Chopper
* @since 2020/11/17 2:32 下午
*/
@RestController
@Api(tags = "买家端,会员收藏接口")
@RequestMapping("/buyer/member/collection")
public class MemberCollectionController {
/**
* 会员商品收藏
*/
@Autowired
private GoodsCollectionService goodsCollectionService;
/**
* 会员店铺
*/
@Autowired
private StoreCollectionService storeCollectionService;
/**
* 商品收藏关键字
*/
private String goods="GOODS";
@ApiOperation(value = "查询会员收藏列表")
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺")
@GetMapping("/{type}")
public ResultMessage<Object> goodsList(@PathVariable String type, PageVO page) {
if (goods.equals(type)) {
return ResultUtil.data(goodsCollectionService.goodsCollection(page));
}
return ResultUtil.data(storeCollectionService.storeCollection(page));
}
@ApiOperation(value = "添加会员收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
@ApiImplicitParam(name = "num", value = "", dataType = "Long", paramType = "path")
})
@PostMapping("/add/{type}/{id}")
public ResultMessage<Object> addGoodsCollection(@PathVariable String type,
@NotNull(message = "值不能为空") @PathVariable String id) {
if (goods.equals(type)) {
return ResultUtil.data(goodsCollectionService.addGoodsCollection(id));
}
return ResultUtil.data(storeCollectionService.addStoreCollection(id));
}
@ApiOperation(value = "删除会员收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
@ApiImplicitParam(name = "num", value = "", dataType = "Long", paramType = "path")
})
@DeleteMapping(value = "/delete/{type}/{id}")
public ResultMessage<Object> deleteGoodsCollection(@PathVariable String type,
@NotNull(message = "值不能为空") @PathVariable String id) {
if (goods.equals(type)) {
return ResultUtil.data(goodsCollectionService.deleteGoodsCollection(id));
}
return ResultUtil.data(storeCollectionService.deleteStoreCollection(id));
}
@ApiOperation(value = "查询会员是否收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
@ApiImplicitParam(name = "id", value = "", dataType = "String", paramType = "path")
})
@GetMapping(value = "/isCollection/{type}/{id}")
public ResultMessage<Boolean> isCollection(@PathVariable String type,
@NotNull(message = "值不能为空") @PathVariable String id) {
if (goods.equals(type)) {
return ResultUtil.data(this.goodsCollectionService.isCollection(id));
}
return ResultUtil.data(this.storeCollectionService.isCollection(id));
}
}

View File

@@ -0,0 +1,68 @@
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.service.GoodsCollectionService;
import io.swagger.annotations.Api;
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.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
/**
* 买家端,会员收藏接口
*
* @author Chopper
* @since 2020/11/17 2:32 下午
*/
@RestController
@Api(tags = "买家端,会员商品收藏接口")
@RequestMapping("/buyer/member/collection")
public class MemberCollectionGoodsController {
/**
* 会员商品收藏
*/
@Autowired
private GoodsCollectionService goodsCollectionService;
@ApiOperation(value = "查询会员收藏列表")
@GetMapping("/GOODS")
public ResultMessage<Object> goodsList(PageVO page) {
return ResultUtil.data(goodsCollectionService.goodsCollection(page));
}
@ApiOperation(value = "添加会员收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "num", value = "", dataType = "Long", paramType = "path")
})
@PostMapping("/add/GOODS/{id}")
public ResultMessage<Object> addGoodsCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
return ResultUtil.data(goodsCollectionService.addGoodsCollection(id));
}
@ApiOperation(value = "删除会员收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
@ApiImplicitParam(name = "num", value = "", dataType = "Long", paramType = "path")
})
@DeleteMapping(value = "/delete/GOODS/{id}")
public ResultMessage<Object> deleteGoodsCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
return ResultUtil.data(goodsCollectionService.deleteGoodsCollection(id));
}
@ApiOperation(value = "查询会员是否收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
@ApiImplicitParam(name = "id", value = "", dataType = "String", paramType = "path")
})
@GetMapping(value = "/isCollection/GOODS/{id}")
public ResultMessage<Boolean> isCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
return ResultUtil.data(this.goodsCollectionService.isCollection(id));
}
}

View File

@@ -0,0 +1,66 @@
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.service.StoreCollectionService;
import io.swagger.annotations.Api;
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.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
/**
* 买家端,会员收藏接口
*
* @author Chopper
* @since 2020/11/17 2:32 下午
*/
@RestController
@Api(tags = "买家端,会员店铺收藏接口")
@RequestMapping("/buyer/member/storeCollection")
public class MemberCollectionStoreController {
/**
* 会员店铺
*/
@Autowired
private StoreCollectionService storeCollectionService;
@ApiOperation(value = "查询会员收藏列表")
@GetMapping("/STORE")
public ResultMessage<Object> goodsList(PageVO page) {
return ResultUtil.data(storeCollectionService.storeCollection(page));
}
@ApiOperation(value = "添加会员收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "num", value = "", dataType = "Long", paramType = "path")
})
@PostMapping("/add/STORE/{id}")
public ResultMessage<Object> addGoodsCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
return ResultUtil.data(storeCollectionService.addStoreCollection(id));
}
@ApiOperation(value = "删除会员收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "num", value = "", dataType = "Long", paramType = "path")
})
@DeleteMapping(value = "/delete/STORE/{id}")
public ResultMessage<Object> deleteGoodsCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
return ResultUtil.data(storeCollectionService.deleteStoreCollection(id));
}
@ApiOperation(value = "查询会员是否收藏")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "", dataType = "String", paramType = "path")
})
@GetMapping(value = "/isCollection/STORE/{id}")
public ResultMessage<Boolean> isCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
return ResultUtil.data(this.storeCollectionService.isCollection(id));
}
}

View File

@@ -48,7 +48,7 @@ public class MemberEvaluationBuyerController {
@ApiOperation(value = "查看会员评价详情")
@ApiImplicitParam(name = "id", value = "评价ID", required = true, paramType = "path")
@GetMapping(value = "/get/{id}")
public ResultMessage<MemberEvaluationVO> save(@NotNull(message = "评价ID不能为空") @PathVariable("id") String id) {
public ResultMessage<MemberEvaluationVO> get(@NotNull(message = "评价ID不能为空") @PathVariable("id") String id) {
return ResultUtil.data(memberEvaluationService.queryById(id));
}

View File

@@ -1,5 +1,6 @@
package cn.lili.controller.member;
import cn.lili.cache.limit.annotation.LimitPoint;
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.ResultMessage;

View File

@@ -189,20 +189,38 @@ public class CartController {
}
}
@ApiOperation(value = "选择自提地址")
@ApiImplicitParams({
@ApiImplicitParam(name = "storeAddressId", value = "自提地址id ", required = true, paramType = "query"),
@ApiImplicitParam(name = "way", value = "购物车类型 ", paramType = "query")
})
@GetMapping("/storeAddress")
public ResultMessage<Object> shippingSelfPickAddress(@NotNull(message = "自提地址ID不能为空") String storeAddressId,
String way) {
try {
cartService.shippingSelfAddress(storeAddressId, way);
return ResultUtil.success();
} catch (ServiceException se) {
log.error(ResultCode.SHIPPING_NOT_APPLY.message(), se);
throw new ServiceException(ResultCode.SHIPPING_NOT_APPLY);
} catch (Exception e) {
log.error(ResultCode.CART_ERROR.message(), e);
throw new ServiceException(ResultCode.CART_ERROR);
}
}
@ApiOperation(value = "选择配送方式")
@ApiImplicitParams({
@ApiImplicitParam(name = "shippingMethod", value = "配送方式SELF_PICK_UP(自提)," +
"LOCAL_TOWN_DELIVERY(同城配送)," +
"LOGISTICS(物流) ", required = true, paramType = "query"),
@ApiImplicitParam(name = "selleId", value = "店铺id", paramType = "query"),
@ApiImplicitParam(name = "way", value = "购物车类型 ", paramType = "query")
})
@GetMapping("/shippingMethod")
@PutMapping("/shippingMethod")
public ResultMessage<Object> shippingMethod(@NotNull(message = "配送方式不能为空") String shippingMethod,
String selleId,
String way) {
try {
cartService.shippingMethod(selleId, shippingMethod, way);
cartService.shippingMethod( shippingMethod, way);
return ResultUtil.success();
} catch (ServiceException se) {
log.error(se.getMsg(), se);
@@ -213,6 +231,21 @@ public class CartController {
}
}
@ApiOperation(value = "获取用户可选择的物流方式")
@ApiImplicitParams({
@ApiImplicitParam(name = "way", value = "购物车类型 ", paramType = "query")
})
@GetMapping("/shippingMethodList")
public ResultMessage<Object> shippingMethodList(String way) {
try {
return ResultUtil.data(cartService.shippingMethodList(way));
}
catch (Exception e) {
e.printStackTrace();
return ResultUtil.error(ResultCode.ERROR);
}
}
@ApiOperation(value = "选择发票")
@ApiImplicitParams({
@ApiImplicitParam(name = "way", value = "购物车购买CART/立即购买BUY_NOW/拼团购买PINTUAN / 积分购买POINT ", required = true, paramType = "query"),

View File

@@ -9,11 +9,14 @@ import cn.lili.common.security.OperationalJudgment;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderPackage;
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.vo.OrderDetailVO;
import cn.lili.modules.order.order.entity.vo.OrderSimpleVO;
import cn.lili.modules.order.order.service.OrderPackageService;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.system.entity.vo.Traces;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -44,6 +47,9 @@ public class OrderBuyerController {
@Autowired
private OrderService orderService;
@Autowired
private OrderPackageService orderPackageService;
@ApiOperation(value = "查询会员订单列表")
@GetMapping
public ResultMessage<IPage<OrderSimpleVO>> queryMineOrder(OrderSearchParams orderSearchParams) {
@@ -116,6 +122,16 @@ public class OrderBuyerController {
return ResultUtil.data(orderService.getTraces(orderSn));
}
@ApiOperation(value = "查询地图版物流踪迹")
@ApiImplicitParams({
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
})
@PostMapping(value = "/getMapTraces/{orderSn}")
public ResultMessage<Object> getMapTraces(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
OperationalJudgment.judgment(orderService.getBySn(orderSn));
return ResultUtil.data(orderService.getMapTraces(orderSn));
}
@PreventDuplicateSubmissions
@ApiOperation(value = "开票")
@@ -128,5 +144,21 @@ public class OrderBuyerController {
return ResultUtil.data(orderService.invoice(orderSn));
}
@ApiOperation(value = "查询物流踪迹")
@ApiImplicitParams({
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
})
@GetMapping(value = "/getTracesList/{orderSn}")
public ResultMessage<Object> getTracesList(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
return ResultUtil.data(orderPackageService.getOrderPackageVOList(orderSn));
}
@ApiOperation(value = "查看包裹列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
})
@GetMapping(value = "/getPackage/{orderSn}")
public ResultMessage<Object> getPackage(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
return ResultUtil.data(orderPackageService.getOrderPackageVOList(orderSn));
}
}

View File

@@ -82,7 +82,7 @@ public class OrderComplaintBuyerController {
@PostMapping("/communication")
public ResultMessage<OrderComplaintCommunicationVO> addCommunication(@RequestParam String complainId, @RequestParam String content) {
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
OrderComplaintCommunicationVO communicationVO = new OrderComplaintCommunicationVO(complainId, content, CommunicationOwnerEnum.BUYER.name(), currentUser.getId(), currentUser.getNickName());
OrderComplaintCommunicationVO communicationVO = new OrderComplaintCommunicationVO(complainId, content, CommunicationOwnerEnum.BUYER.name(), currentUser.getNickName(), currentUser.getId());
orderComplaintCommunicationService.addCommunication(communicationVO);
return ResultUtil.data(communicationVO);
}

View File

@@ -10,6 +10,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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -26,6 +27,7 @@ import javax.validation.constraints.Min;
@RestController
@Api(tags = "买家端,预存款充值记录接口")
@RequestMapping("/buyer/trade/recharge")
@Validated
public class RechargeTradeBuyerController {
@Autowired
@@ -37,7 +39,10 @@ public class RechargeTradeBuyerController {
@ApiImplicitParams({
@ApiImplicitParam(name = "price", value = "充值金额", required = true, dataType = "double", paramType = "query")
})
public ResultMessage<Recharge> create(@Max(value = 10000, message = "充值金额单次最多允许充值10000元") @Min(value = 1, message = "充值金额单次最少充值金额为1元") Double price) {
public ResultMessage<Recharge> create(
@Max(value = 10000, message = "充值金额单次最多允许充值10000元")
@Min(value = 1, message = "充值金额单次最少充值金额为1元")
Double price) {
Recharge recharge = this.rechargeService.recharge(price);
return ResultUtil.data(recharge);
}

View File

@@ -2,17 +2,17 @@ package cn.lili.controller.other;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.page.entity.dos.PageData;
import cn.lili.modules.page.entity.dto.PageDataDTO;
import cn.lili.modules.page.entity.enums.PageEnum;
import cn.lili.modules.page.entity.vos.PageDataVO;
import cn.lili.modules.page.service.PageDataService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* 买家端,页面接口
@@ -36,12 +36,63 @@ public class PageBuyerController {
public ResultMessage<PageDataVO> getIndex(@RequestParam String clientType) {
PageDataDTO pageDataDTO = new PageDataDTO(PageEnum.INDEX.name());
pageDataDTO.setPageClientType(clientType);
return ResultUtil.data(pageService.getPageData(pageDataDTO));
PageDataVO pageDataVO=pageService.getPageData(pageDataDTO);
return ResultUtil.data(pageDataVO);
}
@ApiOperation(value = "获取页面数据")
@GetMapping
public ResultMessage<PageDataVO> get(PageDataDTO pageDataDTO) {
return ResultUtil.data(pageService.getPageData(pageDataDTO));
PageDataVO pageDataVO=pageService.getPageData(pageDataDTO);
return ResultUtil.data(pageDataVO);
}
@ApiOperation(value = "获取店铺首页")
@GetMapping("/getStore")
public ResultMessage<PageDataVO> getShopPage(@RequestParam String clientType,String storeId) {
PageDataDTO pageDataDTO = new PageDataDTO(PageEnum.STORE.name());
pageDataDTO.setPageClientType(clientType);
pageDataDTO.setNum(storeId);
PageDataVO pageDataVO=pageService.getPageData(pageDataDTO);
return ResultUtil.data(pageDataVO);
}
@ApiOperation(value = "获取页面数据")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "String", paramType = "path")
@GetMapping("/get/{id}")
public ResultMessage<PageData> getPage(@PathVariable("id") String id) {
return ResultUtil.data(pageService.getSpecial(id));
}
@ApiOperation(value = "获取专题页面数据(根据消息内容得知)")
@GetMapping("/getSpecial")
public ResultMessage<PageData> getSpecial(@RequestParam String body) {
String name = "";
if (body.indexOf("") >= 0 && body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
} else if (body.indexOf("") >= 0 && body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
} else if (body.indexOf("") >= 0 && body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
} else if (body.indexOf("") >= 0 && body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
} else if (body.indexOf("") >= 0 && body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
} else if (body.indexOf("") >= 0 && body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
} else if (body.indexOf("") >= 0 && body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
} else if (body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
} else if (body.indexOf("") >= 0) {
name = body.substring(body.indexOf("") + 1, body.lastIndexOf(""));
}
PageData pageData = pageService.getOne(
new LambdaQueryWrapper<PageData>()
.eq(PageData::getPageType, PageEnum.SPECIAL.name())
.eq(PageData::getName, name));
return ResultUtil.data(pageData);
}
}

View File

@@ -3,7 +3,7 @@ package cn.lili.controller.other.broadcast;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.goods.entity.dos.Studio;
import cn.lili.modules.goods.entity.vos.StudioVO;
import cn.lili.modules.goods.service.StudioService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
@@ -35,7 +35,7 @@ public class StudioController {
@ApiImplicitParam(name = "status", value = "直播间状态", paramType = "query", dataType = "String")
})
@GetMapping
public ResultMessage<IPage<Studio>> page(PageVO pageVO, Integer recommend, String status) {
public ResultMessage<IPage<StudioVO>> page(PageVO pageVO, Integer recommend, String status) {
return ResultUtil.data(studioService.studioList(pageVO, recommend, status));
}

View File

@@ -3,10 +3,14 @@ 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.AuthUser;
import cn.lili.common.security.context.UserContext;
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.entity.dto.MemberEditDTO;
import cn.lili.modules.member.entity.enums.QRCodeLoginSessionStatusEnum;
import cn.lili.modules.member.entity.vo.QRLoginResultVo;
import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.sms.SmsUtil;
import cn.lili.modules.verification.entity.enums.VerificationEnums;
@@ -15,10 +19,17 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult;
import javax.validation.constraints.NotNull;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 买家端,会员接口
@@ -26,6 +37,7 @@ import javax.validation.constraints.NotNull;
* @author Chopper
* @since 2020/11/16 10:07 下午
*/
@Slf4j
@RestController
@Api(tags = "买家端,会员接口")
@RequestMapping("/buyer/passport/member")
@@ -39,6 +51,84 @@ public class MemberBuyerController {
private VerificationService verificationService;
@ApiOperation(value = "web-获取登录二维码")
@PostMapping(value = "/pc_session", produces = "application/json;charset=UTF-8")
public ResultMessage<Object> createPcSession() {
return ResultUtil.data(memberService.createPcSession());
}
/**
* 长轮询参考nacos
*
* @param token
* @param beforeSessionStatus 上次记录的session状态
* @return
*/
@ApiOperation(value = "web-二维码登录")
@PostMapping(value = "/session_login/{token}", produces = "application/json;charset=UTF-8")
public Object loginWithSession(@PathVariable("token") String token, Integer beforeSessionStatus) {
log.info("receive login with session key {}", token);
ResponseEntity<ResultMessage<Object>> timeoutResponseEntity =
new ResponseEntity<>(ResultUtil.error(ResultCode.ERROR), HttpStatus.OK);
int timeoutSecond = 20;
DeferredResult<ResponseEntity<Object>> deferredResult = new DeferredResult<>(timeoutSecond * 1000L, timeoutResponseEntity);
// 用于记录重试次数
AtomicInteger retryCount = new AtomicInteger(0);
CompletableFuture.runAsync(() -> {
try {
int i = 0;
while (i < timeoutSecond) {
QRLoginResultVo queryResult = memberService.loginWithSession(token);
int status = queryResult.getStatus();
if (status == beforeSessionStatus
&& (QRCodeLoginSessionStatusEnum.WAIT_SCANNING.getCode() == status
|| QRCodeLoginSessionStatusEnum.SCANNING.getCode() == status)) {
//睡眠一秒种,继续等待结果
//TimeUnit.SECONDS.sleep(1);
// 应用指数退避策略
int baseSleepTime = 1000; // 基础退避时间(毫秒)
int maxSleepTime = 10000; // 最大退避时间(毫秒)
int sleepTime = Math.min(maxSleepTime, baseSleepTime * (1 + retryCount.getAndIncrement()));
int randomFactor = (int) (Math.random() * (sleepTime / 2)); // 随机化因子
TimeUnit.MILLISECONDS.sleep(sleepTime + randomFactor);
} else {
deferredResult.setResult(new ResponseEntity<>(ResultUtil.data(queryResult), HttpStatus.OK));
break;
}
i++;
}
} catch (Exception e) {
log.error("获取登录状态异常,", e);
deferredResult.setResult(new ResponseEntity<>(ResultUtil.error(ResultCode.ERROR), HttpStatus.OK));
Thread.currentThread().interrupt();
}
});
return deferredResult;
}
@ApiOperation(value = "app扫码")
@PostMapping(value = "/app_scanner", produces = "application/json;charset=UTF-8")
public ResultMessage<Object> appScanner(String token) {
return ResultUtil.data(memberService.appScanner(token));
}
@ApiOperation(value = "app扫码-登录确认:同意/拒绝")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "sessionToken", required = true, paramType = "query"),
@ApiImplicitParam(name = "code", value = "操作0拒绝登录1同意登录", required = true, paramType = "query")
})
@PostMapping(value = "/app_confirm", produces = "application/json;charset=UTF-8")
public ResultMessage<Object> appSConfirm(String token, Integer code) {
boolean flag = memberService.appSConfirm(token, code);
return flag ? ResultUtil.success() : ResultUtil.error(ResultCode.ERROR);
}
@ApiOperation(value = "登录接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
@@ -75,6 +165,32 @@ public class MemberBuyerController {
}
}
@ApiOperation(value = "绑定手机号")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
@ApiImplicitParam(name = "mobile", value = "手机号", required = true, paramType = "query"),
@ApiImplicitParam(name = "code", value = "验证码", required = true, paramType = "query"),
})
@PostMapping("/bindMobile")
public ResultMessage<Object> bindMobile(@NotNull(message = "用户名不能为空") @RequestParam String username,
@NotNull(message = "手机号为空") @RequestParam String mobile,
@NotNull(message = "验证码为空") @RequestParam String code,
@RequestHeader String uuid) {
if (smsUtil.verifyCode(mobile, VerificationEnums.BIND_MOBILE, uuid, code)) {
Member member = memberService.findByUsername(username);
Member memberByMobile = memberService.findByMobile(mobile);
if (member == null) {
throw new ServiceException(ResultCode.USER_NOT_EXIST);
}
if(memberByMobile != null){
throw new ServiceException(ResultCode.USER_MOBILE_REPEATABLE_ERROR);
}
return ResultUtil.data(memberService.changeMobile(member.getId(), mobile));
} else {
throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR);
}
}
@ApiOperation(value = "注册用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
@@ -125,7 +241,6 @@ public class MemberBuyerController {
@ApiOperation(value = "修改密码")
@ApiImplicitParams({
@ApiImplicitParam(name = "mobile", value = "手机号", required = true, paramType = "query"),
@ApiImplicitParam(name = "password", value = "是否保存登录", required = true, paramType = "query")
})
@PostMapping("/resetPassword")
@@ -152,6 +267,31 @@ public class MemberBuyerController {
return ResultUtil.data(memberService.modifyPass(password, newPassword));
}
@ApiOperation(value = "初始设置密码")
@ApiImplicitParams({
@ApiImplicitParam(name = "newPassword", value = "新密码", required = true, paramType = "query")
})
@PutMapping("/canInitPassword")
public ResultMessage<Object> canInitPassword() {
return ResultUtil.data(memberService.canInitPass());
}
@ApiOperation(value = "初始设置密码")
@ApiImplicitParams({
@ApiImplicitParam(name = "newPassword", value = "新密码", required = true, paramType = "query")
})
@PutMapping("/initPassword")
public ResultMessage<Object> initPassword(@NotNull(message = "密码不能为空") @RequestParam String password) {
memberService.initPass(password);
return ResultUtil.success();
}
@ApiOperation(value = "注销账号")
@PutMapping("/cancellation")
public ResultMessage<Member> cancellation() {
memberService.cancellation();
return ResultUtil.success();
}
@ApiOperation(value = "刷新token")
@GetMapping("/refresh/{refreshToken}")
@@ -159,4 +299,18 @@ public class MemberBuyerController {
return ResultUtil.data(this.memberService.refreshToken(refreshToken));
}
@GetMapping("/getImUser")
@ApiOperation(value = "获取用户信息")
public ResultMessage<Member> getImUser() {
AuthUser authUser = UserContext.getCurrentUser();
return ResultUtil.data(memberService.getById(authUser.getId()));
}
@GetMapping("/getImUserDetail/{memberId}")
@ApiImplicitParam(name = "memberId", value = "店铺Id", required = true, dataType = "String", paramType = "path")
@ApiOperation(value = "获取用户信息")
public ResultMessage<Member> getImUserDetail(@PathVariable String memberId) {
return ResultUtil.data(memberService.getById(memberId));
}
}

View File

@@ -47,7 +47,7 @@ public class ConnectBuyerWebController {
@GetMapping("/login/web/{type}")
@ApiOperation(value = "WEB信任登录授权")
@ApiOperation(value = "WEB信任登录授权,包含PC、WAP")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "登录方式:QQ,微信,微信_PC",
allowableValues = "QQ,WECHAT,WECHAT_PC", paramType = "path")
@@ -75,25 +75,13 @@ public class ConnectBuyerWebController {
return connectUtil.getResult(state);
}
@GetMapping("/register/auto")
@ApiOperation(value = "WEB信任登录授权")
public ResultMessage<Token> webAuthorize() {
Token token = memberService.autoRegister();
return ResultUtil.data(token);
}
@ApiOperation(value = "unionID登录")
@ApiImplicitParams({
@ApiImplicitParam(name = "openId", value = "openid", required = true, paramType = "query"),
@ApiImplicitParam(name = "type", value = "联合类型", required = true,
allowableValues = "WECHAT,QQ,ALIPAY,WEIBO,APPLE", paramType = "query"),
@ApiImplicitParam(name = "uniAccessToken", value = "联合登陆返回的accessToken", required = true, paramType = "query")
})
@GetMapping("/app/login")
public ResultMessage<Token> unionLogin(ConnectAuthUser authUser, @RequestHeader("uuid") String uuid) {
@ApiOperation(value = "APP-unionID登录")
@PostMapping("/app/login")
public ResultMessage<Token> unionLogin(@RequestBody ConnectAuthUser authUser, @RequestHeader("uuid") String uuid) {
try {
return ResultUtil.data(connectService.appLoginCallback(authUser, uuid));
return ResultUtil.data(connectService.unionLoginCallback(authUser, uuid));
} catch (Exception e) {
e.printStackTrace();
log.error("unionID登录错误", e);
}
return null;

View File

@@ -7,11 +7,14 @@ 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.CouponActivityTrigger;
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.CouponActivityTypeEnum;
import cn.lili.modules.promotion.entity.enums.CouponGetEnum;
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
import cn.lili.modules.promotion.entity.vos.CouponVO;
import cn.lili.modules.promotion.service.CouponActivityService;
import cn.lili.modules.promotion.service.CouponService;
import cn.lili.modules.promotion.service.MemberCouponService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -26,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Objects;
/**
@@ -45,12 +49,39 @@ public class CouponBuyerController {
@Autowired
private CouponService couponService;
/**
* 优惠券活动
*/
@Autowired
private CouponActivityService couponActivityService;
/**
* 会员优惠券
*/
@Autowired
private MemberCouponService memberCouponService;
@GetMapping("/activity")
@ApiOperation(value = "自动领取优惠券")
public ResultMessage<List<MemberCoupon>> activity() {
if (UserContext.getCurrentUser() == null) {
return ResultUtil.success();
}
List<MemberCoupon> memberCouponList = couponActivityService.trigger(
CouponActivityTrigger.builder()
.couponActivityTypeEnum(CouponActivityTypeEnum.AUTO_COUPON)
.nickName(UserContext.getCurrentUser().getNickName())
.userId(UserContext.getCurrentUser().getId())
.build());
memberCouponList.addAll(couponActivityService.trigger(
CouponActivityTrigger.builder()
.couponActivityTypeEnum(CouponActivityTypeEnum.SPECIFY)
.nickName(UserContext.getCurrentUser().getNickName())
.userId(UserContext.getCurrentUser().getId())
.build()));
return ResultUtil.data(memberCouponList);
}
@GetMapping
@ApiOperation(value = "获取可领取优惠券列表")
public ResultMessage<IPage<CouponVO>> getCouponList(CouponSearchParams queryParam, PageVO page) {

View File

@@ -0,0 +1,53 @@
package cn.lili.controller.store;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.OperationalJudgment;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.store.entity.dos.StoreAddress;
import cn.lili.modules.store.service.StoreAddressService;
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;
import java.util.Objects;
/**
* 买家端,商家地址(自提点)接口
*
* @author chc
* @since 2022/6/2114:46
*/
@RestController
@Api(tags = "买家端,商家地址(自提点)接口")
@RequestMapping("/buyer/store/address")
public class StoreAddressBuyerController {
/**
* 店铺自提点
*/
@Autowired
private StoreAddressService storeAddressService;
@ApiOperation(value = "获取商家自提点分页")
@ApiImplicitParam(name = "storeId", value = "店铺Id", required = true, dataType = "String", paramType = "path")
@GetMapping("/page/{storeId}")
public ResultMessage<IPage<StoreAddress>> get(PageVO pageVo,@PathVariable String storeId) {
return ResultUtil.data(storeAddressService.getStoreAddress(storeId, pageVo));
}
@ApiOperation(value = "获取商家自提点信息")
@ApiImplicitParam(name = "id", value = "自提点ID", required = true, paramType = "path")
@GetMapping("/{id}")
public ResultMessage<StoreAddress> get(@PathVariable String id) {
StoreAddress address = OperationalJudgment.judgment(storeAddressService.getById(id));
return ResultUtil.data(address);
}
}

View File

@@ -1,11 +1,13 @@
package cn.lili.controller.store;
import cn.lili.common.enums.ResultUtil;
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.goods.entity.vos.StoreGoodsLabelVO;
import cn.lili.modules.goods.service.StoreGoodsLabelService;
import cn.lili.modules.store.entity.dos.Store;
import cn.lili.modules.store.entity.dto.StoreBankDTO;
import cn.lili.modules.store.entity.dto.StoreCompanyDTO;
import cn.lili.modules.store.entity.dto.StoreOtherInfoDTO;
@@ -57,6 +59,20 @@ public class StoreBuyerController {
return ResultUtil.data(storeService.findByConditionPage(entity, page));
}
@GetMapping("/store")
@ApiOperation(value = "im-获取店铺信息")
public ResultMessage<Store> getStoreUser() {
AuthUser authUser = UserContext.getCurrentUser();
return ResultUtil.data(storeService.getById(authUser.getStoreId()));
}
@GetMapping("/store/{storeId}")
@ApiImplicitParam(name = "storeId", value = "店铺Id", required = true, dataType = "String", paramType = "path")
@ApiOperation(value = "im-店铺ID获取店铺信息")
public ResultMessage<Store> getStoreUserDetail(@PathVariable String storeId) {
return ResultUtil.data(storeService.getById(storeId));
}
@ApiOperation(value = "通过id获取店铺信息")
@ApiImplicitParam(name = "id", value = "店铺ID", required = true, paramType = "path")
@GetMapping(value = "/get/detail/{id}")

View File

@@ -9,22 +9,28 @@ 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.service.MemberService;
import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.dto.WithdrawalSetting;
import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.entity.vo.WithdrawalSettingVO;
import cn.lili.modules.system.service.SettingService;
import cn.lili.modules.verification.entity.enums.VerificationEnums;
import cn.lili.modules.verification.service.VerificationService;
import cn.lili.modules.wallet.entity.dos.MemberWallet;
import cn.lili.modules.wallet.entity.vo.MemberWalletVO;
import cn.lili.modules.wallet.service.MemberWalletService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.gson.Gson;
import io.swagger.annotations.Api;
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.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;
/**
@@ -36,6 +42,7 @@ import javax.validation.constraints.Pattern;
@RestController
@Api(tags = "买家端,会员余额接口")
@RequestMapping("/buyer/wallet/wallet")
@Validated
public class MemberWalletBuyerController {
/**
@@ -54,6 +61,9 @@ public class MemberWalletBuyerController {
@Autowired
private VerificationService verificationService;
@Autowired
private SettingService settingService;
@GetMapping
@ApiOperation(value = "查询会员预存款余额")
public ResultMessage<MemberWalletVO> get() {
@@ -64,6 +74,31 @@ public class MemberWalletBuyerController {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
@GetMapping(value = "/withdrawalSettingVO")
@ApiOperation(value = "获取提现设置VO")
public ResultMessage<Object> minPrice() {
Setting setting = settingService.get(SettingEnum.WITHDRAWAL_SETTING.name());
WithdrawalSetting withdrawalSetting = new Gson().fromJson(setting.getSettingValue(), WithdrawalSetting.class);
WithdrawalSettingVO withdrawalSettingVO = new WithdrawalSettingVO();
withdrawalSettingVO.setMinPrice(withdrawalSetting.getMinPrice());
withdrawalSettingVO.setFee(withdrawalSetting.getFee());
withdrawalSettingVO.setType(withdrawalSetting.getType());
return ResultUtil.data(withdrawalSettingVO);
}
@PreventDuplicateSubmissions
@PostMapping(value = "/withdrawal")
@ApiOperation(value = "会员中心余额提现")
@ApiImplicitParams({
@ApiImplicitParam(name = "price", value = "提现金额", required = true, dataType = "double", paramType = "query"),
@ApiImplicitParam(name = "realName", value = "真实姓名", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "connectNumber", value = "第三方登录账号", required = true, dataType = "String", paramType = "query")
})
public ResultMessage<Boolean> withdrawal(@Max(value = 9999, message = "充值金额单次最多允许提现9999元") Double price, @RequestParam String realName, @RequestParam String connectNumber) {
return ResultUtil.data(memberWalletService.applyWithdrawal(price, realName, connectNumber));
}
@PostMapping(value = "/set-password")
@ApiOperation(value = "设置支付密码")
@ApiImplicitParams({
@@ -120,15 +155,4 @@ public class MemberWalletBuyerController {
return memberWalletService.checkPassword();
}
@PreventDuplicateSubmissions
@PostMapping(value = "/withdrawal")
@ApiOperation(value = "会员中心余额提现")
@ApiImplicitParams({
@ApiImplicitParam(name = "price", value = "提现金额", required = true, dataType = "double", paramType = "query")
})
public ResultMessage<Boolean> withdrawal(@Max(value = 9999, message = "充值金额单次最多允许提现9999元") @Min(value = 1, message = "充值金额单次最少提现金额为1元") Double price) {
return ResultUtil.data(memberWalletService.applyWithdrawal(price));
}
}

View File

@@ -0,0 +1,30 @@
package cn.lili.init;
import cn.lili.modules.search.service.EsGoodsIndexService;
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;
/**
* @author paulG
* @since 2022/6/9
**/
@Component
@Slf4j
public class EsGoodsIndexInitRunner implements ApplicationRunner {
@Autowired
private EsGoodsIndexService esGoodsIndexService;
@Override
public void run(ApplicationArguments args) {
try {
esGoodsIndexService.initIndex();
} catch (Exception e) {
log.error("检测ES商品索引失败", e);
}
}
}

View File

@@ -99,7 +99,7 @@ public class BuyerAuthenticationFilter extends BasicAuthenticationFilter {
AuthUser authUser = new Gson().fromJson(json, AuthUser.class);
//校验redis中是否有权限
if (cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER) + jwt)) {
if (cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER,authUser.getId()) + jwt)) {
//构造返回信息
List<GrantedAuthority> auths = new ArrayList<>();
auths.add(new SimpleGrantedAuthority("ROLE_" + authUser.getRole().name()));

View File

@@ -213,18 +213,6 @@ lili:
lbs:
key: 4BYBZ-7MT6S-PUAOA-6BNWL-FJUD7-UUFXT
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
#域名
domain:
pc: https://pc-b2b2c.pickmall.cn
wap: https://m-b2b2c.pickmall.cn
store: https://store-b2b2c.pickmall.cn
admin: https://admin-b2b2c.pickmall.cn
#api地址
api:
buyer: https://buyer-api.pickmall.cn
common: https://common-api.pickmall.cn
manager: https://admin-api.pickmall.cn
store: https://store-api.pickmall.cn
# jwt 细节设定
jwt-setting:
@@ -265,6 +253,8 @@ lili:
order-group: lili_order_group
member-topic: lili_member_topic
member-group: lili_member_group
store-topic: lili_store_topic
store-group: lili_store_group
other-topic: lili_other_topic
other-group: lili_other_group
notice-topic: lili_notice_topic

View File

@@ -20,6 +20,23 @@
</encoder>
</appender>
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE_PATH}/rocketmq.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>30MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
</encoder>
</appender>
<logger name="RocketmqClient" additivity="false">
<level value="info" />
<appender-ref ref="RocketmqClientAppender"/>
</logger>
<!--输出到elk的LOGSTASH-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->

View File

@@ -1,7 +1,7 @@
package cn.lili.buyer.test.cart;
import cn.lili.modules.file.plugin.FileManagerPlugin;
import cn.lili.modules.file.plugin.FilePlugin;
import cn.lili.modules.goods.entity.dos.Brand;
import cn.lili.modules.goods.service.BrandService;
import com.xkcoding.http.util.StringUtil;
@@ -27,7 +27,7 @@ class FileTest {
@Autowired
private FileManagerPlugin fileManagerPlugin;
private FilePlugin fileManagerPlugin;
@Autowired
private BrandService brandService;

View File

@@ -15,6 +15,7 @@ import org.springframework.cache.annotation.EnableCaching;
public class CommonApiApplication {
public static void main(String[] args) {
System.setProperty("rocketmq.client.logUseSlf4j","true");
SpringApplication.run(CommonApiApplication.class, args);
}

View File

@@ -1,15 +1,15 @@
package cn.lili.controller.common;
import cn.lili.cache.Cache;
import cn.lili.common.context.ThreadContextHolder;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.exception.ServiceException;
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.common.utils.ResponseUtil;
import cn.lili.common.vo.ResultMessage;
import cn.lili.common.vo.SearchVO;
import cn.lili.modules.file.entity.File;
import cn.lili.modules.file.entity.dto.FileOwnerDTO;
import cn.lili.modules.file.service.FileService;
@@ -43,10 +43,14 @@ public class FileController {
@ApiOperation(value = "获取自己的图片资源")
@GetMapping
@ApiImplicitParam(name = "title", value = "名称模糊匹配")
public ResultMessage<IPage<File>> getFileList(@RequestHeader String accessToken, File file, SearchVO searchVO, PageVO pageVo) {
public ResultMessage<IPage<File>> getFileList(@RequestHeader String accessToken, FileOwnerDTO fileOwnerDTO) {
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
FileOwnerDTO fileOwnerDTO = new FileOwnerDTO();
if (authUser == null) {
ResponseUtil.output(ThreadContextHolder.getHttpResponse(), 403, ResponseUtil.resultMap(false,
403, "登录已失效,请重新登录"));
return null;
}
//只有买家才写入自己id
if (authUser.getRole().equals(UserEnums.MEMBER)) {
fileOwnerDTO.setOwnerId(authUser.getId());
@@ -55,7 +59,7 @@ public class FileController {
fileOwnerDTO.setOwnerId(authUser.getStoreId());
}
fileOwnerDTO.setUserEnums(authUser.getRole().name());
return ResultUtil.data(fileService.customerPageOwner(fileOwnerDTO, file, searchVO, pageVo));
return ResultUtil.data(fileService.customerPageOwner(fileOwnerDTO));
}
@ApiOperation(value = "文件重命名")

View File

@@ -0,0 +1,70 @@
package cn.lili.controller.common;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.file.entity.FileDirectory;
import cn.lili.modules.file.entity.dto.FileDirectoryDTO;
import cn.lili.modules.file.service.FileDirectoryService;
import cn.lili.modules.file.service.FileService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* 文件目录管理接口
*
* @author Chopper
* @since 2020/11/26 15:41
*/
@RestController
@Api(tags = "文件目录管理接口")
@RequestMapping("/common/resource/fileDirectory")
@RequiredArgsConstructor
public class FileDirectoryController {
private final FileDirectoryService fileDirectoryService;
private final FileService fileService;
@ApiOperation(value = "获取文件目录列表")
@GetMapping
public ResultMessage<List<FileDirectoryDTO>> getSceneFileList() {
return ResultUtil.data(fileDirectoryService.getFileDirectoryList(UserContext.getCurrentUser().getId()));
}
@ApiOperation(value = "添加文件目录")
@PostMapping
public ResultMessage<FileDirectory> addSceneFileList(@RequestBody @Valid FileDirectory fileDirectory) {
fileDirectory.setDirectoryType(UserContext.getCurrentUser().getRole().name());
fileDirectory.setOwnerId(UserContext.getCurrentUser().getId());
fileDirectoryService.save(fileDirectory);
return ResultUtil.data(fileDirectory);
}
@ApiOperation(value = "修改文件目录")
@PutMapping
public ResultMessage<FileDirectory> editSceneFileList(@RequestBody @Valid FileDirectory fileDirectory) {
fileDirectory.setDirectoryType(UserContext.getCurrentUser().getRole().name());
fileDirectory.setOwnerId(UserContext.getCurrentUser().getId());
fileDirectoryService.updateById(fileDirectory);
return ResultUtil.data(fileDirectory);
}
@ApiOperation(value = "删除文件目录")
@DeleteMapping("/{id}")
public ResultMessage<Object> deleteSceneFileList(@PathVariable String id) {
//检测文件夹下是否包含图片
if(fileService.countByDirectory(id)){
return ResultUtil.error(ResultCode.FILE_DIRECTORY_NOT_EMPTY);
}
//删除目录
fileDirectoryService.removeById(id);
return ResultUtil.success();
}
}

View File

@@ -39,7 +39,7 @@ public class IMController {
try {
Setting imSettingVal = settingService.get(SettingEnum.IM_SETTING.name());
ImSetting imSetting = JSONUtil.toBean(imSettingVal.getSettingValue(), ImSetting.class);
imUrl = imSetting.getHttpUrl() + "?tenant_id=" + imSetting.getTenantId()+"&merchant_euid=";
imUrl = imSetting.getHttpUrl();
} catch (Exception e) {
throw new ServiceException(ResultCode.PLATFORM_NOT_SUPPORTED_IM);
}

View File

@@ -2,9 +2,9 @@ package cn.lili.controller.common;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.system.service.RegionService;
import cn.lili.modules.system.entity.dos.Region;
import cn.lili.modules.system.entity.vo.RegionVO;
import cn.lili.modules.system.service.RegionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -38,6 +38,11 @@ public class RegionController {
return ResultUtil.data(regionService.getRegion(cityCode,townName));
}
@GetMapping(value = "/name")
@ApiOperation(value = "根据名字获取地区地址id")
public ResultMessage<String> getItemByLastName(String lastName) {
return ResultUtil.data(regionService.getItemByLastName(lastName));
}
@GetMapping(value = "/item/{id}")
@ApiImplicitParam(name = "id", value = "地区ID", required = true, dataType = "String", paramType = "path")

View File

@@ -6,31 +6,30 @@ import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* 文件管理管理接口
* 站点基础配置获取
*
* @author Chopper
* @since 2020/11/26 15:41
* @author liushuai(liushuai711 @ gmail.com)
* @version v4.0
* @Description:
* @since 2022/9/22 17:49
*/
@Slf4j
@RestController
@Api(tags = "文件管理接口")
@RequestMapping("/common/common/logo")
public class LogoController {
@RequestMapping("/common/common/site")
@Api(tags = "站点基础接口")
public class SiteController {
@Autowired
private SettingService settingService;
@ApiOperation(value = "获取logo")
@ApiOperation(value = "获取站点基础信息")
@GetMapping
public ResultMessage<Object> getFileList() {
public ResultMessage<Object> baseSetting() {
return ResultUtil.data(settingService.get(SettingEnum.BASE_SETTING.name()));
}
}

View File

@@ -1,43 +1,43 @@
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.entity.enums.VerificationEnums;
import cn.lili.modules.verification.service.VerificationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 滑块验证码接口
*
* @author Chopper
* @since 2020/11/26 15:41
*/
@Slf4j
@RestController
@RequestMapping("/common/common/slider")
@Api(tags = "滑块验证码接口")
public class SliderImageController {
@Autowired
private VerificationService verificationService;
@LimitPoint(name = "slider_image", key = "verification")
@GetMapping("/{verificationEnums}")
@ApiOperation(value = "获取校验接口,一分钟同一个ip请求10次")
public ResultMessage getSliderImage(@RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
return ResultUtil.data(verificationService.createVerification(verificationEnums, uuid));
}
@LimitPoint(name = "slider_image", key = "verification_pre_check", limit = 600)
@PostMapping("/{verificationEnums}")
@ApiOperation(value = "验证码预校验")
public ResultMessage verificationImage(Integer xPos, @RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
return ResultUtil.data(verificationService.preCheck(xPos, uuid, verificationEnums));
}
}
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.entity.enums.VerificationEnums;
import cn.lili.modules.verification.service.VerificationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 滑块验证码接口
*
* @author Chopper
* @since 2020/11/26 15:41
*/
@Slf4j
@RestController
@RequestMapping("/common/common/slider")
@Api(tags = "滑块验证码接口")
public class SliderImageController {
@Autowired
private VerificationService verificationService;
@LimitPoint(name = "slider_image", key = "verification")
@GetMapping("/{verificationEnums}")
@ApiOperation(value = "获取校验接口,一分钟同一个ip请求10次")
public ResultMessage getSliderImage(@RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
return ResultUtil.data(verificationService.createVerification(verificationEnums, uuid));
}
@LimitPoint(name = "slider_image", key = "verification_pre_check", limit = 600)
@PostMapping("/{verificationEnums}")
@ApiOperation(value = "验证码预校验")
public ResultMessage verificationImage(Integer xPos, @RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
return ResultUtil.data(verificationService.preCheck(xPos, uuid, verificationEnums));
}
}

View File

@@ -1,48 +1,48 @@
package cn.lili.controller.common;
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.sms.SmsUtil;
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;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 短信验证码接口
*
* @author Chopper
* @since 2020/11/26 15:41
*/
@RestController
@Api(tags = "短信验证码接口")
@RequestMapping("/common/common/sms")
public class SmsController {
@Autowired
private SmsUtil smsUtil;
@Autowired
private VerificationService verificationService;
@LimitPoint(name = "sms_send", key = "sms")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "path", dataType = "String", name = "mobile", value = "手机号"),
@ApiImplicitParam(paramType = "header", dataType = "String", name = "uuid", value = "uuid"),
})
@GetMapping("/{verificationEnums}/{mobile}")
@ApiOperation(value = "发送短信验证码,一分钟同一个ip请求1次")
public ResultMessage getSmsCode(
@RequestHeader String uuid,
@PathVariable String mobile,
@PathVariable VerificationEnums verificationEnums) {
verificationService.check(uuid, verificationEnums);
smsUtil.sendSmsCode(mobile, verificationEnums, uuid);
return ResultUtil.success(ResultCode.VERIFICATION_SEND_SUCCESS);
}
}
package cn.lili.controller.common;
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.sms.SmsUtil;
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;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 短信验证码接口
*
* @author Chopper
* @since 2020/11/26 15:41
*/
@RestController
@Api(tags = "短信验证码接口")
@RequestMapping("/common/common/sms")
public class SmsController {
@Autowired
private SmsUtil smsUtil;
@Autowired
private VerificationService verificationService;
@LimitPoint(name = "sms_send", key = "sms")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "path", dataType = "String", name = "mobile", value = "手机号"),
@ApiImplicitParam(paramType = "header", dataType = "String", name = "uuid", value = "uuid"),
})
@GetMapping("/{verificationEnums}/{mobile}")
@ApiOperation(value = "发送短信验证码,一分钟同一个ip请求1次")
public ResultMessage getSmsCode(
@RequestHeader String uuid,
@PathVariable String mobile,
@PathVariable VerificationEnums verificationEnums) {
verificationService.check(uuid, verificationEnums);
smsUtil.sendSmsCode(mobile, verificationEnums, uuid);
return ResultUtil.success(ResultCode.VERIFICATION_SEND_SUCCESS);
}
}

View File

@@ -1,6 +1,7 @@
package cn.lili.controller.common;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil;
import cn.lili.cache.Cache;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil;
@@ -12,7 +13,7 @@ import cn.lili.common.utils.Base64DecodeMultipartFile;
import cn.lili.common.utils.CommonUtil;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.file.entity.File;
import cn.lili.modules.file.plugin.FileManagerPlugin;
import cn.lili.modules.file.plugin.FilePluginFactory;
import cn.lili.modules.file.service.FileService;
import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.enums.SettingEnum;
@@ -21,10 +22,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
@@ -47,7 +45,7 @@ public class UploadController {
@Autowired
private SettingService settingService;
@Autowired
private FileManagerPlugin fileManagerPlugin;
private FilePluginFactory filePluginFactory;
@Autowired
private Cache cache;
@@ -55,24 +53,30 @@ public class UploadController {
@PostMapping(value = "/file")
public ResultMessage<Object> upload(MultipartFile file,
String base64,
@RequestHeader String accessToken) {
@RequestHeader String accessToken, @RequestParam String directoryPath) {
if(StrUtil.isBlank(directoryPath)){
directoryPath = "default";
}
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
//如果用户未登录,则无法上传图片
if (authUser == null) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
if (file == null) {
throw new ServiceException(ResultCode.FILE_NOT_EXIST_ERROR);
}
Setting setting = settingService.get(SettingEnum.OSS_SETTING.name());
if (setting == null || CharSequenceUtil.isBlank(setting.getSettingValue())) {
throw new ServiceException(ResultCode.OSS_NOT_EXIST);
}
if (file == null || CharSequenceUtil.isEmpty(file.getContentType())) {
if (CharSequenceUtil.isEmpty(file.getContentType())) {
throw new ServiceException(ResultCode.IMAGE_FILE_EXT_ERROR);
}
if (!CharSequenceUtil.containsAny(file.getContentType().toLowerCase(), "image")) {
if (!CharSequenceUtil.containsAny(Objects.requireNonNull(file.getContentType()).toLowerCase(), "image", "video")) {
throw new ServiceException(ResultCode.FILE_TYPE_NOT_SUPPORT);
}
@@ -86,7 +90,13 @@ public class UploadController {
try {
InputStream inputStream = file.getInputStream();
//上传至第三方云服务或服务器
result = fileManagerPlugin.inputStreamUpload(inputStream, fileKey);
String scene = UserContext.getCurrentUser().getRole().name();
if (StrUtil.equalsAny(UserContext.getCurrentUser().getRole().name(), UserEnums.MEMBER.name(), UserEnums.STORE.name(), UserEnums.SEAT.name())) {
scene = scene + "/" + authUser.getId();
}
fileKey = scene + "/" + directoryPath + "/" + fileKey;
//上传至第三方云服务或服务器
result = filePluginFactory.filePlugin().inputStreamUpload(inputStream, fileKey);
//保存数据信息至数据库
newFile.setName(file.getOriginalFilename());
newFile.setFileSize(file.getSize());
@@ -98,8 +108,19 @@ public class UploadController {
//如果是店铺则记录店铺id
if (authUser.getRole().equals(UserEnums.STORE)) {
newFile.setOwnerId(authUser.getStoreId());
newFile.setOwnerName(authUser.getStoreName());
} else {
newFile.setOwnerId(authUser.getId());
newFile.setOwnerName(authUser.getNickName());
}
//存储文件目录
if (StrUtil.isNotEmpty(directoryPath)) {
if (directoryPath.indexOf("/") > 0) {
newFile.setFileDirectoryId(directoryPath.substring(directoryPath.lastIndexOf("/") + 1));
} else {
newFile.setFileDirectoryId(directoryPath);
}
}
fileService.save(newFile);
} catch (Exception e) {

View File

@@ -1,8 +1,5 @@
package cn.lili.controller.security;
import cn.lili.cache.Cache;
import cn.lili.common.security.CustomAccessDeniedHandler;
import cn.lili.common.properties.IgnoredUrlsProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
@@ -25,19 +22,10 @@ import org.springframework.web.cors.CorsConfigurationSource;
public class CommonSecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 忽略验权配置
*/
@Autowired
private IgnoredUrlsProperties ignoredUrlsProperties;
/**
* spring security -》 权限不足处理
*/
@Autowired
private CustomAccessDeniedHandler accessDeniedHandler;
@Autowired
private Cache<String> cache;
@Autowired
private CorsConfigurationSource corsConfigurationSource;
@Override

View File

@@ -121,6 +121,8 @@ ignored:
- /source/**
- /common/common/slider/**
- /common/common/sms/**
- /common/common/logo
- /common/common/site
- /druid/**
- /swagger-ui.html
- /doc.html
@@ -188,18 +190,6 @@ lili:
interfereNum: 0
#允许误差像素
faultTolerant: 3
#短信模版配置
sms:
#登录
LOGIN: SMS_205755300
#注册
REGISTER: SMS_205755298
#找回密码
FIND_USER: SMS_205755301
#设置密码
UPDATE_PASSWORD: SMS_205755297
#支付密码
WALLET_PASSWORD: SMS_205755301
system:
isTestModel: true
statistics:

View File

@@ -20,6 +20,22 @@
</encoder>
</appender>
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE_PATH}/rocketmq.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>30MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
</encoder>
</appender>
<logger name="RocketmqClient" additivity="false">
<level value="info" />
<appender-ref ref="RocketmqClientAppender"/>
</logger>
<!--输出到elk的LOGSTASH-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->

View File

@@ -20,25 +20,29 @@ management:
exposure:
include: '*'
spring:
mail:
host: smtp.qq.com
port: 465
username: lifenlong@foxmail.com
password: dirpxpqgfvysbefh
protocol: smtps
properties:
mail:
smtp:
auth: true
starttls:
enable: true
# 要在其中注册的Spring Boot Admin Server的URL。
boot:
admin:
client:
url: http://192.168.0.116:8000
# mongodb
data:
mongodb:
uri: 192.168.0.116:27017
database: lilishop
username: root
password: lilishop
authentication-database: admin
# replica-set-name: mongoreplset
url: http://127.0.0.1:8000
cache:
type: redis
# Redis
redis:
host: 192.168.0.116
host: 127.0.0.1
port: 6379
password: lilishop
lettuce:
@@ -69,7 +73,7 @@ spring:
default-datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.116:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: lilishop
maxActive: 50
@@ -128,6 +132,7 @@ ignored:
- /store/passport/login/refresh/**
- /common/common/slider/**
- /common/common/sms/**
- /common/common/site
- /buyer/payment/cashier/**
- /buyer/other/pageData/**
- /buyer/other/article/**
@@ -191,7 +196,6 @@ logging:
cn.lili: info
# org.hibernate: debug
# org.springframework: debug
# org.springframework.data.mongodb.core: debug
file:
# 指定路径
path: logs
@@ -218,25 +222,12 @@ lili:
interfereNum: 1
#允许误差像素
faultTolerant: 3
#短信模版配置
sms:
#登录
LOGIN: SMS_205755300
#注册
REGISTER: SMS_205755298
#找回密码
FIND_USER: SMS_205755301
#设置密码
UPDATE_PASSWORD: SMS_205755297
#支付密码
WALLET_PASSWORD: SMS_205755301
system:
isDemoSite: false
isTestModel: true
# 脱敏级别:
# 0不做脱敏处理
# 1管理端用户手机号等信息脱敏
# 2商家端信息脱敏为2时表示管理端商家端同时脱敏
# 脱敏级别:
# 0不做脱敏处理
# 1管理端用户手机号等信息脱敏
# 2商家端信息脱敏为2时表示管理端商家端同时脱敏
sensitiveLevel: 1
statistics:
@@ -250,16 +241,16 @@ lili:
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
#域名
domain:
pc: http://192.168.0.116:8888
wap: http://192.168.0.116:8888
seller: http://192.168.0.116:8888
admin: http://192.168.0.116:8888
pc: http://127.0.0.1:8888
wap: http://127.0.0.1:8888
seller: http://127.0.0.1:8888
admin: http://127.0.0.1:8888
#api地址
api:
buyer: https://z171l91606.51mypc.cn
base: http://192.168.0.116:8888
manager: http://192.168.0.116:8888
seller: http://192.168.0.116:8888
base: http://127.0.0.1:8888
manager: http://127.0.0.1:8888
seller: http://127.0.0.1:8888
# jwt 细节设定
jwt-setting:
@@ -278,7 +269,7 @@ lili:
data:
elasticsearch:
cluster-name: elasticsearch
cluster-nodes: 192.168.0.116:9200
cluster-nodes: 127.0.0.1:9200
index:
number-of-replicas: 0
number-of-shards: 3
@@ -289,26 +280,28 @@ lili:
# password: LiLiShopES
logstash:
server: 192.168.0.116:4560
server: 127.0.0.1:4560
rocketmq:
promotion-topic: lili_promotion_topic
promotion-group: lili_promotion_group
msg-ext-topic: lili_msg_topic
msg-ext-group: lili_msg_group
goods-topic: lili_goods_topic
goods-group: lili_goods_group
order-topic: lili_order_topic
order-group: lili_order_group
member-topic: lili_member_topic
member-group: lili_member_group
other-topic: lili_other_topic
other-group: lili_other_group
notice-topic: lili_notice_topic
notice-group: lili_notice_group
notice-send-topic: lili_send_notice_topic
notice-send-group: lili_send_notice_group
promotion-topic: shop_lili_promotion_topic
promotion-group: shop_lili_promotion_group
msg-ext-topic: shop_lili_msg_topic
msg-ext-group: shop_lili_msg_group
goods-topic: shop_lili_goods_topic
goods-group: shop_lili_goods_group
order-topic: shop_lili_order_topic
order-group: shop_lili_order_group
member-topic: shop_lili_member_topic
member-group: shop_lili_member_group
other-topic: shop_lili_other_topic
other-group: shop_lili_other_group
notice-topic: shop_lili_notice_topic
notice-group: shop_lili_notice_group
notice-send-topic: shop_lili_send_notice_topic
notice-send-group: shop_lili_send_notice_group
after-sale-topic: shop_lili_after_sale_topic
after-sale-group: shop_lili_after_sale_group
rocketmq:
name-server: 192.168.0.116:9876
name-server: 127.0.0.1:9876
isVIPChannel: false
producer:
group: lili_group
@@ -317,7 +310,7 @@ rocketmq:
xxl:
job:
admin:
addresses: http://192.168.0.116:9001/xxl-job-admin
addresses: http://127.0.0.1:9001/xxl-job-admin
executor:
appname: xxl-job-executor-lilishop
address:

View File

@@ -14,6 +14,7 @@ public class ConsumerApplication {
public static void main(String[] args) {
System.setProperty("es.set.netty.runtime.available.processors", "false");
System.setProperty("rocketmq.client.logUseSlf4j","true");
SpringApplication.run(ConsumerApplication.class, args);
}

View File

@@ -0,0 +1,21 @@
package cn.lili.event;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.member.entity.dos.Member;
/**
* 会员联合登录消息
*
* @author Chopper
* @since 2020/11/17 7:13 下午
*/
public interface MemberConnectLoginEvent {
/**
* 会员联合登录
*
* @param member 会员
* @param authUser 第三方登录
*/
void memberConnectLogin(Member member, ConnectAuthUser authUser);
}

View File

@@ -0,0 +1,17 @@
package cn.lili.event;
import cn.lili.modules.member.entity.dos.Member;
/**
* @author chc
* @since 2022/6/2114:46
*/
public interface MemberInfoChangeEvent {
/**
* 会员信息更改消息
*
* @param member 会员信息
*/
void memberInfoChange(Member member);
}

View File

@@ -0,0 +1,18 @@
package cn.lili.event;
import cn.lili.modules.store.entity.dos.Store;
/**
* @author chc
* @since 2022/6/2114:46
*/
public interface StoreSettingChangeEvent {
/**
* 店铺信息更改消息
*
* @param store 店铺信息
*/
void storeSettingChange(Store store);
}

View File

@@ -1,23 +1,24 @@
package cn.lili.event.impl;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.json.JSONUtil;
import cn.lili.event.AfterSaleStatusChangeEvent;
import cn.lili.event.OrderStatusChangeEvent;
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.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.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.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 分销订单入库
*
@@ -26,26 +27,21 @@ import javax.annotation.Resource;
*/
@Slf4j
@Service
public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDayExecute, AfterSaleStatusChangeEvent {
public class DistributionOrderExecute implements OrderStatusChangeEvent, AfterSaleStatusChangeEvent {
/**
* 分销订单
*/
@Autowired
private DistributionOrderService distributionOrderService;
/**
* 分销订单持久层
*/
@Resource
private DistributionOrderMapper distributionOrderMapper;
@Override
public void orderChange(OrderMessage orderMessage) {
switch (orderMessage.getNewStatus()) {
//订单带校验/订单代发货,则记录分销信息
//订单带校验/订单代发货/待自提,则记录分销信息
case TAKE:
case STAY_PICKED_UP:
case UNDELIVERED: {
//记录分销订单
distributionOrderService.calculationDistribution(orderMessage.getOrderSn());
@@ -62,23 +58,10 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa
}
}
@Override
public void execute() {
//计算分销提佣
distributionOrderMapper.rebate(DistributionOrderStatusEnum.WAIT_BILL.name(), new DateTime());
//修改分销订单状态
distributionOrderService.update(new LambdaUpdateWrapper<DistributionOrder>()
.eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_BILL.name())
.le(DistributionOrder::getSettleCycle, new DateTime())
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_CASH.name()));
}
@Override
public void afterSaleStatusChange(AfterSale afterSale) {
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
distributionOrderService.refundOrder(afterSale.getSn());
distributionOrderService.refundOrder(afterSale);
}
}

View File

@@ -19,6 +19,7 @@ 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.OrderItem;
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.dto.PriceDetailDTO;
import cn.lili.modules.order.order.entity.enums.*;
import cn.lili.modules.order.order.service.OrderItemService;
@@ -96,6 +97,15 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent {
if (orderMessage.getNewStatus().equals(OrderStatusEnum.PAID)) {
log.debug("满减活动,订单状态操作 {}", CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn());
renderGift(JSONUtil.toBean(cache.getString(CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn()), CartVO.class), orderMessage);
} else if (orderMessage.getNewStatus().equals(OrderStatusEnum.CANCELLED)) {
log.debug("满减活动,取消订单状态操作 {}", CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn());
OrderSearchParams searchParams = new OrderSearchParams();
searchParams.setParentOrderSn(orderMessage.getOrderSn());
searchParams.setOrderPromotionType(OrderPromotionTypeEnum.GIFT.name());
List<Order> orders = orderService.queryListByParams(searchParams);
if (orders != null && !orders.isEmpty()) {
orderService.systemCancel(orders.get(0).getSn(),"主订单取消,赠送订单字段自动取消",true);
}
}
}
@@ -190,6 +200,7 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent {
BeanUtil.copyProperties(priceDetailDTO, order, "id");
//生成订单参数
order.setSn(SnowFlake.createStr("G"));
order.setParentOrderSn(originOrder.getSn());
order.setOrderPromotionType(OrderPromotionTypeEnum.GIFT.name());
order.setOrderStatus(OrderStatusEnum.UNPAID.name());
order.setPayStatus(PayStatusEnum.PAID.name());

View File

@@ -1,12 +1,22 @@
package cn.lili.event.impl;
import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
import cn.lili.event.GoodsCommentCompleteEvent;
import cn.lili.event.StoreSettingChangeEvent;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
import cn.lili.modules.goods.service.GoodsService;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.store.entity.dos.Store;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 商品SKU变化
*
@@ -14,7 +24,7 @@ import org.springframework.stereotype.Service;
* @since 2020-07-03 11:20
*/
@Service
public class GoodsSkuExecute implements GoodsCommentCompleteEvent {
public class GoodsSkuExecute implements GoodsCommentCompleteEvent, StoreSettingChangeEvent {
/**
* 商品
@@ -22,9 +32,26 @@ public class GoodsSkuExecute implements GoodsCommentCompleteEvent {
@Autowired
private GoodsSkuService goodsSkuService;
@Autowired
private GoodsService goodsService;
@Autowired
private Cache cache;
@Override
public void goodsComment(MemberEvaluation memberEvaluation) {
goodsSkuService.updateGoodsSkuCommentNum(memberEvaluation.getSkuId());
goodsService.updateGoodsCommentNum(memberEvaluation.getGoodsId(), memberEvaluation.getSkuId());
}
@Override
public void storeSettingChange(Store store) {
//修改数据后,清除商品索引
GoodsSearchParams goodsSearchParams = new GoodsSearchParams();
goodsSearchParams.setStoreId(store.getId());
List<String> goodsSkuKeys = new ArrayList<>();
for (GoodsSku goodsSku : goodsSkuService.getGoodsSkuByList(goodsSearchParams)) {
goodsSkuKeys.add(CachePrefix.GOODS_SKU.getPrefix()+goodsSku.getId());
}
cache.multiDel(goodsSkuKeys);
}
}

View File

@@ -0,0 +1,60 @@
package cn.lili.event.impl;
import cn.lili.event.MemberInfoChangeEvent;
import cn.lili.event.StoreSettingChangeEvent;
import cn.lili.modules.im.entity.dos.ImTalk;
import cn.lili.modules.im.service.ImTalkService;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.store.entity.dos.Store;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Im对话消息
*
* @author chc
* @since 2022/6/2114:46
*/
@Service
public class ImTalkExecute implements MemberInfoChangeEvent, StoreSettingChangeEvent {
@Autowired
private ImTalkService imTalkService;
@Override
public void memberInfoChange(Member member) {
//当与UserId1相等时
List<ImTalk> imTalkList1 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId1, member.getId()));
for (ImTalk imTalk : imTalkList1) {
imTalk.setName1(member.getNickName());
imTalk.setFace1(member.getFace());
}
imTalkService.updateBatchById(imTalkList1);
List<ImTalk> imTalkList2 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId2, member.getId()));
for (ImTalk imTalk : imTalkList2) {
imTalk.setName2(member.getNickName());
imTalk.setFace2(member.getFace());
}
imTalkService.updateBatchById(imTalkList2);
}
@Override
public void storeSettingChange(Store store) {
//当与UserId1相等时
List<ImTalk> imTalkList1 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId1, store.getId()));
for (ImTalk imTalk : imTalkList1) {
imTalk.setName1(store.getStoreName());
imTalk.setFace1(store.getStoreLogo());
}
imTalkService.updateBatchById(imTalkList1);
List<ImTalk> imTalkList2 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId2, store.getId()));
for (ImTalk imTalk : imTalkList2) {
imTalk.setName2(store.getStoreName());
imTalk.setFace2(store.getStoreLogo());
}
imTalkService.updateBatchById(imTalkList2);
}
}

View File

@@ -0,0 +1,65 @@
package cn.lili.event.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.event.AfterSaleStatusChangeEvent;
import cn.lili.event.OrderStatusChangeEvent;
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.OrderStatusEnum;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
import cn.lili.modules.promotion.service.MemberCouponService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 会员优惠券执行类
*
* @author paulG
* @since 2022/8/12
**/
@Service
public class MemberCouponExecute implements OrderStatusChangeEvent, AfterSaleStatusChangeEvent {
/**
* 订单
*/
@Autowired
private OrderService orderService;
@Autowired
private MemberCouponService memberCouponService;
@Override
public void orderChange(OrderMessage orderMessage) {
// 订单取消返还优惠券
if (orderMessage.getNewStatus() == OrderStatusEnum.CANCELLED) {
this.refundCoupon(orderMessage.getOrderSn());
}
}
@Override
public void afterSaleStatusChange(AfterSale afterSale) {
// 售后完成返还优惠券
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
this.refundCoupon(afterSale.getOrderSn());
}
}
/**
* 退款返还优惠券
* @param orderSn 订单编号
*/
private void refundCoupon(String orderSn) {
Order order = orderService.getBySn(orderSn);
if (CharSequenceUtil.isNotEmpty(order.getUseStoreMemberCouponIds())) {
memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUseStoreMemberCouponIds().split(",")));
}
if (CharSequenceUtil.isNotEmpty(order.getUsePlatformMemberCouponId())) {
memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUsePlatformMemberCouponId().split(",")));
}
}
}

View File

@@ -1,25 +1,58 @@
package cn.lili.event.impl;
import cn.hutool.core.util.StrUtil;
import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.event.MemberConnectLoginEvent;
import cn.lili.event.MemberLoginEvent;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.connect.entity.enums.ConnectEnum;
import cn.lili.modules.connect.entity.enums.SourceEnum;
import cn.lili.modules.connect.service.ConnectService;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.system.service.SettingService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 会员自身业务
* 会员登录,会员第三方登录
*
* @author Chopper
* @version v1.0
* 2022-01-11 11:08
*/
@Slf4j
@Service
public class MemberExecute implements MemberLoginEvent {
public class MemberExecute implements MemberLoginEvent, MemberConnectLoginEvent {
@Autowired
private MemberService memberService;
@Autowired
private ConnectService connectService;
@Autowired
private SettingService settingService;
@Override
public void memberLogin(Member member) {
memberService.updateMemberLoginTime(member.getId());
}
@Override
public void memberConnectLogin(Member member, ConnectAuthUser authUser) {
//保存UnionID
if (StrUtil.isNotBlank(authUser.getToken().getUnionId())) {
connectService.loginBindUser(member.getId(), authUser.getToken().getUnionId(), authUser.getSource().name());
}
//保存OpenID
if (StrUtil.isNotBlank(authUser.getUuid())) {
SourceEnum sourceEnum = SourceEnum.getSourceEnum(authUser.getSource(), authUser.getType());
connectService.loginBindUser(member.getId(), authUser.getUuid(), sourceEnum.name());
}
//保存手机号,判断用户是否存手机号,如果不存在则保存手机号
if (StrUtil.isNotBlank(authUser.getPhone())&&StrUtil.isBlank(member.getMobile())) {
memberService.changeMobile(member.getId(),member.getMobile());
}
}
}

View File

@@ -1,8 +1,8 @@
package cn.lili.event.impl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.common.utils.CurrencyUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.event.AfterSaleStatusChangeEvent;
import cn.lili.event.GoodsCommentCompleteEvent;
import cn.lili.event.MemberRegisterEvent;
@@ -15,6 +15,7 @@ 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;
@@ -104,7 +105,7 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp
case COMPLETED: {
Order order = orderService.getBySn(orderMessage.getOrderSn());
//如果是积分订单 则直接返回
if (StringUtils.isNotEmpty(order.getOrderPromotionType())
if (CharSequenceUtil.isNotEmpty(order.getOrderPromotionType())
&& order.getOrderPromotionType().equals(OrderPromotionTypeEnum.POINTS.name())) {
return;
}
@@ -134,12 +135,16 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp
@Override
public void afterSaleStatusChange(AfterSale afterSale) {
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
Order order = orderService.getBySn(afterSale.getOrderSn());
//获取积分设置
PointSetting pointSetting = getPointSetting();
if (pointSetting.getConsumer() == 0 || !OrderStatusEnum.COMPLETED.name().equals(order.getOrderStatus())) {
return;
}
//计算扣除积分数量
Double point = CurrencyUtil.mul(pointSetting.getMoney(), afterSale.getActualRefundPrice(), 0);
Double point = CurrencyUtil.mul(pointSetting.getConsumer(), afterSale.getActualRefundPrice(), 0);
//扣除会员积分
memberService.updateMemberPoint(point.longValue(), PointTypeEnum.REDUCE.name(), afterSale.getMemberId(), "会员退款,回退积分" + point + "");
memberService.updateMemberPoint(point.longValue(), PointTypeEnum.REDUCE.name(), afterSale.getMemberId(), "会员退款,回退消费赠送积分" + point + "");
}
}

View File

@@ -1,8 +1,11 @@
package cn.lili.event.impl;
import cn.lili.event.MemberRegisterEvent;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.event.MemberWithdrawalEvent;
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.WithdrawStatusEnum;
import cn.lili.modules.wallet.service.MemberWalletService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -14,14 +17,35 @@ import org.springframework.stereotype.Service;
* @since 2020-07-03 11:20
*/
@Service
public class MemberWalletExecute implements MemberRegisterEvent {
public class MemberWalletExecute implements MemberWithdrawalEvent {
@Autowired
private MemberWalletService memberWalletService;
@Override
public void memberRegister(Member member) {
// 有些情况下会同时创建一个member_id的两条数据
// memberWalletService.save(member.getId(),member.getUsername());
public void memberWithdrawal(MemberWithdrawalMessage memberWithdrawalMessage) {
switch (WithdrawStatusEnum.valueOf(memberWithdrawalMessage.getStatus())) {
case VIA_AUDITING:
memberWalletService.withdrawal(memberWithdrawalMessage.getMemberWithdrawApplyId());
break;
case SUCCESS:
//提现成功扣减冻结金额
memberWalletService.reduceFrozen(
new MemberWalletUpdateDTO(memberWithdrawalMessage.getPrice(), memberWithdrawalMessage.getMemberId(), "提现成功,余额提现",
DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()));
break;
case ERROR:
//需要从冻结金额扣减到余额
memberWalletService.increaseWithdrawal(new MemberWalletUpdateDTO(memberWithdrawalMessage.getPrice(),
memberWithdrawalMessage.getMemberId(), "第三方提现失败,提现金额解冻到余额", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()));
break;
case FAIL_AUDITING:
//需要从冻结金额扣减到余额
memberWalletService.increaseWithdrawal(new MemberWalletUpdateDTO(memberWithdrawalMessage.getPrice(),
memberWithdrawalMessage.getMemberId(), "审核拒绝,提现金额解冻到余额", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()));
break;
default:
break;
}
}
}

View File

@@ -16,7 +16,6 @@ import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
import cn.lili.modules.order.trade.entity.enums.AfterSaleTypeEnum;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -59,7 +58,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
OrderDetailVO orderDetailVO = orderService.queryDetail(orderMessage.getOrderSn());
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
//如果订单状态不为空
if (orderDetailVO != null) {
if (orderDetailVO != null && orderDetailVO.getOrderItems() != null && !orderDetailVO.getOrderItems().isEmpty()) {
Map<String, String> params = new HashMap<>(2);
switch (orderMessage.getNewStatus()) {
//如果订单新的状态为已取消 则发送取消订单站内信
@@ -179,60 +178,30 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent,
public void memberWithdrawal(MemberWithdrawalMessage memberWithdrawalMessage) {
NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO();
noticeMessageDTO.setMemberId(memberWithdrawalMessage.getMemberId());
//如果提现状态为申请则发送申请提现站内消息
if (memberWithdrawalMessage.getStatus().equals(WithdrawStatusEnum.APPLY.name())) {
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_CREATE);
Map<String, String> params = new HashMap<>(2);
params.put("price", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setParameter(params);
//发送提现申请成功消息
noticeMessageService.noticeMessage(noticeMessageDTO);
}
//如果提现状态为通过则发送审核通过站内消息
if (memberWithdrawalMessage.getStatus().equals(WithdrawStatusEnum.VIA_AUDITING.name())) {
//如果提现到余额
if (memberWithdrawalMessage.getDestination().equals(MemberWithdrawalDestinationEnum.WALLET.name())) {
//组织参数
Map<String, String> params = new HashMap<>(2);
params.put("income", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setParameter(params);
Map<String, String> params = new HashMap<>(2);
switch (WithdrawStatusEnum.valueOf(memberWithdrawalMessage.getStatus())) {
case APPLY:
//如果提现状态为申请则发送申请提现站内消息
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_CREATE);
break;
case FAIL_AUDITING:
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_AUDIT_ERROR);
break;
case SUCCESS:
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_SUCCESS);
//发送提现成功消息
noticeMessageService.noticeMessage(noticeMessageDTO);
params.put("income", memberWithdrawalMessage.getPrice().toString());
params.put("expenditure", "0");
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_CHANGE);
noticeMessageDTO.setParameter(params);
//发送余额变动消息
noticeMessageService.noticeMessage(noticeMessageDTO);
}
//如果提现到微信
if (memberWithdrawalMessage.getDestination().equals(MemberWithdrawalDestinationEnum.WECHAT.name())) {
Map<String, String> params = new HashMap<>(2);
params.put("income", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setParameter(params);
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_WEICHAT_SUCCESS);
//发送提现成功消息
noticeMessageService.noticeMessage(noticeMessageDTO);
params.put("income", "0");
params.put("expenditure", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_CHANGE);
noticeMessageDTO.setParameter(params);
//发送余额变动消息
noticeMessageService.noticeMessage(noticeMessageDTO);
}
}
//如果提现状态为拒绝则发送审核拒绝站内消息
if (memberWithdrawalMessage.getStatus().equals(WithdrawStatusEnum.FAIL_AUDITING.name())) {
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_ERROR);
Map<String, String> params = new HashMap<>(2);
params.put("price", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setParameter(params);
//发送提现申请成功消息
noticeMessageService.noticeMessage(noticeMessageDTO);
break;
case ERROR:
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_ERROR);
break;
case VIA_AUDITING:
noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_AUDIT_SUCCESS);
default:
break;
}
params.put("price", memberWithdrawalMessage.getPrice().toString());
noticeMessageDTO.setParameter(params);
//发送提现申请消息
noticeMessageService.noticeMessage(noticeMessageDTO);
}
}

View File

@@ -1,12 +1,25 @@
package cn.lili.event.impl;
import cn.lili.common.utils.CurrencyUtil;
import cn.lili.event.AfterSaleStatusChangeEvent;
import cn.lili.event.TradeEvent;
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
import cn.lili.modules.order.aftersale.service.AfterSaleService;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
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.RefundStatusEnum;
import cn.lili.modules.order.order.service.OrderItemService;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.order.order.service.TradeService;
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 订单状态处理类
*
@@ -14,11 +27,17 @@ import org.springframework.stereotype.Service;
* @since 2020-07-03 11:20
**/
@Service
public class OrderStatusHandlerExecute implements TradeEvent {
public class OrderStatusHandlerExecute implements TradeEvent, AfterSaleStatusChangeEvent {
@Autowired
private TradeService tradeService;
@Autowired
private OrderItemService orderItemService;
@Autowired
private OrderService orderService;
@Autowired
private AfterSaleService afterSaleService;
@Override
public void orderCreate(TradeDTO tradeDTO) {
@@ -28,4 +47,41 @@ public class OrderStatusHandlerExecute implements TradeEvent {
}
}
}
@Override
public void afterSaleStatusChange(AfterSale afterSale) {
Order order = orderService.getBySn(afterSale.getOrderSn());
OrderItem orderItem = orderItemService.getBySn(afterSale.getOrderItemSn());
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
if (orderItem.getReturnGoodsNumber().equals(orderItem.getNum())) {
orderItem.setIsRefund(RefundStatusEnum.ALL_REFUND.name());
} else {
orderItem.setIsRefund(RefundStatusEnum.PART_REFUND.name());
}
orderItem.setRefundPrice(CurrencyUtil.add(afterSale.getActualRefundPrice(), orderItem.getRefundPrice()));
orderItemService.updateByAfterSale(orderItem);
//循环订单货物,判断是否已经全部售后
List<OrderItem> orderItems = orderItemService.getByOrderSn(afterSale.getOrderSn());
// 总退货数量
int returnCount = 0;
// 总购买数量
int deliverCount = 0;
//获取订单货物已完成售后的数量
AfterSaleSearchParams saleSearchParams = new AfterSaleSearchParams();
saleSearchParams.setOrderSn(afterSale.getOrderSn());
saleSearchParams.setServiceStatus(AfterSaleStatusEnum.COMPLETE.name());
List<AfterSale> afterSales = afterSaleService.exportAfterSaleOrder(saleSearchParams);
for (AfterSale sale : afterSales) {
returnCount += sale.getNum();
}
//订单货物购买总数
deliverCount = order.getGoodsNum();
if (returnCount == deliverCount) {
orderService.systemCancel(afterSale.getOrderSn(),"订单货物全部退款",false);
}
}
}
}

View File

@@ -5,8 +5,10 @@ import cn.lili.common.utils.SpringContextUtil;
import cn.lili.event.OrderStatusChangeEvent;
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.OrderStatusEnum;
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;
import cn.lili.modules.payment.entity.RefundLog;
import cn.lili.modules.payment.kit.Payment;
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
@@ -29,56 +31,40 @@ public class PaymentExecute implements OrderStatusChangeEvent {
*/
@Autowired
private OrderService orderService;
@Autowired
private StoreFlowService storeFlowService;
@Override
public void orderChange(OrderMessage orderMessage) {
switch (orderMessage.getNewStatus()) {
case CANCELLED:
Order order = orderService.getBySn(orderMessage.getOrderSn());
if (orderMessage.getNewStatus() == OrderStatusEnum.CANCELLED) {
Order order = orderService.getBySn(orderMessage.getOrderSn());
//如果未付款,则不去要退回相关代码执行
if (order.getPayStatus().equals(PayStatusEnum.UNPAID.name())) {
return;
}
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(order.getPaymentMethod());
//获取支付方式
Payment payment =
(Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin());
RefundLog refundLog = RefundLog.builder()
.isRefund(false)
.totalAmount(order.getFlowPrice())
.payPrice(order.getFlowPrice())
.memberId(order.getMemberId())
.paymentName(order.getPaymentMethod())
.afterSaleNo("订单取消")
.orderSn(order.getSn())
.paymentReceivableNo(order.getReceivableNo())
.outOrderNo("AF" + SnowFlake.getIdStr())
.refundReason("订单取消")
.build();
payment.refund(refundLog);
//如果未付款,则不去要退回相关代码执行
if (order.getPayStatus().equals(PayStatusEnum.UNPAID.name())) {
return;
}
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(order.getPaymentMethod());
//进行退款操作
switch (paymentMethodEnum) {
case WALLET:
case ALIPAY:
case WECHAT:
//获取支付方式
Payment payment =
(Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin());
RefundLog refundLog = RefundLog.builder()
.isRefund(false)
.totalAmount(order.getFlowPrice())
.payPrice(order.getFlowPrice())
.memberId(order.getMemberId())
.paymentName(order.getPaymentMethod())
.afterSaleNo("订单取消")
.orderSn(order.getSn())
.paymentReceivableNo(order.getReceivableNo())
.outOrderNo("AF" + SnowFlake.getIdStr())
.outOrderNo("AF" + SnowFlake.getIdStr())
.refundReason("订单取消")
.build();
payment.cancel(refundLog);
break;
case BANK_TRANSFER:
break;
default:
log.error("订单支付执行异常,订单编号:{}", orderMessage.getOrderSn());
break;
}
break;
default:
break;
}
}
}

View File

@@ -1,18 +1,17 @@
package cn.lili.event.impl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
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.member.service.MemberService;
import cn.lili.modules.promotion.entity.dto.CouponActivityTrigger;
import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum;
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
import cn.lili.modules.promotion.service.CouponActivityService;
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;
import java.util.List;
/**
* 注册赠券活动
*
@@ -25,6 +24,12 @@ public class RegisteredCouponActivityExecute implements MemberRegisterEvent {
@Autowired
private CouponActivityService couponActivityService;
@Autowired
private MemberService memberService;
@Autowired
private Cache cache;
/**
* 获取进行中的注册赠券的优惠券活动
* 发送注册赠券
@@ -33,9 +38,22 @@ public class RegisteredCouponActivityExecute implements MemberRegisterEvent {
*/
@Override
public void memberRegister(Member member) {
List<CouponActivity> couponActivities = couponActivityService.list(new QueryWrapper<CouponActivity>()
.eq("coupon_activity_type", CouponActivityTypeEnum.REGISTERED.name())
.and(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.START)));
couponActivityService.registered(couponActivities, member);
//用户注册赠券
couponActivityService.trigger(CouponActivityTrigger.builder()
.nickName(member.getNickName())
.userId(member.getId())
.couponActivityTypeEnum(CouponActivityTypeEnum.REGISTERED)
.build());
//邀请人赠券
String memberId = (String) cache.get(CachePrefix.INVITER.getPrefix() + member.getId());
if (CharSequenceUtil.isNotEmpty(memberId)) {
//邀请人
Member inviter = memberService.getById(memberId);
couponActivityService.trigger(CouponActivityTrigger.builder()
.nickName(inviter.getNickName())
.userId(inviter.getId())
.couponActivityTypeEnum(CouponActivityTypeEnum.INVITE_NEW)
.build());
}
}
}

View File

@@ -28,7 +28,9 @@ 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;
/**
* 库存扣减,他表示了订单状态是否出库成功
@@ -94,7 +96,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
keys.add(GoodsSkuService.getStockCacheKey(orderItem.getSkuId()));
int i = -orderItem.getNum();
values.add(Integer.toString(i));
setPromotionStock(keys, values, orderItem);
setPromotionStock(keys, values, orderItem, true);
}
List<Integer> stocks = cache.multiGet(keys);
@@ -132,6 +134,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
keys.add(GoodsSkuService.getStockCacheKey(orderItem.getSkuId()));
int i = orderItem.getNum();
values.add(Integer.toString(i));
setPromotionStock(keys, values, orderItem, false);
}
//批量脚本执行库存回退
Boolean skuResult = stringRedisTemplate.execute(quantityScript, keys, values.toArray());
@@ -156,7 +159,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
* @param stocks
*/
private void checkStocks(List<Integer> stocks, OrderDetailVO order) {
if (order.getOrderItems().size() == stocks.size()) {
if (!stocks.isEmpty() && order.getOrderItems().size() == stocks.size() && stocks.stream().anyMatch(Objects::nonNull)) {
return;
}
initSkuCache(order.getOrderItems());
@@ -188,28 +191,33 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
//如果促销类型需要库存判定,则做对应处理
orderItems.forEach(orderItem -> {
if (orderItem.getPromotionType() != null) {
//如果此促销有库存概念,则计入
if (PromotionTypeEnum.haveStock(orderItem.getPromotionType())) {
String[] skuPromotions = orderItem.getPromotionType().split(",");
for (int i = 0; i < skuPromotions.length; i++) {
int currentIndex = i;
//如果此促销有库存概念,则计入
Arrays.stream(PromotionTypeEnum.haveStockPromotion).filter(promotionTypeEnum -> promotionTypeEnum.name().equals(skuPromotions[currentIndex]))
.findFirst()
.ifPresent(promotionTypeEnum -> {
String promotionId = orderItem.getPromotionId().split(",")[currentIndex];
String cacheKey = PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, promotionId, orderItem.getSkuId());
PromotionTypeEnum promotionTypeEnum = PromotionTypeEnum.valueOf(orderItem.getPromotionType());
String cacheKey = PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, orderItem.getPromotionId(), orderItem.getSkuId());
switch (promotionTypeEnum) {
case KANJIA:
cache.put(cacheKey, kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(orderItem.getSkuId()).getStock());
return;
case POINTS_GOODS:
cache.put(cacheKey, pointsGoodsService.getPointsGoodsDetailBySkuId(orderItem.getSkuId()).getActiveStock());
return;
case SECKILL:
case PINTUAN:
cache.put(cacheKey, promotionGoodsService.getPromotionGoodsStock(promotionTypeEnum, orderItem.getPromotionId(), orderItem.getSkuId()));
return;
default:
break;
}
switch (promotionTypeEnum) {
case KANJIA:
cache.put(cacheKey, kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(orderItem.getSkuId()).getStock());
return;
case POINTS_GOODS:
cache.put(cacheKey, pointsGoodsService.getPointsGoodsDetailBySkuId(orderItem.getSkuId()).getActiveStock());
return;
case SECKILL:
case PINTUAN:
cache.put(cacheKey, promotionGoodsService.getPromotionGoodsStock(promotionTypeEnum, promotionId, orderItem.getSkuId()));
return;
default:
break;
}
});
}
}
});
}
@@ -221,7 +229,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
* @param orderSn 失败入库订单信息
*/
private void errorOrder(String orderSn) {
orderService.systemCancel(orderSn, outOfStockMessage);
orderService.systemCancel(orderSn, outOfStockMessage, true);
}
@@ -232,16 +240,20 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
* @param values 缓存value值
* @param sku 购物车信息
*/
private void setPromotionStock(List<String> keys, List<String> values, OrderItem sku) {
private void setPromotionStock(List<String> keys, List<String> values, OrderItem sku, boolean deduction) {
if (sku.getPromotionType() != null) {
//如果此促销有库存概念,则计入
if (!PromotionTypeEnum.haveStock(sku.getPromotionType())) {
return;
String[] skuPromotions = sku.getPromotionType().split(",");
for (int i = 0; i < skuPromotions.length; i++) {
int currentIndex = i;
Arrays.stream(PromotionTypeEnum.haveStockPromotion).filter(promotionTypeEnum -> promotionTypeEnum.name().equals(skuPromotions[currentIndex]))
.findFirst()
.ifPresent(promotionTypeEnum -> {
keys.add(PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, sku.getPromotionId().split(",")[currentIndex], sku.getSkuId()));
int num = deduction ? -sku.getNum() : sku.getNum();
values.add(Integer.toString(num));
});
}
PromotionTypeEnum promotionTypeEnum = PromotionTypeEnum.valueOf(sku.getPromotionType());
keys.add(PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, sku.getPromotionId(), sku.getSkuId()));
int i = -sku.getNum();
values.add(Integer.toString(i));
}
}
@@ -276,41 +288,51 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
goodsSku.setId(orderItem.getSkuId());
goodsSku.setGoodsId(orderItem.getGoodsId());
//如果有促销信息
if (null != orderItem.getPromotionType() && null != orderItem.getPromotionId() && PromotionTypeEnum.haveStock(orderItem.getPromotionType())) {
if (null != orderItem.getPromotionType() && null != orderItem.getPromotionId()) {
//如果促销有库存信息
PromotionTypeEnum promotionTypeEnum = PromotionTypeEnum.valueOf(orderItem.getPromotionType());
String[] skuPromotions = orderItem.getPromotionType().split(",");
for (int i = 0; i < skuPromotions.length; i++) {
int currentIndex = i;
Arrays.stream(PromotionTypeEnum.haveStockPromotion).filter(promotionTypeEnum -> promotionTypeEnum.name().equals(skuPromotions[currentIndex]))
.findFirst()
.ifPresent(promotionTypeEnum -> {
//修改砍价商品库存
String promotionId = orderItem.getPromotionId().split(",")[currentIndex];
//修改砍价商品库存
if (promotionTypeEnum.equals(PromotionTypeEnum.KANJIA)) {
KanjiaActivity kanjiaActivity = kanjiaActivityService.getById(orderItem.getPromotionId());
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanjiaGoodsDetail(kanjiaActivity.getKanjiaActivityGoodsId());
//修改砍价商品库存
if (promotionTypeEnum.equals(PromotionTypeEnum.KANJIA)) {
KanjiaActivity kanjiaActivity = kanjiaActivityService.getById(promotionId);
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanjiaGoodsDetail(kanjiaActivity.getKanjiaActivityGoodsId());
Integer stock = Integer.parseInt(cache.get(PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, orderItem.getPromotionId(), orderItem.getSkuId())).toString());
kanjiaActivityGoodsDTO.setStock(stock);
Integer stock = Integer.parseInt(cache.get(PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, promotionId, orderItem.getSkuId())).toString());
kanjiaActivityGoodsDTO.setStock(stock);
kanjiaActivityGoodsService.updateById(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);
} else {
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
searchParams.setPromotionType(promotionTypeEnum.name());
searchParams.setPromotionId(orderItem.getPromotionId());
searchParams.setSkuId(orderItem.getSkuId());
PromotionGoods pGoods = promotionGoodsService.getPromotionsGoods(searchParams);
//记录需要更新的促销库存信息
promotionKey.add(
PromotionGoodsService.getPromotionGoodsStockCacheKey(
promotionTypeEnum,
orderItem.getPromotionId(), orderItem.getSkuId())
);
if (pGoods != null) {
promotionGoods.add(pGoods);
}
kanjiaActivityGoodsService.updateById(kanjiaActivityGoodsDTO);
//修改积分商品库存
} else if (promotionTypeEnum.equals(PromotionTypeEnum.POINTS_GOODS)) {
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetail(promotionId);
Integer stock = Integer.parseInt(cache.get(PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, promotionId, orderItem.getSkuId())).toString());
pointsGoodsVO.setActiveStock(stock);
pointsGoodsService.updateById(pointsGoodsVO);
} else {
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
searchParams.setPromotionType(promotionTypeEnum.name());
searchParams.setPromotionId(promotionId);
searchParams.setSkuId(orderItem.getSkuId());
PromotionGoods pGoods = promotionGoodsService.getPromotionsGoods(searchParams);
//记录需要更新的促销库存信息
promotionKey.add(
PromotionGoodsService.getPromotionGoodsStockCacheKey(
promotionTypeEnum,
promotionId, orderItem.getSkuId())
);
if (pGoods != null) {
promotionGoods.add(pGoods);
}
}
});
}
}
goodsSkus.add(goodsSku);
}
@@ -321,8 +343,6 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
for (int i = 0; i < skuStocks.size(); i++) {
goodsSkus.get(i).setQuantity(Convert.toInt(skuStocks.get(i).toString()));
}
//批量修改商品库存
goodsSkuService.updateBatchById(goodsSkus);
//促销库存处理
if (!promotionKey.isEmpty()) {
@@ -332,10 +352,10 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
Integer num = promotionGoods.get(i).getNum();
promotionGoods.get(i).setNum((num != null ? num : 0) + order.getOrder().getGoodsNum());
}
promotionGoodsService.updateBatchById(promotionGoods);
promotionGoodsService.updatePromotionGoodsStock(promotionGoods);
}
//商品库存包含sku库存集合批量更新商品库存相关
goodsSkuService.updateGoodsStuck(goodsSkus);
goodsSkuService.updateGoodsStock(goodsSkus);
log.info("订单确认,库存同步:商品信息--{};促销信息---{}", goodsSkus, promotionGoods);
@@ -352,11 +372,75 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
List<GoodsSku> goodsSkus = new ArrayList<>();
//sku库存key 集合
List<String> skuKeys = new ArrayList<>();
//促销商品
List<PromotionGoods> promotionGoods = new ArrayList<>();
//促销库存key 集合
List<String> promotionKey = new ArrayList<>();
//循环订单
for (OrderItem orderItem : order.getOrderItems()) {
skuKeys.add(GoodsSkuService.getStockCacheKey(orderItem.getSkuId()));
GoodsSku goodsSku = new GoodsSku();
goodsSku.setId(orderItem.getSkuId());
goodsSku.setGoodsId(orderItem.getGoodsId());
//如果有促销信息
if (null != orderItem.getPromotionType() && null != orderItem.getPromotionId()) {
//如果促销有库存信息
String[] skuPromotions = orderItem.getPromotionType().split(",");
for (int i = 0; i < skuPromotions.length; i++) {
int currentIndex = i;
Arrays.stream(PromotionTypeEnum.haveStockPromotion).filter(promotionTypeEnum -> promotionTypeEnum.name().equals(skuPromotions[currentIndex]))
.findFirst()
.ifPresent(promotionTypeEnum -> {
//修改砍价商品库存
String promotionId = orderItem.getPromotionId().split(",")[currentIndex];
//修改砍价商品库存
if (promotionTypeEnum.equals(PromotionTypeEnum.KANJIA)) {
KanjiaActivity kanjiaActivity = kanjiaActivityService.getById(promotionId);
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanjiaGoodsDetail(kanjiaActivity.getKanjiaActivityGoodsId());
Integer stock = Integer.parseInt(cache.get(PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, promotionId, orderItem.getSkuId())).toString());
kanjiaActivityGoodsDTO.setStock(stock);
kanjiaActivityGoodsService.updateById(kanjiaActivityGoodsDTO);
//修改积分商品库存
} else if (promotionTypeEnum.equals(PromotionTypeEnum.POINTS_GOODS)) {
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsDetail(promotionId);
Integer stock = Integer.parseInt(cache.get(PromotionGoodsService.getPromotionGoodsStockCacheKey(promotionTypeEnum, promotionId, orderItem.getSkuId())).toString());
pointsGoodsVO.setActiveStock(stock);
pointsGoodsService.updateById(pointsGoodsVO);
} else {
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
searchParams.setPromotionType(promotionTypeEnum.name());
searchParams.setPromotionId(promotionId);
searchParams.setSkuId(orderItem.getSkuId());
PromotionGoods pGoods = promotionGoodsService.getPromotionsGoods(searchParams);
//记录需要更新的促销库存信息
promotionKey.add(
PromotionGoodsService.getPromotionGoodsStockCacheKey(
promotionTypeEnum,
promotionId, orderItem.getSkuId())
);
if (pGoods != null) {
promotionGoods.add(pGoods);
}
}
});
}
}
goodsSkus.add(goodsSku);
}
//循环订单
for (OrderItem orderItem : order.getOrderItems()) {
skuKeys.add(GoodsSkuService.getStockCacheKey(orderItem.getSkuId()));
GoodsSku goodsSku = new GoodsSku();
goodsSku.setId(orderItem.getSkuId());
goodsSku.setGoodsId(orderItem.getGoodsId());
goodsSkus.add(goodsSku);
}
//批量获取商品库存
@@ -365,10 +449,19 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
for (int i = 0; i < skuStocks.size(); i++) {
goodsSkus.get(i).setQuantity(Convert.toInt(skuStocks.get(i).toString()));
}
//促销库存处理
if (!promotionKey.isEmpty()) {
List promotionStocks = cache.multiGet(promotionKey);
for (int i = 0; i < promotionKey.size(); i++) {
promotionGoods.get(i).setQuantity(Convert.toInt(promotionStocks.get(i).toString()));
Integer num = promotionGoods.get(i).getNum();
promotionGoods.get(i).setNum((num != null ? num : 0) + order.getOrder().getGoodsNum());
}
promotionGoodsService.updatePromotionGoodsStock(promotionGoods);
}
log.info("订单取消,库存还原:{}", goodsSkus);
//批量修改商品库存
goodsSkuService.updateBatchById(goodsSkus);
goodsSkuService.updateGoodsStuck(goodsSkus);
goodsSkuService.updateGoodsStock(goodsSkus);
}
}

View File

@@ -0,0 +1,206 @@
package cn.lili.event.impl;
import cn.lili.event.StoreSettingChangeEvent;
import cn.lili.modules.distribution.service.DistributionGoodsService;
import cn.lili.modules.distribution.service.DistributionOrderService;
import cn.lili.modules.goods.service.DraftGoodsService;
import cn.lili.modules.member.service.MemberEvaluationService;
import cn.lili.modules.message.service.StoreMessageService;
import cn.lili.modules.order.aftersale.service.AfterSaleService;
import cn.lili.modules.order.order.service.OrderComplaintService;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.order.order.service.ReceiptService;
import cn.lili.modules.order.order.service.StoreFlowService;
import cn.lili.modules.promotion.service.*;
import cn.lili.modules.store.entity.dos.Store;
import cn.lili.modules.store.service.BillService;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author ftyy
* @description: 店铺名称修改同步对应场景
* @date 2023/4/24
*/
@Service
public class StoreChangeEvent implements StoreSettingChangeEvent {
/**
* 优惠券活动表
*/
@Autowired
private CouponActivityService couponActivityService;
/**
* 砍价活动商品
*/
@Autowired
private KanjiaActivityGoodsService kanjiaActivityGoodsService;
/**
* 积分商品
*/
@Autowired
private PointsGoodsService pointsGoodsService;
/**
* 促销商品
*/
@Autowired
private PromotionGoodsService promotionGoodsService;
/**
* 秒杀活动活动
*/
@Autowired
private SeckillService seckillService;
/**
* 优惠券
*/
@Autowired
private CouponService couponService;
/**
* 满优惠活动
*/
@Autowired
private FullDiscountService fullDiscountService;
/**
* 拼团
*/
@Autowired
private PintuanService pintuanService;
/**
* 秒杀活动
*/
@Autowired
private SeckillApplyService seckillApplyService;
/**
* 订单
*/
@Autowired
private OrderService orderService;
/**
* 店铺流水
*/
@Autowired
private StoreFlowService storeFlowService;
/**
* 售后
*/
@Autowired
private AfterSaleService afterSaleService;
/**
* 订单投诉
*/
@Autowired
private OrderComplaintService orderComplaintService;
/**
* 发票
*/
@Autowired
private ReceiptService receiptService;
/**
* 会员优惠券
*/
@Autowired
private MemberCouponService memberCouponService;
/**
* 店铺消息
*/
@Autowired
private StoreMessageService storeMessageService;
/**
* 会员评价
*/
@Autowired
private MemberEvaluationService memberEvaluationService;
/**
* 结算单
*/
@Autowired
private BillService billService;
/**
* 分销商品
*/
@Autowired
private DistributionGoodsService distributionGoodsService;
/**
* 分销订单
*/
@Autowired
private DistributionOrderService distributionOrderService;
/**
* 草稿商品
*/
@Autowired
private DraftGoodsService draftGoodsService;
/**
* 店铺名称修改 同步更新相关店铺名称
*
* @param store 店铺信息
*/
@Override
public void storeSettingChange(Store store) {
UpdateWrapper updateWrapper = new UpdateWrapper<>()
.eq("store_id", store.getId())
.set("store_name", store.getStoreName());
//修改会员优惠券中店铺名称
memberCouponService.update(updateWrapper);
//修改优惠券活动中店铺名称
couponActivityService.update(updateWrapper);
//修改砍价活动商品中店铺名称
kanjiaActivityGoodsService.update(updateWrapper);
//修改积分商品中店铺名称
pointsGoodsService.update(updateWrapper);
//修改促销商品中店铺名称
promotionGoodsService.update(updateWrapper);
//修改秒杀活动活动中店铺名称
seckillService.update(updateWrapper);
//修改优惠券中店铺名称
couponService.update(updateWrapper);
//修改满优惠活动中店铺名称
fullDiscountService.update(updateWrapper);
//修改拼团中店铺名称
pintuanService.update(updateWrapper);
//修改秒杀活动中店铺名称
seckillApplyService.update(updateWrapper);
//修改发票中店铺名称
receiptService.update(updateWrapper);
//修改订单中的店铺名称
orderService.update(updateWrapper);
//修改店铺流水中店铺名称
storeFlowService.update(updateWrapper);
//修改售后中店铺名称
afterSaleService.update(updateWrapper);
//修改订单投诉中店铺名称
orderComplaintService.update(updateWrapper);
//修改店铺消息中的店铺名称
storeMessageService.update(updateWrapper);
//修改会员评价中店铺名称
memberEvaluationService.update(updateWrapper);
//修改结算单中店铺名称
billService.update(updateWrapper);
//修改分销订单中店铺名称
distributionOrderService.update(updateWrapper);
//修改分销商品中店铺名称
distributionGoodsService.update(updateWrapper);
//修改草稿商品中店铺名称
draftGoodsService.update(updateWrapper);
}
}

View File

@@ -31,7 +31,7 @@ public class VerificationOrderExecute implements OrderStatusChangeEvent {
@Override
public void orderChange(OrderMessage orderMessage) {
//订单状态为待核验,添加订单添加核验码
if (orderMessage.getNewStatus().equals(OrderStatusEnum.TAKE)) {
if (orderMessage.getNewStatus().equals(OrderStatusEnum.TAKE) || orderMessage.getNewStatus().equals(OrderStatusEnum.STAY_PICKED_UP)) {
//获取订单信息
Order order = orderService.getBySn(orderMessage.getOrderSn());
//获取随机数,判定是否存在
@@ -43,7 +43,7 @@ public class VerificationOrderExecute implements OrderStatusChangeEvent {
//修改虚拟订单货物可以进行售后、投诉
orderItemService.update(new LambdaUpdateWrapper<OrderItem>().eq(OrderItem::getOrderSn, orderMessage.getOrderSn())
.set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.NOT_APPLIED)
.set(OrderItem::getCommentStatus, OrderComplaintStatusEnum.NO_APPLY));
.set(OrderItem::getComplainStatus, OrderComplaintStatusEnum.NO_APPLY));
}
}

View File

@@ -0,0 +1,48 @@
package cn.lili.event.impl;
import cn.lili.event.OrderStatusChangeEvent;
import cn.lili.modules.order.order.entity.dto.OrderMessage;
import cn.lili.modules.wechat.service.WechatMPService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service ;
/**
* 微信小程序执行器
*
* @author Chopper
* @version v1.0 2021-04-19 14:25
*/
@Slf4j
@Service
public class WechatMPExecute implements OrderStatusChangeEvent {
@Autowired
private WechatMPService wechatMPService;
/**
* 订单已发货、待提货、待核验状态 如果是微信小程序的订单则进行 订单发货信息录入
*
* @param orderMessage 订单消息
*/
@Override
public void orderChange(OrderMessage orderMessage) {
switch (orderMessage.getNewStatus()) {
case TAKE:
case STAY_PICKED_UP:
case DELIVERED:
try {
wechatMPService.uploadShippingInfo(orderMessage.getOrderSn());
} catch (Exception e) {
log.error("发货信息录入失败", e);
}
break;
default:
break;
}
}
}

View File

@@ -39,9 +39,9 @@ public class WechatMessageExecute implements OrderStatusChangeEvent, TradeEvent
public void orderChange(OrderMessage orderMessage) {
switch (orderMessage.getNewStatus()) {
case PAID:
case UNDELIVERED:
case DELIVERED:
case STAY_PICKED_UP:
case COMPLETED:
try {
wechatMessageUtil.sendWechatMessage(orderMessage.getOrderSn());

View File

@@ -6,6 +6,9 @@ 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.aop.annotation.RetryOperation;
import cn.lili.common.exception.RetryException;
import cn.lili.common.vo.PageVO;
import cn.lili.event.GoodsCommentCompleteEvent;
import cn.lili.modules.distribution.entity.dos.DistributionGoods;
import cn.lili.modules.distribution.entity.dto.DistributionGoodsSearchParams;
@@ -30,8 +33,9 @@ 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;
import cn.lili.rocketmq.tags.GoodsTagsEnum;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -53,16 +57,13 @@ import java.util.stream.Collectors;
@RocketMQMessageListener(topic = "${lili.data.rocketmq.goods-topic}", consumerGroup = "${lili.data.rocketmq.goods-group}")
public class GoodsMessageListener implements RocketMQListener<MessageExt> {
private static final int BATCH_SIZE = 10;
/**
* ES商品
*/
@Autowired
private EsGoodsIndexService goodsIndexService;
/**
* 店铺
*/
@Autowired
private StoreService storeService;
/**
* 商品
*/
@@ -121,6 +122,7 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
private PromotionGoodsService promotionGoodsService;
@Override
@RetryOperation
public void onMessage(MessageExt messageExt) {
switch (GoodsTagsEnum.valueOf(messageExt.getTags())) {
@@ -135,20 +137,32 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
String goodsId = new String(messageExt.getBody());
log.info("生成索引: {}", goodsId);
Goods goods = this.goodsService.getById(goodsId);
updateGoodsIndex(goods);
this.updateGoodsIndex(goods);
} catch (Exception e) {
log.error("生成商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody()));
log.error("生成商品索引事件执行异常,商品信息: " + new String(messageExt.getBody()), e);
}
break;
case GENERATOR_STORE_GOODS_INDEX:
try {
String storeId = new String(messageExt.getBody());
this.updateGoodsIndex(storeId);
} catch (Exception e) {
log.error("生成店铺商品索引事件执行异常,商品信息: " + new String(messageExt.getBody()), e);
}
break;
case UPDATE_GOODS_INDEX_PROMOTIONS:
this.updateGoodsIndexPromotions(new String(messageExt.getBody()));
break;
case DELETE_GOODS_INDEX_PROMOTIONS:
BasePromotions promotions = JSONUtil.toBean(new String(messageExt.getBody()), BasePromotions.class);
if (CharSequenceUtil.isNotEmpty(promotions.getScopeId())) {
this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(Arrays.asList(promotions.getScopeId().split(",")), promotions.getId());
JSONObject jsonObject = JSONUtil.parseObj(new String(messageExt.getBody()));
String promotionKey = jsonObject.getStr("promotionKey");
if (CharSequenceUtil.isEmpty(promotionKey)) {
break;
}
if (CharSequenceUtil.isNotEmpty(jsonObject.getStr("scopeId"))) {
this.goodsIndexService.deleteEsGoodsPromotionByPromotionKey(Arrays.asList(jsonObject.getStr("scopeId").split(",")), promotionKey);
} else {
this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(null, promotions.getId());
this.goodsIndexService.deleteEsGoodsPromotionByPromotionKey(promotionKey);
}
break;
case UPDATE_GOODS_INDEX:
@@ -159,20 +173,18 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
List<Goods> goodsList = goodsService.queryListByParams(searchParams);
this.updateGoodsIndex(goodsList);
} catch (Exception e) {
log.error("更新商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody()));
log.error("更新商品索引事件执行异常,商品信息: " + new String(messageExt.getBody()), e);
}
break;
case UPDATE_GOODS_INDEX_FIELD:
try {
String updateIndexFieldsJsonStr = new String(messageExt.getBody());
JSONObject updateIndexFields = JSONUtil.parseObj(updateIndexFieldsJsonStr);
@SuppressWarnings("unchecked")
Map<String, Object> queryFields = updateIndexFields.get("queryFields", Map.class);
@SuppressWarnings("unchecked")
Map<String, Object> updateFields = updateIndexFields.get("updateFields", Map.class);
@SuppressWarnings("unchecked") Map<String, Object> queryFields = updateIndexFields.get("queryFields", Map.class);
@SuppressWarnings("unchecked") Map<String, Object> updateFields = updateIndexFields.get("updateFields", Map.class);
goodsIndexService.updateIndex(queryFields, updateFields);
} catch (Exception e) {
log.error("更新商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody()));
log.error("更新商品索引事件执行异常,商品信息: " + new String(messageExt.getBody()), e);
}
break;
case RESET_GOODS_INDEX:
@@ -181,13 +193,12 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
List<EsGoodsIndex> goodsIndices = JSONUtil.toList(goodsIdsJsonStr, EsGoodsIndex.class);
goodsIndexService.updateBulkIndex(goodsIndices);
} catch (Exception e) {
log.error("重置商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody()));
log.error("重置商品索引事件执行异常,商品信息: " + new String(messageExt.getBody()), e);
}
break;
//审核商品
case GOODS_AUDIT:
Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class);
updateGoodsNum(goods);
updateGoodsIndex(goods);
break;
//删除商品
@@ -195,27 +206,40 @@ public class GoodsMessageListener implements RocketMQListener<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<String> skuIdsByGoodsId = this.goodsSkuService.getSkuIdsByGoodsId(goodsId);
if (skuIdsByGoodsId != null && !skuIdsByGoodsId.isEmpty()) {
this.goodsIndexService.deleteIndexByIds(skuIdsByGoodsId);
}
}
goodsIndexService.deleteIndex(MapUtil.builder(new HashMap<String, Object>()).put("goodsId", goodsId).build());
}
promotionService.removeByGoodsIds(goodsIdsJsonStr);
} catch (Exception e) {
log.error("删除商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody()));
log.error("删除商品索引事件执行异常,商品信息: " + new String(messageExt.getBody()), e);
}
break;
case DOWN:
String goodsIdsJsonStr = new String(messageExt.getBody());
promotionService.removeByGoodsIds(goodsIdsJsonStr);
break;
//规格删除
case SKU_DELETE:
String message = new String(messageExt.getBody());
List<String> skuIds = JSONUtil.toList(message, String.class);
goodsCollectionService.deleteSkuCollection(skuIds);
break;
case STORE_GOODS_DELETE:
try {
String storeId = new String(messageExt.getBody());
goodsIndexService.deleteIndex(MapUtil.builder(new HashMap<String, Object>()).put("storeId", storeId).build());
} catch (RetryException re) {
throw re;
} catch (Exception e) {
log.error("删除店铺商品索引事件执行异常,商品信息: " + new String(messageExt.getBody()), e);
}
break;
//同步商品分类名称
case CATEGORY_GOODS_NAME:
//分类ID
String id = new String(messageExt.getBody());
goodsService.categoryGoodsName(id);
break;
//商品评价
case GOODS_COMMENT_COMPLETE:
MemberEvaluation memberEvaluation = JSONUtil.toBean(new String(messageExt.getBody()), MemberEvaluation.class);
@@ -223,10 +247,7 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
try {
goodsCommentCompleteEvent.goodsComment(memberEvaluation);
} catch (Exception e) {
log.error("评价{},在{}业务中,状态修改事件执行异常",
new String(messageExt.getBody()),
goodsCommentCompleteEvent.getClass().getName(),
e);
log.error("评价{},在{}业务中,状态修改事件执行异常", new String(messageExt.getBody()), goodsCommentCompleteEvent.getClass().getName(), e);
}
}
break;
@@ -244,23 +265,46 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
try {
log.info("更新商品索引促销信息: {}", promotionsJsonStr);
JSONObject jsonObject = JSONUtil.parseObj(promotionsJsonStr);
BasePromotions promotions = (BasePromotions) jsonObject.get("promotions",
ClassLoaderUtil.loadClass(jsonObject.get("promotionsType").toString()));
// 转换为详细的促销信息(注:促销信息必须继承自 BasePromotions且必须保证派生类存在与sdk包下
BasePromotions promotions = (BasePromotions) jsonObject.get("promotions", ClassLoaderUtil.loadClass(jsonObject.get("promotionsType").toString()));
// 获取促销唯一key,由 促销类型 + 促销id 组成
String esPromotionKey = jsonObject.get("esPromotionKey").toString();
if (PromotionsScopeTypeEnum.PORTION_GOODS.name().equals(promotions.getScopeType())) {
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
searchParams.setPromotionId(promotions.getId());
List<PromotionGoods> promotionGoodsList = this.promotionGoodsService.listFindAll(searchParams);
List<String> skuIds = promotionGoodsList.stream().map(PromotionGoods::getSkuId).collect(Collectors.toList());
this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(skuIds, promotions.getId());
this.goodsIndexService.updateEsGoodsIndexByList(promotionGoodsList, promotions, esPromotionKey);
for (int i = 0; ; i++) {
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
searchParams.setPromotionId(promotions.getId());
PageVO pageVO = new PageVO();
pageVO.setPageNumber(i);
pageVO.setPageSize(BATCH_SIZE);
Page<PromotionGoods> promotionGoodsPage = this.promotionGoodsService.pageFindAll(searchParams, pageVO);
if (promotionGoodsPage == null || promotionGoodsPage.getRecords().isEmpty()) {
break;
}
List<String> skuIds = promotionGoodsPage.getRecords().stream().map(PromotionGoods::getSkuId).collect(Collectors.toList());
// 更新商品索引促销信息(删除原索引中相关的促销信息,更新索引中促销信息)
this.goodsIndexService.deleteEsGoodsPromotionByPromotionKey(skuIds, esPromotionKey);
this.goodsIndexService.updateEsGoodsIndexByList(promotionGoodsPage.getRecords(), promotions, esPromotionKey);
}
} else if (PromotionsScopeTypeEnum.PORTION_GOODS_CATEGORY.name().equals(promotions.getScopeType())) {
GoodsSearchParams searchParams = new GoodsSearchParams();
searchParams.setCategoryPath(promotions.getScopeId());
List<GoodsSku> goodsSkuByList = this.goodsSkuService.getGoodsSkuByList(searchParams);
List<String> skuIds = goodsSkuByList.stream().map(GoodsSku::getId).collect(Collectors.toList());
this.goodsIndexService.deleteEsGoodsPromotionByPromotionId(skuIds, promotions.getId());
this.goodsIndexService.updateEsGoodsIndexPromotions(skuIds, promotions, esPromotionKey);
for (int i = 0; ; i++) {
GoodsSearchParams searchParams = new GoodsSearchParams();
searchParams.setCategoryPath(promotions.getScopeId());
searchParams.setPageNumber(i);
searchParams.setPageSize(BATCH_SIZE);
if (CharSequenceUtil.isNotEmpty(promotions.getStoreId()) && !"0".equals(promotions.getStoreId())){
searchParams.setStoreId(promotions.getStoreId());
}
IPage<GoodsSku> goodsSkuByPage = this.goodsSkuService.getGoodsSkuByPage(searchParams);
if (goodsSkuByPage == null || goodsSkuByPage.getRecords().isEmpty()) {
break;
}
List<String> skuIds = goodsSkuByPage.getRecords().stream().map(GoodsSku::getId).collect(Collectors.toList());
// 更新商品索引促销信息(删除原索引中相关的促销信息,更新索引中促销信息)
this.goodsIndexService.deleteEsGoodsPromotionByPromotionKey(skuIds, esPromotionKey);
this.goodsIndexService.updateEsGoodsIndexPromotions(skuIds, promotions, esPromotionKey);
}
} else if (PromotionsScopeTypeEnum.ALL.name().equals(promotions.getScopeType())) {
this.goodsIndexService.updateEsGoodsIndexAllByList(promotions, esPromotionKey);
}
@@ -275,32 +319,25 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
* @param goodsList 商品列表消息
*/
private void updateGoodsIndex(List<Goods> goodsList) {
List<EsGoodsIndex> goodsIndices = new ArrayList<>();
for (Goods goods : goodsList) {
//如果商品通过审核&&并且已上架
GoodsSearchParams searchParams = new GoodsSearchParams();
searchParams.setGoodsId(goods.getId());
searchParams.setGeQuantity(0);
List<GoodsSku> goodsSkuList = this.goodsSkuService.getGoodsSkuByList(searchParams);
if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name())
&& goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name())
&& Boolean.FALSE.equals(goods.getDeleteFlag())) {
goodsSkuList.forEach(goodsSku -> {
EsGoodsIndex goodsIndex = this.settingUpGoodsIndexData(goods, goodsSku);
goodsIndices.add(goodsIndex);
});
}
//如果商品状态值不支持es搜索那么将商品信息做下架处理
else {
for (GoodsSku goodsSku : goodsSkuList) {
EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId());
if (esGoodsOld != null) {
goodsIndexService.deleteIndexById(goodsSku.getId());
}
}
}
this.updateGoodsIndex(goods);
}
goodsIndexService.updateBulkIndex(goodsIndices);
}
/**
* 更新商品索引根据店铺id
*
* @param storeId 店铺id
*/
private void updateGoodsIndex(String storeId) {
//如果商品通过审核&&并且已上架
GoodsSearchParams searchParams = new GoodsSearchParams();
searchParams.setStoreId(storeId);
for (Goods goods : this.goodsService.queryListByParams(searchParams)) {
this.updateGoodsIndex(goods);
}
}
/**
@@ -309,26 +346,32 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
* @param goods 商品消息
*/
private void updateGoodsIndex(Goods goods) {
//如果商品通过审核&&并且已上架
GoodsSearchParams searchParams = new GoodsSearchParams();
searchParams.setGoodsId(goods.getId());
List<GoodsSku> 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())) {
this.generatorGoodsIndex(goods, goodsSkuList);
}
//如果商品状态值不支持es搜索那么将商品信息做下架处理
else {
for (GoodsSku goodsSku : goodsSkuList) {
EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId());
if (esGoodsOld != null) {
goodsIndexService.deleteIndexById(goodsSku.getId());
for (int i = 1; ; i++) {
//如果商品通过审核&&并且已上架
GoodsSearchParams searchParams = new GoodsSearchParams();
searchParams.setGoodsId(goods.getId());
searchParams.setPageNumber(i);
searchParams.setPageSize(BATCH_SIZE);
searchParams.setGeQuantity(0);
IPage<GoodsSku> goodsSkuByPage = this.goodsSkuService.getGoodsSkuByPage(searchParams);
if (goodsSkuByPage == null || goodsSkuByPage.getRecords().isEmpty()) {
break;
}
log.info("goods{}", goods);
log.info("goodsSkuList{}", goodsSkuByPage.getRecords());
if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) {
this.generatorGoodsIndex(goods, goodsSkuByPage.getRecords());
} else {
//如果商品状态值不支持es搜索那么将商品信息做下架处理
for (GoodsSku goodsSku : goodsSkuByPage.getRecords()) {
EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId());
if (esGoodsOld != null) {
goodsIndexService.deleteIndexById(goodsSku.getId());
}
}
}
}
}
/**
@@ -339,20 +382,20 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
*/
private void generatorGoodsIndex(Goods goods, List<GoodsSku> goodsSkuList) {
int skuSource = 100;
List<EsGoodsIndex> esGoodsIndices = new ArrayList<>();
for (GoodsSku goodsSku : goodsSkuList) {
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);
this.goodsIndexService.addIndex(goodsIndex);
} else if (goodsSku.getQuantity() > 0 && esGoodsOld != null) {
goodsIndexService.updateIndex(goodsIndex);
skuSource--;
if (skuSource <= 0) {
skuSource = 1;
}
goodsIndex.setSkuSource(skuSource);
log.info("goodsSku{}", goodsSku);
log.info("生成商品索引 {}", goodsIndex);
esGoodsIndices.add(goodsIndex);
}
this.goodsIndexService.deleteIndex(MapUtil.builder(new HashMap<String, Object>()).put("goodsId", goods.getId()).build());
this.goodsIndexService.addIndex(esGoodsIndices);
}
private EsGoodsIndex settingUpGoodsIndexData(Goods goods, GoodsSku goodsSku) {
@@ -389,7 +432,7 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
}
}
if (goodsIndex.getPromotionMap() == null || goodsIndex.getPromotionMap().isEmpty()) {
if (goodsIndex.getOriginPromotionMap() == null || goodsIndex.getOriginPromotionMap().isEmpty()) {
Map<String, Object> goodsCurrentPromotionMap = promotionService.getGoodsSkuPromotionMap(goodsIndex.getStoreId(), goodsIndex.getId());
goodsIndex.setPromotionMapJson(JSONUtil.toJsonStr(goodsCurrentPromotionMap));
}
@@ -421,21 +464,6 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
}
}
/**
* 修改商品数量
*
* @param goods 信息体
*/
private void updateGoodsNum(Goods goods) {
try {
//更新店铺商品数量
assert goods != null;
storeService.updateStoreGoodsNum(goods.getStoreId());
} catch (Exception e) {
log.error("修改商品数量错误");
}
}
/**
* 商品购买完成
* 1.更新商品购买数量
@@ -467,11 +495,9 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
}
int buyCount = goodsSku.getBuyCount() + goodsCompleteMessage.getBuyNum();
goodsSku.setBuyCount(buyCount);
goodsSkuService.update(goodsSku);
goodsSkuService.updateGoodsSkuBuyCount(goodsSku.getId(), buyCount);
this.goodsIndexService.updateIndex(
MapUtil.builder(new HashMap<String, Object>()).put("id", goodsCompleteMessage.getSkuId()).build(),
MapUtil.builder(new HashMap<String, Object>()).put("buyCount", buyCount).build());
this.goodsIndexService.updateIndex(MapUtil.builder(new HashMap<String, Object>()).put("id", goodsCompleteMessage.getSkuId()).build(), MapUtil.builder(new HashMap<String, Object>()).put("buyCount", buyCount).build());
} else {
log.error("商品SkuId为[" + goodsCompleteMessage.getGoodsId() + "的商品不存在,更新商品失败!");

View File

@@ -1,10 +1,9 @@
package cn.lili.listener;
import cn.hutool.json.JSONUtil;
import cn.lili.event.MemberLoginEvent;
import cn.lili.event.MemberPointChangeEvent;
import cn.lili.event.MemberRegisterEvent;
import cn.lili.event.MemberWithdrawalEvent;
import cn.lili.event.*;
import cn.lili.event.impl.ImTalkExecute;
import cn.lili.modules.connect.entity.dto.MemberConnectLoginMessage;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dos.MemberSign;
import cn.lili.modules.member.entity.dto.MemberPointMessage;
@@ -57,7 +56,10 @@ public class MemberMessageListener implements RocketMQListener<MessageExt> {
*/
@Autowired
private List<MemberLoginEvent> memberLoginEvents;
@Autowired
private List<MemberInfoChangeEvent> memberInfoChangeEvents;
@Autowired
private List<MemberConnectLoginEvent> memberConnectLoginEvents;
@Override
public void onMessage(MessageExt messageExt) {
@@ -76,7 +78,7 @@ public class MemberMessageListener implements RocketMQListener<MessageExt> {
}
}
break;
//用户登录
case MEMBER_LOGIN:
for (MemberLoginEvent memberLoginEvent : memberLoginEvents) {
@@ -110,6 +112,20 @@ public class MemberMessageListener implements RocketMQListener<MessageExt> {
}
}
break;
//会员信息更改
case MEMBER_INFO_EDIT:
for (MemberInfoChangeEvent memberInfoChangeEvent : memberInfoChangeEvents) {
try {
Member member = JSONUtil.toBean(new String(messageExt.getBody()), Member.class);
memberInfoChangeEvent.memberInfoChange(member);
} catch (Exception e) {
log.error("会员{},在{}业务中,提现事件执行异常",
new String(messageExt.getBody()),
memberInfoChangeEvent.getClass().getName(),
e);
}
}
break;
//会员提现
case MEMBER_WITHDRAWAL:
for (MemberWithdrawalEvent memberWithdrawalEvent : memberWithdrawalEvents) {
@@ -124,6 +140,20 @@ public class MemberMessageListener implements RocketMQListener<MessageExt> {
}
}
break;
//用户第三方登录
case MEMBER_CONNECT_LOGIN:
for (MemberConnectLoginEvent memberConnectLoginEvent : memberConnectLoginEvents) {
try {
MemberConnectLoginMessage memberConnectLoginMessage = JSONUtil.toBean(new String(messageExt.getBody()), MemberConnectLoginMessage.class);
memberConnectLoginEvent.memberConnectLogin(memberConnectLoginMessage.getMember(), memberConnectLoginMessage.getConnectAuthUser());
} catch (Exception e) {
log.error("会员{},在{}业务中,状态修改事件执行异常",
new String(messageExt.getBody()),
memberConnectLoginEvent.getClass().getName(),
e);
}
}
break;
default:
break;
}

View File

@@ -0,0 +1,51 @@
package cn.lili.listener;
import cn.hutool.json.JSONUtil;
import cn.lili.event.MemberRegisterEvent;
import cn.lili.event.StoreSettingChangeEvent;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.store.entity.dos.Store;
import cn.lili.rocketmq.tags.StoreTagsEnum;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 店铺消息
* @author chc
* @since 2022/6/2114:46
*/
@Component
@Slf4j
@RocketMQMessageListener(topic = "${lili.data.rocketmq.store-topic}", consumerGroup = "${lili.data.rocketmq.store-group}")
public class StoreMessageListener implements RocketMQListener<MessageExt> {
@Autowired
private List<StoreSettingChangeEvent> storeSettingChangeEventList;
@Override
public void onMessage(MessageExt messageExt) {
switch (StoreTagsEnum.valueOf(messageExt.getTags())){
//修改店铺
case EDIT_STORE_SETTING:
for (StoreSettingChangeEvent storeSettingChangeEvent : storeSettingChangeEventList) {
try {
Store store = JSONUtil.toBean(new String(messageExt.getBody()), Store.class);
storeSettingChangeEvent.storeSettingChange(store);
} catch (Exception e) {
log.error("会员{},在{}业务中,状态修改事件执行异常",
new String(messageExt.getBody()),
storeSettingChangeEvent.getClass().getName(),
e);
}
}
break;
default:
break;
}
}
}

View File

@@ -0,0 +1,18 @@
package cn.lili.sucurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.stereotype.Component;
/**
* @author paulG
* @since 2022/2/18
**/
@Component
public class ConsumerSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin().disable();
}
}

View File

@@ -71,7 +71,7 @@ public class TimedTaskJobHandler {
try {
everyHourExecutes.get(i).execute();
} catch (Exception e) {
log.error("分钟任务异常", e);
log.error("小时任务异常", e);
}
}
return ReturnT.SUCCESS;
@@ -94,7 +94,7 @@ public class TimedTaskJobHandler {
try {
everyDayExecutes.get(i).execute();
} catch (Exception e) {
log.error("分钟任务异常", e);
log.error("任务异常", e);
}
}
return ReturnT.SUCCESS;

View File

@@ -1,60 +0,0 @@
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.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 java.util.List;
/**
* 店铺结算执行
*
* @author Bulbasaur
* @since 2021/2/18 3:45 下午
*/
@Component
public class BillExecute implements EveryDayExecute {
/**
* 结算单
*/
@Autowired
private BillService billService;
/**
* 店铺详情
*/
@Autowired
private StoreDetailService storeDetailService;
/**
* 1.查询今日待结算的商家
* 2.查询商家上次结算日期,生成本次结算单
* 3.记录商家结算日
*/
@Override
public void execute() {
//获取当前天数
int day = DateUtil.date().dayOfMonth();
//获取待结算商家列表
List<StoreSettlementDay> storeList = storeDetailService.getSettlementStore(day);
//获取当前时间
DateTime endTime = DateUtil.date();
//批量商家结算
for (StoreSettlementDay storeSettlementDay : storeList) {
//生成结算单
billService.createBill(storeSettlementDay.getStoreId(), storeSettlementDay.getSettlementDay(), endTime);
//修改店铺结算时间
storeDetailService.updateSettlementDay(storeSettlementDay.getStoreId(), endTime);
}
}
}

View File

@@ -34,7 +34,7 @@ public class CouponExecute implements EveryDayExecute {
*/
@Override
public void execute() {
//将过期优惠券变更为过期状
//将过期优惠券变更为过期状
LambdaUpdateWrapper<MemberCoupon> updateWrapper = new LambdaUpdateWrapper<MemberCoupon>()
.eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name())
.le(MemberCoupon::getEndTime, new Date())

View File

@@ -3,14 +3,12 @@ package cn.lili.timetask.handler.impl.goods;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.lili.modules.goods.mapper.GoodsMapper;
import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.member.mapper.MemberEvaluationMapper;
import cn.lili.modules.goods.service.GoodsService;
import cn.lili.modules.member.service.MemberEvaluationService;
import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@@ -25,13 +23,13 @@ public class GoodsExecute implements EveryDayExecute {
/**
* 会员评价
*/
@Resource
private MemberEvaluationMapper memberEvaluationMapper;
@Autowired
private MemberEvaluationService memberEvaluationService;
/**
* 商品
*/
@Resource
private GoodsMapper goodsMapper;
@Autowired
private GoodsService goodsService;
/**
* 查询已上架的商品的评价数量并赋值
@@ -40,12 +38,10 @@ public class GoodsExecute implements EveryDayExecute {
public void execute() {
//查询上次统计到本次的评价数量
List<Map<String, Object>> list = memberEvaluationMapper.memberEvaluationNum(
new QueryWrapper<MemberEvaluation>()
.between("create_time", DateUtil.yesterday(), new DateTime()));
List<Map<String, Object>> list = memberEvaluationService.memberEvaluationNum(DateUtil.yesterday(), new DateTime());
for (Map<String, Object> map : list) {
goodsMapper.addGoodsCommentNum(Convert.toInt(map.get("num").toString()), map.get("goods_id").toString());
goodsService.addGoodsCommentNum(Convert.toInt(map.get("num").toString()), map.get("goods_id").toString());
}
}

View File

@@ -1,11 +1,24 @@
package cn.lili.timetask.handler.impl.hotwords;
import cn.hutool.json.JSONUtil;
import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.search.entity.dos.HotWordsHistory;
import cn.lili.modules.search.service.HotWordsHistoryService;
import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.dto.HotWordsSetting;
import cn.lili.modules.system.entity.dto.HotWordsSettingItem;
import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService;
import cn.lili.timetask.handler.EveryDayExecute;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.DefaultTypedTuple;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.*;
/**
* @author paulG
@@ -18,13 +31,54 @@ public class HotWordsEveryDayTaskExecute implements EveryDayExecute {
@Autowired
private Cache cache;
@Autowired
private HotWordsHistoryService hotWordsHistoryService;
@Autowired
private SettingService settingService;
/**
* 执行每日任务
*/
@Override
public void execute() {
//获取大于0分的热词
Set<DefaultTypedTuple> tuples = cache.zRangeByScore(CachePrefix.HOT_WORD.getPrefix(), 1, Integer.MAX_VALUE);
//如果任务不为空
if (!CollectionUtils.isEmpty(tuples)) {
//因为是第二天统计第一天的数据,所以这里获取昨天凌晨的时间
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 1);
//批量保存热词
List<HotWordsHistory> hotWordsHistories = new ArrayList<>();
for (DefaultTypedTuple tuple : tuples) {
String keywords = (String) tuple.getValue();
Double score = tuple.getScore();
hotWordsHistories.add(new HotWordsHistory(keywords, score.intValue(), calendar.getTime()));
}
hotWordsHistoryService.saveBatch(hotWordsHistories);
}
//移除昨日的热搜词
cache.remove(CachePrefix.HOT_WORD.getPrefix());
//设置今日默认热词
Setting setting = settingService.get(SettingEnum.HOT_WORDS.name());
if (setting == null) {
return;
}
HotWordsSetting hotWordsSetting = JSONUtil.toBean(setting.getSettingValue(), HotWordsSetting.class);
List<HotWordsSettingItem> hotWordsSettingItems = hotWordsSetting.getHotWordsSettingItems();
if (hotWordsSettingItems != null && !hotWordsSettingItems.isEmpty()) {
for (HotWordsSettingItem hotWordsSettingItem : hotWordsSettingItems) {
cache.zAdd(CachePrefix.HOT_WORD.getPrefix(), hotWordsSettingItem.getScore(), hotWordsSettingItem.getKeywords());
}
}
}
}

View File

@@ -54,7 +54,7 @@ public class CancelOrderTaskExecute implements EveryMinuteExecute {
List<Order> list = orderService.list(queryWrapper);
List<String> cancelSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
for (String sn : cancelSnList) {
orderService.systemCancel(sn, "超时未支付自动取消");
orderService.systemCancel(sn, "超时未支付自动取消",false);
}
}
}

View File

@@ -5,32 +5,35 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.modules.distribution.service.DistributionOrderService;
import cn.lili.modules.member.entity.dto.MemberEvaluationDTO;
import cn.lili.modules.member.entity.enums.EvaluationGradeEnum;
import cn.lili.modules.member.service.MemberEvaluationService;
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.dto.OrderItemOperationDTO;
import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
import cn.lili.modules.order.order.mapper.OrderItemMapper;
import cn.lili.modules.order.order.service.OrderItemService;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.order.order.service.StoreFlowService;
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
import cn.lili.modules.store.service.BillService;
import cn.lili.modules.store.service.StoreDetailService;
import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.dto.OrderSetting;
import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService;
import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@@ -53,8 +56,6 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
*/
@Autowired
private OrderItemService orderItemService;
@Resource
private OrderItemMapper orderItemMapper;
/**
* 设置
*/
@@ -67,7 +68,21 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
private MemberEvaluationService memberEvaluationService;
@Autowired
private AfterSaleService afterSaleService;
private DistributionOrderService distributionOrderService;
@Autowired
private StoreFlowService storeFlowService;
/**
* 结算单
*/
@Autowired
private BillService billService;
/**
* 店铺详情
*/
@Autowired
private StoreDetailService storeDetailService;
/**
* 执行每日任务
@@ -82,14 +97,46 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
throw new ServiceException(ResultCode.ORDER_SETTING_ERROR);
}
//自动确认收货
completedOrder(orderSetting);
//自动好评
memberEvaluation(orderSetting);
//关闭允许售后申请
closeAfterSale(orderSetting);
//关闭允许投诉
closeComplaint(orderSetting);
try {
//自动确认收货
completedOrder(orderSetting);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
try {
//自动好评
memberEvaluation(orderSetting);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
try {
//关闭允许售后申请
this.closeAfterSale(orderSetting);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
try {
//关闭允许投诉
closeComplaint(orderSetting);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
//修改分账状态
try {
storeFlowService.updateProfitSharingStatus();
} catch (Exception e) {
log.error("修改分账状态失败", e);
}
//生成店铺结算单
try {
createBill();
} catch (Exception e) {
log.error("生成店铺结算单", e);
}
}
/**
@@ -99,7 +146,6 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
*/
private void completedOrder(OrderSetting orderSetting) {
//订单自动收货时间 = 当前时间 - 自动收货时间天数
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoReceive());
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
@@ -109,12 +155,16 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
queryWrapper.le(Order::getLogisticsTime, receiveTime);
List<Order> list = orderService.list(queryWrapper);
//判断是否有符合条件的订单,进行订单完成处理
if (!list.isEmpty()) {
List<String> receiveSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
for (String orderSn : receiveSnList) {
orderService.systemComplete(orderSn);
try {
//判断是否有符合条件的订单,进行订单完成处理
if (!list.isEmpty()) {
List<String> receiveSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
for (String orderSn : receiveSnList) {
orderService.systemComplete(orderSn);
}
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
@@ -128,10 +178,10 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
//订单完成时间 <= 订单自动好评时间
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.le("o.complete_time", receiveTime);
queryWrapper.eq("oi.comment_status", CommentStatusEnum.UNFINISHED.name());
List<OrderItem> orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
OrderItemOperationDTO orderItemOperationDTO =
OrderItemOperationDTO.builder().receiveTime(receiveTime).commentStatus(CommentStatusEnum.UNFINISHED.name())
.build();
List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(orderItemOperationDTO);
//判断是否有符合条件的订单,进行自动评价处理
if (!orderItems.isEmpty()) {
@@ -146,40 +196,32 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
memberEvaluationDTO.setDescriptionScore(5);
memberEvaluationDTO.setServiceScore(5);
memberEvaluationService.addMemberEvaluation(memberEvaluationDTO, false);
try {
memberEvaluationService.addMemberEvaluation(memberEvaluationDTO, false);
} catch (Exception e) {
// 修改订单货物评价状态为已评价避免无限调用评价异常
orderItemService.updateCommentStatus(orderItem.getSn(), CommentStatusEnum.FINISHED);
log.error(e.getMessage(), e);
}
}
}
}
/**
* 关闭允许售后申请
*
* @param orderSetting 订单设置
*/
private void closeAfterSale(OrderSetting orderSetting) {
@Transactional(rollbackFor = Exception.class)
public void closeAfterSale(OrderSetting orderSetting) {
//订单关闭售后申请时间 = 当前时间 - 自动关闭售后申请天数
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseAfterSale());
// OrderItemOperationDTO build = OrderItemOperationDTO.builder().receiveTime(receiveTime)
// .afterSaleStatus(OrderItemAfterSaleStatusEnum.NOT_APPLIED.name()).build();
// List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(build);
//关闭售后订单=未售后订单+小于订单关闭售后申请时间
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.le("o.complete_time", receiveTime);
queryWrapper.eq("oi.after_sale_status", OrderItemAfterSaleStatusEnum.NOT_APPLIED.name());
List<OrderItem> orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
//判断是否有符合条件的订单,关闭允许售后申请处理
if (!orderItems.isEmpty()) {
//获取订单货物ID
List<String> orderItemIdList = orderItems.stream().map(OrderItem::getId).collect(Collectors.toList());
//修改订单售后状态
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper = new LambdaUpdateWrapper<OrderItem>()
.set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.EXPIRED.name())
.in(OrderItem::getId, orderItemIdList);
orderItemService.update(lambdaUpdateWrapper);
}
orderItemService.expiredAfterSaleStatus(receiveTime);
}
@@ -190,14 +232,17 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
*/
private void closeComplaint(OrderSetting orderSetting) {
//为0则不限制
if (orderSetting.getCloseComplaint() == null || orderSetting.getCloseComplaint() == 0) {
return;
}
//订单关闭交易投诉申请时间 = 当前时间 - 自动关闭交易投诉申请天数
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseComplaint());
//关闭售后订单=未售后订单+小于订单关闭售后申请时间
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.le("o.complete_time", receiveTime);
queryWrapper.eq("oi.complain_status", OrderComplaintStatusEnum.NO_APPLY.name());
List<OrderItem> orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
OrderItemOperationDTO build = OrderItemOperationDTO.builder().receiveTime(receiveTime)
.complainStatus(OrderComplaintStatusEnum.NO_APPLY.name()).build();
List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(build);
//判断是否有符合条件的订单,关闭允许售后申请处理
if (!orderItems.isEmpty()) {
@@ -206,12 +251,37 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
List<String> orderItemIdList = orderItems.stream().map(OrderItem::getId).collect(Collectors.toList());
//修改订单投诉状态
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper = new LambdaUpdateWrapper<OrderItem>()
.set(OrderItem::getComplainStatus, OrderItemAfterSaleStatusEnum.EXPIRED.name())
.in(OrderItem::getId, orderItemIdList);
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper =
new LambdaUpdateWrapper<OrderItem>().set(OrderItem::getComplainStatus,
OrderItemAfterSaleStatusEnum.EXPIRED.name()).in(OrderItem::getId, orderItemIdList);
orderItemService.update(lambdaUpdateWrapper);
}
}
/**
* 1.查询今日待结算的商家
* 2.查询商家上次结算日期,生成本次结算单
* 3.记录商家结算日
*/
private void createBill() {
//获取当前天数
int day = DateUtil.date().dayOfMonth();
//获取待结算商家列表
List<StoreSettlementDay> storeList = storeDetailService.getSettlementStore(day);
//获取当前时间
DateTime endTime = DateUtil.date();
//批量商家结算
for (StoreSettlementDay storeSettlementDay : storeList) {
//生成结算单
billService.createBill(storeSettlementDay.getStoreId(), storeSettlementDay.getSettlementDay(), endTime);
//修改店铺结算时间
storeDetailService.updateSettlementDay(storeSettlementDay.getStoreId(), endTime);
}
}
}

View File

@@ -0,0 +1,45 @@
package cn.lili.timetask.handler.impl.promotion;
import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.modules.promotion.entity.dos.Seckill;
import cn.lili.modules.promotion.service.MemberCouponSignService;
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.timetask.handler.EveryDayExecute;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 促销活动每日定时器
*
* @author Chopper
* @since 2021/3/18 3:23 下午
*/
@Slf4j
@Component
public class MemberCouponSignEverydayExecute implements EveryDayExecute {
@Autowired
private MemberCouponSignService memberCouponSignService;
/**
* 将已过期的促销活动置为结束
*/
@Override
public void execute() {
try {
memberCouponSignService.clean();
} catch (Exception e) {
log.error("清除领取优惠券标记异常", e);
}
}
}

View File

@@ -1,7 +1,9 @@
package cn.lili.timetask.handler.impl.promotion;
import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.modules.promotion.entity.dos.Seckill;
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;
@@ -62,14 +64,22 @@ public class PromotionEverydayExecute implements EveryDayExecute {
/**
* 添加秒杀活动
* 从系统设置中获取秒杀活动的配置
* 添加30天后的秒杀活动
* 添加天后的秒杀活动
*/
private void addSeckill() {
Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name());
SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class);
log.info("生成秒杀活动设置:{}", seckillSetting);
for (int i = 1; i <= SeckillService.PRE_CREATION; i++) {
Seckill seckill = new Seckill(i, seckillSetting.getHours(), seckillSetting.getSeckillRule());
seckillService.savePromotions(seckill);
seckill.setApplyEndTime(null);
//如果已经存在促销,则不再次保存
if (seckillService.list(
PromotionTools.checkActiveTime(seckill.getStartTime(), seckill.getEndTime(), PromotionTypeEnum.SECKILL, null, seckill.getId())).isEmpty()) {
boolean result = seckillService.savePromotions(seckill);
log.info("生成秒杀活动参数:{},结果:{}", seckill, result);
}
}
}
}

View File

@@ -13,6 +13,7 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
@@ -54,8 +55,16 @@ public class OnlineMemberStatistics implements EveryHourExecute {
calendar.set(Calendar.MILLISECOND, 0);
Calendar finalCalendar = calendar;
AtomicReference<Integer> lastNum = new AtomicReference<>(0);
onlineMemberVOS = onlineMemberVOS.stream()
.filter(onlineMemberVO -> onlineMemberVO.getDate().after(finalCalendar.getTime()))
.filter(onlineMemberVO -> {
//如果为过滤参数,则记录为过期参数,则为统一时段上一周期的在线人数
if (!onlineMemberVO.getDate().after(finalCalendar.getTime())) {
lastNum.set(onlineMemberVO.getNum());
}
return onlineMemberVO.getDate().after(finalCalendar.getTime());
})
.collect(Collectors.toList());
//计入新数据
@@ -63,7 +72,8 @@ public class OnlineMemberStatistics implements EveryHourExecute {
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
onlineMemberVOS.add(new OnlineMemberVO(calendar.getTime(), cache.keys(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER) + "*").size()));
onlineMemberVOS.add(new OnlineMemberVO(calendar.getTime(), cache.keys(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER) + "*").size(),
lastNum.get()));
//写入缓存
cache.put(CachePrefix.ONLINE_MEMBER.getPrefix(), onlineMemberVOS);
@@ -95,7 +105,7 @@ public class OnlineMemberStatistics implements EveryHourExecute {
onlineMemberVOS = onlineMemberVOS.stream()
.filter(onlineMemberVO -> onlineMemberVO.getDate().after(calendar.getTime()))
.collect(Collectors.toList());
onlineMemberVOS.add(new OnlineMemberVO(time, num));
onlineMemberVOS.add(new OnlineMemberVO(time, num, num));
//写入缓存
cache.put(CachePrefix.ONLINE_MEMBER.getPrefix(), onlineMemberVOS);

View File

@@ -0,0 +1,49 @@
package cn.lili.timetask.handler.impl.store;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.store.entity.dos.Store;
import cn.lili.modules.store.entity.enums.StoreStatusEnum;
import cn.lili.modules.store.service.StoreService;
import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 店铺信息更新
*
* @author Chopper
* @since 2021/3/15 5:30 下午
*/
@Component
@Slf4j
public class StoreExecute implements EveryDayExecute {
/**
* 店铺
*/
@Autowired
private StoreService storeService;
@Autowired
private GoodsSkuService goodsSkuService;
@Override
public void execute() {
//获取所有开启的店铺
List<Store> storeList = storeService.list(new LambdaQueryWrapper<Store>().eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()));
for (Store store : storeList) {
try {
Long num = goodsSkuService.countSkuNum(store.getId());
storeService.updateStoreGoodsNum(store.getId(), num);
} catch (Exception e) {
log.error("店铺id为{},更新商品数量失败", store.getId(), e);
}
}
}
}

View File

@@ -1,9 +1,8 @@
package cn.lili.timetask.handler.impl.storerating;
package cn.lili.timetask.handler.impl.store;
import cn.lili.common.enums.SwitchEnum;
import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.member.entity.vo.StoreRatingVO;
import cn.lili.modules.member.mapper.MemberEvaluationMapper;
import cn.lili.modules.member.service.MemberEvaluationService;
import cn.lili.modules.store.entity.dos.Store;
import cn.lili.modules.store.entity.enums.StoreStatusEnum;
import cn.lili.modules.store.service.StoreService;
@@ -14,7 +13,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
@@ -33,8 +31,8 @@ public class StoreRatingExecute implements EveryDayExecute {
/**
* 会员评价
*/
@Resource
private MemberEvaluationMapper memberEvaluationMapper;
@Autowired
private MemberEvaluationService memberEvaluationService;
@Override
@@ -43,10 +41,7 @@ public class StoreRatingExecute implements EveryDayExecute {
List<Store> storeList = storeService.list(new LambdaQueryWrapper<Store>().eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name()));
for (Store store : storeList) {
//店铺所有开启的评价
LambdaQueryWrapper<MemberEvaluation> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(MemberEvaluation::getStoreId, store.getId());
lambdaQueryWrapper.eq(MemberEvaluation::getStatus, SwitchEnum.OPEN.name());
StoreRatingVO storeRatingVO = memberEvaluationMapper.getStoreRatingVO(lambdaQueryWrapper);
StoreRatingVO storeRatingVO = memberEvaluationService.getStoreRatingVO(store.getId(), SwitchEnum.OPEN.name());
if (storeRatingVO != null) {
//保存评分

View File

@@ -0,0 +1,31 @@
package cn.lili.trigger.executor;
import cn.hutool.json.JSONUtil;
import cn.lili.modules.promotion.service.CouponActivityService;
import cn.lili.trigger.TimeTriggerExecutor;
import cn.lili.trigger.message.CouponActivityMessage;
import cn.lili.trigger.model.TimeExecuteConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 优惠券活动精准发圈延时触发
*
* @author Bulbasaur
* @since 2021/6/1 5:02 下午
*/
@Slf4j
@Component(TimeExecuteConstant.COUPON_ACTIVITY_EXECUTOR)
public class CouponActivityTriggerExecutor implements TimeTriggerExecutor {
@Autowired
private CouponActivityService couponActivityService;
@Override
public void execute(Object object) {
CouponActivityMessage couponActivityMessage = JSONUtil.toBean(JSONUtil.parseObj(object), CouponActivityMessage.class);
couponActivityService.specifyCoupon(couponActivityMessage.getCouponActivityId());
}
}

View File

@@ -3,6 +3,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.modules.promotion.service.PintuanService;
import cn.lili.trigger.TimeTriggerExecutor;
import cn.lili.trigger.message.PintuanOrderMessage;
import cn.lili.trigger.model.TimeExecuteConstant;
@@ -25,6 +26,8 @@ public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor {
*/
@Autowired
private OrderService orderService;
@Autowired
private PintuanService pintuanService;
@Override
@@ -36,7 +39,7 @@ public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor {
//拼团订单自动处理
orderService.agglomeratePintuanOrder(pintuanOrderMessage.getPintuanId(), pintuanOrderMessage.getOrderSn());
}
Pintuan pintuan = JSONUtil.toBean(JSONUtil.parseObj(object), Pintuan.class);
Pintuan pintuan = pintuanService.getById(pintuanOrderMessage.getPintuanId());
if (pintuan != null && pintuan.getId() != null) {
this.orderService.checkFictitiousOrder(pintuan.getId(), pintuan.getRequiredNum(), pintuan.getFictitious());
}

View File

@@ -67,7 +67,7 @@ spring:
default-datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: lilishop
maxActive: 20
@@ -260,6 +260,8 @@ lili:
order-group: lili_order_group
member-topic: lili_member_topic
member-group: lili_member_group
store-topic: lili_store_topic
store-group: lili_store_group
other-topic: lili_other_topic
other-group: lili_other_group
notice-topic: lili_notice_topic

View File

@@ -20,6 +20,22 @@
</encoder>
</appender>
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE_PATH}/rocketmq.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>30MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
</encoder>
</appender>
<logger name="RocketmqClient" additivity="false">
<level value="info" />
<appender-ref ref="RocketmqClientAppender"/>
</logger>
<!--输出到elk的LOGSTASH-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->

View File

@@ -1,64 +0,0 @@
package cn.lili.buyer.test.cart;
import cn.lili.common.utils.DateUtil;
import cn.lili.timetask.handler.impl.statistics.OnlineMemberStatistics;
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.Calendar;
import java.util.Random;
/**
* 订单库存扣减
*/
@ExtendWith(SpringExtension.class)
@SpringBootTest
class OnlineTest {
@Autowired
private OnlineMemberStatistics onlineMemberStatistics;
//订单支付,库存扣减单元测试
@Test
void everyHour() {
onlineMemberStatistics.execute();
}
//订单支付,库存扣减单元测试
@Test
void customSetting() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 48 );
//循环填充数据
for (int i = 0; i < 48; i++) {
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + 1);
System.out.println(DateUtil.toString(calendar.getTime(),""));
Random random = new Random();
onlineMemberStatistics.execute(calendar.getTime(), random.nextInt(1000000));
}
}
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 48 - 1);
//循环填充数据
for (int i = 0; i < 48; i++) {
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + 1);
System.out.println(calendar.getTime().getTime());
}
}
}

651
deploy-api.yml Normal file
View File

@@ -0,0 +1,651 @@
apiVersion: v1
kind: Namespace
metadata:
name: lilishop-service
---
apiVersion: v1
kind: Service
metadata:
name: buyer-api-service
namespace: lilishop-service
labels:
app.kubernetes.io/name: buyer-api-service
app.kubernetes.io/instance: api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
type: NodePort
ports:
- name: "8888"
nodePort: 30888
port: 8888
targetPort: buyer8888
selector:
lilishop.service: buyer-api
---
apiVersion: v1
kind: Service
metadata:
name: common-api-service
namespace: lilishop-service
labels:
app.kubernetes.io/name: common-api-service
app.kubernetes.io/instance: api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
type: NodePort
ports:
- name: "8890"
nodePort: 30890
port: 8890
targetPort: common8890
selector:
lilishop.service: common-api
---
apiVersion: v1
kind: Service
metadata:
name: seller-api-service
namespace: lilishop-service
labels:
app.kubernetes.io/name: seller-api-service
app.kubernetes.io/instance: api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
type: NodePort
ports:
- name: "8889"
nodePort: 30889
port: 8889
targetPort: seller8889
selector:
lilishop.service: seller-api
---
apiVersion: v1
kind: Service
metadata:
name: manager-api-service
namespace: lilishop-service
labels:
app.kubernetes.io/name: manager-api-service
app.kubernetes.io/instance: api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
type: NodePort
ports:
- name: "8887"
nodePort: 30887
port: 8887
targetPort: manager8887
selector:
lilishop.service: manager-api
---
apiVersion: v1
kind: ConfigMap
metadata:
name: api-config
namespace: lilishop-service
labels:
app.kubernetes.io/name: mysql-db-config
app.kubernetes.io/instance: mysql-single
app.kubernetes.io/version: "8.0.28"
app.kubernetes.io/component: database
app.kubernetes.io/part-of: lilishop
data:
application.yml: |
server:
servlet:
context-path: /
tomcat:
uri-encoding: UTF-8
threads:
min-spare: 50
max: 1000
# 与Spring Boot 2一样默认情况下大多数端点都不通过http公开我们公开了所有端点。对于生产您应该仔细选择要公开的端点。
management:
# health:
# elasticsearch:
# enabled: false
# datasource:
# enabled: false
endpoints:
web:
exposure:
include: '*'
spring:
# 要在其中注册的Spring Boot Admin Server的URL。
boot:
admin:
client:
url: http://192.168.0.116:8000
cache:
type: redis
# Redis
redis:
host: redis-service.lilishop-middleware
port: 6379
password: lilishop
lettuce:
pool:
# 连接池最大连接数(使用负值表示没有限制) 默认 8
max-active: 200
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
max-wait: 20
# 连接池中的最大空闲连接 默认 8
max-idle: 10
# 连接池中的最小空闲连接 默认 8
min-idle: 8
# 文件大小上传配置
servlet:
multipart:
max-file-size: 20MB
max-request-size: 20MB
jackson:
time-zone: GMT+8
serialization:
#关闭jackson 对json做解析
fail-on-empty-beans: false
shardingsphere:
datasource:
# 数据库名称,可自定义,可以为多个,以逗号隔开,每个在这里定义的库,都要在下面定义连接属性
names: default-datasource
default-datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://mysql.lilishop-middleware:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: lilishop
maxActive: 50
initialSize: 20
maxWait: 60000
minIdle: 5
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
#是否缓存preparedStatement也就是PSCache。在mysql下建议关闭。 PSCache对支持游标的数据库性能提升巨大比如说oracle。
poolPreparedStatements: false
#要启用PSCache-1为关闭 必须配置大于0当大于0时poolPreparedStatements自动触发修改为true 可以把这个数值配置大一些比如说100
maxOpenPreparedStatements: -1
#配置监控统计拦截的filters去掉后监控界面sql无法统计'wall'用于防火墙
filters: stat,wall,log4j2
#通过connectProperties属性来打开mergeSql功能慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
#合并多个DruidDataSource的监控数据
useGlobalDataSourceStat: true
loginUsername: druid
loginPassword: druid
# sharding:
# default-data-source-name: default-datasource
# #需要拆分的表,可以设置多个 在 li_order 级别即可
# tables:
# #需要进行分表的逻辑表名
# li_order:
# #实际的表结点,下面代表的是li_order_为开头的所有表如果能确定表的范围例如按月份分表这里的写法是data2020.li_order_$->{2020..2021}_$->{01..12} 表示例如 li_order_2020_01 li_order_2020_03 li_order_2021_01
# actual-data-nodes: data2020.li_order_$->{2019..2021}_$->{01..12}
# table-strategy:
# # 分表策略,根据创建日期
# standard:
# sharding-column: create_time
# #分表策略
# precise-algorithm-class-name: cn.lili.mybatis.sharding.CreateTimeShardingTableAlgorithm
# #范围查询实现
# range-algorithm-class-name: cn.lili.mybatis.sharding.CreateTimeShardingTableAlgorithm
props:
#是否打印逻辑SQL语句和实际SQL语句建议调试时打印在生产环境关闭
sql:
show: true
# 忽略鉴权url
ignored:
urls:
- /editor-app/**
- /actuator**
- /actuator/**
- /MP_verify_qSyvBPhDsPdxvOhC.txt
- /weixin/**
- /source/**
- /store/passport/login/**
- /store/passport/login/refresh/**
- /common/common/slider/**
- /common/common/sms/**
- /buyer/payment/cashier/**
- /buyer/other/pageData/**
- /buyer/other/article/**
- /buyer/goods/**
- /buyer/store/**
- /buyer/passport/connect/**
- /buyer/members/**
- /buyer/passport/member/**
- /buyer/passport/member/refresh/**
- /buyer/promotion/pintuan/**
- /buyer/promotion/seckill/**
- /buyer/promotion/pointsGoods/**
- /buyer/promotion/coupon
- /buyer/member/evaluation/**/goodsEvaluation
- /buyer/member/evaluation/**/evaluationNumber
- /buyer/other/appVersion/**
- /buyer/broadcast/studio/**
- /manager/passport/user/login
- /manager/passport/user/refresh/**
- /manager/other/elasticsearch
- /manager/other/customWords
- /druid/**
- /swagger-ui.html
- /doc.html
- /swagger-resources/**
- /swagger/**
- /webjars/**
- /v2/api-docs**
- /configuration/ui
- /boot-admin
- /manager/promotion/seckill/init
- /**/*.js
- /**/*.css
- /**/*.png
- /**/*.ico
# Swagger界面内容配置
swagger:
title: lilishop API接口文档
description: lilishop Api Documentation
version: 4.2.2
termsOfServiceUrl: https://pickmall.cn
contact:
name: lili
url: https://pickmall.cn
email: admin@pickmall.com
# Mybatis-plus
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
configuration:
#缓存开启
cache-enabled: true
#日志
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 日志
logging:
# 输出级别
level:
cn.lili: info
# org.hibernate: debug
# org.springframework: debug
file:
# 指定路径
path: logs
logback:
rollingpolicy:
# 最大保存天数
max-history: 7
# 每个文件最大大小
max-file-size: 5MB
#加密参数
jasypt:
encryptor:
password: lili
lili:
#验证码设置
verification-code:
#图形验证码有效时间 秒 包含滑块验证码有效时间, 以及验证通过之后,缓存中存储的验证结果有效时间
effectiveTime: 300
#水印
watermark: LILI-SHOP
#干扰项数量 最大2 默认0
interfereNum: 1
#允许误差像素
faultTolerant: 3
#短信模版配置
sms:
#登录
LOGIN: SMS_205755300
#注册
REGISTER: SMS_205755298
#找回密码
FIND_USER: SMS_205755301
#设置密码
UPDATE_PASSWORD: SMS_205755297
#支付密码
WALLET_PASSWORD: SMS_205755301
system:
isDemoSite: false
isTestModel: true
# 脱敏级别:
# 0不做脱敏处理
# 1管理端用户手机号等信息脱敏
# 2商家端信息脱敏为2时表示管理端商家端同时脱敏
sensitiveLevel: 1
statistics:
# 在线人数统计 X 小时。这里设置48即统计过去48小时每小时在线人数
onlineMember: 48
# 当前在线人数刷新时间间隔单位秒设置为600则每10分钟刷新一次
currentOnlineUpdate: 600
#qq lbs 申请
lbs:
key: 4BYBZ-7MT6S-PUAOA-6BNWL-FJUD7-UUFXT
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
#域名
domain:
pc: http://192.168.0.116:8888
wap: http://192.168.0.116:8888
seller: http://192.168.0.116:8888
admin: http://192.168.0.116:8888
#api地址
api:
buyer: http://192.168.0.116:8888
base: http://192.168.0.116:8888
manager: http://192.168.0.116:8888
seller: http://192.168.0.116:8888
# jwt 细节设定
jwt-setting:
# token过期时间分钟
tokenExpireTime: 30
# 使用Spring @Cacheable注解失效时间
cache:
# 过期时间 单位秒 永久不过期设为-1
timeout: 1500
#多线程配置
thread:
corePoolSize: 5
maxPoolSize: 50
queueCapacity: 50
data:
elasticsearch:
cluster-name: elasticsearch
cluster-nodes: elasticsearch.lilishop-middleware:9200
index:
number-of-replicas: 0
number-of-shards: 3
index-prefix: lili
schema: http
# account:
# username: elastic
# password: LiLiShopES
logstash:
server: logstash-service.lilishop-middleware:4560
rocketmq:
promotion-topic: lili_promotion_topic
promotion-group: lili_promotion_group
msg-ext-topic: lili_msg_topic
msg-ext-group: lili_msg_group
goods-topic: lili_goods_topic
goods-group: lili_goods_group
order-topic: lili_order_topic
order-group: lili_order_group
member-topic: lili_member_topic
member-group: lili_member_group
other-topic: lili_other_topic
other-group: lili_other_group
notice-topic: lili_notice_topic
notice-group: lili_notice_group
notice-send-topic: lili_send_notice_topic
notice-send-group: lili_send_notice_group
after-sale-topic: lili_after_sale_topic
after-sale-group: lili_after_sale_group
rocketmq:
name-server: rocketmq.lilishop-middleware:9876
isVIPChannel: false
producer:
group: lili_group
send-message-timeout: 30000
xxl:
job:
admin:
addresses: http://xxl-job-service.lilishop-middleware:9001/xxl-job-admin
executor:
appname: xxl-job-executor-lilishop
address:
ip:
port: 8891
logpath: ./xxl-job/executor
logretentiondays: 7
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: buyer-api
namespace: lilishop-service
labels:
app.kubernetes.io/name: buyer-api-service
app.kubernetes.io/instance: buyer-api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
replicas: 1
selector:
matchLabels:
lilishop.service: buyer-api
template:
metadata:
labels:
lilishop.service: buyer-api
spec:
containers:
- image: 192.168.0.108:31320/buyer-api:4.2.4.1
name: buyer-api
env:
- name: TZ
value: Asia/Shanghai
- name: JAVA_OPTS
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
ports:
- name: buyer8888
containerPort: 8888
volumeMounts:
- mountPath: /application.yml
name: application-yml
subPath: application.yml
restartPolicy: Always
volumes:
- configMap:
name: api-config
name: application-yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: common-api
namespace: lilishop-service
labels:
app.kubernetes.io/name: common-api-service
app.kubernetes.io/instance: common-api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
replicas: 1
selector:
matchLabels:
lilishop.service: common-api
template:
metadata:
labels:
lilishop.service: common-api
spec:
containers:
- image: 192.168.0.108:31320/common-api:4.2.4.1
name: common-api
env:
- name: TZ
value: Asia/Shanghai
- name: JAVA_OPTS
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
ports:
- name: common8890
containerPort: 8890
volumeMounts:
- mountPath: /application.yml
name: application-yml
subPath: application.yml
restartPolicy: Always
volumes:
- configMap:
name: api-config
name: application-yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: seller-api
namespace: lilishop-service
labels:
app.kubernetes.io/name: seller-api-service
app.kubernetes.io/instance: seller-api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
replicas: 1
selector:
matchLabels:
lilishop.service: seller-api
template:
metadata:
labels:
lilishop.service: seller-api
spec:
containers:
- image: 192.168.0.108:31320/seller-api:4.2.4.1
name: seller-api
env:
- name: TZ
value: Asia/Shanghai
- name: JAVA_OPTS
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
ports:
- name: seller8889
containerPort: 8889
volumeMounts:
- mountPath: /application.yml
name: application-yml
subPath: application.yml
restartPolicy: Always
volumes:
- configMap:
name: api-config
name: application-yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: manager-api
namespace: lilishop-service
labels:
app.kubernetes.io/name: manager-api-service
app.kubernetes.io/instance: manager-api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
replicas: 1
selector:
matchLabels:
lilishop.service: manager-api
template:
metadata:
labels:
lilishop.service: manager-api
spec:
containers:
- image: 192.168.0.108:31320/manager-api:4.2.4.1
name: manager-api
env:
- name: TZ
value: Asia/Shanghai
- name: JAVA_OPTS
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
ports:
- name: manager8887
containerPort: 8887
volumeMounts:
- mountPath: /application.yml
name: application-yml
subPath: application.yml
restartPolicy: Always
volumes:
- configMap:
name: api-config
name: application-yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: consumer
namespace: lilishop-service
labels:
app.kubernetes.io/name: consumer-service
app.kubernetes.io/instance: buyer-api
app.kubernetes.io/version: "4.2.4.1"
app.kubernetes.io/component: api
app.kubernetes.io/part-of: lilishop
tier: "api-service"
spec:
replicas: 1
selector:
matchLabels:
lilishop.service: consumer
template:
metadata:
labels:
lilishop.service: consumer
spec:
containers:
- image: 192.168.0.108:31320/consumer:4.2.4.1
name: consumer
env:
- name: TZ
value: Asia/Shanghai
- name: JAVA_OPTS
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
volumeMounts:
- mountPath: /application.yml
name: application-yml
subPath: application.yml
restartPolicy: Always
volumes:
- configMap:
name: api-config
name: application-yml

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<Diagram>
<ID>JAVA</ID>
<OriginalElement>cn.lili.controller.order.OrderComplaintBuyerController</OriginalElement>
<nodes>
<node x="-377.0" y="-206.0">cn.lili.modules.order.order.service.OrderComplaintCommunicationService</node>
<node x="-927.5" y="123.5">cn.lili.controller.order.OrderComplaintStoreController</node>
<node x="-378.0" y="607.0">cn.lili.modules.order.order.service.OrderComplaintService</node>
<node x="311.5" y="111.0">cn.lili.controller.order.OrderComplaintBuyerController</node>
<node x="-308.0" y="123.5">cn.lili.controller.order.OrderComplaintManagerController</node>
</nodes>
<notes />
<edges>
<edge source="cn.lili.controller.order.OrderComplaintStoreController" target="cn.lili.modules.order.order.service.OrderComplaintCommunicationService" relationship="TO_ONE">
<point x="278.0" y="-84.5" />
<point x="-330.0" y="38.5" />
</edge>
<edge source="cn.lili.controller.order.OrderComplaintStoreController" target="cn.lili.modules.order.order.service.OrderComplaintService" relationship="TO_ONE">
<point x="262.0" y="84.5" />
<point x="-300.0" y="-119.0" />
</edge>
<edge source="cn.lili.controller.order.OrderComplaintBuyerController" target="cn.lili.modules.order.order.service.OrderComplaintCommunicationService" relationship="TO_ONE">
<point x="-286.0" y="-73.0" />
<point x="345.0" y="38.5" />
</edge>
<edge source="cn.lili.controller.order.OrderComplaintBuyerController" target="cn.lili.modules.order.order.service.OrderComplaintService" relationship="TO_ONE">
<point x="0.0" y="73.0" />
<point x="606.5" y="726.0" />
<point x="307.5" y="0.0" />
</edge>
<edge source="cn.lili.controller.order.OrderComplaintManagerController" target="cn.lili.modules.order.order.service.OrderComplaintCommunicationService" relationship="TO_ONE">
<point x="-11.5" y="-84.5" />
<point x="0.0" y="38.5" />
</edge>
<edge source="cn.lili.controller.order.OrderComplaintManagerController" target="cn.lili.modules.order.order.service.OrderComplaintService" relationship="TO_ONE">
<point x="-57.5" y="84.5" />
<point x="0.0" y="-119.0" />
</edge>
</edges>
<settings layout="Hierarchic" zoom="1.0" showDependencies="true" x="-13.0" y="319.65625" />
<SelectedNodes />
<Categories>
<Category>Inner Classes</Category>
<Category>Methods</Category>
<Category>Properties</Category>
</Categories>
<SCOPE>All</SCOPE>
<VISIBILITY>private</VISIBILITY>
</Diagram>

Some files were not shown because too many files have changed in this diff Show More