This commit is contained in:
ran.shang
2025-06-11 09:42:13 +08:00
commit 7e38b8d971
1935 changed files with 132836 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
package com.newyetai.recruit.eventtrack.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.newyetai.common.AlitaResult;
import com.newyetai.tkmybatis.pojo.Page;
import com.newyetai.recruit.eventtrack.dto.*;
import com.newyetai.recruit.eventtrack.service.EventTrackService;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@Api(tags = " 埋点")
@RestController
@RequestMapping("/event_track")
public class EventTrackController {
@Autowired
private EventTrackService eventTrackService;
@PostMapping("/create")
@ApiOperation(" 埋点-创建")
public AlitaResult<EventTrackDTO> create(@RequestBody EventTrackOperatorDTO operatorDTO) {
return AlitaResult.success(eventTrackService.create(operatorDTO));
}
@PutMapping("/modify")
@ApiOperation(" 埋点-修改")
public AlitaResult<EventTrackDTO> modify(@RequestBody EventTrackOperatorDTO operatorDTO) {
return AlitaResult.success(eventTrackService.modify(operatorDTO));
}
@DeleteMapping("{id}")
@ApiOperation(" 埋点-删除")
public AlitaResult<EventTrackDTO> delete(@PathVariable("id") Long id) {
return AlitaResult.success(eventTrackService.delete(id));
}
@GetMapping("{id}")
@ApiOperation(" 埋点-查询单个")
public AlitaResult<EventTrackDTO> findById(@PathVariable("id") Long id) {
return AlitaResult.success(eventTrackService.findById(id));
}
@GetMapping("list")
@ApiOperation(" 埋点-列表查询")
public AlitaResult<List<EventTrackDTO>> list(EventTrackQueryDTO queryDTO) {
return AlitaResult.success(eventTrackService.list(queryDTO));
}
@GetMapping("page")
@ApiOperation(" 埋点-分页查询")
public AlitaResult<Page<EventTrackDTO>> page(EventTrackPageQueryDTO queryDTO) {
eventTrackService.page(queryDTO);
return AlitaResult.success(queryDTO.getPageResult());
}
@GetMapping("statistics")
public AlitaResult<List<EventTrackStatisticsResDTO>> statistics(EventTrackStatisticsQueryDTO queryDTO) {
return AlitaResult.success(eventTrackService.statistics(queryDTO));
}
}

View File

@@ -0,0 +1,28 @@
package com.newyetai.recruit.eventtrack.convert;
import com.newyetai.recruit.eventtrack.entity.EventTrack;
import com.newyetai.recruit.eventtrack.dto.EventTrackDTO;
import com.newyetai.recruit.eventtrack.dto.EventTrackOperatorDTO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@Mapper
public interface EventTrackConvert {
EventTrackConvert INSTANCE = Mappers.getMapper(EventTrackConvert.class);
EventTrack convert(EventTrackDTO dto);
EventTrackDTO convert(EventTrack entity);
EventTrack convert(EventTrackOperatorDTO dto);
}

View File

@@ -0,0 +1,30 @@
package com.newyetai.recruit.eventtrack.dao;
import com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsQueryDTO;
import com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsResDTO;
import com.newyetai.tkmybatis.mybatis.MyMapper;
import com.newyetai.recruit.eventtrack.entity.EventTrack;
import com.newyetai.recruit.eventtrack.dto.EventTrackDTO;
import com.newyetai.recruit.eventtrack.dto.EventTrackQueryDTO;
import com.newyetai.recruit.eventtrack.dto.EventTrackPageQueryDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@Mapper
public interface EventTrackMapper extends MyMapper<EventTrack> {
List<EventTrackDTO> page(@Param("param") EventTrackPageQueryDTO queryDTO);
List<EventTrackDTO> list(@Param("param") EventTrackQueryDTO queryDTO);
List<EventTrackStatisticsResDTO> statistics(@Param("param") EventTrackStatisticsQueryDTO queryDTO);
}

View File

@@ -0,0 +1,37 @@
package com.newyetai.recruit.eventtrack.dto;
import com.newyetai.common.dto.BaseDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@ApiModel(" 埋点")
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class EventTrackDTO extends BaseDTO {
private static final long serialVersionUID = 1L;
@ApiModelProperty("设备编号")
private String deviceCode;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("类型")
private String type;
}

