logging模块完成改造
This commit is contained in:
@ -11,9 +11,9 @@ package co.yixiang.modules.monitor.service.impl;
|
|||||||
import co.yixiang.modules.monitor.domain.Visits;
|
import co.yixiang.modules.monitor.domain.Visits;
|
||||||
import co.yixiang.modules.monitor.repository.VisitsRepository;
|
import co.yixiang.modules.monitor.repository.VisitsRepository;
|
||||||
import co.yixiang.modules.monitor.service.VisitsService;
|
import co.yixiang.modules.monitor.service.VisitsService;
|
||||||
|
import co.yixiang.service.mapper.LogMapper;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import co.yixiang.repository.LogRepository;
|
|
||||||
import co.yixiang.utils.StringUtils;
|
import co.yixiang.utils.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -34,7 +34,7 @@ import java.util.stream.Collectors;
|
|||||||
public class VisitsServiceImpl implements VisitsService {
|
public class VisitsServiceImpl implements VisitsService {
|
||||||
|
|
||||||
private final VisitsRepository visitsRepository;
|
private final VisitsRepository visitsRepository;
|
||||||
private final LogRepository logRepository;
|
private final LogMapper logMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void save() {
|
public void save() {
|
||||||
@ -55,7 +55,7 @@ public class VisitsServiceImpl implements VisitsService {
|
|||||||
LocalDate localDate = LocalDate.now();
|
LocalDate localDate = LocalDate.now();
|
||||||
Visits visits = visitsRepository.findByDate(localDate.toString());
|
Visits visits = visitsRepository.findByDate(localDate.toString());
|
||||||
visits.setPvCounts(visits.getPvCounts()+1);
|
visits.setPvCounts(visits.getPvCounts()+1);
|
||||||
long ipCounts = logRepository.findIp(localDate.toString(), localDate.plusDays(1).toString());
|
long ipCounts = logMapper.findIp(localDate.toString(), localDate.plusDays(1).toString());
|
||||||
visits.setIpCounts(ipCounts);
|
visits.setIpCounts(ipCounts);
|
||||||
visitsRepository.save(visits);
|
visitsRepository.save(visits);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package co.yixiang.domain;
|
package co.yixiang.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.hibernate.annotations.CreationTimestamp;
|
import org.hibernate.annotations.CreationTimestamp;
|
||||||
@ -8,17 +12,15 @@ import java.io.Serializable;
|
|||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Zheng Jie
|
* @author hupeng
|
||||||
* @date 2018-11-24
|
* @date 2018-11-24
|
||||||
*/
|
*/
|
||||||
@Entity
|
|
||||||
@Data
|
@Data
|
||||||
@Table(name = "log")
|
@TableName("log")
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class Log implements Serializable {
|
public class Log implements Serializable {
|
||||||
|
|
||||||
@Id
|
@TableId
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/** 操作用户 */
|
/** 操作用户 */
|
||||||
@ -35,19 +37,15 @@ public class Log implements Serializable {
|
|||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
/** 参数 */
|
/** 参数 */
|
||||||
@Column(columnDefinition = "text")
|
|
||||||
private String params;
|
private String params;
|
||||||
|
|
||||||
/** 日志类型 */
|
/** 日志类型 */
|
||||||
@Column(name = "log_type")
|
|
||||||
private String logType;
|
private String logType;
|
||||||
|
|
||||||
/** 请求ip */
|
/** 请求ip */
|
||||||
@Column(name = "request_ip")
|
|
||||||
private String requestIp;
|
private String requestIp;
|
||||||
|
|
||||||
/** 地址 */
|
/** 地址 */
|
||||||
@Column(name = "address")
|
|
||||||
private String address;
|
private String address;
|
||||||
|
|
||||||
/** 浏览器 */
|
/** 浏览器 */
|
||||||
@ -57,12 +55,10 @@ public class Log implements Serializable {
|
|||||||
private Long time;
|
private Long time;
|
||||||
|
|
||||||
/** 异常详细 */
|
/** 异常详细 */
|
||||||
@Column(name = "exception_detail", columnDefinition = "text")
|
|
||||||
private byte[] exceptionDetail;
|
private byte[] exceptionDetail;
|
||||||
|
|
||||||
/** 创建日期 */
|
/** 创建日期 */
|
||||||
@CreationTimestamp
|
@TableField(fill = FieldFill.INSERT)
|
||||||
@Column(name = "create_time")
|
|
||||||
private Timestamp createTime;
|
private Timestamp createTime;
|
||||||
|
|
||||||
public Log(String logType, Long time) {
|
public Log(String logType, Long time) {
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
package co.yixiang.repository;
|
|
||||||
|
|
||||||
import co.yixiang.domain.Log;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
import org.springframework.data.jpa.repository.Modifying;
|
|
||||||
import org.springframework.data.jpa.repository.Query;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2018-11-24
|
|
||||||
*/
|
|
||||||
@Repository
|
|
||||||
public interface LogRepository extends JpaRepository<Log,Long>, JpaSpecificationExecutor<Log> {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Query(nativeQuery = true,
|
|
||||||
value = "select l.id,l.create_time as createTime,l.description," +
|
|
||||||
"l.request_ip as requestIp,l.address," +
|
|
||||||
"u.nickname from log l left join yx_user u on u.uid=l.uid " +
|
|
||||||
" where l.type=1" +
|
|
||||||
" and if(?1 !='',u.nickname LIKE CONCAT('%',?1,'%'),1=1) order by l.id desc",
|
|
||||||
countQuery = "select count(*) from log l left join yx_user u on u.uid=l.uid" +
|
|
||||||
" where l.type=1 " +
|
|
||||||
"and if(?1 !='',u.nickname LIKE CONCAT('%',?1,'%'),1=1)")
|
|
||||||
Page<Map> findAllByPageable(String nickname,
|
|
||||||
Pageable pageable);
|
|
||||||
/**
|
|
||||||
* 获取一个时间段的IP记录
|
|
||||||
* @param date1 startTime
|
|
||||||
* @param date2 entTime
|
|
||||||
* @return IP数目
|
|
||||||
*/
|
|
||||||
@Query(value = "select count(*) FROM (select request_ip FROM log where create_time between ?1 and ?2 GROUP BY request_ip) as s",nativeQuery = true)
|
|
||||||
Long findIp(String date1, String date2);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据日志类型删除信息
|
|
||||||
* @param logType 日志类型
|
|
||||||
*/
|
|
||||||
@Query(nativeQuery = true,value = "delete from log where log_type = ?1")
|
|
||||||
@Modifying
|
|
||||||
void deleteByLogType(String logType);
|
|
||||||
}
|
|
@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Zheng Jie
|
* @author hupeng
|
||||||
* @date 2018-11-24
|
* @date 2018-11-24
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package co.yixiang.service;
|
package co.yixiang.service;
|
||||||
|
|
||||||
|
import co.yixiang.common.service.BaseService;
|
||||||
import co.yixiang.domain.Log;
|
import co.yixiang.domain.Log;
|
||||||
import co.yixiang.service.dto.LogQueryCriteria;
|
import co.yixiang.service.dto.LogQueryCriteria;
|
||||||
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
@ -14,7 +15,7 @@ import java.util.List;
|
|||||||
* @author Zheng Jie
|
* @author Zheng Jie
|
||||||
* @date 2018-11-24
|
* @date 2018-11-24
|
||||||
*/
|
*/
|
||||||
public interface LogService {
|
public interface LogService extends BaseService<Log> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import java.io.Serializable;
|
|||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Zheng Jie
|
* @author hupeng
|
||||||
* @date 2019-5-22
|
* @date 2019-5-22
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@ -7,7 +7,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志查询类
|
* 日志查询类
|
||||||
* @author Zheng Jie
|
* @author hupeng
|
||||||
* @date 2019-6-4 09:23:07
|
* @date 2019-6-4 09:23:07
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@ -5,7 +5,7 @@ import java.io.Serializable;
|
|||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Zheng Jie
|
* @author hupeng
|
||||||
* @date 2019-5-22
|
* @date 2019-5-22
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@ -3,13 +3,19 @@ package co.yixiang.service.impl;
|
|||||||
import cn.hutool.core.lang.Dict;
|
import cn.hutool.core.lang.Dict;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
|
import co.yixiang.common.service.impl.BaseServiceImpl;
|
||||||
|
import co.yixiang.common.utils.QueryHelpPlus;
|
||||||
import co.yixiang.domain.Log;
|
import co.yixiang.domain.Log;
|
||||||
import co.yixiang.repository.LogRepository;
|
import co.yixiang.dozer.service.IGenerator;
|
||||||
import co.yixiang.service.LogService;
|
import co.yixiang.service.LogService;
|
||||||
|
import co.yixiang.service.dto.LogErrorDTO;
|
||||||
import co.yixiang.service.dto.LogQueryCriteria;
|
import co.yixiang.service.dto.LogQueryCriteria;
|
||||||
import co.yixiang.service.mapper.LogErrorMapper;
|
import co.yixiang.service.dto.LogSmallDTO;
|
||||||
import co.yixiang.service.mapper.LogSmallMapper;
|
import co.yixiang.service.mapper.LogMapper;
|
||||||
import co.yixiang.utils.*;
|
import co.yixiang.utils.*;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.Query;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
import org.aspectj.lang.reflect.MethodSignature;
|
import org.aspectj.lang.reflect.MethodSignature;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@ -32,49 +38,61 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
|
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
|
||||||
public class LogServiceImpl implements LogService {
|
public class LogServiceImpl extends BaseServiceImpl<LogMapper, Log> implements LogService {
|
||||||
|
|
||||||
private final LogRepository logRepository;
|
|
||||||
|
|
||||||
private final LogErrorMapper logErrorMapper;
|
private final LogMapper logMapper;
|
||||||
|
|
||||||
private final LogSmallMapper logSmallMapper;
|
private final IGenerator generator;
|
||||||
|
|
||||||
|
public LogServiceImpl(LogMapper logMapper, IGenerator generator) {
|
||||||
|
this.logMapper = logMapper;
|
||||||
|
this.generator = generator;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object findAllByPageable(String nickname, Pageable pageable) {
|
public Object findAllByPageable(String nickname, Pageable pageable) {
|
||||||
Page<Map> page = logRepository.findAllByPageable(nickname,pageable);
|
getPage(pageable);
|
||||||
|
List<Log> list = logMapper.findAllByPageable(nickname);
|
||||||
|
PageInfo<Log> page = new PageInfo<>(list);
|
||||||
|
|
||||||
Map<String,Object> map = new LinkedHashMap<>(2);
|
Map<String,Object> map = new LinkedHashMap<>(2);
|
||||||
map.put("content",page.getContent());
|
map.put("content",page.getList());
|
||||||
map.put("totalElements",page.getTotalElements());
|
map.put("totalElements",page.getTotal());
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LogServiceImpl(LogRepository logRepository, LogErrorMapper logErrorMapper, LogSmallMapper logSmallMapper) {
|
|
||||||
this.logRepository = logRepository;
|
|
||||||
this.logErrorMapper = logErrorMapper;
|
|
||||||
this.logSmallMapper = logSmallMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object queryAll(LogQueryCriteria criteria, Pageable pageable){
|
public Object queryAll(LogQueryCriteria criteria, Pageable pageable){
|
||||||
Page<Log> page = logRepository.findAll(((root, criteriaQuery, cb) -> QueryHelp.getPredicate(root, criteria, cb)),pageable);
|
|
||||||
|
getPage(pageable);
|
||||||
|
PageInfo<Log> page = new PageInfo<>(queryAll(criteria));
|
||||||
|
Map<String, Object> map = new LinkedHashMap<>(2);
|
||||||
String status = "ERROR";
|
String status = "ERROR";
|
||||||
if (status.equals(criteria.getLogType())) {
|
if(status.equals(criteria.getLogType())){
|
||||||
return PageUtil.toPage(page.map(logErrorMapper::toDto));
|
map.put("content", generator.convert(page.getList(), LogErrorDTO.class));
|
||||||
|
map.put("totalElements", page.getTotal());
|
||||||
}
|
}
|
||||||
return page;
|
map.put("content", page.getList());
|
||||||
|
map.put("totalElements", page.getTotal());
|
||||||
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Log> queryAll(LogQueryCriteria criteria) {
|
public List<Log> queryAll(LogQueryCriteria criteria) {
|
||||||
return logRepository.findAll(((root, criteriaQuery, cb) -> QueryHelp.getPredicate(root, criteria, cb)));
|
return baseMapper.selectList(QueryHelpPlus.getPredicate(Log.class, criteria));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object queryAllByUser(LogQueryCriteria criteria, Pageable pageable) {
|
public Object queryAllByUser(LogQueryCriteria criteria, Pageable pageable) {
|
||||||
Page<Log> page = logRepository.findAll(((root, criteriaQuery, cb) -> QueryHelp.getPredicate(root, criteria, cb)),pageable);
|
getPage(pageable);
|
||||||
return PageUtil.toPage(page.map(logSmallMapper::toDto));
|
PageInfo<Log> page = new PageInfo<>(queryAll(criteria));
|
||||||
|
Map<String, Object> map = new LinkedHashMap<>(2);
|
||||||
|
map.put("content", generator.convert(page.getList(), LogSmallDTO.class));
|
||||||
|
map.put("totalElements", page.getTotal());
|
||||||
|
return map;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -124,12 +142,12 @@ public class LogServiceImpl implements LogService {
|
|||||||
log.setMethod(methodName);
|
log.setMethod(methodName);
|
||||||
log.setUsername(username);
|
log.setUsername(username);
|
||||||
log.setParams(params.toString() + " }");
|
log.setParams(params.toString() + " }");
|
||||||
logRepository.save(log);
|
this.save(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object findByErrDetail(Long id) {
|
public Object findByErrDetail(Long id) {
|
||||||
Log log = logRepository.findById(id).orElseGet(Log::new);
|
Log log = this.getById(id);
|
||||||
ValidationUtil.isNull( log.getId(),"Log","id", id);
|
ValidationUtil.isNull( log.getId(),"Log","id", id);
|
||||||
byte[] details = log.getExceptionDetail();
|
byte[] details = log.getExceptionDetail();
|
||||||
return Dict.create().set("exception",new String(ObjectUtil.isNotNull(details) ? details : "".getBytes()));
|
return Dict.create().set("exception",new String(ObjectUtil.isNotNull(details) ? details : "".getBytes()));
|
||||||
@ -156,12 +174,12 @@ public class LogServiceImpl implements LogService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void delAllByError() {
|
public void delAllByError() {
|
||||||
logRepository.deleteByLogType("ERROR");
|
logMapper.deleteByLogType("ERROR");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void delAllByInfo() {
|
public void delAllByInfo() {
|
||||||
logRepository.deleteByLogType("INFO");
|
logMapper.deleteByLogType("INFO");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
package co.yixiang.service.mapper;
|
|
||||||
|
|
||||||
import co.yixiang.domain.Log;
|
|
||||||
import co.yixiang.service.dto.LogErrorDTO;
|
|
||||||
import co.yixiang.base.BaseMapper;
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.ReportingPolicy;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-5-22
|
|
||||||
*/
|
|
||||||
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
||||||
public interface LogErrorMapper extends BaseMapper<LogErrorDTO, Log> {
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,30 @@
|
|||||||
|
package co.yixiang.service.mapper;
|
||||||
|
|
||||||
|
import co.yixiang.common.mapper.CoreMapper;
|
||||||
|
import co.yixiang.domain.Log;
|
||||||
|
import org.apache.ibatis.annotations.Delete;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Zheng Jie
|
||||||
|
* @date 2019-5-22
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
@Mapper
|
||||||
|
public interface LogMapper extends CoreMapper<Log> {
|
||||||
|
|
||||||
|
@Delete("delete from log where log_type = #{logType}")
|
||||||
|
void deleteByLogType(@Param("logType") String logType);
|
||||||
|
@Select("\"select l.id,l.create_time as createTime,l.description,\" +\n" +
|
||||||
|
" \"l.request_ip as requestIp,l.address,\" +\n" +
|
||||||
|
" \"u.nickname from log l left join yx_user u on u.uid=l.uid \" +\n" +
|
||||||
|
" \" where l.type=1\" +\n" +
|
||||||
|
" \" and if(#{nickname} !='',u.nickname LIKE CONCAT('%',#{nickname},'%'),1=1) order by l.id desc\"")
|
||||||
|
List<Log> findAllByPageable(@Param("nickname") String nickname);
|
||||||
|
@Select( "select count(*) FROM (select request_ip FROM log where create_time between #{date1} and #{date2} GROUP BY request_ip) as s")
|
||||||
|
long findIp(@Param("date1") String date1, @Param("date2")String date2);
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
package co.yixiang.service.mapper;
|
|
||||||
|
|
||||||
import co.yixiang.domain.Log;
|
|
||||||
import co.yixiang.base.BaseMapper;
|
|
||||||
import co.yixiang.service.dto.LogSmallDTO;
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.ReportingPolicy;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-5-22
|
|
||||||
*/
|
|
||||||
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
||||||
public interface LogSmallMapper extends BaseMapper<LogSmallDTO, Log> {
|
|
||||||
|
|
||||||
}
|
|
@ -36,7 +36,6 @@ public class QiniuConfig implements Serializable {
|
|||||||
|
|
||||||
/** 外链域名 */
|
/** 外链域名 */
|
||||||
// @Column(name = "host",nullable = false)
|
// @Column(name = "host",nullable = false)
|
||||||
@NotBlank
|
|
||||||
private String host;
|
private String host;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package co.yixiang.tools.domain;
|
package co.yixiang.tools.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.hibernate.annotations.CreationTimestamp;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
@ -40,7 +40,7 @@ public class VerificationCode implements Serializable {
|
|||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
/** 创建日期 */
|
/** 创建日期 */
|
||||||
@CreationTimestamp
|
@TableField(fill= FieldFill.INSERT)
|
||||||
// @Column(name = "create_time")
|
// @Column(name = "create_time")
|
||||||
private Timestamp createTime;
|
private Timestamp createTime;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user