Explorar el Código

定时任务打印日志,以及完善注释

xdd hace 3 semanas
padre
commit
4bd5752ecf

+ 1 - 0
.gitignore

@@ -54,3 +54,4 @@ hs_err_pid*
 
 #1.配置语法: 以斜杠“/”开头表示目录: 以星号“*”通配多个字符: 以问号“?”通配单个字符 以方括号“[]”包含单个字符的匹配列表: 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录:
 #此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效
+/fs_hospital.sql

+ 63 - 0
fs-admin/src/main/java/com/fs/core/aspectj/QuartzRunnableAspect.java

@@ -0,0 +1,63 @@
+package com.fs.core.aspectj;
+
+import com.fs.common.annotation.QuartzRunnable;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Method;
+
+@Aspect
+@Component
+public class QuartzRunnableAspect {
+
+    private static final Logger logger = LoggerFactory.getLogger(QuartzRunnableAspect.class);
+
+    // 定义切点:匹配所有带有 @QuartzRunnable 注解的方法
+    @Pointcut("@annotation(com.fs.common.annotation.QuartzRunnable)")
+    public void quartzRunnablePointcut() {
+    }
+
+    // 环绕通知:在方法执行前后进行处理
+    @Around("quartzRunnablePointcut()")
+    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
+        // 获取方法签名
+        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+        Method method = signature.getMethod();
+
+        // 获取 @QuartzRunnable 注解
+        QuartzRunnable quartzRunnable = method.getAnnotation(QuartzRunnable.class);
+
+        // 获取定时任务描述(注解的 desc 属性)
+        String taskDescription = quartzRunnable.name();
+
+        // 记录开始时间
+        long startTime = System.currentTimeMillis();
+
+        // 打印定时任务开始信息
+        logger.info("定时任务 [{}] 开始执行...", taskDescription);
+
+        // 执行目标方法
+        Object result;
+        try {
+            result = joinPoint.proceed();
+        }catch (Exception e){
+            logger.error("定时任务 [{}] 执行失败,异常信息:{}", taskDescription, e.getMessage(), e);
+            throw e;
+        }
+
+        // 记录结束时间
+        long endTime = System.currentTimeMillis();
+
+        // 计算并打印耗时
+        long duration = endTime - startTime;
+        logger.info("定时任务 [{}] 执行完毕,耗时:{} ms", taskDescription, duration);
+
+        return result;
+    }
+}

+ 2 - 0
fs-admin/src/main/java/com/fs/task/CouponTask.java

@@ -1,5 +1,6 @@
 package com.fs.task;
 
