提交 3cde5491 作者: 17607474349

Merge remote-tracking branch 'origin/dev_tzl' into dev_lijing

# Conflicts:
#	app/src/main/java/com/yiring/app/web/map/MapController.java
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.broadcast;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.UpdateTimestamp;
import org.hibernate.snowflake.SnowflakeId;
import org.locationtech.jts.geom.Point;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 17:06
*/
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@Comment("播报设备表")
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "BS_BROADCAST")
public class Broadcast implements Serializable {
@Serial
private static final long serialVersionUID = 2856845594409003209L;
@Comment("编号")
@Id
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
@Comment("播报设备编号")
String broadcastNum;
@Comment("播报设备名称")
String broadcastName;
@Comment("坐标点信息")
Point point;
@Comment("播报设备地址")
String broadcastAdd;
@Comment("备注")
String remark;
@Comment("是否启用")
String status;
@Comment("创建时间")
@CreationTimestamp
LocalDateTime createTime;
@Comment("修改时间")
@UpdateTimestamp
LocalDateTime updateTime;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.broadcast;
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/5/5 17:13
*/
@Repository
public interface BroadcastRepository
extends JpaRepository<Broadcast, Serializable>, JpaSpecificationExecutor<Broadcast> {}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.icon;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId;
/**
*
* @author tzl
* @version 1.0
* @description: 图标
* @date 2022/4/29 11:08
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "BS_ICON")
@Comment("图标")
public class Icon implements Serializable {
@Serial
private static final long serialVersionUID = 7848846860889883431L;
@Comment("编号")
@Id
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
@Comment("图标名称")
String iconName;
@Comment("图标类型")
String iconType;
@Comment("图标分类")
String iconSort;
@Comment("在线图标")
String iconOnline;
@Comment("离线图标")
String iconOffline;
@Comment("创建时间")
LocalDateTime createTime;
@Comment("修改时间")
LocalDateTime updateTime;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.icon;
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/29 13:49
*/
@Repository
public interface IconRepository extends JpaRepository<Icon, Serializable>, JpaSpecificationExecutor<Icon> {}
...@@ -3,6 +3,7 @@ package com.yiring.app.domain.visitor; ...@@ -3,6 +3,7 @@ package com.yiring.app.domain.visitor;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yiring.auth.domain.user.User;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -11,6 +12,8 @@ import lombok.*; ...@@ -11,6 +12,8 @@ import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
import org.hibernate.annotations.Comment; import org.hibernate.annotations.Comment;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId; import org.hibernate.snowflake.SnowflakeId;
...@@ -31,6 +34,8 @@ import org.hibernate.snowflake.SnowflakeId; ...@@ -31,6 +34,8 @@ import org.hibernate.snowflake.SnowflakeId;
@FieldNameConstants @FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
@Entity @Entity
@DynamicInsert
@DynamicUpdate
@Table(name = "BS_INVITATION") @Table(name = "BS_INVITATION")
@Comment("邀请信息") @Comment("邀请信息")
public class Invitation implements Serializable { public class Invitation implements Serializable {
...@@ -50,8 +55,8 @@ public class Invitation implements Serializable { ...@@ -50,8 +55,8 @@ public class Invitation implements Serializable {
@Comment("状态") @Comment("状态")
String status; String status;
@Comment("邀请人id") // @Comment("邀请人id")
Long inviterId; // Long inviterId;
@Comment("邀请人数") @Comment("邀请人数")
Integer numOfVisitor; Integer numOfVisitor;
...@@ -60,12 +65,22 @@ public class Invitation implements Serializable { ...@@ -60,12 +65,22 @@ public class Invitation implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime createTime; LocalDateTime createTime;
@Comment("修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime updateTime;
// @Comment("访客id") // @Comment("访客id")
// Long visitorId; // Long visitorId;
@Comment("被邀请访客") @Comment("被邀请访客")
@JsonIgnore @JsonIgnore
@OneToOne @OneToOne(cascade = CascadeType.REMOVE)
@JoinColumn(name = "visitor_id", referencedColumnName = "id") @JoinColumn(name = "visitor_id", referencedColumnName = "id")
Visitor visitor; Visitor visitor;
@Comment("邀请人")
@JsonIgnore
@OneToOne
@JoinColumn(name = "inviter_id", referencedColumnName = "id")
User user;
} }
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
package com.yiring.app.domain.visitor; package com.yiring.app.domain.visitor;
import java.io.Serializable; import java.io.Serializable;
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.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -12,4 +14,14 @@ import org.springframework.stereotype.Repository; ...@@ -12,4 +14,14 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public interface InvitationRepository public interface InvitationRepository
extends JpaRepository<Invitation, Serializable>, JpaSpecificationExecutor<Invitation> {} extends JpaRepository<Invitation, Serializable>, JpaSpecificationExecutor<Invitation> {
/**
* 小程序用户查看邀请信息
* @author tzl
* @date 2022/4/28 11:08
* @param mobile 手机
* @param deleted 是否删除
* @return java.util.List<com.yiring.app.domain.visitor.Invitation>
*/
Page<Invitation> findAllByVisitor_VisitorMobileAndVisitor_Deleted(String mobile, String deleted, Pageable pageable);
}
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
package com.yiring.app.domain.visitor; package com.yiring.app.domain.visitor;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yiring.auth.domain.user.User;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -70,8 +71,8 @@ public class Visitor implements Serializable { ...@@ -70,8 +71,8 @@ public class Visitor implements Serializable {
@Comment("所属单位id") @Comment("所属单位id")
String orgId; String orgId;
@Comment("被访人id") // @Comment("被访人id")
String intervieweeId; // Long intervieweeId;
@Comment("来访原因/邀请原因") @Comment("来访原因/邀请原因")
String reason; String reason;
...@@ -108,4 +109,17 @@ public class Visitor implements Serializable { ...@@ -108,4 +109,17 @@ public class Visitor implements Serializable {
@Comment("访客车辆") @Comment("访客车辆")
@OneToOne(cascade = { CascadeType.ALL }) @OneToOne(cascade = { CascadeType.ALL })
Car car; Car car;
@Comment("被访人信息")
@OneToOne
@JoinColumn(name = "interviewee_id", referencedColumnName = "id")
User user;
@Comment("修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime updateTime;
// @Comment("邀请人")
// @OneToOne(cascade = { CascadeType.ALL })
// @JoinColumn(name = "main_visitor_id", referencedColumnName = "id")
// Visitor visitor;
} }
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
package com.yiring.app.domain.visitor; package com.yiring.app.domain.visitor;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
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.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -13,4 +16,10 @@ import org.springframework.stereotype.Repository; ...@@ -13,4 +16,10 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface VisitorRepository extends JpaRepository<Visitor, Serializable>, JpaSpecificationExecutor<Visitor> { public interface VisitorRepository extends JpaRepository<Visitor, Serializable>, JpaSpecificationExecutor<Visitor> {
Visitor findByIdAndDeleted(Long id, String deleted); Visitor findByIdAndDeleted(Long id, String deleted);
List<Visitor> findAllByMainVisitorIdAndDeletedEquals(Long mainId, String deleted);
List<Visitor> findAllByMainVisitorIdAndDeletedEqualsAndIdIsNot(Long mainId, String deleted, Long id);
Page<Visitor> findAllByVisitorMobileAndDeletedEquals(String mobile, String deleted, Pageable pageable);
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.broadcast;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/6 9:04
*/
@ExcelModel
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastExportExcel implements Serializable {
@Serial
private static final long serialVersionUID = 2342047029622668894L;
@ExcelColumn(title = "编号", width = 10)
String broadcastNum;
@ExcelColumn(title = "设备名称", width = 10)
String broadcastName;
@ExcelColumn(title = "经度")
double lon;
@ExcelColumn(title = "纬度")
double lat;
@ExcelColumn(title = "设备地址", width = 10)
String broadcastAdd;
@ExcelColumn(title = "备注", width = 15)
String remark;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.broadcast;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* 2022/5/6 09:12
*/
@ExcelModel
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastImportExcel implements Serializable {
@Serial
private static final long serialVersionUID = 5422685189135254189L;
@ExcelColumn(title = "编号")
String broadcastNum;
@ExcelColumn(title = "设备名称")
String broadcastName;
@ExcelColumn(title = "经度")
double lon;
@ExcelColumn(title = "纬度")
double lat;
@ExcelColumn(title = "设备地址")
String broadcastAdd;
@ExcelColumn(title = "备注")
String remark;
// String status;
}
...@@ -7,7 +7,6 @@ import java.io.Serial; ...@@ -7,7 +7,6 @@ import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import org.locationtech.jts.geom.Point;
/** /**
* @author tzl * @author tzl
...@@ -30,8 +29,11 @@ public class VideoExportExcel implements Serializable { ...@@ -30,8 +29,11 @@ public class VideoExportExcel implements Serializable {
@ExcelColumn(title = "摄像头名称", width = 10) @ExcelColumn(title = "摄像头名称", width = 10)
String videoName; String videoName;
@ExcelColumn(title = "坐标点信息(经度,纬度)", width = 10) @ExcelColumn(title = "经度")
Point point; double lon;
@ExcelColumn(title = "纬度")
double lat;
@ExcelColumn(title = "m3u8 地址", width = 10) @ExcelColumn(title = "m3u8 地址", width = 10)
String m3u8; String m3u8;
......
...@@ -29,7 +29,7 @@ public class InvitationExportExcel implements Serializable { ...@@ -29,7 +29,7 @@ public class InvitationExportExcel implements Serializable {
@ExcelColumn(title = "邀请原因") @ExcelColumn(title = "邀请原因")
String reason; String reason;
@ExcelColumn(title = "邀请方式") @ExcelColumn(title = "邀请方式", mapping = "1:个人,2:公司")
String InvitationMethod; String InvitationMethod;
@ExcelColumn(title = "邀请人数") @ExcelColumn(title = "邀请人数")
...@@ -44,7 +44,7 @@ public class InvitationExportExcel implements Serializable { ...@@ -44,7 +44,7 @@ public class InvitationExportExcel implements Serializable {
@ExcelColumn(title = "到访人电话") @ExcelColumn(title = "到访人电话")
String visitorMobile; String visitorMobile;
@ExcelColumn(title = "是否特殊任务") @ExcelColumn(title = "是否特殊任务", mapping = "false:否,true:是")
String taskType; String taskType;
// Long inviterId; // Long inviterId;
......
...@@ -2,11 +2,10 @@ ...@@ -2,11 +2,10 @@
package com.yiring.app.feign; package com.yiring.app.feign;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(url = "api.weixin.qq.com", name = "wxclient") @FeignClient(url = "api.weixin.qq.com", name = "wxclient")
public interface WxClient { public interface WxClient {
...@@ -22,13 +21,10 @@ public interface WxClient { ...@@ -22,13 +21,10 @@ public interface WxClient {
* @date 15:20 * @date 15:20
*/ */
@RequestMapping(value = "/sns/jscode2session", method = RequestMethod.GET) @RequestMapping(value = "/sns/jscode2session", method = RequestMethod.GET)
@ApiImplicitParams( JSONObject getOpenid(
{ @RequestParam("appid") String appid,
@ApiImplicitParam(value = "appid", required = true, name = "appid"), @RequestParam("secret") String secret,
@ApiImplicitParam(value = "secret", required = true, name = "secret"), @RequestParam("js_code") String js_code,
@ApiImplicitParam(value = "js_code", required = true, name = "js_code"), @RequestParam("grant_type") String grant_type
@ApiImplicitParam(value = "grant_type", required = true, name = "grant_type"), );
}
)
JSONObject getOpenid(String appid, String secret, String js_code, String grant_type);
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.appUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/4/28 13:40
*/
@ApiModel("AppletUserParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class AppletUserParam implements Serializable {
@Serial
private static final long serialVersionUID = 1684195733142347657L;
@ApiModelProperty(value = "手机号", example = "17674741309", required = true)
@NotEmpty(message = "手机号不能为空")
String mobile;
@ApiModelProperty(value = "微信唯一标识", example = "17674741309", required = true)
@NotEmpty(message = "微信唯一标识不能为空")
String openid;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.appUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/4/28 13:52
*/
@ApiModel("AppletUserQueryParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class AppletUserQueryParam implements Serializable {
@Serial
private static final long serialVersionUID = 1806727740548075365L;
@ApiModelProperty(value = "小程序 appId", example = "1", required = true)
String appid;
@ApiModelProperty(value = "小程序 appSecret", example = "1", required = true)
String secret;
@ApiModelProperty(value = "登录时获取的 code", example = "1", required = true)
String js_code;
@ApiModelProperty(value = "授权类型,此处只需填写 authorization_code", example = "1", required = true)
String grant_type;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.broadcast;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 播报设备入参
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 17:14
*/
@ApiModel("BroadcastParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastParam implements Serializable {
@Serial
private static final long serialVersionUID = -2629601722942495674L;
@ApiModelProperty(value = "编号", example = "1", required = true)
@NotNull(message = "编号")
String broadcastNum;
@ApiModelProperty(value = "经度", example = "1.00", required = true)
@NotNull(message = "经度")
Double lon;
@ApiModelProperty(value = "纬度", example = "1.00", required = true)
@NotNull(message = "纬度")
Double lat;
@ApiModelProperty(value = "备注", example = "厂区喇叭")
@Size(max = 100, message = "备注不能超过100字")
String remark;
@ApiModelProperty(value = "播报设备地址", example = "音柱地址", required = true)
@NotEmpty(message = "播报设备地址不能为空")
String broadcastAdd;
@ApiModelProperty(value = "播报设备地址名称", example = "喇叭1", required = true)
@NotEmpty(message = "播报设备地址名称不能为空")
String broadcastName;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.broadcast;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 17:22
*/
@ApiModel("BroadcastQueryParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastQueryParam implements Serializable {
@Serial
private static final long serialVersionUID = -7181714985511069309L;
@ApiModelProperty(value = "编号", example = "1")
String broadcastNum;
@ApiModelProperty(value = "播报设备地址名称", example = "喇叭1")
String broadcastName;
@ApiModelProperty(value = "状态", example = "1")
String status;
@ApiModelProperty(value = "分页条数", example = "10", required = true)
Integer pageSize;
@ApiModelProperty(value = "当前页数", example = "1", required = true)
Integer pageNo;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.icon;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 9:30
*/
@ApiModel("IconParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class IconParam implements Serializable {
@Serial
private static final long serialVersionUID = 666028441935810972L;
@ApiModelProperty(value = "图标名称", example = "访客头像", required = true)
@NotEmpty(message = "图标名称不能为空")
String iconName;
@ApiModelProperty(value = "图标类型", example = "1", required = true)
@NotEmpty(message = "图标类型不能为空")
String iconType;
@ApiModelProperty(value = "图标分类", example = "1", required = true)
@NotEmpty(message = "图标类型不能为空")
String iconSort;
@ApiModelProperty(value = "在线图标地址", required = true)
String iconOnline;
@ApiModelProperty(value = "离线图标地址", required = true)
String iconOffline;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.visitor;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description: TODO
* @date 2022/4/28 11:12
*/
@ApiModel("InvitationAppQueryParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class InvitationAppQueryParam implements Serializable {
@Serial
private static final long serialVersionUID = 5194434249966317387L;
@ApiModelProperty(value = "到访人电话", example = "17688888888", required = true)
@NotEmpty(message = "到访人电话不能为空")
String visitorMobile;
@ApiModelProperty(value = "分页条数", example = "10")
Integer pageSize;
@ApiModelProperty(value = "当前页数", example = "1")
Integer pageNo;
}
...@@ -53,7 +53,7 @@ public class InvitationParam implements Serializable { ...@@ -53,7 +53,7 @@ public class InvitationParam implements Serializable {
@ApiModelProperty(value = "到访人身份证", example = "430441190001255417") @ApiModelProperty(value = "到访人身份证", example = "430441190001255417")
String visitorCarNum; String visitorCarNum;
@ApiModelProperty(value = "是否特殊作业", example = "", required = true) @ApiModelProperty(value = "是否特殊作业", example = "false", required = true)
String taskType; String taskType;
// @ApiModelProperty(value = "访客来源", example = "外部邀请", required = true) // @ApiModelProperty(value = "访客来源", example = "外部邀请", required = true)
......
...@@ -38,11 +38,11 @@ public class InvitationQueryParam implements Serializable { ...@@ -38,11 +38,11 @@ public class InvitationQueryParam implements Serializable {
@ApiModelProperty(value = "是否特殊作业", example = "fasle") @ApiModelProperty(value = "是否特殊作业", example = "fasle")
String taskType; String taskType;
@ApiModelProperty(value = "邀请人id", example = "1") @ApiModelProperty(value = "邀请人", example = "张三")
Long inviterId; String realName;
// @ApiModelProperty(value = "邀请人部门id", example = "1") @ApiModelProperty(value = "邀请人部门", example = "研发")
// Long deptId; String deptName;
@ApiModelProperty(value = "预约到访时间(开始)", example = "2022-04-19 14:28:00") @ApiModelProperty(value = "预约到访时间(开始)", example = "2022-04-19 14:28:00")
LocalDateTime appOfVisitTimeStart; LocalDateTime appOfVisitTimeStart;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.visitor;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
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 VisitorAppQueryParam implements Serializable {
@Serial
private static final long serialVersionUID = 1158888191240628613L;
@ApiModelProperty(value = "到访人电话", example = "17688888888", required = true)
@NotEmpty(message = "到访人电话不能为空")
String visitorMobile;
@ApiModelProperty(value = "分页条数", example = "10")
Integer pageSize;
@ApiModelProperty(value = "当前页数", example = "1")
Integer pageNo;
}
...@@ -33,6 +33,7 @@ public class VisitorParam implements Serializable { ...@@ -33,6 +33,7 @@ public class VisitorParam implements Serializable {
String visitorName; String visitorName;
@ApiModelProperty(value = "到访人电话", example = "17688888888", required = true) @ApiModelProperty(value = "到访人电话", example = "17688888888", required = true)
@Pattern(regexp = RegEx.MOBILE, message = "手机号码格式不正确")
@NotEmpty(message = "到访人电话不能为空") @NotEmpty(message = "到访人电话不能为空")
String visitorMobile; String visitorMobile;
......
...@@ -3,6 +3,7 @@ package com.yiring.app.param.visitor; ...@@ -3,6 +3,7 @@ package com.yiring.app.param.visitor;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.*; import lombok.*;
...@@ -20,6 +21,7 @@ import lombok.experimental.FieldDefaults; ...@@ -20,6 +21,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class VisitorQueryParam implements Serializable { public class VisitorQueryParam implements Serializable {
@Serial
private static final long serialVersionUID = -4314254785949101573L; private static final long serialVersionUID = -4314254785949101573L;
@ApiModelProperty(value = "访客姓名", example = "张三") @ApiModelProperty(value = "访客姓名", example = "张三")
...@@ -46,8 +48,8 @@ public class VisitorQueryParam implements Serializable { ...@@ -46,8 +48,8 @@ public class VisitorQueryParam implements Serializable {
@ApiModelProperty(value = "标签卡", example = "DS41234231") @ApiModelProperty(value = "标签卡", example = "DS41234231")
String labelCard; String labelCard;
@ApiModelProperty(value = "标签卡状态", example = "1") @ApiModelProperty(value = "是否主访人", example = "1:是,2否")
String labelCardStatus; String isMain;
@ApiModelProperty(value = "预约到访时间(开始)", example = "2022-04-19 14:28:00") @ApiModelProperty(value = "预约到访时间(开始)", example = "2022-04-19 14:28:00")
LocalDateTime appOfVisitTimeStart; LocalDateTime appOfVisitTimeStart;
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.appletUser; package com.yiring.app.service.appletUser;
import com.yiring.app.param.appUser.AppletUserParam;
import com.yiring.app.param.appUser.AppletUserQueryParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
/** /**
...@@ -13,12 +15,18 @@ public interface AppletUserService { ...@@ -13,12 +15,18 @@ public interface AppletUserService {
/** /**
* 根据用户唯一标识获取手机号码,通过手机号码查询用户来访信息分页 * 根据用户唯一标识获取手机号码,通过手机号码查询用户来访信息分页
* @author tzl * @author tzl
* @date 2022/4/24 9:34 * @date 2022/4/28 13:58
* @param appid String * @param appletUserQueryParam
* @param secret String
* @param js_code String
* @param grant_type String
* @return com.yiring.common.core.Result<java.lang.String> * @return com.yiring.common.core.Result<java.lang.String>
*/ */
Result<String> selectMobile(String appid, String secret, String js_code, String grant_type); Result<String> selectMobile(AppletUserQueryParam appletUserQueryParam);
/**
* 小程序注册
* @author tzl
* @date 2022/4/28 13:43
* @param appletUserParam 入参
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> saveAppUser(AppletUserParam appletUserParam);
} }
...@@ -6,10 +6,17 @@ import com.alibaba.fastjson.JSONObject; ...@@ -6,10 +6,17 @@ import com.alibaba.fastjson.JSONObject;
import com.yiring.app.domain.appletUser.AppletUser; import com.yiring.app.domain.appletUser.AppletUser;
import com.yiring.app.domain.appletUser.AppletUserRepository; import com.yiring.app.domain.appletUser.AppletUserRepository;
import com.yiring.app.feign.WxClient; import com.yiring.app.feign.WxClient;
import com.yiring.app.param.appUser.AppletUserParam;
import com.yiring.app.param.appUser.AppletUserQueryParam;
import com.yiring.app.service.appletUser.AppletUserService; import com.yiring.app.service.appletUser.AppletUserService;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import java.util.Optional; import java.util.Optional;
import javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/** /**
* @author Administrator * @author Administrator
...@@ -17,6 +24,9 @@ import javax.annotation.Resource; ...@@ -17,6 +24,9 @@ import javax.annotation.Resource;
* @description: TODO * @description: TODO
* @date 2022/4/24 9:25 * @date 2022/4/24 9:25
*/ */
@Transactional(rollbackFor = RuntimeException.class)
@Service
@Slf4j
public class AppletUserServiceImpl implements AppletUserService { public class AppletUserServiceImpl implements AppletUserService {
@Resource @Resource
...@@ -26,18 +36,35 @@ public class AppletUserServiceImpl implements AppletUserService { ...@@ -26,18 +36,35 @@ public class AppletUserServiceImpl implements AppletUserService {
WxClient wxClient; WxClient wxClient;
@Override @Override
public Result<String> selectMobile(String appid, String secret, String js_code, String grant_type) { public Result<String> selectMobile(AppletUserQueryParam appletUserQueryParam) {
JSONObject jsonObject = wxClient.getOpenid(appid, secret, js_code, grant_type); JSONObject jsonObject = wxClient.getOpenid(
appletUserQueryParam.getAppid(),
appletUserQueryParam.getSecret(),
appletUserQueryParam.getJs_code(),
appletUserQueryParam.getGrant_type()
);
Object openid = jsonObject.get("openid"); Object openid = jsonObject.get("openid");
if (StrUtil.isNotBlank(openid.toString())) { if (StrUtil.isNotBlank(openid.toString())) {
Optional<AppletUser> optional = appletUserRepository.findById(openid.toString()); Optional<AppletUser> optional = appletUserRepository.findById(openid.toString());
//如果该微信为第一次登录小程序 //如果该微信为第一次登录小程序
if (optional.isEmpty()) { if (optional.isEmpty()) {
return Result.ok("绑定手机号码"); return Result.no(Status.NOT_FOUND);
} }
AppletUser appletUser = optional.get(); AppletUser appletUser = optional.get();
return Result.ok(appletUser.getMobile()); return Result.ok(appletUser.getMobile());
} }
return null; return null;
} }
@Override
public Result<String> saveAppUser(AppletUserParam appletUserParam) {
Integer integer = appletUserRepository.countMobile(appletUserParam.getMobile());
if (integer > 0) {
return Result.no(Status.BAD_REQUEST, "手机号已绑定");
}
AppletUser appletUser = new AppletUser();
BeanUtils.copyProperties(appletUserParam, appletUser);
appletUserRepository.saveAndFlush(appletUser);
return Result.ok(appletUser.getMobile());
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.broadcast;
import com.yiring.app.param.broadcast.BroadcastParam;
import com.yiring.app.param.broadcast.BroadcastQueryParam;
import com.yiring.app.vo.broadcast.BroadcastVo;
import com.yiring.app.vo.broadcast.BroadcastjcVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
import org.locationtech.jts.geom.Point;
import org.springframework.web.multipart.MultipartFile;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 17:31
*/
public interface BroadcastService {
/**
* 新增播报设备
* @author tzl
* @date 2022/5/5 17:33
* @param broadcastParam BroadcastParam
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> saveBroadcast(BroadcastParam broadcastParam);
/**
* 修改播报设备
* @author tzl
* @date 2022/5/5 17:34
* @param broadcastParam BroadcastParam
* @param idParam IdParam
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> updateBroadcast(BroadcastParam broadcastParam, IdParam idParam);
/**
* 删除播报设备
* @author tzl
* @date 2022/5/5 17:35
* @param idParam IdParam
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> deleteBroadcast(IdParam idParam);
/**
* 查看设备位置
* @author tzl
* @date 2022/5/5 17:47
* @param idParam IdParam
* @return com.yiring.common.core.Result<org.locationtech.jts.geom.Point>
*/
Result<Point> selectPoint(IdParam idParam);
/**
* 分页查询设备
* @author tzl
* @date 2022/5/5 17:49
* @param broadcastQueryParam BroadcastQueryParam
* @return com.yiring.common.core.Result<com.yiring.app.vo.broadcast.BroadcastVo>
*/
Result<PageVo<BroadcastVo>> pageBroadcast(BroadcastQueryParam broadcastQueryParam);
/**
* 导出播报设备
* @author tzl
* @date 2022/5/6 8:56
* @param broadcastQueryParam BroadcastQueryParam
* @param response HttpServletResponse
*/
void exportBroadcast(BroadcastQueryParam broadcastQueryParam, HttpServletResponse response);
/**
* 播报设备导入
* @author tzl
* @date 2022/5/6 10:00
* @param file 文件
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> importBroadcast(MultipartFile file);
/**
* 根据名字检索
* @author tzl
* @date 2022/5/6 10:26
* @param indexParam 入参
* @return com.yiring.common.core.Result<com.yiring.common.vo.PageVo<com.yiring.app.vo.broadcast.BroadcastVo>>
*/
Result<PageVo<BroadcastjcVo>> selectBroadcastName(IndexParam indexParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.broadcast.impl;
import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.github.liaochong.myexcel.core.SaxExcelReader;
import com.yiring.app.domain.broadcast.Broadcast;
import com.yiring.app.domain.broadcast.BroadcastRepository;
import com.yiring.app.excel.broadcast.BroadcastExportExcel;
import com.yiring.app.excel.broadcast.BroadcastImportExcel;
import com.yiring.app.param.broadcast.BroadcastParam;
import com.yiring.app.param.broadcast.BroadcastQueryParam;
import com.yiring.app.service.broadcast.BroadcastService;
import com.yiring.app.util.GeoUtils;
import com.yiring.app.vo.broadcast.BroadcastVo;
import com.yiring.app.vo.broadcast.BroadcastjcVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.vo.PageVo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.locationtech.jts.geom.Point;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.*;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 17:32
*/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class BroadcastServiceImpl implements BroadcastService {
@Resource
BroadcastRepository broadcastRepository;
@Override
public Result<String> saveBroadcast(BroadcastParam broadcastParam) {
if (has(broadcastParam.getBroadcastNum())) {
return Result.no(Status.BAD_REQUEST, "播报设备编号已存在");
}
Broadcast broadcast = new Broadcast();
BeanUtils.copyProperties(broadcastParam, broadcast);
broadcast.setPoint(GeoUtils.createPoint(broadcastParam.getLon(), broadcastParam.getLat()));
broadcastRepository.saveAndFlush(broadcast);
return Result.ok();
}
@Override
public Result<String> updateBroadcast(BroadcastParam broadcastParam, IdParam idParam) {
Optional<Broadcast> byId = broadcastRepository.findById(idParam.getId());
if (byId.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
Broadcast broadcast = byId.get();
if (!broadcast.getBroadcastNum().equals(broadcastParam.getBroadcastNum())) {
if (has(broadcastParam.getBroadcastNum())) {
return Result.no(Status.BAD_REQUEST, "播报设备编号已存在");
}
}
BeanUtils.copyProperties(broadcastParam, broadcast);
broadcast.setPoint(GeoUtils.createPoint(broadcastParam.getLon(), broadcastParam.getLat()));
broadcastRepository.saveAndFlush(broadcast);
return Result.ok();
}
@Override
public Result<String> deleteBroadcast(IdParam idParam) {
Optional<Broadcast> byId = broadcastRepository.findById(idParam.getId());
if (byId.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
Broadcast broadcast = byId.get();
broadcastRepository.delete(broadcast);
return Result.ok();
}
@Override
public Result<Point> selectPoint(IdParam idParam) {
Optional<Broadcast> byId = broadcastRepository.findById(idParam.getId());
if (byId.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
Broadcast broadcast = byId.get();
return Result.ok(broadcast.getPoint());
}
@Override
public Result<PageVo<BroadcastVo>> pageBroadcast(BroadcastQueryParam broadcastQueryParam) {
PageVo<BroadcastVo> resultVo;
//排序
Sort sort = Sort.by(Sort.Order.desc(Broadcast.Fields.updateTime));
if (Objects.nonNull(broadcastQueryParam.getPageNo()) && Objects.nonNull(broadcastQueryParam.getPageSize())) {
//分页
Pageable pageable = PageRequest.of(broadcastQueryParam.getPageNo() - 1, broadcastQueryParam.getPageSize());
Page<Broadcast> all = broadcastRepository.findAll(condition(broadcastQueryParam), pageable);
List<BroadcastVo> data = all
.get()
.map(invitation -> {
BroadcastVo vo = new BroadcastVo();
BeanUtils.copyProperties(invitation, vo);
return vo;
})
.collect(Collectors.toList());
resultVo = PageVo.build(data, all.getTotalElements());
} else {
List<Broadcast> all = broadcastRepository.findAll(condition(broadcastQueryParam), sort);
List<BroadcastVo> data = all
.stream()
.map(invitation -> {
BroadcastVo vo = new BroadcastVo();
BeanUtils.copyProperties(invitation, vo);
return vo;
})
.collect(Collectors.toList());
resultVo = PageVo.build(data, data.size());
}
return Result.ok(resultVo);
}
@Override
public Result<String> importBroadcast(MultipartFile file) {
if (file.isEmpty()) {
throw new RuntimeException("请选择文件");
}
List<BroadcastImportExcel> broadcastImportExcels;
try (InputStream inputStream = file.getInputStream()) {
broadcastImportExcels =
SaxExcelReader
.of(BroadcastImportExcel.class)
.rowFilter(row -> row.getRowNum() > 0)
.ignoreBlankRow()
.read(inputStream);
} catch (IOException e) {
log.info(e.getMessage());
throw new RuntimeException("文件导入异常");
}
List<Broadcast> broadcasts = broadcastImportExcels
.stream()
.map(broadcastImportExcel -> {
Broadcast broadcast = new Broadcast();
BeanUtils.copyProperties(broadcastImportExcel, broadcast);
broadcast.setPoint(GeoUtils.createPoint(broadcastImportExcel.getLon(), broadcastImportExcel.getLat()));
broadcast.setCreateTime(LocalDateTime.now());
return broadcast;
})
.toList();
//检查是否有编号重复的数据
if (broadcasts != null) {
broadcasts.forEach(broadcast ->
broadcastRepository
.findOne((root, cq, cb) -> {
List<Predicate> predicates = new ArrayList<>();
if (StrUtil.isNotBlank(broadcast.getBroadcastNum())) {
predicates.add(
cb.equal(
root.get(Broadcast.Fields.broadcastNum).as(String.class),
broadcast.getBroadcastNum()
)
);
}
return cq.where(predicates.toArray(new Predicate[0])).getRestriction();
})
.ifPresent(one -> {
//如果存在则操作修改
broadcast.setId(one.getId());
})
);
//根据编号去重
broadcasts =
broadcasts
.stream()
.collect(
Collectors.collectingAndThen(
Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(Broadcast::getBroadcastNum))
),
ArrayList::new
)
);
broadcastRepository.saveAllAndFlush(broadcasts);
}
return Result.ok();
}
@Override
public Result<PageVo<BroadcastjcVo>> selectBroadcastName(IndexParam indexParam) {
Sort sort = Sort.by(Sort.Order.desc(Broadcast.Fields.updateTime));
List<Broadcast> all = broadcastRepository.findAll(
condition(BroadcastQueryParam.builder().broadcastName(indexParam.getStr()).build()),
sort
);
List<BroadcastjcVo> data = all
.stream()
.map(broadcast -> {
BroadcastjcVo vo = new BroadcastjcVo();
BeanUtils.copyProperties(broadcast, vo);
return vo;
})
.collect(Collectors.toList());
PageVo<BroadcastjcVo> resultVo = PageVo.build(data, data.size());
return Result.ok(resultVo);
}
@Override
public void exportBroadcast(BroadcastQueryParam broadcastQueryParam, HttpServletResponse response) {
List<Broadcast> broadcasts = broadcastRepository.findAll(condition(broadcastQueryParam));
List<BroadcastExportExcel> broadcastExportExcels = broadcasts
.stream()
.map(broadcast -> {
BroadcastExportExcel broadcastExportExcel = new BroadcastExportExcel();
BeanUtils.copyProperties(broadcast, broadcastExportExcel);
broadcastExportExcel.setLon(broadcast.getPoint().getX());
broadcastExportExcel.setLat(broadcast.getPoint().getY());
return broadcastExportExcel;
})
.toList();
try (
DefaultStreamExcelBuilder<BroadcastExportExcel> defaultStreamExcelBuilder = DefaultStreamExcelBuilder
.of(BroadcastExportExcel.class)
.threadPool(Executors.newFixedThreadPool(2))
.rowHeight(14)
.titleRowHeight(14)
.widths(8)
.style(
"cell->vertical-align:center;text-align:center",
"title->vertical-align:center;text-align:center;font-weight:bold;font-family:等线"
)
.start()
) {
defaultStreamExcelBuilder.append(broadcastExportExcels);
String fileName = URLEncoder.encode("播报信息信息.xlsx", StandardCharsets.UTF_8);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
OutputStream out = response.getOutputStream();
Workbook workbook = defaultStreamExcelBuilder.fixedTitles().build();
workbook.write(out);
workbook.close();
out.flush();
out.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException("导出播报信息信息失败: " + e.getMessage());
}
}
public Specification<Broadcast> condition(BroadcastQueryParam broadcastQueryParam) {
return (root, query, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (StrUtil.isNotBlank(broadcastQueryParam.getBroadcastName())) {
list.add(
criteriaBuilder.like(
root.get(Broadcast.Fields.broadcastName).as(String.class),
"%" + broadcastQueryParam.getBroadcastName() + "%"
)
);
}
if (StrUtil.isNotBlank(broadcastQueryParam.getBroadcastNum())) {
list.add(
criteriaBuilder.like(
root.get(Broadcast.Fields.broadcastNum).as(String.class),
"%" + broadcastQueryParam.getBroadcastNum() + "%"
)
);
}
if (StrUtil.isNotBlank(broadcastQueryParam.getStatus())) {
list.add(
criteriaBuilder.like(
root.get(Broadcast.Fields.status).as(String.class),
"%" + broadcastQueryParam.getStatus() + "%"
)
);
}
Order order = criteriaBuilder.desc(root.get(Broadcast.Fields.updateTime));
Predicate[] predicates = new Predicate[list.size()];
query.where(list.toArray(predicates));
query.orderBy(order);
return criteriaBuilder.and(list.toArray(predicates));
};
}
boolean has(String param) {
Broadcast broadcast = Broadcast.builder().broadcastNum(param).build();
return broadcastRepository.count(Example.of(broadcast)) > 0;
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.icon;
import com.yiring.app.param.icon.IconParam;
import com.yiring.app.vo.icon.IconVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
/**
* @author tzl
* @date 2022/5/5 9:28
*/
public interface IconService {
/**
* 图标新增接口
* @author tzl
* @date 2022/5/5 10:03
* @param iconParam IconParam
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> saveIcon(IconParam iconParam);
/**
* 图标删除接口
* @author tzl
* @date 2022/5/5 10:23
* @param idParam IdParam
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> deleteIcon(IdParam idParam);
/**
* 图标修改接口
* @author tzl
* @date 2022/5/5 10:26
* @param iconParam IconParam
* @param idParam IdParam
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> updateIcon(IconParam iconParam, IdParam idParam);
/**
* 分页查询
* @author tzl
* @date 2022/5/5 15:09
* @param pageParam PageParam
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<PageVo<IconVo>> pageIcon(PageParam pageParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.icon.impl;
import com.yiring.app.domain.icon.Icon;
import com.yiring.app.domain.icon.IconRepository;
import com.yiring.app.param.icon.IconParam;
import com.yiring.app.service.icon.IconService;
import com.yiring.app.vo.icon.IconVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.*;
import org.springframework.stereotype.Service;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 9:28
*/
@Service
public class IconServiceImpl implements IconService {
@Resource
IconRepository iconRepository;
@Override
public Result<String> saveIcon(IconParam iconParam) {
if (hasIconName(iconParam.getIconName())) {
return Result.no(Status.BAD_REQUEST, "图标名称已存在");
}
Icon icon = new Icon();
BeanUtils.copyProperties(iconParam, icon);
iconRepository.saveAndFlush(icon);
return Result.ok();
}
@Override
public Result<String> deleteIcon(IdParam idParam) {
Optional<Icon> optional = iconRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
Icon icon = optional.get();
iconRepository.delete(icon);
return Result.ok();
}
@Override
public Result<String> updateIcon(IconParam iconParam, IdParam idParam) {
Optional<Icon> optional = iconRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
Icon icon = optional.get();
//当修改图标名称时
if (!icon.getIconName().equals(iconParam.getIconName())) {
if (hasIconName(iconParam.getIconName())) {
return Result.no(Status.BAD_REQUEST, "图标名称已存在");
}
}
BeanUtils.copyProperties(iconParam, icon);
iconRepository.saveAndFlush(icon);
return Result.ok();
}
@Override
public Result<PageVo<IconVo>> pageIcon(PageParam pageParam) {
//分页
Pageable pageable = PageRequest.of(pageParam.getPageNo() - 1, pageParam.getPageSize());
Page<Icon> all = iconRepository.findAll(pageable);
List<IconVo> data = all
.get()
.map(icon -> {
IconVo vo = new IconVo();
BeanUtils.copyProperties(icon, vo);
return vo;
})
.collect(Collectors.toList());
PageVo<IconVo> resultVo = PageVo.build(data, all.getTotalElements());
return Result.ok(resultVo);
}
public boolean hasIconName(String param) {
Icon icon = Icon.builder().iconName(param).build();
long count = iconRepository.count(Example.of(icon));
return count > 0;
}
}
...@@ -258,6 +258,8 @@ public class VideoServiceImpl implements VideoService { ...@@ -258,6 +258,8 @@ public class VideoServiceImpl implements VideoService {
.map(video -> { .map(video -> {
VideoExportExcel videoExportExcel = new VideoExportExcel(); VideoExportExcel videoExportExcel = new VideoExportExcel();
BeanUtils.copyProperties(video, videoExportExcel); BeanUtils.copyProperties(video, videoExportExcel);
videoExportExcel.setLon(video.getPoint().getX());
videoExportExcel.setLat(video.getPoint().getY());
return videoExportExcel; return videoExportExcel;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.visitor; package com.yiring.app.service.visitor;
import com.yiring.app.param.visitor.InvitationAppQueryParam;
import com.yiring.app.param.visitor.InvitationParam; import com.yiring.app.param.visitor.InvitationParam;
import com.yiring.app.param.visitor.InvitationQueryParam; import com.yiring.app.param.visitor.InvitationQueryParam;
import com.yiring.app.vo.visitor.InvitationVo; import com.yiring.app.vo.visitor.InvitationDetailsVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
...@@ -38,7 +39,7 @@ public interface InvitationService { ...@@ -38,7 +39,7 @@ public interface InvitationService {
* @date 2022/4/24 17:56 * @date 2022/4/24 17:56
* @return com.yiring.common.core.Result<com.yiring.common.vo.PageVo<java.lang.String>> * @return com.yiring.common.core.Result<com.yiring.common.vo.PageVo<java.lang.String>>
*/ */
Result<PageVo<InvitationVo>> pageInv(InvitationQueryParam invitationQueryParam); Result<PageVo<InvitationDetailsVo>> pageInv(InvitationQueryParam invitationQueryParam);
/** /**
* 撤回邀请 * 撤回邀请
...@@ -65,4 +66,24 @@ public interface InvitationService { ...@@ -65,4 +66,24 @@ public interface InvitationService {
* @param invitationQueryParam 筛选条件 * @param invitationQueryParam 筛选条件
*/ */
void exportInv(InvitationQueryParam invitationQueryParam, HttpServletResponse response); void exportInv(InvitationQueryParam invitationQueryParam, HttpServletResponse response);
/**
* 小程序查询全部
* @author tzl
* @date 2022/4/28 10:56
* @param idParam 主键id
* @return com.yiring.common.core.Result<com.yiring.app.vo.visitor.InvitationDetailsVo>
*/
Result<InvitationDetailsVo> detailsInv(IdParam idParam);
/**
* 小程序用户查看邀请信息
* @author tzl
* @date 2022/4/28 11:30
* @param invitationAppQueryParam 入参
* @return com.yiring.common.core.Result<com.yiring.common.vo.PageVo<com.yiring.app.vo.visitor.InvitationVo>>
*/
Result<PageVo<InvitationDetailsVo>> findAllByVisitor_VisitorMobileAndVisitor_Deleted(
InvitationAppQueryParam invitationAppQueryParam
);
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.visitor; package com.yiring.app.service.visitor;
import com.yiring.app.param.visitor.VisitorAppQueryParam;
import com.yiring.app.param.visitor.VisitorParam; import com.yiring.app.param.visitor.VisitorParam;
import com.yiring.app.param.visitor.VisitorQueryParam; import com.yiring.app.param.visitor.VisitorQueryParam;
import com.yiring.app.vo.visitor.VisitorAppVo;
import com.yiring.app.vo.visitor.VisitorDetailsVo;
import com.yiring.app.vo.visitor.VisitorVo; import com.yiring.app.vo.visitor.VisitorVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
...@@ -15,7 +18,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -15,7 +18,7 @@ import javax.servlet.http.HttpServletResponse;
*/ */
public interface VisitorService { public interface VisitorService {
/** /**
* 访客新增 * 访客登记
* @param visitorParam 新增访客入参 * @param visitorParam 新增访客入参
* @return 是否成功 * @return 是否成功
*/ */
...@@ -41,7 +44,7 @@ public interface VisitorService { ...@@ -41,7 +44,7 @@ public interface VisitorService {
* @param idParam 主键id * @param idParam 主键id
* @return 访客信息 * @return 访客信息
*/ */
Result<VisitorVo> selectVisitor(IdParam idParam); Result<VisitorDetailsVo> selectVisitor(IdParam idParam);
/** /**
* 分页查询 * 分页查询
...@@ -73,11 +76,11 @@ public interface VisitorService { ...@@ -73,11 +76,11 @@ public interface VisitorService {
Result<String> cardRec(IdParam idParam); Result<String> cardRec(IdParam idParam);
/** /**
* 查看详情,并且带出该访客的随访人信息 * 小程序查看来访记录
* @author tzl * @author tzl
* @date 2022/4/25 16:48 * @date 2022/4/29 15:03
* @param idParam 主键id * @param visitorAppQueryParam 入参
* @return com.yiring.common.core.Result<com.yiring.app.vo.visitor.VisitorVo> * @return com.yiring.common.core.Result<com.yiring.app.vo.visitor.VisitorVo>
*/ */
Result<VisitorVo> selectInfo(IdParam idParam); Result<PageVo<VisitorAppVo>> selectInfo(VisitorAppQueryParam visitorAppQueryParam);
} }
...@@ -8,10 +8,13 @@ import com.yiring.app.domain.visitor.InvitationRepository; ...@@ -8,10 +8,13 @@ import com.yiring.app.domain.visitor.InvitationRepository;
import com.yiring.app.domain.visitor.Visitor; import com.yiring.app.domain.visitor.Visitor;
import com.yiring.app.domain.visitor.VisitorRepository; import com.yiring.app.domain.visitor.VisitorRepository;
import com.yiring.app.excel.visitor.InvitationExportExcel; import com.yiring.app.excel.visitor.InvitationExportExcel;
import com.yiring.app.param.visitor.InvitationAppQueryParam;
import com.yiring.app.param.visitor.InvitationParam; import com.yiring.app.param.visitor.InvitationParam;
import com.yiring.app.param.visitor.InvitationQueryParam; import com.yiring.app.param.visitor.InvitationQueryParam;
import com.yiring.app.service.visitor.InvitationService; import com.yiring.app.service.visitor.InvitationService;
import com.yiring.app.vo.visitor.InvitationVo; import com.yiring.app.vo.visitor.InvitationDetailsVo;
import com.yiring.auth.domain.dept.Department;
import com.yiring.auth.domain.user.User;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
...@@ -29,6 +32,7 @@ import java.util.stream.Collectors; ...@@ -29,6 +32,7 @@ import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.criteria.Join; import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType; import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -58,21 +62,30 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -58,21 +62,30 @@ public class InvitationServiceImpl implements InvitationService {
@Override @Override
public Result<String> saveInv(InvitationParam invitationParam) { public Result<String> saveInv(InvitationParam invitationParam) {
User user = User.builder().id(invitationParam.getInviterId()).build();
Visitor visitor = new Visitor(); Visitor visitor = new Visitor();
BeanUtils.copyProperties(invitationParam, visitor); BeanUtils.copyProperties(invitationParam, visitor);
visitor.setUser(user);
visitor.setCreateTime(LocalDateTime.now()); visitor.setCreateTime(LocalDateTime.now());
//身份证验证
// if(StrUtil.isNotBlank(invitationParam.getVisitorCarNum())){
// if (invitationParam.getVisitorCarNum().matches(RegEx.)) {
// return Result.no(Status.BAD_REQUEST, "请输入正确的车牌号码");
// }
// }
//设置创建时间和默认状态 //设置创建时间和默认状态
Invitation invitation = Invitation Invitation invitation = Invitation
.builder() .builder()
.createTime(LocalDateTime.now()) .createTime(LocalDateTime.now())
.updateTime(LocalDateTime.now())
.status("已发送") .status("已发送")
.visitor(visitor) .visitor(visitor)
.InvitationMethod(invitationParam.getInvitationMethod()) .InvitationMethod(invitationParam.getInvitationMethod())
.numOfVisitor(invitationParam.getNumOfVisitor()) .numOfVisitor(invitationParam.getNumOfVisitor())
.inviterId(invitationParam.getInviterId()) .user(user)
.build(); .build();
//添加一条访客未到访信息 //添加一条访客未到访信息
if (invitationParam.getInvitationMethod().equals("个人")) { if (invitationParam.getInvitationMethod().equals("1")) {
visitor.setVisitorSource("邀请个人"); visitor.setVisitorSource("邀请个人");
} else { } else {
visitor.setVisitorSource("邀请公司"); visitor.setVisitorSource("邀请公司");
...@@ -95,7 +108,12 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -95,7 +108,12 @@ public class InvitationServiceImpl implements InvitationService {
Invitation invitation = optional.get(); Invitation invitation = optional.get();
Visitor visitor2 = invitation.getVisitor(); Visitor visitor2 = invitation.getVisitor();
if (invitation.getVisitor().getCardSendTime() != null) {
return Result.no(Status.BAD_REQUEST, "访客已到访,无法修改");
}
BeanUtils.copyProperties(invitationParam, invitation); BeanUtils.copyProperties(invitationParam, invitation);
invitation.setUpdateTime(LocalDateTime.now());
invitationRepository.saveAndFlush(invitation); invitationRepository.saveAndFlush(invitation);
//修改访客未到访信息 //修改访客未到访信息
if (visitor2 == null) { if (visitor2 == null) {
...@@ -103,10 +121,13 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -103,10 +121,13 @@ public class InvitationServiceImpl implements InvitationService {
visitor2 = new Visitor(); visitor2 = new Visitor();
} }
BeanUtils.copyProperties(invitationParam, visitor2); BeanUtils.copyProperties(invitationParam, visitor2);
visitor2.setUser(invitation.getUser());
// visitor2.setIntervieweeId(invitationParam.getInviterId());
visitorRepository.saveAndFlush(visitor2); visitorRepository.saveAndFlush(visitor2);
//短信通知该手机用户 //短信通知该手机用户
// //
// //
return Result.ok(); return Result.ok();
} }
...@@ -118,7 +139,7 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -118,7 +139,7 @@ public class InvitationServiceImpl implements InvitationService {
} }
Invitation invitation = optional.get(); Invitation invitation = optional.get();
invitationRepository.delete(invitation); invitationRepository.delete(invitation);
visitorRepository.delete(invitation.getVisitor()); // visitorRepository.delete(invitation.getVisitor());
//短信通知该手机用户邀请取消 //短信通知该手机用户邀请取消
// //
// //
...@@ -126,10 +147,10 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -126,10 +147,10 @@ public class InvitationServiceImpl implements InvitationService {
} }
@Override @Override
public Result<PageVo<InvitationVo>> pageInv(InvitationQueryParam invitationQueryParam) { public Result<PageVo<InvitationDetailsVo>> pageInv(InvitationQueryParam invitationQueryParam) {
PageVo<InvitationVo> resultVo; PageVo<InvitationDetailsVo> resultVo;
//排序 //排序
Sort sort = Sort.by(Sort.Order.desc(Visitor.Fields.createTime)); Sort sort = Sort.by(Sort.Order.desc(Invitation.Fields.updateTime));
if (Objects.nonNull(invitationQueryParam.getPageNo()) && Objects.nonNull(invitationQueryParam.getPageSize())) { if (Objects.nonNull(invitationQueryParam.getPageNo()) && Objects.nonNull(invitationQueryParam.getPageSize())) {
//分页 //分页
Pageable pageable = PageRequest.of( Pageable pageable = PageRequest.of(
...@@ -137,22 +158,40 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -137,22 +158,40 @@ public class InvitationServiceImpl implements InvitationService {
invitationQueryParam.getPageSize() invitationQueryParam.getPageSize()
); );
Page<Invitation> all = invitationRepository.findAll(condition(invitationQueryParam), pageable); Page<Invitation> all = invitationRepository.findAll(condition(invitationQueryParam), pageable);
List<InvitationVo> data = all List<InvitationDetailsVo> data = all
.get() .get()
.map(invitation -> { .map(invitation -> {
InvitationVo vo = new InvitationVo(); InvitationDetailsVo vo = new InvitationDetailsVo();
BeanUtils.copyProperties(invitation, vo); BeanUtils.copyProperties(invitation, vo);
//翻译邀请人姓名,部门
if (invitation.getUser() != null) {
InvitationDetailsVo.User user = new InvitationDetailsVo.User();
user.setDeptName(invitation.getUser().getDepartment().getName());
user.setRealName(invitation.getUser().getRealName());
user.setMobile(invitation.getUser().getMobile());
user.setId(invitation.getUser().getId());
vo.setUser(user);
}
return vo; return vo;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
resultVo = PageVo.build(data, all.getTotalElements()); resultVo = PageVo.build(data, all.getTotalElements());
} else { } else {
List<Invitation> all = invitationRepository.findAll(condition(invitationQueryParam), sort); List<Invitation> all = invitationRepository.findAll(condition(invitationQueryParam), sort);
List<InvitationVo> data = all List<InvitationDetailsVo> data = all
.stream() .stream()
.map(invitation -> { .map(invitation -> {
InvitationVo vo = new InvitationVo(); InvitationDetailsVo vo = new InvitationDetailsVo();
BeanUtils.copyProperties(invitation, vo); BeanUtils.copyProperties(invitation, vo);
//翻译邀请人姓名,部门
if (invitation.getUser() != null) {
InvitationDetailsVo.User user = new InvitationDetailsVo.User();
user.setDeptName(invitation.getUser().getDepartment().getName());
user.setRealName(invitation.getUser().getRealName());
user.setMobile(invitation.getUser().getMobile());
user.setId(invitation.getUser().getId());
vo.setUser(user);
}
return vo; return vo;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
...@@ -168,10 +207,14 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -168,10 +207,14 @@ public class InvitationServiceImpl implements InvitationService {
return Result.no(Status.NOT_FOUND); return Result.no(Status.NOT_FOUND);
} }
Invitation invitation = optional.get(); Invitation invitation = optional.get();
if (invitation.getVisitor().getCardSendTime() != null) {
return Result.no(Status.BAD_REQUEST, "访客已到访,无法修改");
}
if (invitation.getVisitor().getAppOfVisitTime().isBefore(LocalDateTime.now())) { if (invitation.getVisitor().getAppOfVisitTime().isBefore(LocalDateTime.now())) {
return Result.no(Status.BAD_REQUEST, "预约时间已过"); return Result.no(Status.BAD_REQUEST, "预约时间已过");
} }
invitation.setStatus("已撤回"); invitation.setStatus("已撤回");
invitation.setUpdateTime(LocalDateTime.now());
Visitor visitor = invitation.getVisitor(); Visitor visitor = invitation.getVisitor();
// 逻辑删除对应访客信息 // 逻辑删除对应访客信息
if (visitor != null) { if (visitor != null) {
...@@ -193,10 +236,10 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -193,10 +236,10 @@ public class InvitationServiceImpl implements InvitationService {
return Result.no(Status.BAD_REQUEST, "预约时间已过"); return Result.no(Status.BAD_REQUEST, "预约时间已过");
} }
invitation.setStatus("已发送"); invitation.setStatus("已发送");
invitation.setUpdateTime(LocalDateTime.now());
//添加访客信息 //添加访客信息
Visitor visitor = invitation.getVisitor(); Visitor visitor = invitation.getVisitor();
// 逻辑删除对应访客信息 //
if (visitor != null) { if (visitor != null) {
visitor.setDeleted("N"); visitor.setDeleted("N");
visitorRepository.saveAndFlush(visitor); visitorRepository.saveAndFlush(visitor);
...@@ -215,6 +258,9 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -215,6 +258,9 @@ public class InvitationServiceImpl implements InvitationService {
InvitationExportExcel invitationExportExcel = new InvitationExportExcel(); InvitationExportExcel invitationExportExcel = new InvitationExportExcel();
BeanUtils.copyProperties(invitation, invitationExportExcel); BeanUtils.copyProperties(invitation, invitationExportExcel);
BeanUtils.copyProperties(invitation.getVisitor(), invitationExportExcel); BeanUtils.copyProperties(invitation.getVisitor(), invitationExportExcel);
invitationExportExcel.setInviterName(invitation.getUser().getRealName());
invitationExportExcel.setInviterDept(invitation.getUser().getDepartment().getName());
return invitationExportExcel; return invitationExportExcel;
}) })
.toList(); .toList();
...@@ -250,14 +296,101 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -250,14 +296,101 @@ public class InvitationServiceImpl implements InvitationService {
} }
} }
@Override
public Result<InvitationDetailsVo> detailsInv(IdParam idParam) {
Optional<Invitation> byId = invitationRepository.findById(idParam.getId());
if (byId.isEmpty()) {
return Result.no(Status.NOT_FOUND);
}
Invitation invitation = byId.get();
InvitationDetailsVo vo = new InvitationDetailsVo();
BeanUtils.copyProperties(invitation, vo);
//翻译邀请人姓名,部门
if (invitation.getUser() != null) {
InvitationDetailsVo.User user = new InvitationDetailsVo.User();
user.setDeptName(invitation.getUser().getDepartment().getName());
user.setRealName(invitation.getUser().getRealName());
user.setMobile(invitation.getUser().getMobile());
vo.setUser(user);
}
return Result.ok(vo);
}
@Override
public Result<PageVo<InvitationDetailsVo>> findAllByVisitor_VisitorMobileAndVisitor_Deleted(
InvitationAppQueryParam invitationAppQueryParam
) {
PageVo<InvitationDetailsVo> resultVo;
//排序
Sort sort = Sort.by(Sort.Order.desc(Visitor.Fields.createTime));
if (
Objects.nonNull(invitationAppQueryParam.getPageNo()) &&
Objects.nonNull(invitationAppQueryParam.getPageSize())
) {
//分页
Pageable pageable = PageRequest.of(
invitationAppQueryParam.getPageNo() - 1,
invitationAppQueryParam.getPageSize()
);
Page<Invitation> all = invitationRepository.findAllByVisitor_VisitorMobileAndVisitor_Deleted(
invitationAppQueryParam.getVisitorMobile(),
"N",
pageable
);
List<InvitationDetailsVo> data = all
.get()
.map(invitationResult -> {
InvitationDetailsVo vo = new InvitationDetailsVo();
BeanUtils.copyProperties(invitationResult, vo);
//翻译邀请人姓名,部门
return getInvitationDetailsVo(invitationResult, vo);
})
.collect(Collectors.toList());
resultVo = PageVo.build(data, all.getTotalElements());
} else {
Visitor visitor = Visitor
.builder()
.visitorMobile(invitationAppQueryParam.getVisitorMobile())
.deleted("N")
.build();
Invitation invitation = Invitation.builder().visitor(visitor).build();
List<Invitation> all = invitationRepository.findAll(Example.of(invitation), sort);
List<InvitationDetailsVo> data = all
.stream()
.map(invitationResult -> {
InvitationDetailsVo vo = new InvitationDetailsVo();
BeanUtils.copyProperties(invitationResult, vo);
//翻译邀请人姓名,部门
return getInvitationDetailsVo(invitationResult, vo);
})
.collect(Collectors.toList());
resultVo = PageVo.build(data, data.size());
}
return Result.ok(resultVo);
}
private InvitationDetailsVo getInvitationDetailsVo(Invitation invitationResult, InvitationDetailsVo vo) {
if (invitationResult.getUser() != null) {
InvitationDetailsVo.User user = new InvitationDetailsVo.User();
user.setDeptName(invitationResult.getUser().getDepartment().getName());
user.setRealName(invitationResult.getUser().getRealName());
user.setMobile(invitationResult.getUser().getMobile());
vo.setUser(user);
}
return vo;
}
public Specification<Invitation> condition(InvitationQueryParam invitationQueryParam) { public Specification<Invitation> condition(InvitationQueryParam invitationQueryParam) {
return (root, query, criteriaBuilder) -> { return (root, query, criteriaBuilder) -> {
Join<Invitation, Visitor> join = root.join("visitor", JoinType.LEFT); Join<Invitation, Visitor> joinVisitor = root.join("visitor", JoinType.LEFT);
Join<Invitation, User> joinUser = joinVisitor.join("user", JoinType.LEFT);
Join<User, Department> departmentJoin = joinUser.join("department", JoinType.LEFT);
// Join<User, Department> joinDepartment = root.join(User.Fields.department, JoinType.LEFT);
List<Predicate> list = new ArrayList<>(); List<Predicate> list = new ArrayList<>();
if (StrUtil.isNotBlank(invitationQueryParam.getVisitorName())) { if (StrUtil.isNotBlank(invitationQueryParam.getVisitorName())) {
list.add( list.add(
criteriaBuilder.like( criteriaBuilder.like(
join.get(Visitor.Fields.visitorName).as(String.class), joinVisitor.get(Visitor.Fields.visitorName).as(String.class),
"%" + invitationQueryParam.getVisitorName() + "%" "%" + invitationQueryParam.getVisitorName() + "%"
) )
); );
...@@ -266,7 +399,7 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -266,7 +399,7 @@ public class InvitationServiceImpl implements InvitationService {
if (StrUtil.isNotBlank(invitationQueryParam.getVisitorMobile())) { if (StrUtil.isNotBlank(invitationQueryParam.getVisitorMobile())) {
list.add( list.add(
criteriaBuilder.like( criteriaBuilder.like(
join.get(Visitor.Fields.visitorMobile).as(String.class), joinVisitor.get(Visitor.Fields.visitorMobile).as(String.class),
"%" + invitationQueryParam.getVisitorMobile() + "%" "%" + invitationQueryParam.getVisitorMobile() + "%"
) )
); );
...@@ -275,7 +408,7 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -275,7 +408,7 @@ public class InvitationServiceImpl implements InvitationService {
if (StrUtil.isNotBlank(invitationQueryParam.getOrgId())) { if (StrUtil.isNotBlank(invitationQueryParam.getOrgId())) {
list.add( list.add(
criteriaBuilder.like( criteriaBuilder.like(
join.get(Visitor.Fields.orgId).as(String.class), joinVisitor.get(Visitor.Fields.orgId).as(String.class),
"%" + invitationQueryParam.getOrgId() + "%" "%" + invitationQueryParam.getOrgId() + "%"
) )
); );
...@@ -283,20 +416,30 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -283,20 +416,30 @@ public class InvitationServiceImpl implements InvitationService {
if (StrUtil.isNotBlank(invitationQueryParam.getTaskType())) { if (StrUtil.isNotBlank(invitationQueryParam.getTaskType())) {
list.add( list.add(
criteriaBuilder.equal( criteriaBuilder.equal(
join.get(Visitor.Fields.taskType).as(String.class), joinVisitor.get(Visitor.Fields.taskType).as(String.class),
invitationQueryParam.getTaskType() invitationQueryParam.getTaskType()
) )
); );
} }
if (invitationQueryParam.getInviterId() != null) { if (invitationQueryParam.getRealName() != null) {
list.add( list.add(
criteriaBuilder.equal( criteriaBuilder.like(
root.get(Invitation.Fields.inviterId).as(String.class), joinUser.get(User.Fields.realName).as(String.class),
invitationQueryParam.getInviterId() "%" + invitationQueryParam.getRealName() + "%"
) )
); );
} }
if (invitationQueryParam.getDeptName() != null) {
list.add(
criteriaBuilder.like(
departmentJoin.get(Department.Fields.name).as(String.class),
"%" + invitationQueryParam.getDeptName() + "%"
)
);
}
if ( if (
Objects.nonNull(invitationQueryParam.getAppOfVisitTimeStart()) && Objects.nonNull(invitationQueryParam.getAppOfVisitTimeStart()) &&
Objects.nonNull(invitationQueryParam.getAppOfVisitTimeEnd()) Objects.nonNull(invitationQueryParam.getAppOfVisitTimeEnd())
...@@ -304,16 +447,16 @@ public class InvitationServiceImpl implements InvitationService { ...@@ -304,16 +447,16 @@ public class InvitationServiceImpl implements InvitationService {
//预约到访时间区间段查询 //预约到访时间区间段查询
list.add( list.add(
criteriaBuilder.between( criteriaBuilder.between(
join.get(Visitor.Fields.appOfVisitTime), joinVisitor.get(Visitor.Fields.appOfVisitTime),
invitationQueryParam.getAppOfVisitTimeStart(), invitationQueryParam.getAppOfVisitTimeStart(),
invitationQueryParam.getAppOfVisitTimeEnd() invitationQueryParam.getAppOfVisitTimeEnd()
) )
); );
} }
Order order = criteriaBuilder.desc(root.get(Invitation.Fields.updateTime));
Predicate[] predicates = new Predicate[list.size()]; Predicate[] predicates = new Predicate[list.size()];
query.where(list.toArray(predicates)); query.where(list.toArray(predicates));
query.orderBy(order);
return criteriaBuilder.and(list.toArray(predicates)); return criteriaBuilder.and(list.toArray(predicates));
}; };
} }
......
...@@ -3,19 +3,23 @@ package com.yiring.app.service.visitor.impl; ...@@ -3,19 +3,23 @@ package com.yiring.app.service.visitor.impl;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder; import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.app.domain.appletUser.AppletUserRepository;
import com.yiring.app.domain.visitor.Car; import com.yiring.app.domain.visitor.Car;
import com.yiring.app.domain.visitor.Visitor; import com.yiring.app.domain.visitor.Visitor;
import com.yiring.app.domain.visitor.VisitorRepository; import com.yiring.app.domain.visitor.VisitorRepository;
import com.yiring.app.excel.visitor.VisitorExportExcel; import com.yiring.app.excel.visitor.VisitorExportExcel;
import com.yiring.app.param.visitor.VisitorAppQueryParam;
import com.yiring.app.param.visitor.VisitorParam; import com.yiring.app.param.visitor.VisitorParam;
import com.yiring.app.param.visitor.VisitorQueryParam; import com.yiring.app.param.visitor.VisitorQueryParam;
import com.yiring.app.service.visitor.CarService; import com.yiring.app.service.visitor.CarService;
import com.yiring.app.service.visitor.VisitorService; import com.yiring.app.service.visitor.VisitorService;
import com.yiring.app.vo.visitor.VisitorAppVo;
import com.yiring.app.vo.visitor.VisitorDetailsVo;
import com.yiring.app.vo.visitor.VisitorVo; import com.yiring.app.vo.visitor.VisitorVo;
import com.yiring.auth.domain.user.User;
import com.yiring.common.constant.RegEx; import com.yiring.common.constant.RegEx;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.io.OutputStream; import java.io.OutputStream;
...@@ -29,6 +33,9 @@ import java.util.Optional; ...@@ -29,6 +33,9 @@ import java.util.Optional;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -54,21 +61,25 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -54,21 +61,25 @@ public class VisitorServiceImpl implements VisitorService {
@Resource @Resource
CarService carService; CarService carService;
@Resource
AppletUserRepository appletUserRepository;
@Override @Override
public Result<String> saveVisitor(VisitorParam visitorParam) { public Result<String> saveVisitor(VisitorParam visitorParam) {
//设置创建时间和默认状态
Visitor visitor = Visitor
.builder()
.createTime(LocalDateTime.now())
.updateTime(LocalDateTime.now())
.cardSendTime(LocalDateTime.now())
.build();
BeanUtils.copyProperties(visitorParam, visitor);
if (visitorParam.getMainVisitorId() != null) { if (visitorParam.getMainVisitorId() != null) {
//如果主访人员id不为空, //如果主访人员id不为空,
Visitor optional = visitorRepository.findByIdAndDeleted(visitorParam.getMainVisitorId(), "N"); Visitor optional = visitorRepository.findByIdAndDeleted(visitorParam.getMainVisitorId(), "N");
if (optional == null) { if (optional == null) {
return Result.no(Status.NOT_FOUND, "信息失效,请联系管理员"); return Result.no(Status.NOT_FOUND, "信息失效,请联系管理员");
} }
visitor.setMainVisitorId(visitorParam.getMainVisitorId());
} }
//设置创建时间和默认状态
Visitor visitor = Visitor.builder().createTime(LocalDateTime.now()).build();
BeanUtils.copyProperties(visitorParam, visitor);
//如果有车, 填车辆信息, //如果有车, 填车辆信息,
if (visitorParam.getHasCar() == 1) { if (visitorParam.getHasCar() == 1) {
//校验车辆必填信息 //校验车辆必填信息
...@@ -127,20 +138,52 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -127,20 +138,52 @@ public class VisitorServiceImpl implements VisitorService {
} }
} }
BeanUtils.copyProperties(visitorParam, optional); BeanUtils.copyProperties(visitorParam, optional);
optional.setUpdateTime(LocalDateTime.now());
visitorRepository.saveAndFlush(optional); visitorRepository.saveAndFlush(optional);
return Result.ok(); return Result.ok();
} }
@Override @Override
public Result<VisitorVo> selectVisitor(IdParam idParam) { public Result<VisitorDetailsVo> selectVisitor(IdParam idParam) {
Optional<Visitor> optional = visitorRepository.findById(idParam.getId()); Optional<Visitor> optional = visitorRepository.findById(idParam.getId());
if (optional.isEmpty()) { if (optional.isEmpty()) {
return Result.no(Status.NOT_FOUND); return Result.no(Status.NOT_FOUND);
} }
Visitor visitor = optional.get(); Visitor visitor = optional.get();
VisitorVo vo = new VisitorVo(); List<Visitor> list = new ArrayList<>();
List<VisitorDetailsVo.VisitorResultVo> listResult = new ArrayList<>();
//主访人id为空 为主访问人,查询出其下面的随访人的姓名和电话
if (visitor.getMainVisitorId() == null) {
list = visitorRepository.findAllByMainVisitorIdAndDeletedEquals(visitor.getId(), "N");
} else {
//查询此随访访客的主访客,
Visitor n = visitorRepository.findByIdAndDeleted(visitor.getMainVisitorId(), "N");
if (n != null) {
//添加此随访人一同的随访人
list =
visitorRepository.findAllByMainVisitorIdAndDeletedEqualsAndIdIsNot(n.getId(), "N", visitor.getId());
list.add(n);
}
}
//处理返回数据的结构
if (list != null) {
list.forEach(visitorEntity -> {
VisitorDetailsVo.VisitorResultVo visitorResultVo = new VisitorDetailsVo.VisitorResultVo();
BeanUtils.copyProperties(visitorEntity, visitorResultVo);
listResult.add(visitorResultVo);
});
}
VisitorDetailsVo vo = new VisitorDetailsVo();
BeanUtils.copyProperties(visitor, vo); BeanUtils.copyProperties(visitor, vo);
VisitorDetailsVo.UserVo userVo = VisitorDetailsVo.UserVo
.builder()
.realName(visitor.getUser().getRealName())
.mobile(visitor.getUser().getMobile())
.deptName(visitor.getUser().getDepartment().getName())
.build();
vo.setUserVo(userVo);
vo.setList(listResult);
return Result.ok(vo); return Result.ok(vo);
} }
...@@ -158,6 +201,16 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -158,6 +201,16 @@ public class VisitorServiceImpl implements VisitorService {
.map(visitor -> { .map(visitor -> {
VisitorVo vo = new VisitorVo(); VisitorVo vo = new VisitorVo();
BeanUtils.copyProperties(visitor, vo); BeanUtils.copyProperties(visitor, vo);
VisitorVo.UserVo userVo = VisitorVo.UserVo
.builder()
.realName(visitor.getUser().getRealName())
.build();
vo.setUserVo(userVo);
//翻译被访问人姓名
// if (vo.getIntervieweeId() != null) {
// Optional<User> byId = userRepository.findById(vo.getIntervieweeId());
// byId.ifPresent(user -> vo.setIntervieweeName(user.getRealName()));
// }
return vo; return vo;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
...@@ -169,6 +222,11 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -169,6 +222,11 @@ public class VisitorServiceImpl implements VisitorService {
.map(visitor -> { .map(visitor -> {
VisitorVo vo = new VisitorVo(); VisitorVo vo = new VisitorVo();
BeanUtils.copyProperties(visitor, vo); BeanUtils.copyProperties(visitor, vo);
VisitorVo.UserVo userVo = VisitorVo.UserVo
.builder()
.realName(visitor.getUser().getRealName())
.build();
vo.setUserVo(userVo);
return vo; return vo;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
...@@ -206,6 +264,7 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -206,6 +264,7 @@ public class VisitorServiceImpl implements VisitorService {
String fileName = URLEncoder.encode("访客信息.xlsx", StandardCharsets.UTF_8); String fileName = URLEncoder.encode("访客信息.xlsx", StandardCharsets.UTF_8);
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
OutputStream out = response.getOutputStream(); OutputStream out = response.getOutputStream();
...@@ -243,35 +302,47 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -243,35 +302,47 @@ public class VisitorServiceImpl implements VisitorService {
} }
Visitor visitor = optional.get(); Visitor visitor = optional.get();
visitor.setLabelCardStatus("3"); visitor.setLabelCardStatus("3");
visitor.setUpdateTime(LocalDateTime.now());
visitor.setCardRecTime(LocalDateTime.now()); visitor.setCardRecTime(LocalDateTime.now());
visitorRepository.saveAndFlush(visitor); visitorRepository.saveAndFlush(visitor);
return Result.ok(); return Result.ok();
} }
@Override @Override
public Result<VisitorVo> selectInfo(IdParam idParam) { public Result<PageVo<VisitorAppVo>> selectInfo(VisitorAppQueryParam visitorAppQueryParam) {
return null; PageVo<VisitorAppVo> resultVo;
} //排序
// public boolean hasCarNum(String carNum) { //分页
// Visitor visitor = Visitor.builder().visitorCarNum(carNum).labelCardStatus("1").build(); Pageable pageable = PageRequest.of(visitorAppQueryParam.getPageNo() - 1, visitorAppQueryParam.getPageSize());
// long count = visitorRepository.count(Example.of(visitor)); Page<Visitor> all = visitorRepository.findAllByVisitorMobileAndDeletedEquals(
// Visitor visitor1 = Visitor.builder().visitorCarNum(carNum).labelCardStatus("2").build(); visitorAppQueryParam.getVisitorMobile(),
// long count1 = visitorRepository.count(Example.of(visitor1)); "N",
// return count + count1 > 0; pageable
// } );
// List<VisitorAppVo> data = all
// public boolean hasVisitorMobile(String mobile) { .get()
// Visitor visitor = Visitor.builder().visitorMobile(mobile).labelCardStatus("1").build(); .map(visitor -> {
// long count = visitorRepository.count(Example.of(visitor)); VisitorAppVo vo = new VisitorAppVo();
// Visitor visitor1 = Visitor.builder().visitorMobile(mobile).labelCardStatus("1").build(); vo.setId(visitor.getId());
// long count1 = visitorRepository.count(Example.of(visitor1)); vo.setCardSendTime(visitor.getCardSendTime());
// return count + count1 > 0; VisitorAppVo.UserVo userVo = VisitorAppVo.UserVo
// } .builder()
.realName(visitor.getUser().getRealName())
.mobile(visitor.getVisitorMobile())
.build();
vo.setUserVo(userVo);
return vo;
})
.collect(Collectors.toList());
resultVo = PageVo.build(data, all.getTotalElements());
return Result.ok(resultVo);
}
public Specification<Visitor> condition(VisitorQueryParam visitorQueryParam) { public Specification<Visitor> condition(VisitorQueryParam visitorQueryParam) {
return (root, query, criteriaBuilder) -> { return (root, query, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>(); List<Predicate> list = new ArrayList<>();
Join<Visitor, User> join = root.join("user", JoinType.LEFT);
//查询条件 //查询条件
if (StrUtil.isNotBlank(visitorQueryParam.getVisitorName())) { if (StrUtil.isNotBlank(visitorQueryParam.getVisitorName())) {
//访客姓名 //访客姓名
...@@ -329,9 +400,7 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -329,9 +400,7 @@ public class VisitorServiceImpl implements VisitorService {
if (StrUtil.isNotBlank(visitorQueryParam.getIntervieweeId())) { if (StrUtil.isNotBlank(visitorQueryParam.getIntervieweeId())) {
//被访人 //被访人
list.add( list.add(criteriaBuilder.equal(join.get(BasicEntity.Fields.id), visitorQueryParam.getIntervieweeId()));
criteriaBuilder.equal(root.get(Visitor.Fields.intervieweeId), visitorQueryParam.getIntervieweeId())
);
} }
if (StrUtil.isNotBlank(visitorQueryParam.getLabelCard())) { if (StrUtil.isNotBlank(visitorQueryParam.getLabelCard())) {
...@@ -344,16 +413,25 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -344,16 +413,25 @@ public class VisitorServiceImpl implements VisitorService {
); );
} }
if (StrUtil.isNotBlank(visitorQueryParam.getLabelCardStatus())) { if (StrUtil.isNotBlank(visitorQueryParam.getIsMain())) {
//标签卡状态 //标签卡号查询
list.add( if (visitorQueryParam.getIsMain().equals("1")) {
criteriaBuilder.like( list.add(criteriaBuilder.isNull(root.get(Visitor.Fields.mainVisitorId)));
root.get(Visitor.Fields.labelCardStatus), } else {
"%" + visitorQueryParam.getLabelCardStatus() + "%" list.add(criteriaBuilder.isNotNull(root.get(Visitor.Fields.mainVisitorId)));
) }
);
} }
// if (StrUtil.isNotBlank(visitorQueryParam.getLabelCardStatus())) {
// //标签卡状态
// list.add(
// criteriaBuilder.like(
// root.get(Visitor.Fields.labelCardStatus),
// "%" + visitorQueryParam.getLabelCardStatus() + "%"
// )
// );
// }
if ( if (
Objects.nonNull(visitorQueryParam.getAppOfVisitTimeStart()) && Objects.nonNull(visitorQueryParam.getAppOfVisitTimeStart()) &&
Objects.nonNull(visitorQueryParam.getAppOfVisitTimeEnd()) Objects.nonNull(visitorQueryParam.getAppOfVisitTimeEnd())
...@@ -395,9 +473,10 @@ public class VisitorServiceImpl implements VisitorService { ...@@ -395,9 +473,10 @@ public class VisitorServiceImpl implements VisitorService {
) )
); );
} }
Order order = criteriaBuilder.desc(root.get(Visitor.Fields.updateTime));
Predicate[] predicates = new Predicate[list.size()]; Predicate[] predicates = new Predicate[list.size()];
query.where(list.toArray(predicates)); query.where(list.toArray(predicates));
query.orderBy(order);
return criteriaBuilder.and(list.toArray(predicates)); return criteriaBuilder.and(list.toArray(predicates));
}; };
} }
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.broadcast;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
import org.locationtech.jts.geom.Point;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 17:26
*/
@ApiModel("BroadcastVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastVo implements Serializable {
@Serial
private static final long serialVersionUID = 2927556677143859520L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id", example = "1")
Long id;
@ApiModelProperty(value = "编号", example = "1")
String broadcastNum;
@ApiModelProperty(value = "坐标点信息")
Point point;
@ApiModelProperty(value = "备注", example = "厂区喇叭")
String remark;
@ApiModelProperty(value = "音柱地址", example = "音柱地址")
String broadcastAdd;
@ApiModelProperty(value = "播报设备名称", example = "喇叭1")
String broadcastName;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.broadcast;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/6 11:33
*/
@ApiModel("BroadcastjcVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastjcVo implements Serializable {
@Serial
private static final long serialVersionUID = 5301756979737544186L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id", example = "1")
Long id;
@ApiModelProperty(value = "播报设备名称", example = "喇叭1")
String broadcastName;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.icon;
import java.io.Serial;
import java.io.Serializable;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 15:10
*/
public class IconVo implements Serializable {
@Serial
private static final long serialVersionUID = 2334297671118394950L;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.visitor;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.visitor.Visitor;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 邀请反参
* @author tzl
* @version 1.0
* @description:
* @date 2022/4/28 10:48
*/
@ApiModel("InvitationDetailsVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class InvitationDetailsVo implements Serializable {
@Serial
private static final long serialVersionUID = 5496232471863298479L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id", example = "1548548545755")
Long id;
@ApiModelProperty(value = "邀请原因/来访原因", example = "随便看看")
String reason;
@ApiModelProperty(value = "邀请方式:个人 公司", example = "个人")
String InvitationMethod;
@ApiModelProperty(value = "邀请人数", example = "1")
Integer numOfVisitor;
@ApiModelProperty(value = "邀请人id", example = "1")
Long inviterId;
@ApiModelProperty(value = "状态", example = "撤回")
String status;
@ApiModelProperty(value = "被邀请访客")
Visitor visitor;
@ApiModelProperty(value = "邀请人信息")
User user;
@ApiModel("User")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class User implements Serializable {
@Serial
private static final long serialVersionUID = 4115779013003587949L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id", example = "1")
Long id;
@ApiModelProperty(value = "邀请人姓名", example = "张三")
String realName;
@ApiModelProperty(value = "邀请人部门", example = "研发部")
String deptName;
@ApiModelProperty(value = "邀请人电话", example = "17688888888")
String mobile;
}
}
...@@ -56,4 +56,28 @@ public class InvitationVo implements Serializable { ...@@ -56,4 +56,28 @@ public class InvitationVo implements Serializable {
@ApiModelProperty(value = "被邀请访客") @ApiModelProperty(value = "被邀请访客")
Visitor visitor; Visitor visitor;
@ApiModelProperty(value = "邀请人信息")
User user;
@ApiModel("User")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class User implements Serializable {
@Serial
private static final long serialVersionUID = 4115779013003587949L;
// @JsonSerialize(using = ToStringSerializer.class)
// @ApiModelProperty(value = "id", example = "1")
// Long id;
@ApiModelProperty(value = "邀请人姓名", example = "张三")
String realName;
@ApiModelProperty(value = "邀请人部门", example = "研发部")
String deptName;
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.visitor;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* 2022/4/19 14:16
*/
@ApiModel("VisitorVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class VisitorAppVo implements Serializable {
@Serial
private static final long serialVersionUID = 9004209982164273860L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id", example = "1548548545755")
Long id;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "发卡时间", example = "2022-04-19 14:28:00")
LocalDateTime cardSendTime;
UserVo userVo;
@ApiModel("UserVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class UserVo implements Serializable {
@Serial
private static final long serialVersionUID = 4115779013003587949L;
@ApiModelProperty(value = "被访人姓名", example = "张三")
String realName;
@ApiModelProperty(value = "被访人姓名", example = "张三")
String mobile;
}
}
...@@ -62,8 +62,8 @@ public class VisitorDetailsVo implements Serializable { ...@@ -62,8 +62,8 @@ public class VisitorDetailsVo implements Serializable {
@ApiModelProperty(value = "所属单位id", example = "壹润科技") @ApiModelProperty(value = "所属单位id", example = "壹润科技")
String orgId; String orgId;
@ApiModelProperty(value = "被访人id", example = "1") // @ApiModelProperty(value = "被访人id", example = "1")
Long intervieweeId; // Long intervieweeId;
@ApiModelProperty(value = "被访人姓名", example = "李四") @ApiModelProperty(value = "被访人姓名", example = "李四")
String intervieweeName; String intervieweeName;
...@@ -90,12 +90,14 @@ public class VisitorDetailsVo implements Serializable { ...@@ -90,12 +90,14 @@ public class VisitorDetailsVo implements Serializable {
@ApiModelProperty(value = "车辆反参") @ApiModelProperty(value = "车辆反参")
Car car; Car car;
UserVo userVo;
@ApiModelProperty(value = "主访人id") @ApiModelProperty(value = "主访人id")
Long mainVisitorId; Long mainVisitorId;
List<VisitorResultVo> list; List<VisitorResultVo> list;
@ApiModel("MapVoReuslt") @ApiModel("VisitorResultVo")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
...@@ -119,4 +121,29 @@ public class VisitorDetailsVo implements Serializable { ...@@ -119,4 +121,29 @@ public class VisitorDetailsVo implements Serializable {
@ApiModelProperty(value = "主访人id") @ApiModelProperty(value = "主访人id")
Long mainVisitorId; Long mainVisitorId;
} }
@ApiModel("UserVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class UserVo implements Serializable {
@Serial
private static final long serialVersionUID = 4115779013003587949L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "id", example = "1")
Long id;
@ApiModelProperty(value = "被访人姓名", example = "张三")
String realName;
@ApiModelProperty(value = "被访人电话", example = "17688888888")
String mobile;
@ApiModelProperty(value = "被访人部门")
String deptName;
}
} }
...@@ -4,7 +4,6 @@ package com.yiring.app.vo.visitor; ...@@ -4,7 +4,6 @@ package com.yiring.app.vo.visitor;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.visitor.Car;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
...@@ -41,11 +40,11 @@ public class VisitorVo implements Serializable { ...@@ -41,11 +40,11 @@ public class VisitorVo implements Serializable {
@ApiModelProperty(value = "到访人身份证", example = "430441190001255417") @ApiModelProperty(value = "到访人身份证", example = "430441190001255417")
String visitorCarNum; String visitorCarNum;
@ApiModelProperty(value = "是否特殊作业", example = "true") @ApiModelProperty(value = "是否特殊作业", example = "false")
boolean taskType; String taskType;
@ApiModelProperty(value = "邀请人数", example = "1") // @ApiModelProperty(value = "邀请人数", example = "1")
Integer numOfVisitor; // Integer numOfVisitor;
@ApiModelProperty(value = "访客来源", example = "内部邀请") @ApiModelProperty(value = "访客来源", example = "内部邀请")
String visitorSource; String visitorSource;
...@@ -53,14 +52,14 @@ public class VisitorVo implements Serializable { ...@@ -53,14 +52,14 @@ public class VisitorVo implements Serializable {
@ApiModelProperty(value = "标签卡", example = "WE34421231") @ApiModelProperty(value = "标签卡", example = "WE34421231")
String labelCard; String labelCard;
@ApiModelProperty(value = "标签卡状态", example = "使用中") // @ApiModelProperty(value = "标签卡状态", example = "使用中")
String labelCardStatus; // String labelCardStatus;
@ApiModelProperty(value = "所属单位id", example = "壹润科技") @ApiModelProperty(value = "所属单位id", example = "壹润科技")
String orgId; String orgId;
@ApiModelProperty(value = "被访人id", example = "1") @ApiModelProperty(value = "被访人姓名", example = "李四")
String intervieweeId; String intervieweeName;
@ApiModelProperty(value = "来访原因", example = "来访原因") @ApiModelProperty(value = "来访原因", example = "来访原因")
String reason; String reason;
...@@ -69,18 +68,38 @@ public class VisitorVo implements Serializable { ...@@ -69,18 +68,38 @@ public class VisitorVo implements Serializable {
@ApiModelProperty(value = "收卡时间", example = "2022-04-19 14:28:00") @ApiModelProperty(value = "收卡时间", example = "2022-04-19 14:28:00")
LocalDateTime cardRecTime; LocalDateTime cardRecTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "预约到访时间", example = "2022-04-19 14:28:00") // @ApiModelProperty(value = "预约到访时间", example = "2022-04-19 14:28:00")
LocalDateTime appOfVisitTime; // LocalDateTime appOfVisitTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间", example = "2022-04-19 14:28:00") // @ApiModelProperty(value = "创建时间", example = "2022-04-19 14:28:00")
LocalDateTime createTime; // LocalDateTime createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "发卡时间", example = "2022-04-19 14:28:00") @ApiModelProperty(value = "发卡时间", example = "2022-04-19 14:28:00")
LocalDateTime cardSendTime; LocalDateTime cardSendTime;
@ApiModelProperty(value = "车辆反参") // @ApiModelProperty(value = "车辆反参")
Car car; // Car car;
@ApiModelProperty(value = "主访人id")
Long mainVisitorId;
UserVo userVo;
@ApiModel("UserVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class UserVo implements Serializable {
@Serial
private static final long serialVersionUID = 4115779013003587949L;
@ApiModelProperty(value = "被访人姓名", example = "张三")
String realName;
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.appUser;
import com.yiring.app.param.appUser.AppletUserParam;
import com.yiring.app.param.appUser.AppletUserQueryParam;
import com.yiring.app.service.appletUser.AppletUserService;
import com.yiring.common.core.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/4/28 13:48
*/
@Slf4j
@Validated
@Api(tags = "小程序用户")
@RestController
@RequestMapping("/appUser/")
public class AppletUserController {
@Resource
AppletUserService appletUserService;
@ApiOperation("微信绑定手机号码")
@PostMapping("saveAppUser")
public Result<String> saveAppUser(@Valid AppletUserParam appletUserParam) {
return appletUserService.saveAppUser(appletUserParam);
}
@ApiOperation("根据code获取微信用户唯一标识,返回其绑定的手机号码")
@GetMapping("selectMobile")
public Result<String> selectMobile(@Valid AppletUserQueryParam appletUserQueryParam) {
return appletUserService.selectMobile(appletUserQueryParam);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.broadcast;
import com.yiring.app.param.broadcast.BroadcastParam;
import com.yiring.app.param.broadcast.BroadcastQueryParam;
import com.yiring.app.service.broadcast.BroadcastService;
import com.yiring.app.vo.broadcast.BroadcastVo;
import com.yiring.app.vo.broadcast.BroadcastjcVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.locationtech.jts.geom.Point;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/6 10:15
*/
@Slf4j
@Validated
@Api(tags = "Broadcast(播报设备管理)")
@RestController
@RequestMapping("/broadcast/")
public class BroadcastController {
@Resource
BroadcastService broadcastService;
@ApiOperation(value = "新增设备信息")
@PostMapping("saveBroadcast")
public Result<String> saveBroadcast(@Valid BroadcastParam broadcastParam) {
return broadcastService.saveBroadcast(broadcastParam);
}
@ApiOperation(value = "删除设备信息")
@PostMapping("deleteBroadcast")
public Result<String> deleteBroadcast(@Valid IdParam idParam) {
return broadcastService.deleteBroadcast(idParam);
}
@ApiOperation(value = "修改设备信息")
@PostMapping("updateBroadcast")
public Result<String> updateBroadcast(@Valid BroadcastParam broadcastParam, @Valid IdParam idParam) {
return broadcastService.updateBroadcast(broadcastParam, idParam);
}
@ApiOperation(value = "查看设备位置")
@GetMapping("selectPoint")
public Result<Point> selectPoint(@Valid IdParam idParam) {
return broadcastService.selectPoint(idParam);
}
@ApiOperation(value = "分页设备信息")
@GetMapping("pageBroadcast")
public Result<PageVo<BroadcastVo>> pageBroadcast(@Valid BroadcastQueryParam broadcastQueryParam) {
return broadcastService.pageBroadcast(broadcastQueryParam);
}
@ApiOperation(value = "导出", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@PostMapping("exportBroadcast")
public void exportBroadcast(HttpServletResponse response, @Valid BroadcastQueryParam broadcastQueryParam) {
broadcastService.exportBroadcast(broadcastQueryParam, response);
}
@ApiOperation(value = "导入")
@ApiImplicitParams({ @ApiImplicitParam(value = "文件", required = true, name = "file") })
@PostMapping("importVideo")
public Result<String> importVideo(MultipartFile file) {
return broadcastService.importBroadcast(file);
}
@ApiOperation(value = "根据名字检索")
@GetMapping("selectBroadcastName")
public Result<PageVo<BroadcastjcVo>> selectBroadcastName(@Valid IndexParam indexParam) {
return broadcastService.selectBroadcastName(indexParam);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.icon;
import com.yiring.app.param.icon.IconParam;
import com.yiring.app.service.icon.IconService;
import com.yiring.app.vo.icon.IconVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/5/5 15:18
*/
@Slf4j
@Validated
@Api(tags = "Icon(图标管理)")
@RestController
@RequestMapping("/icon/")
public class IconController {
@Resource
IconService iconService;
@ApiOperation(value = "新增图标信息")
@PostMapping("saveIcon")
public Result<String> saveIcon(@Valid IconParam iconParam) {
return iconService.saveIcon(iconParam);
}
@ApiOperation(value = "删除图标信息")
@PostMapping("deleteIcon")
public Result<String> deleteIcon(@Valid IdParam idParam) {
return iconService.deleteIcon(idParam);
}
@ApiOperation(value = "修改图标信息")
@PostMapping("updateIcon")
public Result<String> updateIcon(@Valid IconParam iconParam, @Valid IdParam idParam) {
return iconService.updateIcon(iconParam, idParam);
}
@ApiOperation(value = "分页图标信息")
@GetMapping("pageIcon")
public Result<PageVo<IconVo>> pageIcon(@Valid PageParam pageParam) {
return iconService.pageIcon(pageParam);
}
}
...@@ -45,7 +45,7 @@ public class VideoController { ...@@ -45,7 +45,7 @@ public class VideoController {
@ApiOperation(value = "新增监控点位信息") @ApiOperation(value = "新增监控点位信息")
@PostMapping("saveVideo") @PostMapping("saveVideo")
public Result<String> findLatest(@Valid VideoParam videoParam) { public Result<String> saveVideo(@Valid VideoParam videoParam) {
return videoService.saveVideo(videoParam); return videoService.saveVideo(videoParam);
} }
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.visitor; package com.yiring.app.web.visitor;
import com.yiring.app.param.visitor.InvitationAppQueryParam;
import com.yiring.app.param.visitor.InvitationParam; import com.yiring.app.param.visitor.InvitationParam;
import com.yiring.app.param.visitor.InvitationQueryParam; import com.yiring.app.param.visitor.InvitationQueryParam;
import com.yiring.app.service.visitor.InvitationService; import com.yiring.app.service.visitor.InvitationService;
import com.yiring.app.vo.visitor.InvitationVo; import com.yiring.app.vo.visitor.InvitationDetailsVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
...@@ -69,7 +70,7 @@ public class InvitationController { ...@@ -69,7 +70,7 @@ public class InvitationController {
@ApiOperation(value = "查看邀请信息(分页)") @ApiOperation(value = "查看邀请信息(分页)")
@GetMapping("pageInv") @GetMapping("pageInv")
public Result<PageVo<InvitationVo>> pageInv(@Valid InvitationQueryParam invitationQueryParam) { public Result<PageVo<InvitationDetailsVo>> pageInv(@Valid InvitationQueryParam invitationQueryParam) {
return invitationService.pageInv(invitationQueryParam); return invitationService.pageInv(invitationQueryParam);
} }
...@@ -78,4 +79,16 @@ public class InvitationController { ...@@ -78,4 +79,16 @@ public class InvitationController {
public void exportInv(HttpServletResponse response, @Valid InvitationQueryParam invitationQueryParam) { public void exportInv(HttpServletResponse response, @Valid InvitationQueryParam invitationQueryParam) {
invitationService.exportInv(invitationQueryParam, response); invitationService.exportInv(invitationQueryParam, response);
} }
@ApiOperation(value = "小程序查看邀请详情")
@GetMapping("detailsInv")
public Result<InvitationDetailsVo> detailsInv(@Valid IdParam idParam) {
return invitationService.detailsInv(idParam);
}
@ApiOperation(value = "小程序查看邀请")
@GetMapping("appGetInv")
public Result<PageVo<InvitationDetailsVo>> appGetInv(@Valid InvitationAppQueryParam invitationAppQueryParam) {
return invitationService.findAllByVisitor_VisitorMobileAndVisitor_Deleted(invitationAppQueryParam);
}
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.visitor; package com.yiring.app.web.visitor;
import com.yiring.app.param.visitor.VisitorAppQueryParam;
import com.yiring.app.param.visitor.VisitorParam; import com.yiring.app.param.visitor.VisitorParam;
import com.yiring.app.param.visitor.VisitorQueryParam; import com.yiring.app.param.visitor.VisitorQueryParam;
import com.yiring.app.service.visitor.VisitorService; import com.yiring.app.service.visitor.VisitorService;
import com.yiring.app.vo.visitor.VisitorAppVo;
import com.yiring.app.vo.visitor.VisitorDetailsVo;
import com.yiring.app.vo.visitor.VisitorVo; import com.yiring.app.vo.visitor.VisitorVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
...@@ -69,7 +72,7 @@ public class VisitorController { ...@@ -69,7 +72,7 @@ public class VisitorController {
@ApiOperation(value = "查看访客信息详情") @ApiOperation(value = "查看访客信息详情")
@GetMapping("selectVisitor") @GetMapping("selectVisitor")
public Result<VisitorVo> selectVisitor(@Valid IdParam idParam) { public Result<VisitorDetailsVo> selectVisitor(@Valid IdParam idParam) {
return visitorService.selectVisitor(idParam); return visitorService.selectVisitor(idParam);
} }
...@@ -84,4 +87,10 @@ public class VisitorController { ...@@ -84,4 +87,10 @@ public class VisitorController {
public void exportVisitor(HttpServletResponse response, @Valid VisitorQueryParam visitorQueryParam) { public void exportVisitor(HttpServletResponse response, @Valid VisitorQueryParam visitorQueryParam) {
visitorService.exportVisitor(visitorQueryParam, response); visitorService.exportVisitor(visitorQueryParam, response);
} }
@ApiOperation(value = "小程序查看来访历史(分页)")
@GetMapping("selectInfo")
public Result<PageVo<VisitorAppVo>> selectInfo(@Valid VisitorAppQueryParam visitorAppQueryParam) {
return visitorService.selectInfo(visitorAppQueryParam);
}
} }
...@@ -9,11 +9,7 @@ spring: ...@@ -9,11 +9,7 @@ spring:
profiles: profiles:
include: auth, conf-patch include: auth, conf-patch
active: dev active: dev
servlet:
multipart:
enabled: true
max-file-size: 10MB
max-request-size: 10MB
# DEBUG # DEBUG
debug: false debug: false
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论