提交 55f6b34c 作者: 谭志磊

合并,备份

上级 9a8d3151
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.visitor;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.*;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import org.hibernate.annotaions.Comment;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId;
/**
* @author tzl
* 2022/4/19 11:41
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "BS_VISITOR")
@Comment("监控视频")
public class Visitor implements Serializable {
private static final long serialVersionUID = -7367226565168197562L;
@Id
@Comment("主键")
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
@Comment("到访人姓名")
String visitorName;
@Comment("到访人电话")
String visitorMobile;
@Comment("到访人身份证")
String visitorCarNum;
@Comment("是否特殊作业")
boolean taskType;
@Comment("邀请人数")
Integer numOfVisitor;
@Comment("访客来源")
String visitorSource;
@Comment("标签卡")
String labelCard;
@Comment("标签卡状态")
String labelCardStatus;
@Comment("所属单位id")
String orgId;
@Comment("被访人id")
String intervieweeId;
@Comment("来访原因")
String reason;
@Comment("收卡时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime cardRecTime;
@Comment("预约到访时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime appOfVisitTime;
@Comment("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime createTime;
@Comment("发卡时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime cardSendTime;
@Comment("备用字段")
String reserve1;
@Comment("备用字段")
String reserve2;
@Comment("备用字段")
String reserve3;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.visitor;
import java.io.Serializable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
/**
* @author tzl
* 2022/4/19 14:06
*/
@Repository
public interface VisitorRepository extends JpaRepository<Visitor, Serializable>, JpaSpecificationExecutor<Visitor> {}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.feign;
import com.alibaba.fastjson.JSONObject;
import com.yiring.app.param.video.StreamProxyItem;
import feign.Response;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.*;
/**
* @author tzl
* 2022/4/18 14:22
*/
@FeignClient(url = "${env.host}:3008", name = "gb")
public interface GbClient {
@RequestMapping(value = "/api/user/login", method = RequestMethod.GET)
Response userLogin(
@RequestParam(name = "username") String username,
@RequestParam(name = "password") String password
);
@RequestMapping(value = "/api/proxy/save", method = RequestMethod.POST)
@Async
JSONObject proxySave(@RequestBody StreamProxyItem streamProxyItem, @RequestHeader("Cookie") String cookie);
@RequestMapping(value = "/api/proxy/del", method = RequestMethod.DELETE)
@Async
JSONObject proxyDel(
@RequestParam(name = "app") String app,
@RequestParam(name = "stream") String stream,
@RequestHeader("Cookie") String cookie
);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.video;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* 2022/4/18 15:21
*/
@ApiModel("StreamProxyItem")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class StreamProxyItem implements Serializable {
private static final long serialVersionUID = -7345369573992941431L;
//名称
String name;
//流应用名称
String app;
//流id
String stream;
//拉流地址
String url;
//类型,根据地址是否有关键字判断
String type;
//节点选择
String mediaServerId;
//是否启用
boolean enable;
//是否转HLS
boolean enable_hls;
Integer timeout_ms;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.visitor;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* 2022/4/19 14:15
*/
@ApiModel("VisitorParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class VisitorParam implements Serializable {
private static final long serialVersionUID = 1444009404727514785L;
@ApiModelProperty(value = "到访人姓名", example = "张三", required = true)
@NotEmpty(message = "到访人姓名不能为空")
String visitorName;
@ApiModelProperty(value = "到访人电话", example = "17688888888", required = true)
@NotEmpty(message = "到访人电话不能为空")
String visitorMobile;
@ApiModelProperty(value = "到访人身份证", example = "430441190001255417", required = true)
@NotEmpty(message = "到访人身份证不能为空")
String visitorCarNum;
@ApiModelProperty(value = "到访人身份证", example = "fasle", required = true)
boolean taskType;
// @Comment("邀请人数")
// Integer numOfVisitor;
@ApiModelProperty(value = "访客来源", example = "外部邀请", required = true)
String visitorSource;
// @Comment("标签卡")
// String labelCard;
//
// @Comment("标签卡状态")
// String labelCardStatus;
@ApiModelProperty(value = "访客所属公司", example = "壹润科技")
String orgId;
@ApiModelProperty(value = "被访人id", example = "1", required = true)
String intervieweeId;
@ApiModelProperty(value = "来访原因", example = "看看", required = true)
String reason;
// @ApiModelProperty(value = "发卡时间", example = "看看", required = true)
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// LocalDateTime cardRecTime;
@ApiModelProperty(value = "来访原因", example = "2022-04-19 14:28:00", required = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime appOfVisitTime;
// @Comment("创建时间")
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// LocalDateTime createTime;
//
// @Comment("发卡时间")
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// LocalDateTime cardSendTime;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.visitor;
import io.swagger.annotations.ApiModel;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* 2022/4/19 14:15
*/
@ApiModel("VisitorQueryParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class VisitorQueryParam implements Serializable {
private static final long serialVersionUID = -4314254785949101573L;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.visitor;
import com.yiring.app.param.visitor.VisitorParam;
import com.yiring.app.vo.visitor.VisitorVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
/**
* @author tzl
* 2022/4/19 14:12
*/
public interface VisitorService {
/**
* 访客新增
* @param visitorParam 新增访客入参
* @return 是否成功
*/
Result<String> saveVisitor(VisitorParam visitorParam);
/**
* 访客删除
* @param idParam 主键id
* @return 是否成功
*/
Result<String> deleteVisitor(IdParam idParam);
/**
* 修改访客信息
* @param visitorParam 修改访客入参
* @param idParam 修改访客的主键id
* @return 是否成功
*/
Result<String> updateVisitor(VisitorParam visitorParam, IdParam idParam);
Result<VisitorVo> selectVisitor(IdParam idParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.visitor.impl;
import com.yiring.app.domain.visitor.Visitor;
import com.yiring.app.domain.visitor.VisitorRepository;
import com.yiring.app.param.visitor.VisitorParam;
import com.yiring.app.service.visitor.VisitorService;
import com.yiring.app.vo.visitor.VisitorVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
import java.time.LocalDateTime;
import java.util.Optional;
import javax.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Example;
import org.springframework.stereotype.Service;
/**
* @author tzl
* 2022/4/19 14:12
*/
@Service
public class VisitorServiceImpl implements VisitorService {
@Resource
VisitorRepository visitorRepository;
@Override
public Result<String> saveVisitor(VisitorParam visitorParam) {
if (hasVisitorMobile(visitorParam.getVisitorMobile())) {
return Result.no(Status.BAD_REQUEST, "您输入的手机号码已经预约");
}
if (hasCarNum(visitorParam.getVisitorCarNum())) {
return Result.no(Status.BAD_REQUEST, "您输入的身份证号码已经预约");
}
//设置创建时间和默认状态
Visitor visitor = Visitor.builder().createTime(LocalDateTime.now()).build();
BeanUtils.copyProperties(visitorParam, visitor);
visitorRepository.saveAndFlush(visitor);
return Result.ok();
}
@Override
public Result<String> deleteVisitor(IdParam idParam) {
Optional<Visitor> optional = visitorRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
visitorRepository.delete(optional.get());
return Result.ok();
}
@Override
public Result<String> updateVisitor(VisitorParam visitorParam, IdParam idParam) {
Optional<Visitor> optional = visitorRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
Visitor visitor = optional.get();
if (!visitor.getVisitorCarNum().equals(visitorParam.getVisitorCarNum())) {
//当修改身份证时
if (hasCarNum(visitorParam.getVisitorCarNum())) {
return Result.no(Status.BAD_REQUEST, "您输入的身份证号码已经预约");
}
}
if (!visitor.getVisitorMobile().equals(visitorParam.getVisitorMobile())) {
//当修改手机号码时
if (hasVisitorMobile(visitorParam.getVisitorMobile())) {
return Result.no(Status.BAD_REQUEST, "您输入的手机号码已经预约");
}
}
BeanUtils.copyProperties(visitorParam, visitor);
visitorRepository.saveAndFlush(visitor);
return Result.ok();
}
@Override
public Result<VisitorVo> selectVisitor(IdParam idParam) {
Optional<Visitor> optional = visitorRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
Visitor visitor = optional.get();
VisitorVo vo = new VisitorVo();
BeanUtils.copyProperties(visitor, vo);
return Result.ok(vo);
}
public boolean hasCarNum(String carNum) {
Visitor visitor = Visitor.builder().visitorCarNum(carNum).build();
return visitorRepository.count(Example.of(visitor)) > 0;
}
public boolean hasVisitorMobile(String mobile) {
Visitor visitor = Visitor.builder().visitorMobile(mobile).build();
return visitorRepository.count(Example.of(visitor)) > 0;
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.visitor;
import java.io.Serializable;
/**
* @author tzl
* 2022/4/19 14:16
*/
public class VisitorVo implements Serializable {
private static final long serialVersionUID = 9004209982164273860L;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论