+import com.fs.common.annotation.QuartzRunnable;
 import com.fs.store.service.IFsCouponScheduleService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -17,6 +18,7 @@ public class CouponTask {
     /**
      * 发放优惠券
      */
+    @QuartzRunnable(name = "发放优惠券")
     public void issueCoupon(){
         log.info("开始执行发放优惠券定时任务");
         long startTime = System.currentTimeMillis();

+ 3 - 14
fs-admin/src/main/java/com/fs/task/ExpressTask.java

@@ -1,5 +1,6 @@
 package com.fs.task;
 
+import com.fs.common.annotation.QuartzRunnable;
 import com.fs.express.IExpressService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,21 +18,9 @@ public class ExpressTask {
     /**
      * 推送物流信息到快递鸟定时任务
      */
+    @QuartzRunnable(name="推送物流信息到快递鸟定时任务")
     public void subscribeExpress(){
-        long startTime = System.currentTimeMillis();
-        log.info("定时任务【推送物流信息到快递鸟】开始执行, 开始时间: {}", startTime);
-
-        try {
-            expressService.subscribeExpress();
-            log.info("定时任务【推送物流信息到快递鸟】执行成功");
-        } catch (Exception e) {
-            log.error("定时任务【推送物流信息到快递鸟】执行失败, 异常信息: {}", e.getMessage(), e);
-            throw e;
-        } finally {
-            long endTime = System.currentTimeMillis();
-            long costTime = endTime - startTime;
-            log.info("定时任务【推送物流信息到快递鸟】执行结束, 结束时间: {}, 耗时: {}ms", endTime, costTime);
-        }
+        expressService.subscribeExpress();
     }
 
 }

+ 8 - 4
fs-admin/src/main/java/com/fs/task/MiniProgramSubTask.java

@@ -1,8 +1,10 @@
 package com.fs.task;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
+import com.fs.common.annotation.QuartzRunnable;
 import com.fs.store.domain.FsMiniprogramSubNotifyTask;
 import com.fs.store.dto.ClientCredGrantReqDTO;
 import com.fs.store.dto.MiniGramSubsMsgResultDTO;
@@ -46,6 +48,7 @@ public class MiniProgramSubTask {
     /**
      * 小程序订阅通知
      */
+    @QuartzRunnable(name="小程序订阅通知")
     public void notifyMiniAppSub(){
         log.info("小程序订阅通知定时任务");
         // 先获取所有可用待处理任务
@@ -75,10 +78,10 @@ public class MiniProgramSubTask {
                sendRequestDTO.setTouser(pendingDatum.getTouser());
                sendRequestDTO.setPage(pendingDatum.getPage());
                TypeReference<Map<String, TemplateMessageSendRequestDTO.TemplateDataValue>> typeReference = new TypeReference<Map<String, TemplateMessageSendRequestDTO.TemplateDataValue>>() {};
-               sendRequestDTO.setData(JSONObject.parseObject(pendingDatum.getData(),typeReference));
+               sendRequestDTO.setData(JSON.parseObject(pendingDatum.getData(),typeReference));
                MiniGramSubsMsgResultDTO miniGramSubsMsgResultDTO = wechatMiniProgrService.sendSubscribeMsg(accessToken, sendRequestDTO);
-               pendingDatum.setRequestBody(JSONObject.toJSONString(sendRequestDTO));
-               pendingDatum.setResponseBody(JSONObject.toJSONString(miniGramSubsMsgResultDTO));
+               pendingDatum.setRequestBody(JSON.toJSONString(sendRequestDTO));
+               pendingDatum.setResponseBody(JSON.toJSONString(miniGramSubsMsgResultDTO));
 
                // 如果推送消息成功
                if(miniGramSubsMsgResultDTO.getErrcode() == 0){
@@ -86,7 +89,7 @@ public class MiniProgramSubTask {
                } else {
                    // 更新任务状态为执行失败
                    pendingDatum.setStatus(MiniAppNotifyTaskStatusEnum.FAILED.getValue());
-                   pendingDatum.setErrorMessage(JSONObject.toJSONString(miniGramSubsMsgResultDTO));
+                   pendingDatum.setErrorMessage(JSON.toJSONString(miniGramSubsMsgResultDTO));
                    pendingDatum.setRetryCount(pendingDatum.getRetryCount() +1);
                }
            }catch (Throwable e){
@@ -95,6 +98,7 @@ public class MiniProgramSubTask {
                pendingDatum.setErrorMessage(ExceptionUtils.getStackTrace(e));
                pendingDatum.setRetryCount(pendingDatum.getRetryCount() +1);
                log.error("小程序订阅通知定时任务异常: {}", ExceptionUtils.getStackTrace(e));
+               throw e;
            }
         }
 

+ 2 - 0
fs-admin/src/main/java/com/fs/task/PaymentTask.java

@@ -1,5 +1,6 @@
 package com.fs.task;
 
+import com.fs.common.annotation.QuartzRunnable;
 import com.fs.store.service.IFsStorePaymentService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,6 +15,7 @@ public class PaymentTask {
     /**
      * 补偿机制,定时反查台州银行
      */
+    @QuartzRunnable(name="台州银行补偿机制")
     public void paymentSync() {
         fsStorePaymentService.paymentSync();
     }

+ 50 - 127
fs-admin/src/main/java/com/fs/task/StoreTask.java

@@ -1,12 +1,11 @@
 package com.fs.task;
 
-import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
+import com.fs.common.annotation.QuartzRunnable;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyUserMapper;
-import com.fs.company.service.ICompanyService;
 import com.fs.core.security.SecurityUtils;
 import com.fs.erp.domain.ErpDeliverys;
 import com.fs.erp.domain.ErpGoods;
@@ -14,15 +13,10 @@ import com.fs.erp.domain.ErpOrderQuery;
 import com.fs.erp.dto.*;
 import com.fs.erp.service.IErpGoodsService;
 import com.fs.erp.service.IErpOrderService;
-import com.fs.pay.pay.domain.OrderResult;
-import com.fs.pay.pay.dto.OrderQueryDTO;
-import com.fs.pay.pay.service.PayService;
 import com.fs.store.config.StoreConfig;
 import com.fs.store.domain.*;
-import com.fs.store.dto.ExpressInfoDTO;
 import com.fs.store.dto.StoreProductGroupDTO;
 import com.fs.store.enums.OrderLogEnum;
-import com.fs.store.enums.ShipperCodeEnum;
 import com.fs.store.mapper.*;
 import com.fs.store.param.*;
 import com.fs.store.service.*;
@@ -68,8 +62,6 @@ public class StoreTask {
     @Autowired
     private IErpOrderService erpOrderService;
 
-    @Autowired
-    private PayService ybPayService;
     @Autowired
     private FsStoreOrderMapper fsStoreOrderMapper;
 
@@ -79,12 +71,6 @@ public class StoreTask {
     @Autowired
     private IFsStoreOrderItemService storeOrderItemService;
 
-    @Autowired
-    private FsStorePaymentMapper fsStorePaymentMapper;
-
-    @Autowired
-    private IErpGoodsService goodsService;
-
     @Autowired
     private FsUserTuiMoneyRankMapper fsUserTuiMoneyRankMapper;
 
@@ -100,16 +86,6 @@ public class StoreTask {
     @Autowired
     private IFsStoreProductGroupService storeProductGroupService;
 
-    @Autowired
-    private IFsExpressService expressService;
-
-    @Autowired
-    private FsStorePaymentMapper paymentMapper;
-    @Autowired
-    private IFsStorePaymentService fsStorePaymentService;
-    @Autowired
-    private ICompanyService companyService;
-
     @Autowired
     private IFsStoreAfterSalesService fsStoreAfterSalesService;
 
@@ -122,19 +98,10 @@ public class StoreTask {
     @Autowired
     private IFsStoreOrderStatusService orderStatusService;
 
-    public void tt() {
-        ErpGoodsStockQueryRequert request = new ErpGoodsStockQueryRequert();
-        request.setBarcode("105201");
-        ErpGoodsStockQueryResponse response = goodsService.getGoodsStock(request);
-        ErpGoodsQueryRequert erpGoodsQueryRequert = new ErpGoodsQueryRequert();
-        erpGoodsQueryRequert.setCode("105201");
-        ErpGoodsQueryResponse goods = goodsService.getGoods(erpGoodsQueryRequert);
-
-        System.out.println(goods);
-        System.out.println(response);
-    }
-
-    //每5分钟执行一次
+    /**
+     * 发货任务
+     */
+    @QuartzRunnable(name = "发货任务")
     public void deliveryOp() {
         Set<String> orders = redisTemplate.keys(DELIVERY + ":*");
         for (String extndOrderId : orders) {
@@ -169,7 +136,10 @@ public class StoreTask {
 
     }
 
-
+    /**
+     * 佣金排行榜
+     */
+    @QuartzRunnable(name = "佣金排行榜")
     public void addUserTuiMoneyRank() {
         List<FsUserShareVO> fsUserShareVOS1 = fsUserTuiMoneyRankMapper.selectFsUserTuiMoneyRankByType(1);
         fsUserTuiMoneyRankMapper.deleteFsUserTuiMoneyRankByType(1);
@@ -227,7 +197,10 @@ public class StoreTask {
         }
     }
 
-
+    /**
+     * 更新商品成本价
+     */
+    @QuartzRunnable(name = "更新商品成本价")
     public void storeProdUpdateCostPrice() {
         String json = configService.selectConfigByKey("store.config");
         StoreConfig config = JSONUtil.toBean(json, StoreConfig.class);
@@ -300,13 +273,20 @@ public class StoreTask {
 
     }
 
+    /**
+     * 优惠券过期处理
+     */
+    @QuartzRunnable(name = "优惠券过期处理")
     public void couponOp() {
         couponUserService.updateFsCouponByExpire();
 
     }
 
 
-    //退款自动处理 24小时未审核自动审核通过 每小时执行一次
+    /**
+     * 退款自动处理 24小时未审核自动审核通过 每小时执行一次
+     */
+    @QuartzRunnable(name = "退款自动处理")
     public void refundOp() {
         //获取所有退款申请
         List<FsStoreAfterSales> list = afterSalesService.selectFsStoreAfterSalesByDoAudit();
@@ -324,7 +304,10 @@ public class StoreTask {
     }
 
 
-    //每天执行一次
+    /**
+     * 订单完成7天后会员分佣
+     */
+    @QuartzRunnable(name = "订单完成7天后会员分佣")
     public void userMoneyOp() {
         List<FsStoreOrder> list = orderService.selectFsStoreOrderListByFinish7Day();
         if (list != null) {
@@ -335,7 +318,10 @@ public class StoreTask {
     }
 
 
-    //每30秒执行一次
+    /**
+     * 订单Items同步
+     */
+    @QuartzRunnable(name = "订单Items同步")
     public void orderItemSyncOp() {
         List<FsStoreOrder> list = fsStoreOrderService.selectFsStoreOrderItemJson();
         for (FsStoreOrder storeOrder : list) {
@@ -350,66 +336,12 @@ public class StoreTask {
         }
     }
 
-    public void returnDeliveryId() {
-        List<String> list = fsStoreOrderMapper.selectErpCode();
-        for (String s : list) {
-            ErpOrderQueryRequert request = new ErpOrderQueryRequert();
-            request.setCode(s);
-            ErpOrderQueryResponse response = erpOrderService.getOrder(request);
-            if (response.getOrders() != null && response.getOrders().size() > 0) {
-                for (ErpOrderQuery orderQuery : response.getOrders()) {
-                    if (orderQuery.getDeliverys() != null && orderQuery.getDeliverys().size() > 0) {
-                        for (ErpDeliverys delivery : orderQuery.getDeliverys()) {
-                            if (delivery.getDelivery() && StringUtils.isNotEmpty(delivery.getMail_no())) {
-                                FsStoreOrder order = new FsStoreOrder();
-                                order.setExtendOrderId(s);
-                                order.setDeliveryId(delivery.getMail_no());
-                                order.setStatus(2);
-                                fsStoreOrderMapper.updateDelivery(order);
-                            }
-                        }
-                    }
-                }
-            }
-
-
-        }
-
-    }
-
-    @Deprecated
-    public void changeStatus() {
-        List<Long> list = fsStoreOrderMapper.selectOrderId();
-        for (Long orderId : list) {
-            FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderById(orderId);
-            String lastFourNumber = "";
-            if (order.getDeliverySn().equals(ShipperCodeEnum.SF.getValue())) {
-                lastFourNumber = order.getUserPhone();
-                if (lastFourNumber.length() == 11) {
-                    lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
-                }
-            }
-            ExpressInfoDTO dto = expressService.getExpressInfo(order.getOrderCode(), order.getDeliverySn(), order.getDeliveryId(), lastFourNumber);
-            FsStoreOrder map = new FsStoreOrder();
-            map.setDeliveryStatus(Integer.parseInt(dto.getState()));
-            map.setId(order.getId());
-            map.setDeliveryType(dto.getStateEx());
-            fsStoreOrderMapper.updateFsStoreOrder(map);
-        }
-    }
-
-
-    public void subCompanyMoney() {
-        List<Long> list = paymentMapper.selectPaymentIds();
-        for (Long paymentId : list) {
-            FsStorePayment payment = fsStorePaymentService.selectFsStorePaymentById(paymentId);
-            if (payment.getCompanyId() != null && payment.getCompanyId() > 0) {
-                companyService.subCompanyPaymentMoney(payment);
-            }
-        }
-    }
-
 
+    /**
+     * 批量推管易
+     * @throws ParseException 解析异常
+     */
+    @QuartzRunnable(name = "批量推管易")
     public void updateOrderItem() throws ParseException {
         List<Long> ids = itemMapper.selectOrderIdByNoErp();
         for (Long id : ids) {
@@ -418,7 +350,10 @@ public class StoreTask {
     }
 
 
-    //每天执行一次
+    /**
+     * 同步物流状态
+     */
+    @QuartzRunnable(name = "同步物流状态")
     public void syncExpress() {
         List<Long> ids = fsStoreOrderMapper.selectSyncExpressIds();
 
@@ -430,31 +365,11 @@ public class StoreTask {
 
     }
 
-    public void returnPayStatus() {
-        List<String> ids = fsStorePaymentMapper.selectPayStatusIds();
-        for (String id : ids) {
-            OrderQueryDTO o = new OrderQueryDTO();
-            o.setUpOrderId(id);
-            OrderResult orderResult = ybPayService.getOrder(o);
-            if ("0".equals(orderResult.getState())) {
-                String[] order = orderResult.getLowOrderId().split("-");
-                if (orderResult.getStatus().equals("100")) {
-                    switch (order[0]) {
-                        case "store":
-                            orderService.payConfirm(1, null, order[1], o.getUpOrderId(), orderResult.getBankTrxId(), orderResult.getBankOrderId());
-                        case "store_remain":
-                            orderService.payRemainConfirm(order[1], o.getUpOrderId(), orderResult.getBankTrxId(), orderResult.getBankOrderId());
-                        case "payment":
-                            fsStorePaymentService.payConfirm(order[1], o.getUpOrderId(), orderResult.getBankTrxId(), orderResult.getBankOrderId());
-                    }
-
-                }
-            }
-
-        }
-
-    }
 
+    /**
+     * 批量分佣
+     */
+    @QuartzRunnable(name = "批量分佣")
     public void AddTuiMoney() {
         List<Long> ids = fsStoreOrderMapper.selectAddTuiMoney();
         for (Long id : ids) {
@@ -487,6 +402,10 @@ public class StoreTask {
         }
     }
 
+    /**
+     * 检测弱密码
+     */
+    @QuartzRunnable(name = "检测弱密码")
     public void updateCompanyUserStatus() {
         CompanyUser user = new CompanyUser();
         user.setStatus("0");
@@ -501,6 +420,10 @@ public class StoreTask {
         }
     }
 
+    /**
+     * 更新发货状态
+     */
+    @QuartzRunnable(name = "发货任务")
     public void updateExpress() {
         List<FsStoreOrder> list = fsStoreOrderMapper.selectUpdateExpress();
         for (FsStoreOrder order : list) {

+ 17 - 0
fs-common/src/main/java/com/fs/common/annotation/QuartzRunnable.java

@@ -0,0 +1,17 @@
+package com.fs.common.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 定时任务方法
+ */
+@Inherited
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface QuartzRunnable {
+    /**
+     * 定时任务描述
+     */
+    public String name();
+}

+ 0 - 1
fs-service-quartz/src/main/java/com/fs/quartz/util/AbstractQuartzJob.java

@@ -20,7 +20,6 @@ import com.fs.quartz.service.ISysJobLogService;
 /**
  * 抽象quartz调用
  *
- 
  */
 public abstract class AbstractQuartzJob implements Job
 {