소스 검색

feat: 答题服务 广告记录时间校验逻辑优化

hidewnd 3 주 전
부모
커밋
bf48c3af52

+ 7 - 5
yt-question/yt-question-service/src/main/java/com/ytpm/question/config/interceptor/HttpInterceptor.java

@@ -1,5 +1,6 @@
 package com.ytpm.question.config.interceptor;
 
+import lombok.NonNull;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -18,11 +19,12 @@ public class HttpInterceptor implements HandlerInterceptor {
     private String applicationNameZh;
 
     @Override
-    public boolean preHandle(HttpServletRequest request,
-                             HttpServletResponse response, Object obj) throws Exception {
+    public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response,
+                             @NonNull Object obj) {
         // 获取客户端IP地址
         String clientIp = getClientIp(request);
-        log.info("{}收到来自客户端[{}]的用户请求", applicationNameZh, clientIp);
+        String requestURI = request.getRequestURI();
+        log.info("{}收到来自客户端[{}]的用户请求:{}", applicationNameZh, clientIp, requestURI);
         return true;
     }
 
@@ -38,8 +40,8 @@ public class HttpInterceptor implements HandlerInterceptor {
      * 请求处理之后调用;在视图渲染之前,controller处理之后。
      */
     @Override
-    public void postHandle(HttpServletRequest request,
-                           HttpServletResponse response, Object obj, ModelAndView mv)
+    public void postHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response,
+                           @NonNull Object obj, ModelAndView mv)
             throws Exception {
         response.setDateHeader("Expires", 0);
         response.setHeader("Buffer", "True");

+ 2 - 2
yt-question/yt-question-service/src/main/java/com/ytpm/question/controller/WxController.java

@@ -113,7 +113,7 @@ public class WxController {
         String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN";
         String curUser = HttpUtil.get(userInfoUrl);
         WxUserInfo wxUserInfo = JSON.parseObject(curUser, WxUserInfo.class);
-        log.error("获取的用户信息:{}", wxUserInfo);
+        log.info("[wx Login]获取的用户信息:{}", wxUserInfo);
         return wxUserInfo;
     }
 
@@ -133,7 +133,7 @@ public class WxController {
         //拿到授权码 请求微信登录返回access_token
         String result = HttpUtil.get(wxLoginUrl);
         WxLoginResult loginResult = JSON.parseObject(result, WxLoginResult.class);
-        log.error("授权码获取的登录结果:{}", loginResult);
+        log.info("[wx Login]授权码获取的登录结果:{}", loginResult);
         return loginResult;
     }
 

+ 20 - 12
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/AdServiceImpl.java

@@ -127,13 +127,8 @@ public class AdServiceImpl implements AdService {
             List<YtDyzAdRecord> saveList = new ArrayList<>();
             BigDecimal totalRevenue = BigDecimal.ZERO;
             for (DyzAdRecordParam adParam : param.getAdRecords()) {
+                handleTimeNull(adParam);
                 insertEntity = new YtDyzAdRecord();
-                if (Objects.isNull(adParam.getBeginTime()) || "null".equals(adParam.getBeginTime())) {
-                    if ("null".equals(adParam.getBeginTime())) {
-                        log.warn("param beginTime is null !");
-                    }
-                    insertEntity.setBeginTime(adParam.getFinishTime());
-                }
                 BeanUtils.copyProperties(adParam, insertEntity);
                 insertEntity.setRecordId(IdUtil.fastSimpleUUID());
                 insertEntity.setUserId(user.getUserId());
@@ -159,6 +154,24 @@ public class AdServiceImpl implements AdService {
         return Result.resultOk(RepMessage.SAVE_SUCCESS);
     }
 
+    /**
+     * 处理传入广告记录 beginTime FinishTime可能为null的情况
+     */
+    private void handleTimeNull(DyzAdRecordParam param) {
+        param.setFinishTime(verifyTimeParam("finishTime", param.getFinishTime(), null));
+        param.setBeginTime(verifyTimeParam("beginTime", param.getBeginTime(), param.getFinishTime()));
+    }
+
+    private String verifyTimeParam(String fieldName, String value, String defaultValue) {
+        if (Objects.isNull(value) || "null".equals(value)) {
+            if ("null".equals(value)) {
+                log.warn("param[{}] value '{}' is null !", fieldName, value);
+            }
+            return StrUtil.isEmpty(defaultValue) ? DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss") : defaultValue;
+        }
+        return value;
+    }
+
 
     /**
      * 根据应用查询广告数量
@@ -351,13 +364,8 @@ public class AdServiceImpl implements AdService {
 //    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
     public String saveRecordAndChangeUser(DyzAdRecordParam param, YtDyzUser user) {
         //增加广告记录
+        handleTimeNull(param);
         YtDyzAdRecord adRecord = new YtDyzAdRecord();
-        if (Objects.isNull(param.getBeginTime()) || "null".equals(param.getBeginTime())) {
-            if ("null".equals(param.getBeginTime())) {
-                log.warn("param beginTime is null !");
-            }
-            param.setBeginTime(param.getFinishTime());
-        }
         BeanUtils.copyProperties(param, adRecord);
         adRecord.setRecordId(IdUtil.fastSimpleUUID());
         adRecord.setNetworkName(AdPlatformTypeEnum.getDesc(Integer.parseInt(param.getNetworkFormId())));