View File

@@ -0,0 +1,36 @@
package com.newyetai.recruit.eventtrack.dto;
import java.io.Serializable;
import lombok.Data;
/**
* @description:
* @author: guixinman
* @create: 2025-01-23 16:43
**/
@Data
public class EventTrackMachineReqDTO implements Serializable {
/**
* 机器编号
*/
private String deviceCode;
/**
*
*/
private String name;
private String address;
/**
* 日期
*/
private String createDate;
/**
* 当日使用人数
*/
private Long userNumber;
}

View File

@@ -0,0 +1,48 @@
package com.newyetai.recruit.eventtrack.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@ApiModel(" 埋点")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EventTrackOperatorDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@ApiModelProperty("设备编号")
private String deviceCode;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("类型")
private String type;
}

View File

@@ -0,0 +1,66 @@
package com.newyetai.recruit.eventtrack.dto;
import com.newyetai.common.dto.PageQueryDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@ApiModel(" 埋点")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class EventTrackPageQueryDTO extends PageQueryDTO<EventTrackDTO> {
private static final long serialVersionUID = 1L;
private Long id;
@ApiModelProperty("设备编号")
private String deviceCode;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("类型")
private String type;
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTimeStart;
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTimeEnd;
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTimeStart;
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTimeEnd;
}

View File

@@ -0,0 +1,66 @@
package com.newyetai.recruit.eventtrack.dto;
import com.newyetai.common.dto.BaseDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@ApiModel(" 埋点")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class EventTrackQueryDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@ApiModelProperty("设备编号")
private String deviceCode;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("类型")
private String type;
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTimeStart;
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTimeEnd;
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTimeStart;
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTimeEnd;
}

View File

@@ -0,0 +1,25 @@
package com.newyetai.recruit.eventtrack.dto;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* @description:
* @author: guixinman
* @create: 2025-01-23 16:04
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EventTrackStatisticsQueryDTO implements Serializable {
private String createTimeStart;
private String createTimeEnd;
}

View File

@@ -0,0 +1,21 @@
package com.newyetai.recruit.eventtrack.dto;
import java.io.Serializable;
import lombok.Data;
/**
* @description: 埋点分组DTO
* @author: guixinman
* @create: 2025-01-23 15:59
**/
@Data
public class EventTrackStatisticsResDTO implements Serializable {
private String deviceCode;
private Long userId;
private String type;
private String name;
private String address;
private String createDate;
private Long userNumber;
}

View File

@@ -0,0 +1,39 @@
package com.newyetai.recruit.eventtrack.entity;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
import java.util.Date;
import com.newyetai.common.entity.BaseEntity;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@TableName(value = "hr_event_track")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class EventTrack extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 设备编号
*/
private String deviceCode;
/**
* 用户id
*/
private Long userId;
/**
* 类型
*/
private String type;
}

View File

