From 6d7e9e7fdd356f3f54b01507304818aa8387da7c Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 7 Jun 2021 16:12:07 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E9=98=BF=E9=87=8Csms=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E9=AA=8C=E8=AF=81=E7=A0=81=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common-api/src/main/resources/application.yml | 12 +++++++++ config/application.yml | 12 +++++++++ .../sms/impl/SmsUtilAliImplService.java | 20 +++++++++++--- .../config/properties/SmsTemplateSetting.java | 26 +++++++++++++++++++ .../modules/system/entity/dto/SmsSetting.java | 4 +-- 5 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 framework/src/main/java/cn/lili/config/properties/SmsTemplateSetting.java diff --git a/common-api/src/main/resources/application.yml b/common-api/src/main/resources/application.yml index 307a502e..6a3f36c3 100644 --- a/common-api/src/main/resources/application.yml +++ b/common-api/src/main/resources/application.yml @@ -212,6 +212,18 @@ jasypt: password: lili lili: + #短信模版配置 + sms: + #登录 + LOGIN: SMS_205755300 + #注册 + REGISTER: SMS_205755298 + #找回密码 + FIND_USER: SMS_205755301 + #设置密码 + UPDATE_PASSWORD: SMS_205755297 + #支付密码 + WALLET_PASSWORD: SMS_205755301 system: isDemoSite: true licences: 'temporary' diff --git a/config/application.yml b/config/application.yml index 56305085..60cf5a18 100644 --- a/config/application.yml +++ b/config/application.yml @@ -212,6 +212,18 @@ jasypt: password: lili lili: + #短信模版配置 + sms: + #登录 + LOGIN: SMS_205755300 + #注册 + REGISTER: SMS_205755298 + #找回密码 + FIND_USER: SMS_205755301 + #设置密码 + UPDATE_PASSWORD: SMS_205755297 + #支付密码 + WALLET_PASSWORD: SMS_205755301 system: isDemoSite: false statistics: diff --git a/framework/src/main/java/cn/lili/common/sms/impl/SmsUtilAliImplService.java b/framework/src/main/java/cn/lili/common/sms/impl/SmsUtilAliImplService.java index fead89fb..5e62b76e 100644 --- a/framework/src/main/java/cn/lili/common/sms/impl/SmsUtilAliImplService.java +++ b/framework/src/main/java/cn/lili/common/sms/impl/SmsUtilAliImplService.java @@ -10,6 +10,7 @@ import cn.lili.common.sms.AliSmsUtil; import cn.lili.common.sms.SmsUtil; import cn.lili.common.utils.CommonUtil; import cn.lili.common.verification.enums.VerificationEnums; +import cn.lili.config.properties.SmsTemplateSetting; import cn.lili.modules.connect.util.Base64Utils; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.service.MemberService; @@ -51,6 +52,9 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil { @Autowired private MemberService memberService; + @Autowired + private SmsTemplateSetting smsTemplateSetting; + @Override public void sendSmsCode(String mobile, VerificationEnums verificationEnums, String uuid) { //获取短信配置 @@ -75,17 +79,17 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil { switch (verificationEnums) { //登录 case LOGIN: { - templateCode = "SMS_205755300"; + templateCode = smsTemplateSetting.getLOGIN(); break; } //注册 case REGISTER: { - templateCode = "SMS_205755298"; + templateCode = smsTemplateSetting.getREGISTER(); break; } //找回密码 case FIND_USER: { - templateCode = "SMS_205755301"; + templateCode = smsTemplateSetting.getFIND_USER(); break; } //修改密码 @@ -96,7 +100,15 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil { } //更新为用户最新手机号 mobile = member.getMobile(); - templateCode = "SMS_205755297"; + templateCode = smsTemplateSetting.getUPDATE_PASSWORD(); + break; + } + //设置支付密码 + case WALLET_PASSWORD: { + Member member = memberService.getById(UserContext.getCurrentUser().getId()); + //更新为用户最新手机号 + mobile = member.getMobile(); + templateCode = smsTemplateSetting.getWALLET_PASSWORD(); break; } //如果不是有效的验证码手段,则此处不进行短信操作 diff --git a/framework/src/main/java/cn/lili/config/properties/SmsTemplateSetting.java b/framework/src/main/java/cn/lili/config/properties/SmsTemplateSetting.java new file mode 100644 index 00000000..c30b3471 --- /dev/null +++ b/framework/src/main/java/cn/lili/config/properties/SmsTemplateSetting.java @@ -0,0 +1,26 @@ +package cn.lili.config.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * 短信模版设置 + * + * @author Chopper + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "lili.sms") +public class SmsTemplateSetting { + //登录 + private String LOGIN = "SMS_205755300"; + //注册 + private String REGISTER = "SMS_205755298"; + //找回密码 + private String FIND_USER = "SMS_205755301"; + //设置密码 + private String UPDATE_PASSWORD = "SMS_205755297"; + //设置支付密码 + private String WALLET_PASSWORD = "SMS_205755297"; +} diff --git a/framework/src/main/java/cn/lili/modules/system/entity/dto/SmsSetting.java b/framework/src/main/java/cn/lili/modules/system/entity/dto/SmsSetting.java index 4238b747..ca5281a2 100644 --- a/framework/src/main/java/cn/lili/modules/system/entity/dto/SmsSetting.java +++ b/framework/src/main/java/cn/lili/modules/system/entity/dto/SmsSetting.java @@ -6,7 +6,7 @@ import java.io.Serializable; /** * 短信配置 - * + * 这里在前台不做调整,方便客户直接把服务商的内容配置在我们平台 * @author Chopper * @date 2020/11/30 15:23 */ @@ -17,7 +17,7 @@ public class SmsSetting implements Serializable { * 节点地址 * key * 密钥 - * 签名,这里在前台不做调整,方便客户直接把服务商的内容配置在我们平台 + * 签名 */ private String regionId; From c2367f763fef28d60f6c74d81a4eaab781588c4d Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 7 Jun 2021 17:36:48 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E4=B8=BA0=E6=97=B6=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/impl/OrderStatusHandlerExecute.java | 31 +++++++++++++++++++ .../java/cn/lili/common/enums/ResultCode.java | 1 + .../modules/order/order/entity/dos/Order.java | 2 ++ .../modules/payment/kit/CashierSupport.java | 24 +++++++++----- 4 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java diff --git a/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java b/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java new file mode 100644 index 00000000..8d99bace --- /dev/null +++ b/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java @@ -0,0 +1,31 @@ +package cn.lili.event.impl; + +import cn.lili.event.TradeEvent; +import cn.lili.modules.order.cart.entity.dto.TradeDTO; +import cn.lili.modules.order.order.service.TradeService; +import cn.lili.modules.payment.kit.enums.PaymentMethodEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 订单状态处理类 + * + * @author Chopper + * @date 2020-07-03 11:20 + **/ +@Service +public class OrderStatusHandlerExecute implements TradeEvent { + + + @Autowired + private TradeService tradeService; + + @Override + public void orderCreate(TradeDTO tradeDTO) { + //如果订单需要支付金额为0,则将订单步入到下一个流程 + if (tradeDTO.getPriceDetailDTO().getFlowPrice() <= 0) { + tradeService.payTrade(tradeDTO.getSn(), PaymentMethodEnum.BANK_TRANSFER.name(), "-1"); + } + + } +} diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index bf09e875..1dd7c69a 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -141,6 +141,7 @@ public enum ResultCode { /** * 支付 */ + PAY_UN_WANTED(32000, "当前订单不需要付款,返回订单列表等待系统订单出库即可"), PAY_SUCCESS(32001, "支付成功"), PAY_INCONSISTENT_ERROR(32002, "付款金额和应付金额不一致"), PAY_DOUBLE_ERROR(32003, "订单已支付,不能再次进行支付"), diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java index c0f2ac75..a1418dca 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java @@ -220,6 +220,8 @@ public class Order extends BaseEntity { } } } + + //设置默认支付状态 this.setOrderStatus(OrderStatusEnum.UNPAID.name()); this.setPayStatus(PayStatusEnum.UNPAID.name()); this.setDeliverStatus(DeliverStatusEnum.UNDELIVERED.name()); diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java index edb46b81..a8dfeb19 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java @@ -145,20 +145,28 @@ public class CashierSupport { public CashierParam cashierParam(PayParam payParam) { for (CashierExecute paramInterface : cashierExecuteList) { CashierParam cashierParam = paramInterface.getPaymentParams(payParam); - if (cashierParam != null) { - cashierParam.setSupport(support(payParam.getClientType())); - cashierParam.setWalletValue(memberWalletService.getMemberWallet(UserContext.getCurrentUser().getId()).getMemberWallet()); - OrderSetting orderSetting = JSONUtil.toBean(settingService.get(SettingEnum.ORDER_SETTING.name()).getSettingValue(), OrderSetting.class); - Integer minute = orderSetting.getAutoCancel(); - cashierParam.setAutoCancel(cashierParam.getCreateTime().getTime() + minute * 1000 * 60); - return cashierParam; + //如果订单不需要付款,则抛出异常,直接返回 + if (cashierParam.getPrice() <= 0) { + throw new ServiceException(ResultCode.PAY_UN_WANTED); } + cashierParam.setSupport(support(payParam.getClientType())); + cashierParam.setWalletValue(memberWalletService.getMemberWallet(UserContext.getCurrentUser().getId()).getMemberWallet()); + OrderSetting orderSetting = JSONUtil.toBean(settingService.get(SettingEnum.ORDER_SETTING.name()).getSettingValue(), OrderSetting.class); + Integer minute = orderSetting.getAutoCancel(); + cashierParam.setAutoCancel(cashierParam.getCreateTime().getTime() + minute * 1000 * 60); + return cashierParam; } - log.error("错误的支付请求:{}", payParam.toString()); throw new ServiceException(ResultCode.PAY_CASHIER_ERROR); } + + /** + * 支付结果 + * + * @param payParam + * @return + */ public Boolean paymentResult(PayParam payParam) { for (CashierExecute cashierExecute : cashierExecuteList) { if (cashierExecute.cashierEnum().name().equals(payParam.getOrderType())) { From 91baf22841236a44c251e38c7764ef4feb6ce2a8 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 8 Jun 2021 09:36:35 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E6=97=A0=E6=95=88=E7=B1=BB=E5=8E=BB?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SwaggerBootstrapUiDemoApplication.java | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 buyer-api/src/main/java/cn/lili/controller/SwaggerBootstrapUiDemoApplication.java diff --git a/buyer-api/src/main/java/cn/lili/controller/SwaggerBootstrapUiDemoApplication.java b/buyer-api/src/main/java/cn/lili/controller/SwaggerBootstrapUiDemoApplication.java deleted file mode 100644 index 446255b5..00000000 --- a/buyer-api/src/main/java/cn/lili/controller/SwaggerBootstrapUiDemoApplication.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.lili.controller; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import springfox.documentation.spring.web.SpringfoxWebMvcConfiguration; - -/** - * SwaggerBootstrapUiDemoApplication - * - * @author Chopper - * @version v1.0 - * 2020-12-09 20:09 - */ -@ConditionalOnClass(SpringfoxWebMvcConfiguration.class) -public class SwaggerBootstrapUiDemoApplication implements WebMvcConfigurer { - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); - registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); - } -} \ No newline at end of file From da1863850ae47ada2377cb30013be35fb97ddc76 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 8 Jun 2021 18:40:32 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E4=B8=BB=E8=A6=81=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=BB=B6=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=9B=B8=E5=85=B3=EF=BC=8C?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=E7=9A=84=E6=B3=A8=E9=87=8A=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8Clog=E8=AE=B0=E5=BD=95=E7=9A=84=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E3=80=82=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sql数据过大,展示sql默认为false,需要打开手动打开就好。 --- buyer-api/src/main/resources/application.yml | 2 +- buyer-api/src/test/resources/application.yml | 2 +- common-api/src/main/resources/application.yml | 2 +- config/application.yml | 2 +- .../PromotionTimeTriggerExecutor.java | 4 +- consumer/src/main/resources/application.yml | 2 +- .../main/java/cn/lili/common/cache/Cache.java | 31 +++++++++++++ .../cn/lili/common/cache/impl/RedisCache.java | 43 +++++++++++++++++++ .../common/trigger/RocketmqTimerTrigger.java | 27 +++++++++--- .../AbstractDelayQueueMachineFactory.java | 30 +++++++------ .../trigger/delay/PromotionDelayQueue.java | 1 - .../enums}/DelayQueueType.java | 2 +- .../trigger/interfaces/TimeTrigger.java | 13 ------ .../interfaces/TimeTriggerExecutor.java | 3 +- .../message}/PintuanOrderMessage.java | 2 +- .../message}/PromotionMessage.java | 2 +- .../trigger/model/TimeExecuteConstant.java | 12 +----- .../util}/DelayQueueTools.java | 4 +- .../order/order/entity/vo/PaymentLog.java | 6 +-- .../order/serviceimpl/OrderServiceImpl.java | 6 +-- .../promotion/service/PromotionService.java | 2 +- .../serviceimpl/CouponServiceImpl.java | 6 +-- .../serviceimpl/FullDiscountServiceImpl.java | 7 ++- .../serviceimpl/PintuanServiceImpl.java | 6 +-- .../serviceimpl/PointsGoodsServiceImpl.java | 6 +-- .../serviceimpl/PromotionServiceImpl.java | 2 +- .../serviceimpl/SeckillServiceImpl.java | 6 +-- .../src/main/resources/application.yml | 2 +- seller-api/src/main/resources/application.yml | 2 +- 29 files changed, 151 insertions(+), 84 deletions(-) rename framework/src/main/java/cn/lili/common/{delayqueue => trigger/delay}/AbstractDelayQueueMachineFactory.java (71%) rename framework/src/main/java/cn/lili/common/{delayqueue => trigger/enums}/DelayQueueType.java (91%) rename framework/src/main/java/cn/lili/common/{delayqueue => trigger/message}/PintuanOrderMessage.java (90%) rename framework/src/main/java/cn/lili/common/{delayqueue => trigger/message}/PromotionMessage.java (96%) rename framework/src/main/java/cn/lili/common/{delayqueue => trigger/util}/DelayQueueTools.java (81%) diff --git a/buyer-api/src/main/resources/application.yml b/buyer-api/src/main/resources/application.yml index b423c287..d230743c 100644 --- a/buyer-api/src/main/resources/application.yml +++ b/buyer-api/src/main/resources/application.yml @@ -127,7 +127,7 @@ spring: props: #是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭 sql: - show: true + show: false # 忽略TOKEN 鉴权 的url ignored: diff --git a/buyer-api/src/test/resources/application.yml b/buyer-api/src/test/resources/application.yml index dd015575..d5368295 100644 --- a/buyer-api/src/test/resources/application.yml +++ b/buyer-api/src/test/resources/application.yml @@ -124,7 +124,7 @@ spring: props: #是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭 sql: - show: true + show: false # 忽略鉴权url ignored: diff --git a/common-api/src/main/resources/application.yml b/common-api/src/main/resources/application.yml index 6a3f36c3..36d03d74 100644 --- a/common-api/src/main/resources/application.yml +++ b/common-api/src/main/resources/application.yml @@ -124,7 +124,7 @@ spring: props: #是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭 sql: - show: true + show: false # 忽略鉴权url ignored: diff --git a/config/application.yml b/config/application.yml index 60cf5a18..d78a5624 100644 --- a/config/application.yml +++ b/config/application.yml @@ -124,7 +124,7 @@ spring: props: #是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭 sql: - show: true + show: false # 忽略鉴权url ignored: diff --git a/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java b/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java index c0aee57d..13d27854 100644 --- a/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java +++ b/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java @@ -1,8 +1,8 @@ package cn.lili.trigger.executor; import cn.hutool.json.JSONUtil; -import cn.lili.common.delayqueue.PintuanOrderMessage; -import cn.lili.common.delayqueue.PromotionMessage; +import cn.lili.common.trigger.message.PintuanOrderMessage; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.common.trigger.interfaces.TimeTrigger; import cn.lili.common.trigger.interfaces.TimeTriggerExecutor; import cn.lili.common.trigger.model.TimeExecuteConstant; diff --git a/consumer/src/main/resources/application.yml b/consumer/src/main/resources/application.yml index df974ce6..d50be0e6 100644 --- a/consumer/src/main/resources/application.yml +++ b/consumer/src/main/resources/application.yml @@ -124,7 +124,7 @@ spring: props: #是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭 sql: - show: true + show: false # 忽略鉴权url ignored: diff --git a/framework/src/main/java/cn/lili/common/cache/Cache.java b/framework/src/main/java/cn/lili/common/cache/Cache.java index 7b027b73..e2c86a7c 100644 --- a/framework/src/main/java/cn/lili/common/cache/Cache.java +++ b/framework/src/main/java/cn/lili/common/cache/Cache.java @@ -232,4 +232,35 @@ public interface Cache { * @return */ Set> reverseRangeWithScores(String sortedSetName, Integer start, Integer end); + + + /** + * 向Zset里添加成员 + * + * @param key key值 + * @param score 分数 + * @param value 值 + * @return 增加状态 + */ + boolean zAdd(String key, long score, String value); + + + /** + * 获取 某key 下 某一分值区间的队列 + * + * @param key 缓存key + * @param from 开始时间 + * @param to 结束时间 + * @return 数据 + */ + Set> zRangeByScore(String key, int from, long to); + + /** + * 移除 Zset队列值 + * + * @param key key值 + * @param value 删除的集合 + * @return 删除数量 + */ + Long zRemove(String key, String... value); } diff --git a/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java b/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java index 39925133..6585b36a 100644 --- a/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java +++ b/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java @@ -240,4 +240,47 @@ public class RedisCache implements Cache { public Set> reverseRangeWithScores(String sortedSetName, Integer start, Integer end) { return this.redisTemplate.opsForZSet().reverseRangeWithScores(sortedSetName, start, end); } + + + /** + * 向Zset里添加成员 + * + * @param key key值 + * @param score 分数,通常用于排序 + * @param value 值 + * @return 增加状态 + */ + @Override + public boolean zAdd(String key, long score, String value) { + Boolean result = redisTemplate.opsForZSet().add(key, value, score); + return result; + + } + + + /** + * 获取 某key 下 某一分值区间的队列 + * + * @param key 缓存key + * @param from 开始时间 + * @param to 结束时间 + * @return 数据 + */ + @Override + public Set> zRangeByScore(String key, int from, long to) { + Set> set = redisTemplate.opsForZSet().rangeByScoreWithScores(key, from, to); + return set; + } + + /** + * 移除 Zset队列值 + * + * @param key key值 + * @param value 删除的集合 + * @return 删除数量 + */ + @Override + public Long zRemove(String key, String... value) { + return redisTemplate.opsForZSet().remove(key, value); + } } diff --git a/framework/src/main/java/cn/lili/common/trigger/RocketmqTimerTrigger.java b/framework/src/main/java/cn/lili/common/trigger/RocketmqTimerTrigger.java index 88e098f2..04f83b51 100644 --- a/framework/src/main/java/cn/lili/common/trigger/RocketmqTimerTrigger.java +++ b/framework/src/main/java/cn/lili/common/trigger/RocketmqTimerTrigger.java @@ -17,6 +17,8 @@ import org.springframework.messaging.support.MessageBuilder; import org.springframework.stereotype.Component; /** + * 延时任务实现 + * * @author paulG * @since 2020/11/5 **/ @@ -32,8 +34,23 @@ public class RocketmqTimerTrigger implements TimeTrigger { @Override - public void add(String executorName, Object param, Long triggerTime, String uniqueKey, String topic) { + public void add(TimeTriggerMsg timeTriggerMsg) { + this.addExecute(timeTriggerMsg.getTriggerExecutor(), timeTriggerMsg.getParam(), timeTriggerMsg.getTriggerTime(), timeTriggerMsg.getUniqueKey(), timeTriggerMsg.getTopic()); + } + /** + * 添加延时任务 + * + * @param executorName 执行器beanId + * @param param 执行参数 + * @param triggerTime 执行时间 时间戳 秒为单位 + * @param uniqueKey 如果是一个 需要有 修改/取消 延时任务功能的延时任务,
+ * 请填写此参数,作为后续删除,修改做为唯一凭证
+ * 建议参数为:COUPON_{ACTIVITY_ID} 例如 coupon_123
+ * 业务内全局唯一 + * @param topic rocketmq topic + */ + public void addExecute(String executorName, Object param, Long triggerTime, String uniqueKey, String topic) { TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(executorName, triggerTime, param, uniqueKey, topic); Message message = MessageBuilder.withPayload(timeTriggerMsg).build(); @@ -41,13 +58,9 @@ public class RocketmqTimerTrigger implements TimeTrigger { this.rocketMQTemplate.asyncSend(topic, message, RocketmqSendCallbackBuilder.commonCallback()); } - @Override - public void add(TimeTriggerMsg timeTriggerMsg) { - this.add(timeTriggerMsg.getTriggerExecutor(), timeTriggerMsg.getParam(), timeTriggerMsg.getTriggerTime(), timeTriggerMsg.getUniqueKey(), timeTriggerMsg.getTopic()); - } - @Override public void addDelay(TimeTriggerMsg timeTriggerMsg, int delayTime) { + //执行器唯一key String uniqueKey = timeTriggerMsg.getUniqueKey(); if (StringUtils.isEmpty(uniqueKey)) { uniqueKey = StringUtils.getRandStr(10); @@ -73,7 +86,7 @@ public class RocketmqTimerTrigger implements TimeTrigger { @Override public void delete(String executorName, Long triggerTime, String uniqueKey, String topic) { String generateKey = TimeTriggerUtil.generateKey(executorName, triggerTime, uniqueKey); - log.info("delete redis key {} -----------------------", generateKey); + log.info("删除延时任务{}", generateKey); this.cache.remove(generateKey); } } diff --git a/framework/src/main/java/cn/lili/common/delayqueue/AbstractDelayQueueMachineFactory.java b/framework/src/main/java/cn/lili/common/trigger/delay/AbstractDelayQueueMachineFactory.java similarity index 71% rename from framework/src/main/java/cn/lili/common/delayqueue/AbstractDelayQueueMachineFactory.java rename to framework/src/main/java/cn/lili/common/trigger/delay/AbstractDelayQueueMachineFactory.java index 6f8bfbad..31248b4b 100644 --- a/framework/src/main/java/cn/lili/common/delayqueue/AbstractDelayQueueMachineFactory.java +++ b/framework/src/main/java/cn/lili/common/trigger/delay/AbstractDelayQueueMachineFactory.java @@ -1,6 +1,7 @@ -package cn.lili.common.delayqueue; +package cn.lili.common.trigger.delay; -import cn.lili.common.utils.RedisUtil; +import cn.hutool.json.JSONUtil; +import cn.lili.common.cache.Cache; import cn.lili.common.utils.ThreadPoolUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -22,7 +23,7 @@ import java.util.concurrent.TimeUnit; public abstract class AbstractDelayQueueMachineFactory { @Autowired - private RedisUtil redisUtil; + private Cache cache; /** * 插入任务id @@ -35,8 +36,8 @@ public abstract class AbstractDelayQueueMachineFactory { Calendar instance = Calendar.getInstance(); instance.add(Calendar.SECOND, time); long delaySeconds = instance.getTimeInMillis() / 1000; - boolean result = redisUtil.zadd(setDelayQueueName(), delaySeconds, jobId); - log.info("redis add delay, key {}, delay time {}", setDelayQueueName(), time); + boolean result = cache.zAdd(setDelayQueueName(), delaySeconds, jobId); + log.info("增加延时任务, 缓存key {}, 等待时间 {}", setDelayQueueName(), time); return result; } @@ -45,21 +46,24 @@ public abstract class AbstractDelayQueueMachineFactory { * 延时队列机器开始运作 */ private void startDelayQueueMachine() { - log.info(String.format("延时队列机器{%s}开始运作", setDelayQueueName())); + log.info("延时队列机器{}开始运作", setDelayQueueName()); - // 发生异常捕获并且继续不能让战斗停下来 + // 监听redis队列 while (true) { try { // 获取当前时间的时间戳 long now = System.currentTimeMillis() / 1000; // 获取当前时间前的任务列表 - Set tuples = redisUtil.zrangeByScoreWithScores(setDelayQueueName(), 0, now); - // 如果不为空则遍历判断其是否满足取消要求 - if (!CollectionUtils.isEmpty(tuples)) { - for (DefaultTypedTuple tuple : tuples) { + Set tuples = cache.zRangeByScore(setDelayQueueName(), 0, now); + // 如果任务不为空 + if (!CollectionUtils.isEmpty(tuples)) { + log.info("执行任务:{}", JSONUtil.toJsonStr(tuples)); + + for (DefaultTypedTuple tuple : tuples) { String jobId = (String) tuple.getValue(); - Long num = redisUtil.zremove(setDelayQueueName(), jobId); + // 移除缓存,如果移除成功则表示当前线程处理了延时任务,则执行延时任务 + Long num = cache.zRemove(setDelayQueueName(), jobId); // 如果移除成功, 则执行 if (num > 0) { ThreadPoolUtil.execute(() -> invoke(jobId)); @@ -68,7 +72,7 @@ public abstract class AbstractDelayQueueMachineFactory { } } catch (Exception e) { - log.error(String.format("处理延时任务发生异常,异常原因为{%s}", e.getMessage()), e); + log.error("处理延时任务发生异常,异常原因为{}", e.getMessage(), e); } finally { // 间隔一秒钟搞一次 try { diff --git a/framework/src/main/java/cn/lili/common/trigger/delay/PromotionDelayQueue.java b/framework/src/main/java/cn/lili/common/trigger/delay/PromotionDelayQueue.java index 4e30f9fc..792e77eb 100644 --- a/framework/src/main/java/cn/lili/common/trigger/delay/PromotionDelayQueue.java +++ b/framework/src/main/java/cn/lili/common/trigger/delay/PromotionDelayQueue.java @@ -1,7 +1,6 @@ package cn.lili.common.trigger.delay; import cn.hutool.json.JSONUtil; -import cn.lili.common.delayqueue.AbstractDelayQueueMachineFactory; import cn.lili.common.trigger.interfaces.TimeTrigger; import cn.lili.common.trigger.model.TimeTriggerMsg; import org.springframework.beans.factory.annotation.Autowired; diff --git a/framework/src/main/java/cn/lili/common/delayqueue/DelayQueueType.java b/framework/src/main/java/cn/lili/common/trigger/enums/DelayQueueType.java similarity index 91% rename from framework/src/main/java/cn/lili/common/delayqueue/DelayQueueType.java rename to framework/src/main/java/cn/lili/common/trigger/enums/DelayQueueType.java index bb5c1a87..6556f9fd 100644 --- a/framework/src/main/java/cn/lili/common/delayqueue/DelayQueueType.java +++ b/framework/src/main/java/cn/lili/common/trigger/enums/DelayQueueType.java @@ -1,4 +1,4 @@ -package cn.lili.common.delayqueue; +package cn.lili.common.trigger.enums; /** * 延时任务类型 diff --git a/framework/src/main/java/cn/lili/common/trigger/interfaces/TimeTrigger.java b/framework/src/main/java/cn/lili/common/trigger/interfaces/TimeTrigger.java index b0099950..9298b1ec 100644 --- a/framework/src/main/java/cn/lili/common/trigger/interfaces/TimeTrigger.java +++ b/framework/src/main/java/cn/lili/common/trigger/interfaces/TimeTrigger.java @@ -9,19 +9,6 @@ import cn.lili.common.trigger.model.TimeTriggerMsg; */ public interface TimeTrigger { - /** - * 添加延时任务 - * - * @param executorName 执行器beanId - * @param param 执行参数 - * @param triggerTime 执行时间 时间戳 秒为单位 - * @param uniqueKey 如果是一个 需要有 修改/取消 延时任务功能的延时任务,
- * 请填写此参数,作为后续删除,修改做为唯一凭证
- * 建议参数为:COUPON_{ACTIVITY_ID} 例如 coupon_123
- * 业务内全局唯一 - * @param topic rocketmq topic - */ - void add(String executorName, Object param, Long triggerTime, String uniqueKey, String topic); /** * 添加延时任务 diff --git a/framework/src/main/java/cn/lili/common/trigger/interfaces/TimeTriggerExecutor.java b/framework/src/main/java/cn/lili/common/trigger/interfaces/TimeTriggerExecutor.java index 93531920..f378852c 100644 --- a/framework/src/main/java/cn/lili/common/trigger/interfaces/TimeTriggerExecutor.java +++ b/framework/src/main/java/cn/lili/common/trigger/interfaces/TimeTriggerExecutor.java @@ -2,14 +2,15 @@ package cn.lili.common.trigger.interfaces; /** * 延时任务执行器接口 - * @author Chopper * + * @author Chopper */ public interface TimeTriggerExecutor { /** * 执行任务 + * * @param object 任务参数 */ void execute(Object object); diff --git a/framework/src/main/java/cn/lili/common/delayqueue/PintuanOrderMessage.java b/framework/src/main/java/cn/lili/common/trigger/message/PintuanOrderMessage.java similarity index 90% rename from framework/src/main/java/cn/lili/common/delayqueue/PintuanOrderMessage.java rename to framework/src/main/java/cn/lili/common/trigger/message/PintuanOrderMessage.java index 75b17a11..e8acf50f 100644 --- a/framework/src/main/java/cn/lili/common/delayqueue/PintuanOrderMessage.java +++ b/framework/src/main/java/cn/lili/common/trigger/message/PintuanOrderMessage.java @@ -1,4 +1,4 @@ -package cn.lili.common.delayqueue; +package cn.lili.common.trigger.message; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/framework/src/main/java/cn/lili/common/delayqueue/PromotionMessage.java b/framework/src/main/java/cn/lili/common/trigger/message/PromotionMessage.java similarity index 96% rename from framework/src/main/java/cn/lili/common/delayqueue/PromotionMessage.java rename to framework/src/main/java/cn/lili/common/trigger/message/PromotionMessage.java index c266f022..7290b974 100644 --- a/framework/src/main/java/cn/lili/common/delayqueue/PromotionMessage.java +++ b/framework/src/main/java/cn/lili/common/trigger/message/PromotionMessage.java @@ -1,4 +1,4 @@ -package cn.lili.common.delayqueue; +package cn.lili.common.trigger.message; import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; diff --git a/framework/src/main/java/cn/lili/common/trigger/model/TimeExecuteConstant.java b/framework/src/main/java/cn/lili/common/trigger/model/TimeExecuteConstant.java index 6438de52..2065af34 100644 --- a/framework/src/main/java/cn/lili/common/trigger/model/TimeExecuteConstant.java +++ b/framework/src/main/java/cn/lili/common/trigger/model/TimeExecuteConstant.java @@ -1,6 +1,8 @@ package cn.lili.common.trigger.model; /** + * 延时任务执行器常量 + * * @author paulG * @since 2020/8/20 **/ @@ -11,14 +13,4 @@ public abstract class TimeExecuteConstant { */ public static final String PROMOTION_EXECUTOR = "promotionTimeTriggerExecutor"; - /** - * 拼团延迟加载执行器 - */ - public static final String PINTUAN_EXECUTOR = "pintuanTimeTriggerExecutor"; - - /** - * 拼团延迟加载执行器 - */ - public static final String FULL_DISCOUNT_EXECUTOR = "fullDiscountTimeTriggerExecutor"; - } diff --git a/framework/src/main/java/cn/lili/common/delayqueue/DelayQueueTools.java b/framework/src/main/java/cn/lili/common/trigger/util/DelayQueueTools.java similarity index 81% rename from framework/src/main/java/cn/lili/common/delayqueue/DelayQueueTools.java rename to framework/src/main/java/cn/lili/common/trigger/util/DelayQueueTools.java index e6be4cf9..640719f9 100644 --- a/framework/src/main/java/cn/lili/common/delayqueue/DelayQueueTools.java +++ b/framework/src/main/java/cn/lili/common/trigger/util/DelayQueueTools.java @@ -1,4 +1,6 @@ -package cn.lili.common.delayqueue; +package cn.lili.common.trigger.util; + +import cn.lili.common.trigger.enums.DelayQueueType; /** * 延时任务工具类 diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/PaymentLog.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/PaymentLog.java index 67cec7ce..b222a1ce 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/PaymentLog.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/PaymentLog.java @@ -4,26 +4,22 @@ import cn.lili.base.BaseEntity; import cn.lili.modules.base.entity.enums.ClientTypeEnum; import cn.lili.modules.order.order.entity.enums.OrderTypeEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; -import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.persistence.Entity; -import javax.persistence.Table; import java.util.Date; /** - * 订单 + * 订单支付日志:实际为订单部分字段提取过来的一个vo * * @author Chopper * @date 2020/11/17 7:30 下午 */ @Data @Entity -@Table(name = "li_order") -@TableName("li_order") @ApiModel(value = "订单") public class PaymentLog extends BaseEntity { diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 50a5db0a..6450a219 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -5,9 +5,9 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.json.JSONUtil; import cn.lili.common.aop.syslog.annotation.SystemLogPoint; -import cn.lili.common.delayqueue.DelayQueueTools; -import cn.lili.common.delayqueue.DelayQueueType; -import cn.lili.common.delayqueue.PintuanOrderMessage; +import cn.lili.common.trigger.util.DelayQueueTools; +import cn.lili.common.trigger.enums.DelayQueueType; +import cn.lili.common.trigger.message.PintuanOrderMessage; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.rocketmq.RocketmqSendCallbackBuilder; diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java index 6b825e40..6698bbd2 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionService.java @@ -1,6 +1,6 @@ package cn.lili.modules.promotion.service; -import cn.lili.common.delayqueue.PromotionMessage; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import java.util.Map; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java index a4c0542f..3a0654c2 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java @@ -1,9 +1,9 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.text.CharSequenceUtil; -import cn.lili.common.delayqueue.DelayQueueTools; -import cn.lili.common.delayqueue.DelayQueueType; -import cn.lili.common.delayqueue.PromotionMessage; +import cn.lili.common.trigger.util.DelayQueueTools; +import cn.lili.common.trigger.enums.DelayQueueType; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.common.exception.ServiceException; import cn.lili.common.trigger.interfaces.TimeTrigger; import cn.lili.common.trigger.model.TimeExecuteConstant; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java index c97a7495..e997dc13 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java @@ -1,8 +1,8 @@ package cn.lili.modules.promotion.serviceimpl; -import cn.lili.common.delayqueue.DelayQueueTools; -import cn.lili.common.delayqueue.DelayQueueType; -import cn.lili.common.delayqueue.PromotionMessage; +import cn.lili.common.trigger.util.DelayQueueTools; +import cn.lili.common.trigger.enums.DelayQueueType; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.common.exception.ServiceException; import cn.lili.common.trigger.interfaces.TimeTrigger; import cn.lili.common.trigger.model.TimeExecuteConstant; @@ -27,7 +27,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index f0996ca8..f2a7d311 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -1,9 +1,9 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.bean.BeanUtil; -import cn.lili.common.delayqueue.DelayQueueTools; -import cn.lili.common.delayqueue.DelayQueueType; -import cn.lili.common.delayqueue.PromotionMessage; +import cn.lili.common.trigger.util.DelayQueueTools; +import cn.lili.common.trigger.enums.DelayQueueType; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.common.exception.ServiceException; import cn.lili.common.trigger.interfaces.TimeTrigger; import cn.lili.common.trigger.model.TimeExecuteConstant; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java index a6fb6770..7c078748 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PointsGoodsServiceImpl.java @@ -1,9 +1,9 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.util.StrUtil; -import cn.lili.common.delayqueue.DelayQueueTools; -import cn.lili.common.delayqueue.DelayQueueType; -import cn.lili.common.delayqueue.PromotionMessage; +import cn.lili.common.trigger.util.DelayQueueTools; +import cn.lili.common.trigger.enums.DelayQueueType; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.common.exception.ServiceException; import cn.lili.common.trigger.interfaces.TimeTrigger; import cn.lili.common.trigger.model.TimeExecuteConstant; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java index e09e03db..87d8783a 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PromotionServiceImpl.java @@ -3,7 +3,7 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.date.DateTime; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; -import cn.lili.common.delayqueue.PromotionMessage; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.common.exception.ServiceException; import cn.lili.common.utils.DateUtil; import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java index bae6b9e1..3fff6975 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillServiceImpl.java @@ -1,8 +1,8 @@ package cn.lili.modules.promotion.serviceimpl; -import cn.lili.common.delayqueue.DelayQueueTools; -import cn.lili.common.delayqueue.DelayQueueType; -import cn.lili.common.delayqueue.PromotionMessage; +import cn.lili.common.trigger.util.DelayQueueTools; +import cn.lili.common.trigger.enums.DelayQueueType; +import cn.lili.common.trigger.message.PromotionMessage; import cn.lili.common.exception.ServiceException; import cn.lili.common.trigger.interfaces.TimeTrigger; import cn.lili.common.trigger.model.TimeExecuteConstant; diff --git a/manager-api/src/main/resources/application.yml b/manager-api/src/main/resources/application.yml index f22fefbc..d198e6fe 100644 --- a/manager-api/src/main/resources/application.yml +++ b/manager-api/src/main/resources/application.yml @@ -124,7 +124,7 @@ spring: props: #是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭 sql: - show: true + show: false # 忽略鉴权url ignored: diff --git a/seller-api/src/main/resources/application.yml b/seller-api/src/main/resources/application.yml index 661e1f4b..79aa0617 100644 --- a/seller-api/src/main/resources/application.yml +++ b/seller-api/src/main/resources/application.yml @@ -124,7 +124,7 @@ spring: props: #是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭 sql: - show: true + show: false # 忽略鉴权url ignored: From b30a55eafac1e4569e8157887e138dc0dd31cd51 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 9 Jun 2021 09:24:35 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E6=94=B6=E9=93=B6=E5=8F=B0=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E9=97=AE=E9=A2=98=E4=BC=98=E5=8C=96=EF=BC=8C=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E4=B8=8D=E5=8C=B9=E9=85=8D=E7=9B=B4=E6=8E=A5=E8=B7=B3?= =?UTF-8?q?=E8=BF=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/modules/payment/kit/CashierSupport.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java index a8dfeb19..062ff3ed 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java @@ -145,6 +145,10 @@ public class CashierSupport { public CashierParam cashierParam(PayParam payParam) { for (CashierExecute paramInterface : cashierExecuteList) { CashierParam cashierParam = paramInterface.getPaymentParams(payParam); + //如果为空,则表示收银台参数初始化不匹配,继续匹配下一条 + if (cashierParam == null) { + continue; + } //如果订单不需要付款,则抛出异常,直接返回 if (cashierParam.getPrice() <= 0) { throw new ServiceException(ResultCode.PAY_UN_WANTED); From f7201342d9de923feed550dd2caea7c8d645113b Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 9 Jun 2021 16:29:49 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E5=BA=A6=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86=EF=BC=8C=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E8=A1=A5=E5=85=85=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 ++++- .../java/cn/lili/controller/payment/CashierController.java | 3 --- .../java/cn/lili/common/trigger/RocketmqTimerTrigger.java | 2 +- .../trigger/delay/AbstractDelayQueueMachineFactory.java | 4 +++- pom.xml | 1 + 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index afd4c9c5..4c673cbc 100644 --- a/README.md +++ b/README.md @@ -293,7 +293,10 @@ PS:单独部署的话,数据库文件访问这里:https://gitee.com/beijing_ 2.禁止将本开源的代码和资源进行任何形式任何名义的出售. -3.限制商用,如果需要商业使用请联系我们。QQ3409056806. +3.软件受国家计算机软件著作权保护(登记号:2021SR0805085)。 + +4.限制商用,如果需要商业使用请联系我们。QQ3409056806. + ### 交流群 diff --git a/buyer-api/src/main/java/cn/lili/controller/payment/CashierController.java b/buyer-api/src/main/java/cn/lili/controller/payment/CashierController.java index aad6f2d4..fffdceff 100644 --- a/buyer-api/src/main/java/cn/lili/controller/payment/CashierController.java +++ b/buyer-api/src/main/java/cn/lili/controller/payment/CashierController.java @@ -8,7 +8,6 @@ import cn.lili.modules.payment.kit.dto.PayParam; import cn.lili.modules.payment.kit.enums.PaymentClientEnum; import cn.lili.modules.payment.kit.enums.PaymentMethodEnum; import cn.lili.modules.payment.kit.params.dto.CashierParam; -import cn.lili.modules.payment.service.PaymentService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -33,8 +32,6 @@ public class CashierController { @Autowired private CashierSupport cashierSupport; - @Autowired - private PaymentService paymentService; @ApiImplicitParams({ diff --git a/framework/src/main/java/cn/lili/common/trigger/RocketmqTimerTrigger.java b/framework/src/main/java/cn/lili/common/trigger/RocketmqTimerTrigger.java index 04f83b51..009e0f5f 100644 --- a/framework/src/main/java/cn/lili/common/trigger/RocketmqTimerTrigger.java +++ b/framework/src/main/java/cn/lili/common/trigger/RocketmqTimerTrigger.java @@ -69,7 +69,7 @@ public class RocketmqTimerTrigger implements TimeTrigger { String generateKey = TimeTriggerUtil.generateKey(timeTriggerMsg.getTriggerExecutor(), timeTriggerMsg.getTriggerTime(), uniqueKey); this.cache.put(generateKey, 1); //设置延时任务 - if (Boolean.TRUE.equals(promotionDelayQueue.addJobId(JSONUtil.toJsonStr(timeTriggerMsg), delayTime))) { + if (Boolean.TRUE.equals(promotionDelayQueue.addJob(JSONUtil.toJsonStr(timeTriggerMsg), delayTime))) { log.info("add Redis key {}", generateKey); log.info("定时执行在【" + DateUtil.toString(timeTriggerMsg.getTriggerTime(), "yyyy-MM-dd HH:mm:ss") + "】,消费【" + timeTriggerMsg.getParam().toString() + "】"); } else { diff --git a/framework/src/main/java/cn/lili/common/trigger/delay/AbstractDelayQueueMachineFactory.java b/framework/src/main/java/cn/lili/common/trigger/delay/AbstractDelayQueueMachineFactory.java index 31248b4b..60da4a6d 100644 --- a/framework/src/main/java/cn/lili/common/trigger/delay/AbstractDelayQueueMachineFactory.java +++ b/framework/src/main/java/cn/lili/common/trigger/delay/AbstractDelayQueueMachineFactory.java @@ -32,10 +32,12 @@ public abstract class AbstractDelayQueueMachineFactory { * @param time 延时时间(单位 :秒) * @return 是否插入成功 */ - public boolean addJobId(String jobId, Integer time) { + public boolean addJob(String jobId, Integer time) { + //获取时间 Calendar instance = Calendar.getInstance(); instance.add(Calendar.SECOND, time); long delaySeconds = instance.getTimeInMillis() / 1000; + //增加延时任务 参数依次为:队列名称、执行时间、任务id boolean result = cache.zAdd(setDelayQueueName(), delaySeconds, jobId); log.info("增加延时任务, 缓存key {}, 等待时间 {}", setDelayQueueName(), time); return result; diff --git a/pom.xml b/pom.xml index 038c1a81..44ab8a88 100644 --- a/pom.xml +++ b/pom.xml @@ -25,6 +25,7 @@ seller-api common-api consumer + admin From 590a039f10d6bb2b0d83bc95b4f1a3ae2caf7bc9 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 9 Jun 2021 17:11:21 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E5=95=86=E5=93=81=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=89=8B=E5=8A=A8=E5=88=A0=E9=99=A4=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/serviceimpl/EsGoodsIndexServiceImpl.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 26c3b1ba..d0df2bf7 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -153,10 +153,16 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements //索引名称拼接 String indexName = elasticsearchProperties.getIndexPrefix() + "_" + EsSuffix.GOODS_INDEX_NAME; - //如果索引不存在,则创建索引 - if (!indexExist(indexName)) { - createIndexRequest(indexName); + //索引初始化,因为mapping结构问题: + //但是如果索引已经自动生成过,这里就不会创建索引,设置mapping,所以这里决定在初始化索引的同时,将已有索引删除,重新创建 + + //如果索引存在,则删除,重新生成。 这里应该有更优解。 + if (this.indexExist(indexName)) { + deleteIndexRequest(indexName); } + + //如果索引不存在,则创建索引 + createIndexRequest(indexName); if (goodsIndexList != null && !goodsIndexList.isEmpty()) { goodsIndexRepository.deleteAll(); for (EsGoodsIndex goodsIndex : goodsIndexList) { From 7c8c692e87e56b6279e119e97da15604816a2541 Mon Sep 17 00:00:00 2001 From: lifenlong Date: Wed, 9 Jun 2021 18:21:11 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=8E=BB=E9=99=A4xss=E7=A9=BA=E6=A0=BC?= =?UTF-8?q?=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/filter/XssHttpServletRequestWrapper.java | 4 ++-- .../modules/system/serviceimpl/AppVersionServiceImpl.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java b/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java index 70c2df5b..04fe053e 100644 --- a/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java +++ b/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java @@ -93,8 +93,8 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { private String cleanXSS(String value) { if (value != null) { //推荐使用ESAPI库来避免脚本攻击,value = ESAPI.encoder().canonicalize(value); - // 避免空字符串 - value = value.replaceAll(" ", ""); +// // 避免空字符串 +// value = value.replaceAll(" ", ""); // 避免script 标签 Pattern scriptPattern = Pattern.compile("", Pattern.CASE_INSENSITIVE); value = scriptPattern.matcher(value).replaceAll(""); diff --git a/framework/src/main/java/cn/lili/modules/system/serviceimpl/AppVersionServiceImpl.java b/framework/src/main/java/cn/lili/modules/system/serviceimpl/AppVersionServiceImpl.java index 8d31b954..45a31a10 100644 --- a/framework/src/main/java/cn/lili/modules/system/serviceimpl/AppVersionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/system/serviceimpl/AppVersionServiceImpl.java @@ -29,7 +29,7 @@ public class AppVersionServiceImpl extends ServiceImpl().eq(AppVersion::getVersion,appVersion))){ + if(null!=this.getOne(new LambdaQueryWrapper().eq(AppVersion::getVersion,appVersion.getVersion()))){ throw new ServiceException(ResultCode.APP_VERSION_EXIST); } return true; From fc66db2d1344d09ce0e60b4e69cc0957e8620598 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 10 Jun 2021 09:15:31 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/security/filter/XssHttpServletRequestWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java b/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java index 70c2df5b..8d831cd2 100644 --- a/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java +++ b/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java @@ -6,7 +6,7 @@ import javax.servlet.http.HttpServletRequestWrapper; import java.util.regex.Pattern; /** - * 防止Xss sql注入 + * 防止Xss * * @author Chopper * @version v1.0