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------"); }