From 7a1d1ae5f7bb4fce96fb7a134d755765cd3c4e4a Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 26 十月 2023 10:51:50 +0800
Subject: [PATCH] 添加统计日志

---
 server/src/main/java/doumeemes/task/ScheduleTool.java                            |    4 +++-
 server/src/main/java/doumeemes/core/annotation/trace/TraceInterceptor.java       |    2 +-
 server/src/main/java/doumeemes/dao/business/model/BizLingyang.java               |    2 ++
 server/src/main/java/doumeemes/core/utils/DateUtil.java                          |   10 ++++++++++
 server/src/main/java/doumeemes/config/shiro/ShiroConfig.java                     |    1 +
 server/src/main/java/doumeemes/service/business/impl/BizLingyangServiceImpl.java |   18 ++++++++++++------
 server/src/main/java/doumeemes/api/system/SystemController.java                  |   13 +++++++++++++
 server/src/main/java/doumeemes/service/business/BizLingyangService.java          |    4 +++-
 8 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/server/src/main/java/doumeemes/api/system/SystemController.java b/server/src/main/java/doumeemes/api/system/SystemController.java
index 61dc7cb..f52d886 100644
--- a/server/src/main/java/doumeemes/api/system/SystemController.java
+++ b/server/src/main/java/doumeemes/api/system/SystemController.java
@@ -7,12 +7,14 @@
 import doumeemes.core.model.ApiResponse;
 import doumeemes.core.model.LoginUserInfo;
 import doumeemes.core.utils.Constants;
+import doumeemes.core.utils.DateUtil;
 import doumeemes.dao.business.dto.CompanyInitDataDTO;
 import doumeemes.dao.ext.dto.WxLoginDTO;
 import doumeemes.dao.ext.dto.WxLoginOutDTO;
 import doumeemes.dao.ext.vo.WxLoginVO;
 import doumeemes.dao.system.dto.LoginDTO;
 import doumeemes.dao.system.dto.UpdatePwdDto;
+import doumeemes.service.business.BizLingyangService;
 import doumeemes.service.system.SystemLoginService;
 import doumeemes.service.system.WxLoginService;
 import io.swagger.annotations.Api;
