jiangping
2023-10-26 7a1d1ae5f7bb4fce96fb7a134d755765cd3c4e4a
添加统计日志
已修改8个文件
54 ■■■■ 文件已修改
server/src/main/java/doumeemes/api/system/SystemController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/config/shiro/ShiroConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/core/annotation/trace/TraceInterceptor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/core/utils/DateUtil.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/business/model/BizLingyang.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/business/BizLingyangService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/business/impl/BizLingyangServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/task/ScheduleTool.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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("平台登录")
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");
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);
            }
            // 操作信息
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());
        }
    }
    // -----------------------------------------------------------------------
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;
}
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);
    /**
     * 主键查询
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);
            }
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------");
    }