@@ -0,0 +1,89 @@
package com.newyetai.recruit.eventtrack.job;
import com.newyetai.common.util.JsonUtils;
import com.newyetai.recruit.eventtrack.dto.EventTrackMachineReqDTO;
import com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsQueryDTO;
import com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsResDTO;
import com.newyetai.recruit.eventtrack.service.EventTrackService;
import com.newyetai.sdk.common.dto.DefaultSdkInvokeLogDTO;
import com.newyetai.sdk.common.util.HttpUtils;
import com.newyetai.sdk.tencent.map.dto.TencentMapBaseResDTO;
import com.newyetai.sdk.tencent.map.dto.TencentWsDistanceV1MatrixResDTO;
import com.newyetai.security.util.MockUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpRequest;
import lombok.extern.slf4j.Slf4j;
/**
* @description: 埋点job
* @author: guixinman
* @create: 2025-01-23 14:54
**/
@Slf4j
@Component
public class EventTrackJob {
@Autowired
private RestTemplate restTemplate;
@Autowired
private EventTrackService eventTrackService;
@Scheduled(cron = "0 0/30 * * * *")
public void statistics() {
String createTimeStart = DateUtil.format(DateUtil.beginOfDay(DateUtil.yesterday()), "yyyy-MM-dd HH:mm:ss");
String createTimeEnd = DateUtil.format(DateUtil.endOfDay(DateUtil.yesterday()), "yyyy-MM-dd HH:mm:ss");
log.info("埋点数据推送宝就业后台 ======开始");
MockUtils.mockPlatUser();
try {
List<EventTrackStatisticsResDTO> statistics = eventTrackService.statistics(EventTrackStatisticsQueryDTO.builder().createTimeStart(createTimeStart).createTimeEnd(createTimeEnd).build());
List<EventTrackMachineReqDTO> machineReqDTOList = new ArrayList();
for (EventTrackStatisticsResDTO statistic : statistics) {
EventTrackMachineReqDTO machineReqDTO = new EventTrackMachineReqDTO();
BeanUtils.copyProperties(statistic,machineReqDTO);
machineReqDTOList.add(machineReqDTO);
}
String result = null;
if (CollectionUtils.isNotEmpty(machineReqDTOList)) {
try {
result = HttpRequest.post("https://baoanhr-1gj59gl3122cad49-1331397164.ap-shanghai.app.tcloudbase.com/v1/api/machine")
.header("Content-Type", "application/json") // 必须声明 JSON 格式
.body(JsonUtils.toJsonString(machineReqDTOList))
.timeout(5000)
.execute()
.body();
} catch (Exception e) {
log.error("EventTrackJob invoke:{} error:{}",JsonUtils.toJsonString(machineReqDTOList),
e);
} finally {
log.info("EventTrackJob invoke:{}",
JsonUtils
.toJsonString(
DefaultSdkInvokeLogDTO.builder().requestData(machineReqDTOList).responseData(result)
.build()));
}
}
} catch (Exception e) {
log.error(e.getMessage());
}
log.info("埋点数据推送宝就业后台 ======结束");
}
}

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.newyetai.recruit.eventtrack.dao.EventTrackMapper">
<select id="list" resultType="com.newyetai.recruit.eventtrack.dto.EventTrackDTO">
SELECT t.*
<include refid="queryFromSql"></include>
</select>
<select id="page" resultType="com.newyetai.recruit.eventtrack.dto.EventTrackDTO">
SELECT t.*
<include refid="queryFromSql"></include>
</select>
<select id="statistics"
resultType="com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsResDTO">
select a.device_code,
a."user_id",
a."type",
b."name",
b.address,
DATE_FORMAT(a.create_time, '%Y-%m-%d') as createDate,
count(a.id) as userNumber
from hr_event_track a
left join hr_device b on a."device_code" = b."code" and b."deleted" = 0
where a."deleted" = 0
<if test='param.createTimeStart != null'>
AND a.create_time &gt;= #{param.createTimeStart}
</if>
<if test='param.createTimeEnd != null'>
AND a.create_time &lt;= #{param.createTimeEnd}
</if>
group by a."device_code",DATE_FORMAT(a.create_time, '%Y-%m-%d')
</select>
<sql id="queryFromSql">
FROM
hr_event_track t
WHERE t.deleted = 0
<if test='param.id != null'>
AND t.id = #{param.id}
</if>
<if test='param.deviceCode != null and param.deviceCode.trim() != ""'>
AND t.device_code = #{param.deviceCode}
</if>
<if test='param.userId != null'>
AND t.user_id = #{param.userId}
</if>
<if test='param.type != null and param.type.trim() != ""'>
AND t.type = #{param.type}
</if>
<if test='param.createTimeStart != null'>
AND t.create_time &gt;= #{param.createTimeStart}
</if>
<if test='param.createTimeEnd != null'>
AND t.create_time &lt;= #{param.createTimeEnd}
</if>
<if test='param.updateTimeStart != null'>
AND t.update_time &gt;= #{param.updateTimeStart}
</if>
<if test='param.updateTimeEnd != null'>
AND t.update_time &lt;= #{param.updateTimeEnd}
</if>
ORDER BY t.id DESC
</sql>
</mapper>

View File