@@ -31,6 +33,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
 import java.util.Iterator;
 
 /**
@@ -53,12 +56,22 @@
     @Autowired
     private WxLoginService wxLoginService;
 
+    @Autowired
+    BizLingyangService bizLingyangService;
     @PreventRepeat(limit = 10, lockTime = 10000)
     @ApiOperation("鐧诲綍")
     @PostMapping("/login")
     public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, HttpServletRequest request) {
         return ApiResponse.success(systemLoginService.loginByPassword(dto, request));
     }
+    @PreventRepeat(limit = 10, lockTime = 10000)
+    @ApiOperation("鎵嬪姩鍚屾鏌愬ぉ鐨勬暟鎹�(yyyy-MM-dd HH:mm:ss)")
+    @GetMapping("/syncLingCountData")
+    public ApiResponse<String> syncLingCountData (@RequestParam String dateStr, HttpServletRequest request) {
+        Date date = DateUtil.getDateFromString(dateStr);
+        bizLingyangService.syncLingData(date);
+        return ApiResponse.success("鎿嶄綔瀹屾垚");
+    }
 
     @PreventRepeat(limit = 10, lockTime = 10000)
     @ApiOperation("骞冲彴鐧诲綍")
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java b/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
index 3f1eeba..b5fe363 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
@@ -90,6 +90,7 @@
         Map<String, String> map = new LinkedHashMap<>();
         // 璺緞鎷︽埅閰嶇疆
         map.put("/system/login", "anon");
+        map.put("/system/syncLingCountData", "anon");
         map.put("/system/wxLogin", "anon");
         map.put("/system/wxProgramLogin", "anon");
         map.put("/system/wxAccountLogin", "anon");
diff --git a/server/src/main/java/doumeemes/core/annotation/trace/TraceInterceptor.java b/server/src/main/java/doumeemes/core/annotation/trace/TraceInterceptor.java
index 7c12213..08d2c43 100644
--- a/server/src/main/java/doumeemes/core/annotation/trace/TraceInterceptor.java
+++ b/server/src/main/java/doumeemes/core/annotation/trace/TraceInterceptor.java
@@ -89,7 +89,7 @@
                 traceLog.setUserRealname(userInfo.getRealname());
                 traceLog.setUserRoles(StringUtils.join(userInfo.getRoles(), ","));
                 traceLog.setUserPermissions(StringUtils.join(userInfo.getPermissions(), ","));
-                traceLog.setCompanyId(userInfo.getCompanyUser()!=null?userInfo.getCompanyUser().getId():null);
+                traceLog.setCompanyUserId(userInfo.getCompanyUser()!=null?userInfo.getCompanyUser().getId():null);
                 traceLog.setCompanyId(userInfo.getCompany()!=null?userInfo.getCompany().getId():null);
             }
             // 鎿嶄綔淇℃伅
diff --git a/server/src/main/java/doumeemes/core/utils/DateUtil.java b/server/src/main/java/doumeemes/core/utils/DateUtil.java
index 10d7411..93ffbee 100644
--- a/server/src/main/java/doumeemes/core/utils/DateUtil.java
+++ b/server/src/main/java/doumeemes/core/utils/DateUtil.java
@@ -2329,6 +2329,16 @@
             return new Timestamp(System.currentTimeMillis());
         }
     }
+    public static Date getSdfShortDateFromString(String strDate) {
+        if (StringUtils.isEmpty(strDate)) {
+            return new Date(System.currentTimeMillis());
+        }
+        try {
+            return sdfShort.parse(strDate);
+        } catch (Exception ex) {
+            return new Timestamp(System.currentTimeMillis());
+        }
+    }
 
 
     // -----------------------------------------------------------------------
diff --git a/server/src/main/java/doumeemes/dao/business/model/BizLingyang.java b/server/src/main/java/doumeemes/dao/business/model/BizLingyang.java
index 34b2611..f057af6 100644
--- a/server/src/main/java/doumeemes/dao/business/model/BizLingyang.java
+++ b/server/src/main/java/doumeemes/dao/business/model/BizLingyang.java
@@ -1,5 +1,6 @@
 package doumeemes.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import doumeemes.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -58,6 +59,7 @@
     private Integer actionTimes;
     @ApiModelProperty(value = "鐧婚檰娆℃暟", example = "1")
     @ExcelColumn(name="鐧婚檰娆℃暟")
+    @TableField(exist = false)
     private Integer loginTimes;
 
 }
diff --git a/server/src/main/java/doumeemes/service/business/BizLingyangService.java b/server/src/main/java/doumeemes/service/business/BizLingyangService.java
index 9333920..fea3e4e 100644
--- a/server/src/main/java/doumeemes/service/business/BizLingyangService.java
+++ b/server/src/main/java/doumeemes/service/business/BizLingyangService.java
@@ -3,6 +3,8 @@
 import doumeemes.core.model.PageData;
 import doumeemes.core.model.PageWrap;
 import doumeemes.dao.business.model.BizLingyang;
+
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -54,7 +56,7 @@
      * @param bizLingyangs 瀹炰綋闆�
      */
     void updateByIdInBatch(List<BizLingyang> bizLingyangs);