@@ -0,0 +1,76 @@
package com.newyetai.recruit.eventtrack.service;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;
import javax.validation.groups.Default;
import java.util.List;
import com.newyetai.recruit.eventtrack.dto.*;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@Validated(Default.class)
public interface EventTrackService {
/**
* 埋点 - 创建
*
* @param operatorDto 操作dto
* @return {@link EventTrackDTO}
*/
EventTrackDTO create(@Valid EventTrackOperatorDTO operatorDto);
/**
* 埋点 - 修改
*
* @param operatorDto 操作dto
* @return {@link EventTrackDTO}
*/
EventTrackDTO modify(@Valid EventTrackOperatorDTO operatorDto);
/**
* 埋点 - 删除
*
* @param id id
* @return {@link EventTrackDTO}
*/
EventTrackDTO delete(Long id);
/**
* 埋点 - 根据ID查询单个
*
* @param id id
* @return {@link EventTrackDTO}
*/
EventTrackDTO findById(Long id);
/**
* 埋点 - 列表查询
*
* @param queryDTO 列表查询dto
* @return {@link List}<{@link EventTrackDTO}>
*/
List<EventTrackDTO> list(EventTrackQueryDTO queryDTO);
/**
* 埋点 - 分页查询
*
* @param queryDTO 分页查询dto
* @return {@link EventTrackDTO}
*/
List<EventTrackDTO> page(EventTrackPageQueryDTO queryDTO);
/**
* @description: 按日统计
* @return:
* @author: guixinman
* @param:
*/
List<EventTrackStatisticsResDTO> statistics(EventTrackStatisticsQueryDTO queryDTO);
}

View File

@@ -0,0 +1,89 @@
package com.newyetai.recruit.eventtrack.service.impl;
import lombok.extern.slf4j.Slf4j;
import com.newyetai.common.util.JsonUtils;
import com.newyetai.recruit.eventtrack.convert.EventTrackConvert;
import com.newyetai.recruit.eventtrack.entity.EventTrack;
import com.newyetai.recruit.eventtrack.dto.*;
import com.newyetai.recruit.eventtrack.dao.EventTrackMapper;
import com.newyetai.recruit.eventtrack.service.EventTrackService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.newyetai.common.util.UserContextHolder;
import com.newyetai.sdk.tencent.map.dto.TencentMapLocationV1IpResDTO;
import javax.annotation.Resource;
import java.util.*;
/**
* 埋点
*
* @author guixinman
* @since 1.0.0 2025-01-22
*/
@Slf4j
@Service
public class EventTrackServiceImpl implements EventTrackService {
@Resource
private EventTrackMapper eventTrackMapper;
@Override
public EventTrackDTO create(EventTrackOperatorDTO operatorDto) {
EventTrack eventTrack = EventTrackConvert.INSTANCE.convert(operatorDto);
eventTrackMapper.saveEntity(eventTrack);
return EventTrackConvert.INSTANCE.convert(eventTrack);
}
@Override
public EventTrackDTO modify(EventTrackOperatorDTO operatorDto) {
EventTrackDTO eventTrackDto = this.findById(operatorDto.getId());
if (Objects.isNull(eventTrackDto)) {
return null;
}
EventTrack eventTrack = EventTrackConvert.INSTANCE.convert(operatorDto);
eventTrackMapper.updateEntitySelective(eventTrack);
return this.findById(operatorDto.getId());
}
@Override
public EventTrackDTO delete(Long id) {
EventTrackDTO eventTrackDto = this.findById(id);
if (Objects.isNull(eventTrackDto)) {
return null;
}
EventTrack eventTrack = EventTrack.builder().build();
eventTrack.setId(id);
eventTrackMapper.deleteEntity(eventTrack, UserContextHolder.getLoginUserId());
return eventTrackDto;
}
@Override
public EventTrackDTO findById(Long id) {
EventTrack eventTrack = eventTrackMapper.getById(id);
if (Objects.isNull(eventTrack)) {
return null;
}
return EventTrackConvert.INSTANCE.convert(eventTrack);
}
@Override
public List<EventTrackDTO> list(EventTrackQueryDTO queryDTO) {
return eventTrackMapper.list(queryDTO);
}
@Override
public List<EventTrackDTO> page(EventTrackPageQueryDTO queryDTO) {
return eventTrackMapper.page(queryDTO);
}
@Override
public List<EventTrackStatisticsResDTO> statistics(EventTrackStatisticsQueryDTO queryDTO) {
List<EventTrackStatisticsResDTO> statisticList = eventTrackMapper.statistics(queryDTO);
return statisticList;
}
}