-    void syncLingData();
+    void syncLingData(Date data);
 
     /**
      * 涓婚敭鏌ヨ
diff --git a/server/src/main/java/doumeemes/service/business/impl/BizLingyangServiceImpl.java b/server/src/main/java/doumeemes/service/business/impl/BizLingyangServiceImpl.java
index 230f60a..d4ae173 100644
--- a/server/src/main/java/doumeemes/service/business/impl/BizLingyangServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/business/impl/BizLingyangServiceImpl.java
@@ -5,6 +5,7 @@
 import doumeemes.core.model.PageData;
 import doumeemes.core.model.PageWrap;
 import doumeemes.core.utils.Constants;
+import doumeemes.core.utils.DateUtil;
 import doumeemes.core.utils.Utils;
 import doumeemes.dao.business.BizLingyangMapper;
 import doumeemes.dao.business.model.BizLingyang;
@@ -85,27 +86,32 @@
     }
     @Override
     @Transactional
-    public void   syncLingData() {
-        Date date = new Date();
+    public void   syncLingData(Date date) {
+//        Date date = new Date();
         QueryWrapper<SystemLoginLog> param = new QueryWrapper<>();
         MPJLambdaWrapper<SystemLoginLog> mpjLambdaWrapper = new MPJLambdaWrapper<>();
         mpjLambdaWrapper.selectAll(SystemLoginLog.class);
         mpjLambdaWrapper.leftJoin(Company.class,Company::getId,SystemLoginLog::getCompanyId);
         mpjLambdaWrapper.leftJoin(CompanyUser.class,CompanyUser::getId,SystemLoginLog::getCompanyUserId);
-        mpjLambdaWrapper.select("(select count(b.id) from system_trace_log b where b.company_id=t1.id and b.company_user_id=t2.id) as logNum");
+        mpjLambdaWrapper.select("(select count(b.id) from system_trace_log b where to_days(b.OPERA_TIME) =to_days('"+ DateUtil.getPlusTime2(date) +"') and b.company_id=t1.id and b.company_user_id=t2.id) as logNum");
         mpjLambdaWrapper.selectAs( CompanyUser::getLingyangUserid,SystemLoginLog::getLingyangUserid);
         mpjLambdaWrapper.selectAs(Company::getCreditCode, SystemLoginLog::getCompanyCode);
         mpjLambdaWrapper.eq(SystemLoginLog::getSuccess, Constants.ONE);
         mpjLambdaWrapper.eq(SystemLoginLog::getOrgin, Constants.USER_LOGIN_ORIGIN.lingyang);
-        mpjLambdaWrapper.apply("to_days(login_time) =to_days(now())" );
+        mpjLambdaWrapper.apply("to_days(login_time) =to_days('"+ DateUtil.getPlusTime2(date) +"')" );
         mpjLambdaWrapper.select("count(t.id) as num");
         mpjLambdaWrapper.groupBy(SystemLoginLog::getUserId);
         List<SystemLoginLog> list = systemLoginLogJoinMapper.selectJoinList(SystemLoginLog.class,mpjLambdaWrapper);
+
         if(list!=null && list.size()>0){
+            //鍒犻櫎鑰佺殑
+            bizLingyangMapper.delete(new QueryWrapper<BizLingyang>()
+                    .lambda().apply("to_days(create_time) =to_days('"+ DateUtil.getPlusTime2(date) +"')" )
+            );
             for(SystemLoginLog log : list){
                 BizLingyang model = new BizLingyang();
                 model.setCompanyId(log.getCompanyId());
-                model.setCreateTime(new Date());
+                model.setCreateTime(date);
                 model.setUserPhone(log.getLoginUsername());
                 model.setCreditCode(log.getCompanyCode());
                 try {
@@ -114,7 +120,7 @@
 
                 }
                 model.setAppKey(systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_APPKEY ).getCode());
-                model.setActionTimes(log.getLogNum());
+                model.setActionTimes(log.getNum() + log.getLogNum());
                 model.setLoginTimes(log.getNum());
                 bizLingyangMapper.insert(model);
             }
diff --git a/server/src/main/java/doumeemes/task/ScheduleTool.java b/server/src/main/java/doumeemes/task/ScheduleTool.java
index 66fca74..138422a 100644
--- a/server/src/main/java/doumeemes/task/ScheduleTool.java
+++ b/server/src/main/java/doumeemes/task/ScheduleTool.java
@@ -13,6 +13,8 @@
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
+
 /**
  * 瀹氭椂浠诲姟
  * @author jiangping
@@ -107,7 +109,7 @@
     public void syncLingData() throws Exception {
         System.out.println("姣忓ぉ瀹氭椂缁熻缇氱緤鏁版嵁淇℃伅--------Begin------");
         //TODO--------------姣忓ぉ瀹氭椂缁熻缇氱緤鏁版嵁淇℃伅------------
-        bizLingyangService.syncLingData();
+        bizLingyangService.syncLingData(new Date());
         System.out.println("姣忓ぉ瀹氭椂缁熻缇氱緤鏁版嵁淇℃伅--------end------");
     }
 

--
Gitblit v1.9.3