会议室和访客管理模块

This commit is contained in:
dy
2025-06-23 10:02:35 +08:00
parent a55a001b75
commit 187690125c
182 changed files with 11242 additions and 7 deletions

View File

@@ -98,6 +98,8 @@
<nacos.username>nacos</nacos.username>
<nacos.password>nacos</nacos.password>
<logstash.address>127.0.0.1:4560</logstash.address>
</properties>
</profile>
</profiles>

View File

@@ -10,6 +10,7 @@
<artifactId>ruoyi-auth</artifactId>
<description>
ruoyi-auth 认证授权中心
</description>

View File

@@ -0,0 +1,2 @@
/mvnw text eol=lf
*.cmd text eol=crlf

33
ruoyi-modules/dimp-wy-web/.gitignore vendored Normal file
View File

@@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

259
ruoyi-modules/dimp-wy-web/mvnw vendored Normal file
View File

@@ -0,0 +1,259 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Apache Maven Wrapper startup batch script, version 3.3.2
#
# Optional ENV vars
# -----------------
# JAVA_HOME - location of a JDK home dir, required when download maven via java source
# MVNW_REPOURL - repo url base for downloading maven distribution
# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
# ----------------------------------------------------------------------------
set -euf
[ "${MVNW_VERBOSE-}" != debug ] || set -x
# OS specific support.
native_path() { printf %s\\n "$1"; }
case "$(uname)" in
CYGWIN* | MINGW*)
[ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
native_path() { cygpath --path --windows "$1"; }
;;
esac
# set JAVACMD and JAVACCMD
set_java_home() {
# For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
if [ -n "${JAVA_HOME-}" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACCMD="$JAVA_HOME/jre/sh/javac"
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACCMD="$JAVA_HOME/bin/javac"
if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
return 1
fi
fi
else
JAVACMD="$(
'set' +e
'unset' -f command 2>/dev/null
'command' -v java
)" || :
JAVACCMD="$(
'set' +e
'unset' -f command 2>/dev/null
'command' -v javac
)" || :
if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
return 1
fi
fi
}
# hash string like Java String::hashCode
hash_string() {
str="${1:-}" h=0
while [ -n "$str" ]; do
char="${str%"${str#?}"}"
h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
str="${str#?}"
done
printf %x\\n $h
}
verbose() { :; }
[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
die() {
printf %s\\n "$1" >&2
exit 1
}
trim() {
# MWRAPPER-139:
# Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
# Needed for removing poorly interpreted newline sequences when running in more
# exotic environments such as mingw bash on Windows.
printf "%s" "${1}" | tr -d '[:space:]'
}
# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
while IFS="=" read -r key value; do
case "${key-}" in
distributionUrl) distributionUrl=$(trim "${value-}") ;;
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
esac
done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
case "${distributionUrl##*/}" in
maven-mvnd-*bin.*)
MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
*AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
:Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
:Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
:Linux*x86_64*) distributionPlatform=linux-amd64 ;;
*)
echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
distributionPlatform=linux-amd64
;;
esac
distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
;;
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
esac
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
distributionUrlName="${distributionUrl##*/}"
distributionUrlNameMain="${distributionUrlName%.*}"
distributionUrlNameMain="${distributionUrlNameMain%-bin}"
MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
exec_maven() {
unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
}
if [ -d "$MAVEN_HOME" ]; then
verbose "found existing MAVEN_HOME at $MAVEN_HOME"
exec_maven "$@"
fi
case "${distributionUrl-}" in
*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
esac
# prepare tmp dir
if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
trap clean HUP INT TERM EXIT
else
die "cannot create temp dir"
fi
mkdir -p -- "${MAVEN_HOME%/*}"
# Download and Install Apache Maven
verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
verbose "Downloading from: $distributionUrl"
verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
# select .zip or .tar.gz
if ! command -v unzip >/dev/null; then
distributionUrl="${distributionUrl%.zip}.tar.gz"
distributionUrlName="${distributionUrl##*/}"
fi
# verbose opt
__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
# normalize http auth
case "${MVNW_PASSWORD:+has-password}" in
'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
esac
if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
verbose "Found wget ... using wget"
wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
verbose "Found curl ... using curl"
curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
elif set_java_home; then
verbose "Falling back to use Java to download"
javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
cat >"$javaSource" <<-END
public class Downloader extends java.net.Authenticator
{
protected java.net.PasswordAuthentication getPasswordAuthentication()
{
return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
}
public static void main( String[] args ) throws Exception
{
setDefault( new Downloader() );
java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
}
}
END
# For Cygwin/MinGW, switch paths to Windows format before running javac and java
verbose " - Compiling Downloader.java ..."
"$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
verbose " - Running Downloader.java ..."
"$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
fi
# If specified, validate the SHA-256 sum of the Maven distribution zip file
if [ -n "${distributionSha256Sum-}" ]; then
distributionSha256Result=false
if [ "$MVN_CMD" = mvnd.sh ]; then
echo "Checksum validation is not supported for maven-mvnd." >&2
echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
exit 1
elif command -v sha256sum >/dev/null; then
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
distributionSha256Result=true
fi
elif command -v shasum >/dev/null; then
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
distributionSha256Result=true
fi
else
echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
exit 1
fi
if [ $distributionSha256Result = false ]; then
echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
exit 1
fi
fi
# unzip and move
if command -v unzip >/dev/null; then
unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
else
tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
fi
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
clean || :
exec_maven "$@"

149
ruoyi-modules/dimp-wy-web/mvnw.cmd vendored Normal file
View File

@@ -0,0 +1,149 @@
<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.3.2
@REM
@REM Optional ENV vars
@REM MVNW_REPOURL - repo url base for downloading maven distribution
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
@REM ----------------------------------------------------------------------------
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
@SET __MVNW_CMD__=
@SET __MVNW_ERROR__=
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
@SET PSModulePath=
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
)
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
@SET __MVNW_PSMODULEP_SAVE=
@SET __MVNW_ARG0_NAME__=
@SET MVNW_USERNAME=
@SET MVNW_PASSWORD=
@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
@echo Cannot start maven from wrapper >&2 && exit /b 1
@GOTO :EOF
: end batch / begin powershell #>
$ErrorActionPreference = "Stop"
if ($env:MVNW_VERBOSE -eq "true") {
$VerbosePreference = "Continue"
}
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
if (!$distributionUrl) {
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
}
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
"maven-mvnd-*" {
$USE_MVND = $true
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
$MVN_CMD = "mvnd.cmd"
break
}
default {
$USE_MVND = $false
$MVN_CMD = $script -replace '^mvnw','mvn'
break
}
}
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
if ($env:MVNW_REPOURL) {
$MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
}
$distributionUrlName = $distributionUrl -replace '^.*/',''
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
if ($env:MAVEN_USER_HOME) {
$MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
}
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
exit $?
}
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
}
# prepare tmp dir
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
trap {
if ($TMP_DOWNLOAD_DIR.Exists) {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
}
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
# Download and Install Apache Maven
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
Write-Verbose "Downloading from: $distributionUrl"
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
$webclient = New-Object System.Net.WebClient
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
# If specified, validate the SHA-256 sum of the Maven distribution zip file
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
if ($distributionSha256Sum) {
if ($USE_MVND) {
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
}
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
}
}
# unzip and move
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
try {
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
} catch {
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
Write-Error "fail to move MAVEN_HOME"
}
} finally {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"

View File

@@ -0,0 +1,214 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>by.dimp</groupId>
<artifactId>dimp-wy</artifactId>
<version>1.0</version>
</parent>
<artifactId>dimp-wy-web</artifactId>
<version>1.0</version>
<name>dimp-modules-web</name>
<description>dimp-modules-web</description>
<properties>
<java.version>21</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.github.javen205</groupId>
<artifactId>IJPay-WxPay</artifactId>
<version>2.9.6</version>
</dependency>
<!-- EasyExcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
<!-- lombok 优雅编程 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 时间格式 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-nacos-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
</dependency>
<!-- mp分页 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
</dependency>
<dependency>
<groupId>by.dimp</groupId>
<artifactId>dimp-api-file</artifactId>
</dependency>
<dependency>
<groupId>by.dimp</groupId>
<artifactId>dimp-common-core</artifactId>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot3-starter</artifactId>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-redis-template</artifactId>
</dependency>
<!-- Sa-Token 整合 Fastjson2 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-fastjson2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- hutool工具类 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.37</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,19 @@
package by.dimp.web;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDubbo
@EnableDiscoveryClient
@EnableCaching
public class DimpModulesWebApplication {
public static void main(String[] args) {
SpringApplication.run(DimpModulesWebApplication.class, args);
}
}

View File

@@ -0,0 +1,26 @@
package by.dimp.web.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 所有路径
.allowedOrigins("*") // 允许所有源
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的方法
.allowedHeaders("*") // 允许所有头
.allowCredentials(false) // 是否允许凭证
.maxAge(3600); // 预检请求缓存时间
}
};
}
}

View File

@@ -0,0 +1,61 @@
package by.dimp.web.config;
import by.dimp.common.core.domain.ErrorType;
import by.dimp.common.core.domain.Result;
import by.dimp.common.core.exception.BizException;
import by.dimp.common.core.exception.ObjectExistException;
import by.dimp.common.core.exception.UserNotLoginException;
import cn.dev33.satoken.exception.NotLoginException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.List;
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 未登录或者授权失效
*/
@ExceptionHandler({UserNotLoginException.class, NotLoginException.class})
public Result<?> handleLoginException(Exception ex) {
return Result.fail(ErrorType.AUTH_TOKEN_NOT_EXISTS);
}
/**
* 对象已存在异常
*/
@ExceptionHandler(ObjectExistException.class)
public Result<?> handleException(ObjectExistException ex) {
return Result.fail(ErrorType.OBJECT_EXISTS, ex.getMessage());
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public Result<List<String>> handleValidationException(MethodArgumentNotValidException ex) {
List<String> errors = ex.getBindingResult()
.getFieldErrors()
.stream()
.map(error -> error.getField() + ": " + error.getDefaultMessage())
.toList();
return Result.fail(ErrorType.PARAM_NOT_VALID, errors);
}
/**
* 系统业务异常
*/
@ExceptionHandler(BizException.class)
public Result<?> handleException(BizException ex) {
return Result.fail(ErrorType.SYSTEM_ERROR, ex.getMessage());
}
/**
* 最后兜底的异常
*/
@ExceptionHandler(Exception.class)
public Result<?> handleException(Exception ex) {
return Result.fail(ErrorType.SYSTEM_ERROR, ex.getMessage());
}
}

View File

@@ -0,0 +1,40 @@
package by.dimp.web.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.apache.ibatis.reflection.MetaObject;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
@Configuration
@MapperScan("by.dimp.web.mapper")
public class MyBatisPlusConfig implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 如果配置多个插件, 切记分页最后添加
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
return interceptor;
}
}

View File

@@ -0,0 +1,14 @@
package by.dimp.web.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

View File

@@ -0,0 +1,19 @@
package by.dimp.web.config;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.stp.StpUtil;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。
registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin()))
.addPathPatterns("/**");
// .excludePathPatterns("/user/doLogin");
}
}

View File

@@ -0,0 +1,35 @@
package by.dimp.web.config;
import org.springframework.boot.web.embedded.tomcat.TomcatProtocolHandlerCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.AsyncTaskExecutor;
import org.springframework.core.task.support.TaskExecutorAdapter;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadFactory;
import static java.util.concurrent.Executors.newThreadPerTaskExecutor;
@Configuration
public class ThreadPoolConfig {
/**
* 使用@Async的时候可以用虚拟现成执行
*/
@Bean
public AsyncTaskExecutor asyncTaskExecutor(){
ThreadFactory factory = Thread.ofVirtual().name("async-", 1).factory();
ExecutorService executorService = newThreadPerTaskExecutor(factory);
return new TaskExecutorAdapter(executorService);
}
/**
* tomcat处理请求的时候用虚拟线程处理
*/
@Bean
public TomcatProtocolHandlerCustomizer<?> protocolHandlerVirtualThreadExecutorCustomizer() {
ThreadFactory factory = Thread.ofVirtual().name("http-", 1).factory();
ExecutorService executorService = newThreadPerTaskExecutor(factory);
return protocolHandler -> protocolHandler.setExecutor(executorService);
}
}

View File

@@ -0,0 +1,128 @@
package by.dimp.web.controller.E8.base;
import by.dimp.common.core.domain.ErrorType;
import by.dimp.common.core.domain.Result;
import by.dimp.web.model.entity.E8.AreaInfo;
import by.dimp.web.service.E8Service.base.AreaService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author zcxlsm
* @title: AreaController
* @date 2025/5/9 17:42
*/
@Slf4j
@RestController
@RequestMapping("/e8/areaService")
public class AreaController {
@Resource
private AreaService areaService;
// 所有接口入参暂定QueryDto 后续根据业务调整
/**
* 查询区域信息
*
* @param dto 传参
* @return
*/
@PostMapping("/getAreaInfo")
public Result getAreaInfo(QueryDto dto) {
log.info("E8接口 查询区域信息 入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
AreaInfo areaInfo = areaService.getAreaInfo(dto);
if (areaInfo == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(areaInfo);
}
}
/**
* 获取区域列表
*
* @param dto 传参
* @return
*/
@PostMapping("/getAreaList")
public Result getAreaList(QueryDto dto) {
log.info("E8接口 获取区域列表 入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
IPage<AreaInfo> page = areaService.getAreaList(dto);
if (page == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(page);
}
}
/**
* 新增区域
*
* @param dto 传参
* @return
*/
@PostMapping("/addArea")
public Result addArea(QueryDto dto) {
log.info("E8接口 新增区域 入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = areaService.addArea(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 修改区域
*
* @param dto 传参
* @return
*/
@PostMapping("/updateArea")
public Result updateArea(QueryDto dto) {
log.info("E8接口 修改区域 入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = areaService.updateArea(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 删除区域
*
* @param dto 传参
* @return
*/
@PostMapping("/deleteArea")
public Result deleteArea(QueryDto dto) {
log.info("E8接口 删除区域 入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = areaService.deleteArea(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
}

View File

@@ -0,0 +1,111 @@
package by.dimp.web.controller.E8.base;
import by.dimp.common.core.domain.ErrorType;
import by.dimp.common.core.domain.Result;
import by.dimp.web.model.entity.E8.AuthGroupInfo;
import by.dimp.web.service.E8Service.base.AuthGroupService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author zcxlsm
* @title: AuthGroupController
* @date 2025/5/10 17:04
*/
@Slf4j
@RestController
@RequestMapping("/e8/authGroupService")
public class AuthGroupController {
@Resource
private AuthGroupService authGroupService;
// 所有接口入参暂定QueryDto 后续根据业务调整
/**
* 权限组分页查询
*
* @param dto
* @return ApiResp
* @implNote 通过接口查询权限组列表信息,支持按权限组名称查询门禁权限和梯控权限
*/
@PostMapping("/getPageList")
public Result getPageList(QueryDto dto) {
log.info("E8接口 权限组分页查询 入参={}", dto);
if (ObjectUtils.isEmpty(dto)){
return Result.fail(ErrorType.PARAMM_NULL);
}
IPage<AuthGroupInfo> pageInfo = authGroupService.getPageList(dto);
if (pageInfo == null){
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}else {
return Result.success(pageInfo);
}
}
/**
* 添加权限组
*
* @param dto
* @return ApiResp
* @implNote 通过接口新增权限组(门+电梯权限),仅支持单个新增
*/
@PostMapping("/addAuthGroup")
public Result addAuthGroup(QueryDto dto) {
log.info("E8接口 添加权限组 入参={}", dto);
if (ObjectUtils.isEmpty(dto)){
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = authGroupService.addAuthGroup(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 修改权限组
*
* @param dto
* @return ApiResp
* @implNote 通过接口修改权限组的门/电梯权限
*/
@PostMapping("/updateAuthGroup")
public Result updateAuthGroup(QueryDto dto) {
log.info("E8接口 修改权限组 入参={}", dto);
if (ObjectUtils.isEmpty(dto)){
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = authGroupService.updateAuthGroup(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 根据主键ID删除权限组
*
* @param dto
* @return ApiResp
* @implNote 通过接口删除权限组信息
*/
@PostMapping("/deleteAuthGroup")
public Result deleteAuthGroup(QueryDto dto) {
log.info("E8接口 根据主键ID删除权限组 入参={}", dto);
if (ObjectUtils.isEmpty(dto)){
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = authGroupService.deleteAuthGroup(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
}

View File

@@ -0,0 +1,130 @@
package by.dimp.web.controller.E8.base;
import by.dimp.common.core.domain.ErrorType;
import by.dimp.common.core.domain.Result;
import by.dimp.web.model.entity.E8.CustomerInfo;
import by.dimp.web.service.E8Service.base.CustomerService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author zcxlsm
* @title: CustomerController
* @date 2025/5/9 15:49
*/
@Slf4j
@RestController
@RequestMapping("/e8/customerService")
public class CustomerController {
@Resource
private CustomerService customerService;
// 所有接口入参暂定QueryDto 后续根据业务调整
/**
* 查询单个人员信息
*
* @param dto 传参
* @return ApiResp
*/
@PostMapping("/selectCustomer")
public Result<CustomerInfo> selectCustomer(@RequestBody QueryDto dto) {
log.info("E8接口查询单个人员信息入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
CustomerInfo customerInfo = customerService.selectCustomer(dto);
if (customerInfo == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(customerInfo);
}
}
/**
* 人员信息分页查询
*
* @param dto 传参
* @return ApiResp
*/
@PostMapping("/selectCustomerList")
public Result<IPage<CustomerInfo>> selectCustomerList(@RequestBody QueryDto dto) {
log.info("E8接口人员信息分页查询入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
IPage<CustomerInfo> page = customerService.selectCustomerList(dto);
if (page == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(page);
}
}
/**
* 新增人员信息
*
* @param dto 传参
* @return ApiResp
*/
@PostMapping("/addCustomer")
public Result<Boolean> addCustomer(@RequestBody QueryDto dto) {
log.info("E8接口新增人员信息入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = customerService.addCustomer(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 人员信息修改
*
* @param dto 传参
* @return ApiResp
*/
@PostMapping("/updateCustomer")
public Result<Boolean> updateCustomer(@RequestBody QueryDto dto) {
log.info("E8接口人员信息修改入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = customerService.updateCustomer(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 删除人员信息
*
* @param dto 传参
* @return ApiResp
*/
@PostMapping("/deleteCustomer")
public Result<Boolean> deleteCustomer(@RequestBody QueryDto dto) {
log.info("E8接口删除人员信息入参={}", dto.getQueryDto());
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = customerService.deleteCustomer(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
}

View File

@@ -0,0 +1,132 @@
package by.dimp.web.controller.E8.base;
import by.dimp.common.core.domain.ErrorType;
import by.dimp.common.core.domain.Result;
import by.dimp.web.model.entity.E8.DoorDeviceInfo;
import by.dimp.web.service.E8Service.base.DoorDeviceService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author zcxlsm
* @title: DoorDeviceController
* @date 2025/5/10 17:13
*/
@Slf4j
@RestController
@RequestMapping("/e8/doorDeviceService")
public class DoorDeviceController {
@Resource
private DoorDeviceService doorDeviceService;
// 所有接口入参暂定QueryDto 后续根据业务调整
/**
* 查询门禁信息
*
* @param dto 入参
* @return Result
*/
@PostMapping("/selectDoorDevice")
public Result selectDoorDevice(@RequestBody QueryDto dto) {
log.info("E8接口 查询门禁信息 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
DoorDeviceInfo doorDeviceInfo = doorDeviceService.selectDoorDevice(dto);
if (doorDeviceInfo == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(doorDeviceInfo);
}
}
/**
* 门禁信息分页查询
*
* @param dto 入参
* @return Result
*/
@PostMapping("/selectDoorDeviceList")
public Result selectDoorDeviceList(@RequestBody QueryDto dto) {
log.info("E8接口 门禁信息分页查询 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
IPage<DoorDeviceInfo> doorDeviceInfoIPage = doorDeviceService.selectDoorDeviceList(dto);
if (doorDeviceInfoIPage == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(doorDeviceInfoIPage);
}
}
/**
* 新增门禁信息
*
* @param dto 入参
* @return Boolean
*/
@PostMapping("/addDoorDevice")
public Result addDoorDevice(@RequestBody QueryDto dto) {
log.info("E8接口 新增门禁信息 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = doorDeviceService.addDoorDevice(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 门禁信息修改
*
* @param dto 入参
* @return Boolean
*/
@PostMapping("/updateDoorDevice")
public Result updateDoorDevice(@RequestBody QueryDto dto) {
log.info("E8接口 门禁信息修改 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = doorDeviceService.updateDoorDevice(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 删除门禁信息
*
* @param dto 入参
* @return Boolean
*/
@PostMapping("/deleteDoorDevice")
public Result deleteDoorDevice(@RequestBody QueryDto dto) {
log.info("E8接口 删除门禁信息 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = doorDeviceService.deleteDoorDevice(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
}

View File

@@ -0,0 +1,126 @@
package by.dimp.web.controller.E8.base;
import by.dimp.common.core.domain.ErrorType;
import by.dimp.common.core.domain.Result;
import by.dimp.web.model.entity.E8.LiftInfo;
import by.dimp.web.service.E8Service.base.LiftService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author zcxlsm
* @title: LiftController
* @date 2025/5/10 17:56
*/
@Slf4j
@RestController
@RequestMapping("/e8/liftService")
public class LiftController {
@Resource
private LiftService liftService;
// 所有接口入参暂定QueryDto 后续根据业务调整
/**
* 电梯信息分页查询
*
* @param dto
* @return
*/
@PostMapping("/getPageList")
public Result getPageList(QueryDto dto) {
log.info("E8接口 电梯信息分页查询 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
IPage<LiftInfo> page = liftService.getPageList(dto);
if (page == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(page);
}
}
/**
* 查询电梯楼层
*
* @param dto
* @return
*/
@PostMapping("/getLiftFloor")
public Result getLiftFloor(QueryDto dto) {
log.info("E8接口 查询电梯楼层 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
LiftInfo liftInfo = liftService.getLiftFloor(dto);
if (liftInfo == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(liftInfo);
}
}
/**
* 添加电梯
*
* @param dto
* @return
*/
@PostMapping("/addLift")
public Result addLift(QueryDto dto) {
log.info("E8接口 添加电梯 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = liftService.addLift(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 修改电梯信息
*
* @param dto
* @return
*/
@PostMapping("/updateLift")
public Result updateLift(QueryDto dto) {
log.info("E8接口 修改电梯信息 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = liftService.updateLift(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 删除电梯信息
*
* @param dto
* @return
*/
@PostMapping("/deleteLift")
public Result deleteLift(QueryDto dto) {
log.info("E8接口 删除电梯信息 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = liftService.deleteLift(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
}

View File

@@ -0,0 +1,88 @@
package by.dimp.web.controller.E8.service;
import by.dimp.common.core.domain.ErrorType;
import by.dimp.common.core.domain.Result;
import by.dimp.web.model.entity.E8.AccessRecordInfo;
import by.dimp.web.model.domain.E8.general.QueryDto;
import by.dimp.web.service.E8Service.service.EntranceGuardService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author zcxlsm
* @title: EntranceGuardController
* @date 2025/5/11 20:35
*/
@Slf4j
@Resource
@RequestMapping("/e8/entranceGuard")
public class EntranceGuardController {
@Resource
private EntranceGuardService entranceGuardService;
// 所有接口入参暂定QueryDto 后续根据业务调整
/**
* 远程开门
*
* @param dto
* @return
*/
@PostMapping("/remoteOpenDoor")
public Result remoteOpenDoor(QueryDto dto) {
log.info("E8接口 远程开门 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = entranceGuardService.remoteOpenDoor(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
/**
* 获取通行记录分页列表
*
* @param dto
* @return
*/
@PostMapping("/getPageAccessRecordList")
public Result getPageAccessRecordList(QueryDto dto) {
log.info("E8接口 获取通行记录分页列表 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
IPage<AccessRecordInfo> page = entranceGuardService.getPageAccessRecordList(dto);
if (page == null) {
return Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
} else {
return Result.success(page);
}
}
/**
* 人员授权
*
* @param dto
* @return
*/
@PostMapping("/addAccessControl")
public Result addAccessControl(QueryDto dto) {
log.info("E8接口 人员授权 入参={}", dto);
if (ObjectUtils.isEmpty(dto)) {
return Result.fail(ErrorType.PARAMM_NULL);
}
Boolean flag = entranceGuardService.addAccessControl(dto);
return flag ? Result.success(true) : Result.fail(ErrorType.CALL_THIRD_SERVICE_EXCEPTION);
}
}

View File

@@ -0,0 +1,42 @@
package by.dimp.web.controller.admin;
import by.dimp.common.core.domain.Result;
import by.dimp.web.model.domain.attendanceStatistics.req.AttendanceStatisticsQueryReq;
import by.dimp.web.model.domain.attendanceStatistics.res.AttendanceStatisticsRes;
import by.dimp.web.service.admin.ITbAttendanceStatisticsService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/report")
@Slf4j
public class TbAttendanceStatisticsController {
@Resource
private ITbAttendanceStatisticsService attendanceStatisticsService;
/**
* 分页查询考勤统计数据
*/
@GetMapping("/pageQuery")
public Result<AttendanceStatisticsRes> list(@RequestBody AttendanceStatisticsQueryReq query) {
log.info("分页查询考勤统计数据,入参:{}", query);
AttendanceStatisticsRes res = attendanceStatisticsService.pageQuery(query);
return Result.success(res);
}
/**
* 数据分析与统计报表的导出功能
*/
@GetMapping("/export")
public Result<Boolean> export() {
int result = attendanceStatisticsService.export();
return Result.success(result > 0);
}
}

View File

@@ -0,0 +1,79 @@
package by.dimp.web.controller.admin;
import by.dimp.common.core.base.BaseController;
import by.dimp.common.core.domain.Result;
import by.dimp.common.core.domain.UserInfo;
import by.dimp.web.model.domain.ceremonialServe.req.CeremonialServePageQueryReq;
import by.dimp.web.model.domain.ceremonialServe.req.CeremonialServeReq;
import by.dimp.web.model.domain.ceremonialServe.res.CeremonialServeRes;
import by.dimp.web.service.admin.ITbCeremonialServeService;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
/**
* 会议礼仪服务预订
*/
@RestController
@RequestMapping("/ceremonialService")
@Slf4j
public class TbCeremonialServeController extends BaseController {
@Resource
private ITbCeremonialServeService ceremonialService;
/**
* 分页查询礼仪服务的预订信息
* @param pageQueryReq
* @return
*/
@GetMapping("/pageQuery")
public Result<IPage<CeremonialServeRes>> getInformation(CeremonialServePageQueryReq pageQueryReq) {
log.info("查询礼仪服务基本信息,传入的查询条件为:{}", JSONObject.toJSONString(pageQueryReq));
IPage<CeremonialServeRes> page = ceremonialService.pageQuery(pageQueryReq);
return Result.success(page);
}
/**
* 新增礼仪服务的预订
* @param ceremonialServeReq
* @return
*/
@PostMapping("/addCeremonialServe")
public Result<Boolean> addCeremonialServe(@RequestBody CeremonialServeReq ceremonialServeReq) {
log.debug("新增礼仪服务的预订,入参{}", JSONObject.toJSONString(ceremonialService));
UserInfo userInfo = getUserInfo();
ceremonialServeReq.setCreateById(userInfo.getId());
ceremonialServeReq.setCreateBy(userInfo.getUserName());
ceremonialServeReq.setCreateTime(LocalDateTime.now());
int result = ceremonialService.addCeremonialServe(ceremonialServeReq);
return Result.success(result > 0);
}
/**
* 根据id删除礼仪服务的预订
* @param id
* @return
*/
@DeleteMapping("/deleteCeremonialServe/{id}")
public Result<Boolean> deleteCeremonialServe(@PathVariable Integer id) {
log.debug("删除礼仪服务的预订,入参{}", id);
int result = ceremonialService.deleteCeremonialServe(id);
return Result.success(result > 0);
}
/**
* 服务确定
*/
@PostMapping("/confirm")
public Result<Boolean> confirm(@RequestBody CeremonialServeReq ceremonialServeReq){
log.debug("服务确定,入参{}",ceremonialServeReq);
int result = ceremonialService.confirm(ceremonialServeReq);
return Result.success(result > 0);
}
}

View File

@@ -0,0 +1,104 @@
package by.dimp.web.controller.admin;
import by.dimp.common.core.base.BaseController;
import by.dimp.common.core.domain.Result;
import by.dimp.common.core.domain.UserInfo;
import by.dimp.web.model.domain.cleaningIndicators.req.SaveAndModifyCleaningIndicators;
import by.dimp.web.model.domain.cleaningIndicators.req.QueryCleaningIndicatorsReq;
import by.dimp.web.model.domain.cleaningIndicators.resp.TbCleaningIndicatorsResp;
import by.dimp.web.service.admin.ITbCleaningIndicatorsService;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* 前端控制器
* </p>
*
* @author lxj
* @since 2025-04-28
*/
@RestController
@RequestMapping("/tbCleaningIndicators")
@Slf4j
public class TbCleaningIndicatorsController extends BaseController {
@Resource
private ITbCleaningIndicatorsService iTbCleaningIndicatorsService;
/**
* 新增保洁质量
*
* @param req 新增保洁质量对象
* @return 添加成功返回true
*/
@PostMapping("/addCleaningIndicators")
public Result<Boolean> addCleaningIndicators(@RequestBody SaveAndModifyCleaningIndicators req) {
log.info("新增保洁标准,入参={}", JSONObject.toJSONString(req));
UserInfo userInfo = getUserInfo();
req.setCreateEmpId(userInfo.getId() + "");
req.setCreateEmpName(userInfo.getUserName());
Boolean result = iTbCleaningIndicatorsService.addCleaningIndicators(req);
return Result.success(result);
}
/**
* 修改保洁质量信息
*
* @param req 保洁质量参数
* @return 更新成功返回true
*/
@PostMapping("/modifyCleaningIndicators")
public Result<Boolean> modifyCleaningIndicators(@RequestBody SaveAndModifyCleaningIndicators req) {
log.info("修改保洁标准,入参={}", JSONObject.toJSONString(req));
UserInfo userInfo = getUserInfo();
req.setModifyEmpId(userInfo.getId() + "");
req.setModifyEmpName(userInfo.getUserName());
Boolean result = iTbCleaningIndicatorsService.modifyCleaningIndicators(req);
return Result.success(result);
}
/**
* 删除保洁质量
*
* @param req 保洁质量参数
* @return 删除成功返回true
*/
@PostMapping("/deleteCleaningIndicators")
public Result<Boolean> deleteCleaningIndicators(@RequestBody SaveAndModifyCleaningIndicators req) {
log.info("删除保洁标准,入参={}", JSONObject.toJSONString(req));
UserInfo userInfo = getUserInfo();
req.setModifyEmpId(userInfo.getId() + "");
req.setModifyEmpName(userInfo.getUserName());
Boolean result = iTbCleaningIndicatorsService.deleteCleaningIndicators(req.getId());
return Result.success(result);
}
/**
* 分页查询保洁质量
*
* @param req 查询参数
* @return 返回保洁质量列表
*/
@PostMapping("/queryCleaningIndicators")
public Result<IPage<TbCleaningIndicatorsResp>> queryCleaningIndicators(@RequestBody QueryCleaningIndicatorsReq req) {
log.info("查询用户,入参={}", JSONObject.toJSONString(req));
IPage<TbCleaningIndicatorsResp> result = iTbCleaningIndicatorsService.queryCleaningIndicatorsOpForPage(req);
return Result.success(result);
}
/**
* 根据id查询保洁质量
*
* @param req 保洁质量请求参数
* @return 返回保洁质量信息
*/
@PostMapping("/queryCleaningIndicatorsById")
public Result<TbCleaningIndicatorsResp> queryCleaningQIndicatorsById(@RequestBody QueryCleaningIndicatorsReq req) {
log.info("根据id查询保洁标准入参={}", req);
TbCleaningIndicatorsResp result = iTbCleaningIndicatorsService.queryCleaningIndicatorsById(req.getId());
return Result.success(result);
}
}

View File

@@ -0,0 +1,103 @@
package by.dimp.web.controller.admin;
import by.dimp.common.core.base.BaseController;
import by.dimp.common.core.domain.Result;
import by.dimp.common.core.domain.UserInfo;
import by.dimp.web.model.entity.TbConference;
import by.dimp.web.model.domain.conference.req.ConferencePageQueryReq;
import by.dimp.web.model.domain.conference.req.ConferenceReq;
import by.dimp.web.model.domain.conference.resp.ConferenceRes;
import by.dimp.web.service.admin.ITbConferenceService;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
@RestController
@RequestMapping("/conference/basicInformation")
@Slf4j
/**
* 会议室基本信息
*/
public class TbConferenceController extends BaseController {
@Autowired
private ITbConferenceService conferenceService;
/**
* 分页查询会议室基本信息
*
* @param queryDTO
* @return
*/
@GetMapping("/pageQuery")
public Result<IPage<ConferenceRes>> getInformation(ConferencePageQueryReq queryDTO) {
log.info("查询会议室基本信息,传入的查询条件为:{}", JSONObject.toJSONString(queryDTO));
IPage<ConferenceRes> page = conferenceService.pageQuery(queryDTO);
return Result.success(page);
}
/**
* 新增会议室基本信息
*
* @param conferenceReq
* @return
*/
@PostMapping("/addConference")
public Result<Boolean> addInformation(@RequestBody ConferenceReq conferenceReq) {
log.debug("新增会议室基本信息,传入的会议室信息为:{}", JSONObject.toJSONString(conferenceReq));
UserInfo userInfo = getUserInfo();
conferenceReq.setCreateBy(userInfo.getUserName());
conferenceReq.setCreateById(userInfo.getId());
int result = conferenceService.addInformation(conferenceReq);
return Result.success(result > 0);
}
/**
* 根据ID回显会议室基本信息
*
* @param id
* @return
*/
@GetMapping("/getById/{id}")
public Result<TbConference> getInformation(@PathVariable(value = "id") Integer id) {
log.debug("根据ID回显数据传入的ID为:{}", JSONObject.toJSONString(id));
TbConference conference = conferenceService.getInformation(id);
return Result.success(conference);
}
/**
* 根据ID修改会议室基本信息
*
* @param conferenceReq
* @return
*/
@PutMapping("/updateById")
public Result<Boolean> updateInformation(@RequestBody ConferenceReq conferenceReq) {
UserInfo userInfo = getUserInfo();
conferenceReq.setUpdateById(userInfo.getId());
conferenceReq.setUpdateBy(userInfo.getUserName());
conferenceReq.setUpdateTime(LocalDateTime.now());
log.debug("修改会议室基本信息,传入的会议室信息为:{}", JSONObject.toJSONString(conferenceReq));
int result = conferenceService.updateInformation(conferenceReq);
return Result.success(result > 0);
}
/**
* 删除会议室基本信息
*
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
public Result<Boolean> deleteInformation(@PathVariable(value = "id") Integer id) {
log.debug("删除会议室的基本信息,传入的ID为{}", JSONObject.toJSONString(id));
Boolean result = conferenceService.deleteInformation(id);
//todo 接口不能正确的响应,需要修改
return Result.success(result);
}
}

View File

@@ -0,0 +1,8 @@
package by.dimp.web.controller.admin;
/**
* 参会人员出入管理
*
*/
public class TbPersonnelAccessController {
}

View File

@@ -0,0 +1,21 @@
package by.dimp.web.controller.admin;
import by.dimp.common.core.domain.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/report")
@Slf4j
public class TbReportController {
/**
* 数据分析与统计报表的读取接口
*/
@GetMapping("/read")
public Result read() {
return null;
}
}

View File

@@ -0,0 +1,137 @@
package by.dimp.web.controller.admin;
import by.dimp.common.core.domain.Result;
import by.dimp.common.core.domain.UserInfo;
import by.dimp.web.model.domain.roomBooking.req.RoomBookingPageQueryReq;
import by.dimp.web.model.domain.roomBooking.req.RoomBookingReq;
import by.dimp.web.model.domain.roomBooking.resp.RoomBookingRes;
import by.dimp.web.service.admin.ITbRoomBookingService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import by.dimp.common.core.base.BaseController;
import java.time.LocalDateTime;
@RestController
@RequestMapping("/roomBooking")
@Slf4j
/**
* 会议室预订
*/
public class TbRoomBookingController extends BaseController{
@Autowired
private ITbRoomBookingService roomBookingService;
/**
* 未审核状态为0
*/
private static final Integer NOTREVIEWD = 0;
/**
* 分页查询预订记录
*
* @param pageQueryReq
* @return
*/
@GetMapping("/queryForPage")
public Result<IPage<RoomBookingRes>> queryForPage(RoomBookingPageQueryReq pageQueryReq) {
log.info("查询会议室预订记录,入参:{}", pageQueryReq);
IPage<RoomBookingRes> page = roomBookingService.queryForPage(pageQueryReq);
return Result.success(page);
}
/**
* 新增预订记录
*
* @param roomBookingReq
* @return
*/
@PostMapping("/addCeremonial")
public Result<Boolean> addCeremonial(@RequestBody RoomBookingReq roomBookingReq) {
log.info("新增会议室预订记录,入参:{}", roomBookingReq);
UserInfo userInfo = getUserInfo();
//会议室创建人id
roomBookingReq.setCreateById(userInfo.getId());
roomBookingReq.setCreateBy(userInfo.getUserName());
roomBookingReq.setCreateTime(LocalDateTime.now());
//默认审核状态为未审核0
roomBookingReq.setReviewStatus(NOTREVIEWD);
int result = roomBookingService.addCeremonial(roomBookingReq);
return Result.success(result > 0);
}
/**
* 审核会议室预订
*/
@PostMapping("/reviewCeremonial")
public Result<Boolean> reviewCeremonial(@RequestBody RoomBookingReq roomBookingReq) {
log.info("审核会议室预订记录,入参:{}", roomBookingReq);
UserInfo userInfo = getUserInfo();
//审核人id
roomBookingReq.setApprover(userInfo.getUserName());
roomBookingReq.setApproverTime(LocalDateTime.now());
roomBookingReq.setCreateById(userInfo.getId());
roomBookingReq.setCreateBy(userInfo.getUserName());
roomBookingReq.setCreateTime(LocalDateTime.now());
int result = roomBookingService.reviewCeremonial(roomBookingReq);
return Result.success(result > 0);
}
/**
* 根据id查询会议室预订记录详情
*
* @param id
* @return
*/
@GetMapping("/queryById/{id}")
public Result<RoomBookingRes> queryById(@PathVariable Integer id) {
log.info("查询会议室预订记录详情,入参:{}", id);
RoomBookingRes roomBookingRes = roomBookingService.queryById(id);
return Result.success(roomBookingRes);
}
/**
* 删除会议室预订记录
*
* @param id
* @return
*/
@PostMapping("/deleteCeremonial/{id}")
public Result<Boolean> deleteCeremonial(@PathVariable Integer id) {
log.info("删除会议室预订记录,入参:{}", id);
Boolean result = roomBookingService.deleteById(id);
return Result.success(result);
}
/**
* 修改会议室预订记录
*/
@PutMapping("/updateCeremonialById")
public Result<Boolean> updateCeremonialById(@RequestBody RoomBookingReq roomBookingReq) {
log.info("修改会议室预订记录,入参:{}", roomBookingReq);
UserInfo userInfo = getUserInfo();
roomBookingReq.setUpdateById(userInfo.getId());
roomBookingReq.setUpdateBy(userInfo.getUserName());
roomBookingReq.setUpdateTime(LocalDateTime.now());
int result = roomBookingService.updateCeremonialById(roomBookingReq);
return Result.success(result > 0);
}
/**
* 新增会议预定结束后的评价
*/
@PostMapping("/addComment")
public Result<Boolean> addComment(@RequestBody RoomBookingReq roomBookingReq) {
log.debug("新增会议室预订后的评价{}", roomBookingReq);
int result = roomBookingService.addComment(roomBookingReq);
return Result.success(result > 0);
}
}

View File

@@ -0,0 +1,54 @@
package by.dimp.web.controller.admin;
import by.dimp.common.core.base.BaseController;
import by.dimp.common.core.domain.Result;
import by.dimp.common.core.domain.UserInfo;
import by.dimp.web.model.domain.serviceClassification.req.ServiceClassificationReq;
import by.dimp.web.model.domain.serviceClassification.req.TbServiceClassificationPageQuery;
import by.dimp.web.model.entity.TbServiceClassification;
import by.dimp.web.service.admin.ITbServiceClassificationService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
@RestController
@RequestMapping("/serviceClassification")
@Slf4j
/**
* 服务分类管理
*/
public class TbServiceClassificationController extends BaseController {
@Autowired
private ITbServiceClassificationService tbServiceClassificationService;
/**
* 分页查询所有分类
* @param pageQuery
* @return
*/
@GetMapping("/queryForPage")
public Result<IPage<TbServiceClassification>> queryForPage(TbServiceClassificationPageQuery pageQuery) {
log.info("查询服务分类分页数据,入参: {}", pageQuery);
IPage<TbServiceClassification> page = tbServiceClassificationService.queryForPage(pageQuery);
return Result.success(page);
}
@PostMapping("/addServiceClassification")
public Result<Boolean> addServiceClassification(@RequestBody ServiceClassificationReq serviceClassificationReq) {
log.info("新增服务分类,入参: {}", serviceClassificationReq);
UserInfo userInfo = getUserInfo();
serviceClassificationReq.setCreateById(userInfo.getId());
serviceClassificationReq.setCreateBy(userInfo.getUserName());
serviceClassificationReq.setCreateTime(LocalDateTime.now());
int result = tbServiceClassificationService.addServiceClassification(serviceClassificationReq);
return Result.success(result > 0);
}
}

View File

@@ -0,0 +1,99 @@
package by.dimp.web.controller.admin;
import by.dimp.common.core.base.BaseController;
import by.dimp.common.core.domain.Result;
import by.dimp.common.core.domain.UserInfo;
import by.dimp.web.model.domain.visitorManagement.req.VisitorManagementReq;
import by.dimp.web.model.domain.visitorManagement.req.VistorManagementPageQuery;
import by.dimp.web.model.entity.TbVisitorManagement;
import by.dimp.web.service.admin.ITbVisitorInvitationsService;
import by.dimp.web.service.admin.impl.TbVisitorInvitationsServiceImpl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
/**
* 访客邀约管理
*/
@RestController
@RequestMapping("/admin/roomBooking")
@Slf4j
public class TbVisitorInvitationsController extends BaseController {
@Resource
private ITbVisitorInvitationsService tbVisitorManagementService;
/**
* 分页查询访客管理列表
* @param pageQuery
* @return
* Visitor
*/
@GetMapping("/queryForInviting")
public Result<IPage<TbVisitorManagement>> queryForPage(VistorManagementPageQuery pageQuery) {
log.info("查询访客邀约列表,入参: {}", pageQuery);
IPage<TbVisitorManagement> page = tbVisitorManagementService.queryForPage(pageQuery);
return Result.success(page);
}
/**
* 分页查询待审核访客列表
* @param pageQuery
* @return
*/
@GetMapping("/queryForWaiting")
public Result<IPage<TbVisitorManagement>> queryForWaitingPage(VistorManagementPageQuery pageQuery) {
log.info("查询访客管理列表,入参: {}", pageQuery);
IPage<TbVisitorManagement> page = tbVisitorManagementService.queryForWaitingPage(pageQuery);
return Result.success(page);
}
/**
* 新增邀约访客
* @param visitorManagementReq
* @return
*/
@PostMapping("/addVisitor")
public Result<Boolean> addVisitor(@RequestBody VisitorManagementReq visitorManagementReq) {
log.info("新增访客,入参: {}", visitorManagementReq);
UserInfo userInfo = getUserInfo();
visitorManagementReq.setCreateTime(LocalDateTime.now());
visitorManagementReq.setCreateById(userInfo.getId());
visitorManagementReq.setCreateBy(userInfo.getUserName());
int result = tbVisitorManagementService.addVisitor(visitorManagementReq);
return Result.success(result > 0);
}
/**
* 查看访客邀约详情
*/
@GetMapping("/{id}")
public Result<TbVisitorManagement> getVisitor(@PathVariable("id") Integer id) {
log.info("查看访客详情,入参: {}", id);
TbVisitorManagement visitor = tbVisitorManagementService.getVisitorById(id);
return Result.success(visitor);
}
/**
* 审核邀约访客
* @param visitorManagementReq
* @return
*/
@PutMapping("/auditVisitor")
public Result<Boolean> auditVisitor(@RequestBody VisitorManagementReq visitorManagementReq) {
log.info("审核访客,入参: {}", visitorManagementReq);
UserInfo userInfo = getUserInfo();
visitorManagementReq.setUpdateTime(LocalDateTime.now());
visitorManagementReq.setUpdateById(userInfo.getId());
visitorManagementReq.setUpdateBy(userInfo.getUserName());
int result = tbVisitorManagementService.auditVisitor(visitorManagementReq);
return Result.success(result > 0);
}
}

View File

@@ -0,0 +1,32 @@
package by.dimp.web.controller.admin;
import by.dimp.web.service.uniview.model.AlarmReportData;
import by.dimp.web.service.uniview.model.UniViewResult;
import by.dimp.web.service.uniview.service.VideoAlarmService;
import com.alibaba.fastjson2.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequiredArgsConstructor
public class VideoAlarmController {
@Autowired
private VideoAlarmService videoAlarmService;
@PostMapping("/custom/router")
public UniViewResult<?> alarm(@RequestBody String data) {
// log.info("收到宇视告警数据:{}", data);
AlarmReportData alarmReportData = JSONObject.parseObject(data, AlarmReportData.class);
videoAlarmService.handleAlarmData(alarmReportData);
return UniViewResult.success(null);
}
}

View File

@@ -0,0 +1,269 @@
//package by.dimp.web.controller;
//
///**
// * @Author: Scoot
// * @Date: 2023/3/16 15:52
// * @Description: 微信支付控制器
// */
//
//import cn.hutool.core.date.DatePattern;
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.core.io.file.FileWriter;
//import cn.hutool.core.util.StrUtil;
//import cn.hutool.http.ContentType;
//import cn.hutool.http.HttpStatus;
//import cn.hutool.json.JSONArray;
//import cn.hutool.json.JSONObject;
//import cn.hutool.json.JSONUtil;
//import com.ijpay.core.IJPayHttpResponse;
//import com.ijpay.core.enums.RequestMethodEnum;
//import com.ijpay.core.kit.AesUtil;
//import com.ijpay.core.kit.HttpKit;
//import com.ijpay.core.kit.PayKit;
//import com.ijpay.core.kit.WxPayKit;
//import com.ijpay.core.utils.DateTimeZoneUtil;
//import com.ijpay.wxpay.WxPayApi;
//import com.ijpay.wxpay.enums.WxDomainEnum;
//import com.ijpay.wxpay.enums.v3.BasePayApiEnum;
//import com.ijpay.wxpay.enums.v3.OtherApiEnum;
//import com.ijpay.wxpay.model.v3.Amount;
//import com.ijpay.wxpay.model.v3.Payer;
//import com.ijpay.wxpay.model.v3.UnifiedOrderModel;
//import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletResponse;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Scope;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.io.ByteArrayInputStream;
//import java.nio.charset.StandardCharsets;
//import java.security.cert.X509Certificate;
//import java.util.HashMap;
//import java.util.Map;
//
//@Slf4j
//@RestController
//@RequestMapping("/api/wx/pay/v1")
//@Scope("prototype")
//
//public class WxPayApiContoller {
// /**微信小程序appid**/
// @Value("${wechat.ma.appId}")
// String appid;
//
// /**微信小程序secretId**/
// @Value("${wechat.ma.secret}")
// String secret;
//
// /**商户号**/
// @Value("${wechat.ma.mchid}")
// String mchid;
//
// /**商户密钥**/
// @Value("${wechat.ma.mchKey}")
// String mchKey;
//
// /**回调地址**/
// @Value("${wechat.ma.notifyUrl}")
// String notifyUrl;
//
// /**证书地址**/
// @Value("${wechat.ma.certPath}")
// String certPath;
// /**证书密钥地址**/
// @Value("${wechat.ma.certKeyPath}")
// String certKeyPath;
// /**微信平台证书**/
// @Value("${wechat.ma.platFormPath}")
// String platFormPath;
//
// /**
// * 微信支付
// * @param openId 用户openId
// * @return
// */
// @RequestMapping("/jsApiPay")
// @ResponseBody
// public JsonResult jsApiPay(@RequestParam(value = "openId", required = false, defaultValue = "o-_-itxuXeGW3O1cxJ7FXNmq8Wf8") String openId) {
// try {
// String timeExpire = DateTimeZoneUtil.dateToTimeZone(System.currentTimeMillis() + 1000 * 60 * 3);
// UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel()
// // APPID
// .setAppid(appid)
// // 商户号
// .setMchid(mchid)
// .setDescription("IJPay 让支付触手可及")
// .setOut_trade_no(PayKit.generateStr())
// .setTime_expire(timeExpire)
// .setAttach("微信系开发脚手架 https://gitee.com/javen205/TNWX")
// .setNotify_url(notifyUrl)
// .setAmount(new Amount().setTotal(1))
// .setPayer(new Payer().setOpenid(openId));
//
// log.info("统一下单参数 {}", JSONUtil.toJsonStr(unifiedOrderModel));
// IJPayHttpResponse response = WxPayApi.v3(
// RequestMethodEnum.POST,
// WxDomainEnum.CHINA.toString(),
// BasePayApiEnum.JS_API_PAY.toString(),
// mchid,
// getSerialNumber(),
// null,
// certKeyPath,
// JSONUtil.toJsonStr(unifiedOrderModel)
// );
// log.info("统一下单响应 {}", response);
// // 根据证书序列号查询对应的证书来验证签名结果
// boolean verifySignature = WxPayKit.verifySignature(response, platFormPath);
// log.info("verifySignature: {}", verifySignature);
// if (response.getStatus() == HttpStatus.HTTP_OK && verifySignature) {
// String body = response.getBody();
// JSONObject jsonObject = JSONUtil.parseObj(body);
// String prepayId = jsonObject.getStr("prepay_id");
// Map<String, String> map = WxPayKit.jsApiCreateSign(appid, prepayId, certKeyPath);
// log.info("唤起支付参数:{}", map);
// return JsonResult.success("获取成功",JSONUtil.toJsonStr(map));
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// return JsonResult.error("唤起失败");
// }
//
// /**
// * 微信支付回调
// * @param request
// * @param response
// */
// @RequestMapping(value = "/payNotify", method = {org.springframework.web.bind.annotation.RequestMethod.POST, org.springframework.web.bind.annotation.RequestMethod.GET})
// public void payNotify(HttpServletRequest request, HttpServletResponse response) {
// Map<String, String> map = new HashMap<>(12);
// try {
// String timestamp = request.getHeader("Wechatpay-Timestamp");
// String nonce = request.getHeader("Wechatpay-Nonce");
// String serialNo = request.getHeader("Wechatpay-Serial");
// String signature = request.getHeader("Wechatpay-Signature");
//
// log.info("timestamp:{} nonce:{} serialNo:{} signature:{}", timestamp, nonce, serialNo, signature);
// String result = HttpKit.readData(request);
// log.info("支付通知密文 {}", result);
//
// // 需要通过证书序列号查找对应的证书verifyNotify 中有验证证书的序列号
// String plainText = WxPayKit.verifyNotify(serialNo, result, signature, nonce, timestamp,
// mchKey, platFormPath);
//
// log.info("支付通知明文 {}", plainText);
//
// if (StrUtil.isNotEmpty(plainText)) {
// response.setStatus(200);
// map.put("code", "SUCCESS");
// map.put("message", "SUCCESS");
// } else {
// response.setStatus(500);
// map.put("code", "ERROR");
// map.put("message", "签名错误");
// }
// response.setHeader("Content-type", ContentType.JSON.toString());
// response.getOutputStream().write(JSONUtil.toJsonStr(map).getBytes(StandardCharsets.UTF_8));
// response.flushBuffer();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// private String getSerialNumber() {
// // 获取证书序列号
// X509Certificate certificate = PayKit.getCertificate(certPath);
// if (null != certificate) {
// String serialNo = certificate.getSerialNumber().toString(16).toUpperCase();
// // 提前两天检查证书是否有效
// boolean isValid = PayKit.checkCertificateIsValid(certificate, mchid, -2);
// log.info("证书是否可用 {} 证书有效期为 {}", isValid, DateUtil.format(certificate.getNotAfter(), DatePattern.NORM_DATETIME_PATTERN));
// System.out.println("serialNo:" + serialNo);
// return serialNo;
// }
// return null;
// }
//
//
//
// @RequestMapping("/get")
// @ResponseBody
// public String v3Get() {
// // 获取平台证书列表
// try {
// IJPayHttpResponse response = WxPayApi.v3(
// RequestMethodEnum.GET,
// WxDomainEnum.CHINA.toString(),
// OtherApiEnum.GET_CERTIFICATES.toString(),
// mchid,
// getSerialNumber(),
// null,
// certKeyPath,
// ""
// );
// String serialNumber = response.getHeader("Wechatpay-Serial");
// String body = response.getBody();
// int status = response.getStatus();
// log.info("serialNumber: {}", serialNumber);
// log.info("status: {}", status);
// log.info("body: {}", body);
// int isOk = 200;
// if (status == isOk) {
// JSONObject jsonObject = JSONUtil.parseObj(body);
// JSONArray dataArray = jsonObject.getJSONArray("data");
// // 默认认为只有一个平台证书
// JSONObject encryptObject = dataArray.getJSONObject(0);
// JSONObject encryptCertificate = encryptObject.getJSONObject("encrypt_certificate");
// String associatedData = encryptCertificate.getStr("associated_data");
// String cipherText = encryptCertificate.getStr("ciphertext");
// String nonce = encryptCertificate.getStr("nonce");
// String serialNo = encryptObject.getStr("serial_no");
// final String platSerialNo = savePlatformCert(associatedData, nonce, cipherText, platFormPath);
// log.info("平台证书序列号: {} serialNo: {}", platSerialNo, serialNo);
// }
// // 根据证书序列号查询对应的证书来验证签名结果
// boolean verifySignature = WxPayKit.verifySignature(response, platFormPath);
// System.out.println("verifySignature:" + verifySignature);
// return body;
// } catch (Exception e) {
// e.printStackTrace();
// return null;
// }
// }
//
//
//
// /**
// * 保存平台证书
// * @param associatedData associated_data
// * @param nonce nonce
// * @param cipherText cipherText
// * @param certPath 证书保存路径
// * @return
// */
// private String savePlatformCert(String associatedData, String nonce, String cipherText, String certPath) {
// try {
// AesUtil aesUtil = new AesUtil(mchKey.getBytes(StandardCharsets.UTF_8));
// // 平台证书密文解密
// // encrypt_certificate 中的 associated_data nonce ciphertext
// String publicKey = aesUtil.decryptToString(
// associatedData.getBytes(StandardCharsets.UTF_8),
// nonce.getBytes(StandardCharsets.UTF_8),
// cipherText
// );
// // 保存证书
// cn.hutool.core.io.file.FileWriter writer = new FileWriter(certPath);
// writer.write(publicKey);
// // 获取平台证书序列号
// X509Certificate certificate = PayKit.getCertificate(new ByteArrayInputStream(publicKey.getBytes()));
// return certificate.getSerialNumber().toString(16).toUpperCase();
// } catch (Exception e) {
// e.printStackTrace();
// return e.getMessage();
// }
// }
//
//}

View File

@@ -0,0 +1,100 @@
package by.dimp.web.controller.user;
import by.dimp.common.core.base.BaseController;
import by.dimp.common.core.domain.Result;
import by.dimp.common.core.domain.UserInfo;
import by.dimp.web.model.domain.visitorManagement.req.VisitorManagementReq;
import by.dimp.web.model.domain.visitorManagement.req.VistorManagementPageQuery;
import by.dimp.web.model.entity.TbVisitorManagement;
import by.dimp.web.service.admin.ITbVisitorInvitationsService;
import by.dimp.web.service.user.ITbUserVisitorInvitationsService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
/**
* 访客邀约管理
*/
//todo 访客需要租客的完善查询我的访客时根据公司下的用户id查询需要根据租客的id查询而不是用户的id根据用户名和手机号进行匹配
@RestController
@RequestMapping("/roomBooking")
@Slf4j
public class TbUserVisitorInvitationsController extends BaseController {
@Resource
private ITbUserVisitorInvitationsService tbUserVisitorManagementService;
/**
* 分页查询用户访客管理列表
* @param pageQuery
* @return
* Visitor
*/
@GetMapping
public Result<IPage<TbVisitorManagement>> queryForPage(VistorManagementPageQuery pageQuery) {
log.info("查询访客管理列表,入参: {}", pageQuery);
IPage<TbVisitorManagement> page = tbUserVisitorManagementService.queryForPage(pageQuery);
return Result.success(page);
}
/**
* 分页查询待审核访客列表
* @param pageQuery
* @return
*/
@GetMapping
public Result<IPage<TbVisitorManagement>> queryForWaitingPage(VistorManagementPageQuery pageQuery) {
log.info("查询访客管理列表,入参: {}", pageQuery);
IPage<TbVisitorManagement> page = tbUserVisitorManagementService.queryForWaitingPage(pageQuery);
return Result.success(page);
}
/**
* 新增访客
* @param visitorManagementReq
* @return
*/
@PostMapping("/addVisitor")
public Result<Boolean> addVisitor(@RequestBody VisitorManagementReq visitorManagementReq) {
log.info("新增访客,入参: {}", visitorManagementReq);
UserInfo userInfo = getUserInfo();
visitorManagementReq.setCreateTime(LocalDateTime.now());
visitorManagementReq.setCreateById(userInfo.getId());
visitorManagementReq.setCreateBy(userInfo.getUserName());
int result = tbUserVisitorManagementService.addVisitor(visitorManagementReq);
return Result.success(result > 0);
}
/**
* 查看访客邀约详情
*/
@GetMapping("/{id}")
public Result<TbVisitorManagement> getVisitor(@PathVariable("id") Integer id) {
log.info("查看访客详情,入参: {}", id);
TbVisitorManagement visitor = tbUserVisitorManagementService.getVisitorById(id);
return Result.success(visitor);
}
/**
* 审核访客
* @param visitorManagementReq
* @return
*/
@PutMapping("/auditVisitor")
public Result<Boolean> auditVisitor(@RequestBody VisitorManagementReq visitorManagementReq) {
log.info("审核访客,入参: {}", visitorManagementReq);
UserInfo userInfo = getUserInfo();
visitorManagementReq.setUpdateTime(LocalDateTime.now());
visitorManagementReq.setUpdateById(userInfo.getId());
visitorManagementReq.setUpdateBy(userInfo.getUserName());
int result = tbUserVisitorManagementService.auditVisitor(visitorManagementReq);
return Result.success(result > 0);
}
}

View File

@@ -0,0 +1,17 @@
package by.dimp.web.covert;
import by.dimp.web.model.domain.ceremonialServe.req.CeremonialServeReq;
import by.dimp.web.model.domain.ceremonialServe.res.CeremonialServeRes;
import by.dimp.web.model.domain.roomBooking.resp.RoomBookingRes;
import by.dimp.web.model.entity.TbCeremonialServe;
import by.dimp.web.model.entity.TbRoomBooking;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface TbCeremonialServeCovert {
CeremonialServeRes entityToResp(TbCeremonialServe tbCeremonialServe);
TbCeremonialServe reqToResp(CeremonialServeReq ceremonialServeReq);
TbCeremonialServe reqToEntity(CeremonialServeReq ceremonialServeReq);
}

View File

@@ -0,0 +1,18 @@
package by.dimp.web.covert;
import by.dimp.web.model.domain.cleaningIndicators.req.SaveAndModifyCleaningIndicators;
import by.dimp.web.model.domain.cleaningIndicators.resp.TbCleaningIndicatorsResp;
import by.dimp.web.model.entity.TbCleaningIndicators;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface TbCleaningQualityConvert {
TbCleaningIndicators reqToEntity(SaveAndModifyCleaningIndicators req);
TbCleaningIndicatorsResp entityToResp(TbCleaningIndicators ls);
}

View File

@@ -0,0 +1,14 @@
package by.dimp.web.covert;
import by.dimp.web.model.domain.conference.req.ConferenceReq;
import by.dimp.web.model.entity.TbConference;
import by.dimp.web.model.domain.conference.resp.ConferenceRes;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface TbConferenceCovert {
ConferenceRes entityToResp(TbConference tbConference);
TbConference reqToEntity(ConferenceReq conferenceReq);
}

View File

@@ -0,0 +1,15 @@
package by.dimp.web.covert;
import by.dimp.web.model.entity.TbRoomBooking;
import by.dimp.web.model.domain.roomBooking.req.RoomBookingReq;
import by.dimp.web.model.domain.roomBooking.resp.RoomBookingRes;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface TbRoomBookingConvert {
RoomBookingRes entityToResp(TbRoomBooking tbRoomBooking);
TbRoomBooking respToEntity(RoomBookingReq roomBookingReq);
TbRoomBooking reqToEntity(RoomBookingReq roomBookingReq);
}

View File

@@ -0,0 +1,13 @@
package by.dimp.web.covert;
import by.dimp.web.model.domain.serviceClassification.req.ServiceClassificationReq;
import by.dimp.web.model.domain.serviceClassification.resp.TbServiceClassificationRes;
import by.dimp.web.model.entity.TbServiceClassification;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface TbServiceClassificationConvert {
TbServiceClassificationRes entityToResp(TbServiceClassification entity);
TbServiceClassification reqToEntity (ServiceClassificationReq req);
}

View File

@@ -0,0 +1,14 @@
package by.dimp.web.covert;
import by.dimp.web.model.domain.visitorManagement.req.VisitorManagementReq;
import by.dimp.web.model.domain.visitorManagement.resp.VisitorManagementRes;
import by.dimp.web.model.entity.TbVisitorManagement;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface TbVisitorManagementConvert {
TbVisitorManagement entityToResp(TbVisitorManagement tbVisitorManagement);
TbVisitorManagement reqToEntity(VisitorManagementReq visitorManagementReq);
}

View File

@@ -0,0 +1,10 @@
package by.dimp.web.mapper.admin;
import by.dimp.web.model.domain.attendanceStatistics.req.AttendanceStatisticsQueryReq;
import by.dimp.web.model.domain.attendanceStatistics.res.AttendanceStatisticsRes;
import org.mapstruct.Mapper;
@Mapper
public interface TbAttendanceStatisticsMapper {
AttendanceStatisticsRes pageQuery(AttendanceStatisticsQueryReq query);
}

View File

@@ -0,0 +1,15 @@
package by.dimp.web.mapper.admin;
import by.dimp.web.model.domain.ceremonialServe.req.CeremonialServePageQueryReq;
import by.dimp.web.model.entity.TbCeremonialServe;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TbCeremonialServeMapper extends BaseMapper<TbCeremonialServe> {
IPage<TbCeremonialServe> selectForPage(Page<TbCeremonialServe> rowPage, CeremonialServePageQueryReq pageQueryReq);
}

View File

@@ -0,0 +1,13 @@
package by.dimp.web.mapper.admin;
import by.dimp.web.model.entity.TbCeremonialserveRoombooking;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TbCeremonialserveRoombookingMapper extends BaseMapper<TbCeremonialserveRoombooking> {
void insertAll(List<TbCeremonialserveRoombooking> serveIds);
}

View File

@@ -0,0 +1,18 @@
package by.dimp.web.mapper.admin;
import by.dimp.web.model.domain.cleaningIndicators.req.QueryCleaningIndicatorsReq;
import by.dimp.web.model.entity.TbCleaningIndicators;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface TbCleaningQualityMapper extends BaseMapper<TbCleaningIndicators> {
IPage<TbCleaningIndicators> selectForPage(Page<TbCleaningIndicators> page, @Param("req") QueryCleaningIndicatorsReq req);
}

View File

@@ -0,0 +1,17 @@
package by.dimp.web.mapper.admin;
import by.dimp.web.model.entity.TbConference;
import by.dimp.web.model.domain.conference.req.ConferencePageQueryReq;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface TbConferenceMapper extends BaseMapper<TbConference> {
IPage<TbConference> selectForPage(Page<TbConference> rowPage, @Param("ew") ConferencePageQueryReq queryReq);
// int insert(ConferenceReq conferenceReq);
}

View File

@@ -0,0 +1,14 @@
package by.dimp.web.mapper.admin;
import by.dimp.web.model.entity.TbRoomBooking;
import by.dimp.web.model.domain.roomBooking.req.RoomBookingPageQueryReq;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface TbRoomBookingMapper extends BaseMapper<TbRoomBooking> {
IPage<TbRoomBooking> selectForPage(Page<TbRoomBooking> rowPage,@Param("ew") RoomBookingPageQueryReq pageQueryReq);
}

View File

@@ -0,0 +1,22 @@
package by.dimp.web.mapper.admin;
import by.dimp.web.model.domain.serviceClassification.req.TbServiceClassificationPageQuery;
import by.dimp.web.model.entity.TbServiceClassification;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* @author dy
* @description 针对表【tb_service_classification】的数据库操作Mapper
* @createDate 2025-06-12 16:31:28
* @Entity by/dimp/web.domain.TbServiceClassification
*/
public interface TbServiceClassificationMapper extends BaseMapper<TbServiceClassification> {
IPage<TbServiceClassification> selectForPage(Page<TbServiceClassification> rowPage, TbServiceClassificationPageQuery pageQuery);
}

View File

@@ -0,0 +1,24 @@
package by.dimp.web.mapper.admin;
import by.dimp.web.model.domain.visitorManagement.req.VistorManagementPageQuery;
import by.dimp.web.model.entity.TbVisitorManagement;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* @author dy
* @description 针对表【tb_visitor_management】的数据库操作Mapper
* @createDate 2025-06-16 14:24:44
* @Entity by/dimp/web.domain.TbVisitorManagement
*/
public interface TbVisitorManagementMapper extends BaseMapper<TbVisitorManagement> {
IPage<TbVisitorManagement> selectForPage(Page<TbVisitorManagement> rowPage, VistorManagementPageQuery pageQuery);
IPage<TbVisitorManagement> selectForWaitingPage(Page<TbVisitorManagement> rowPage, VistorManagementPageQuery pageQuery);
}

View File

@@ -0,0 +1,24 @@
package by.dimp.web.mapper.user;
import by.dimp.web.model.domain.visitorManagement.req.VistorManagementPageQuery;
import by.dimp.web.model.entity.TbVisitorManagement;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* @author dy
* @description 针对表【tb_visitor_management】的数据库操作Mapper
* @createDate 2025-06-16 14:24:44
* @Entity by/dimp/web.domain.TbVisitorManagement
*/
public interface TbUserVisitorManagementMapper extends BaseMapper<TbVisitorManagement> {
IPage<TbVisitorManagement> selectForPage(Page<TbVisitorManagement> rowPage, VistorManagementPageQuery pageQuery);
IPage<TbVisitorManagement> selectForWaitingPage(Page<TbVisitorManagement> rowPage, VistorManagementPageQuery pageQuery);
}

View File

@@ -0,0 +1,38 @@
package by.dimp.web.model.domain.E8.general;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* @author zcxlsm
* @title: ApiResp
* @date 2025/5/8 17:05
*/
@Data
@AllArgsConstructor
public class ApiResp {
/**
* success为false时返回错误信息
*/
private String message;
/**
* sessionId
*/
private Long sessionId;
/**
* 返回处理结果(数据由具体接口决定)
*/
private Object result;
/**
* true表示成功false表示失败
*/
private Boolean success;
/**
* 状态码 0表示成功1表示失败
*/
private Integer code;
}

View File

@@ -0,0 +1,26 @@
package by.dimp.web.model.domain.E8.general;
import lombok.Data;
/**
* @author zcxlsm
* @title: QueryDto
* @date 2025/5/8 17:20
*/
@Data
public class QueryDto {
/**
* 页数
*/
private Integer pageIndex;
/**
* 每页条数
*/
private Integer maxResultCount;
/**
* 请求参数
*/
private Object queryDto;
}

View File

@@ -0,0 +1,24 @@
package by.dimp.web.model.domain.attendanceStatistics.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceStatisticsQueryReq {
//分页参数
private Integer page;
private Integer pageSize;
//会议室名称
private String roomName;
//会议人数
private Integer approverCount;
//会议地点
private String roomLocation;
}

View File

@@ -0,0 +1,25 @@
package by.dimp.web.model.domain.attendanceStatistics.res;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceStatisticsRes {
//会议室名称
private String roomName;
//签到开始时间
private LocalDateTime CheckInStartTime;
//签到结束时间
private LocalDateTime CheckInEndTime;
//设备使用情况
private boolean deviceUsage;
}

View File

@@ -0,0 +1,18 @@
package by.dimp.web.model.domain.ceremonialServe.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CeremonialServePageQueryReq {
//页码
private int page;
//每页记录数
private int pageSize;
}

View File

@@ -0,0 +1,87 @@
package by.dimp.web.model.domain.ceremonialServe.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
*
* @TableName tb_ceremonial_serve
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CeremonialServeReq implements Serializable {
/**
* id
*/
private Integer id;
/**
* 会议室id
*/
private Integer tbConferenceId;
/**
* 服务类型
*/
@Length(max= 256,message="编码长度不能超过256")
private Integer serveType;
/**
* 服务名称
*/
@Length(max= 256,message="编码长度不能超过256")
private String serveName;
/**
* 预订状态0待确认1已确认2已取消3已完成
*/
private Integer serveStatus;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
@Length(max= 32,message="编码长度不能超过32")
private String createBy;
/**
* 创建人id
*/
private Long createById;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
@Length(max= 32,message="编码长度不能超过32")
private String updateBy;
/**
* 更新人id
*/
private Integer updateById;
/**
* 确认人id
*/
private Integer confirmId;
/**
* 服务开始时间
*/
private Date beginTime;
/**
* 服务结束时间
*/
private Date endTime;
/**
* 数据状态(模拟删除 0:删除 1:未删除)
*/
private Integer dataStauts;
}

View File

@@ -0,0 +1,82 @@
package by.dimp.web.model.domain.ceremonialServe.res;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CeremonialServeRes {
/**
* id
*/
private Integer id;
/**
* 会议室id
*/
private Integer tbConferenceId;
/**
* 服务类型
*/
@Length(max= 256,message="编码长度不能超过256")
private String serveType;
/**
* 服务名称
*/
@Length(max= 256,message="编码长度不能超过256")
private String serveName;
/**
* 预订状态0待确认1已确认2已取消3已完成
*/
private Integer serveStatus;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
@Length(max= 32,message="编码长度不能超过32")
private String createBy;
/**
* 创建人id
*/
private Integer createById;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新人
*/
@Length(max= 32,message="编码长度不能超过32")
private String updateBy;
/**
* 更新人id
*/
private Integer updateById;
/**
* 确认人id
*/
private Integer confirmId;
/**
* 服务开始时间
*/
private LocalDateTime beginTime;
/**
* 服务结束时间
*/
private LocalDateTime endTime;
/**
* 数据状态(模拟删除 0:删除 1:未删除)
*/
private Integer dataStauts;
}

View File

@@ -0,0 +1,21 @@
package by.dimp.web.model.domain.cleaningIndicators.req;
import by.dimp.common.core.domain.Page;
import lombok.Data;
@Data
public class QueryCleaningIndicatorsReq extends Page {
/**
* 主键id
*/
private Long id;
/**
* 指标项名称
*/
private String metricName;
/**
* 描述
*/
private String description;
}

View File

@@ -0,0 +1,74 @@
package by.dimp.web.model.domain.cleaningIndicators.req;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class SaveAndModifyCleaningIndicators {
/**
* 主键id
*/
private Long id;
/**
* 指标项名称
*/
private String metricName;
/**
* 指标标准值
*/
private BigDecimal standardValue;
/**
* 指标上限
*/
private BigDecimal upperLimit;
/**
* 指标下限
*/
private BigDecimal lowerLimit;
/**
* 描述
*/
private String description;
/**
* 数据状态1有效0无效
*/
private Integer dataState;
/**
* 创建人
*/
private String createEmpId;
/**
* 创建人名称
*/
private String createEmpName;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改人
*/
private String modifyEmpId;
/**
* 修改人名称
*/
private String modifyEmpName;
/**
* 修改时间
*/
private LocalDateTime modifyTime;
}

View File

@@ -0,0 +1,74 @@
package by.dimp.web.model.domain.cleaningIndicators.resp;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class TbCleaningIndicatorsResp {
/**
* 主键id
*/
private Long id;
/**
* 指标项名称
*/
private String metricName;
/**
* 指标标准值
*/
private BigDecimal standardValue;
/**
* 指标上限
*/
private BigDecimal upperLimit;
/**
* 指标下限
*/
private BigDecimal lowerLimit;
/**
* 描述
*/
private String description;
/**
* 数据状态1有效0无效
*/
private Integer dataState;
/**
* 创建人
*/
private String createEmpId;
/**
* 创建人名称
*/
private String createEmpName;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改人
*/
private String modifyEmpId;
/**
* 修改人名称
*/
private String modifyEmpName;
/**
* 修改时间
*/
private LocalDateTime modifyTime;
}

View File

@@ -0,0 +1,21 @@
package by.dimp.web.model.domain.conference.req;
import lombok.Data;
import java.io.Serializable;
@Data
public class ConferencePageQueryReq implements Serializable {
//页码
private int page;
//每页记录数
private int pageSize;
//会议室名称
private String roomName;
//会议室编号
private Integer roomNo;
}

View File

@@ -0,0 +1,124 @@
package by.dimp.web.model.domain.conference.req;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ConferenceReq {
/**
* id
*/
private Integer id;
/**
* 会议室名称
*/
private String roomName;
/**
* 会议室编号
*/
private Integer roomNo;
/**
* 会议室位置
*/
private String roomLocation;
/**
* 会议室面积
*/
private String roomArea;
/**
* 会议室类型
*/
private String roomType;
/**
* 会议室容纳人数
*/
private Integer roomNumber;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
private String createBy;
/**
* 创建人id
*/
private Long createById;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新人id
*/
private Long updateById;
/**
* 会议室配套设施
*/
private String roomFacilities;
/**
* 会议室价格类型0免费1付费2面议
*/
private Integer feeType;
/**
* 费用金额
*/
private BigDecimal feePrice;
/**
* 数据状态(模拟删除 0未删除 1删除
*/
@TableLogic
private Integer dataStatus;
/**
* 负责人
*/
private String responsiblePerson;
/**
* 联系电话
*/
private Integer contactNumber;
/**
* 会议室照片
*/
private String pictures;
/**
* 会议室描述
*/
private String description;
/**
* 是否需要审核0需要审核1不需要审核
*/
private Integer review;
/**
* 启用状态0禁用1启用
*/
private Integer enabledStatus;
/**
* 开放星期1星期一2星期二
*/
private Integer openingWeek;
/**
* 开放结束时间
*/
private LocalDateTime openingEndTime;
/**
* 开放开始时间
*/
private LocalDateTime openingBeginTime;
}

View File

@@ -0,0 +1,124 @@
package by.dimp.web.model.domain.conference.resp;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ConferenceRes {
/**
* id
*/
private Integer id;
/**
* 会议室名称
*/
private String roomName;
/**
* 会议室编号
*/
private Integer roomNo;
/**
* 会议室位置
*/
private String roomLocation;
/**
* 会议室面积
*/
private String roomArea;
/**
* 会议室类型
*/
private String roomType;
/**
* 会议室容纳人数
*/
private Integer roomNumber;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
private String createBy;
/**
* 创建人id
*/
private Long createById;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新人id
*/
private Long updateById;
/**
* 会议室配套设施
*/
private String roomFacilities;
/**
* 会议室价格类型0免费1付费2面议
*/
private Integer feeType;
/**
* 费用金额
*/
private BigDecimal feePrice;
/**
* 数据状态(模拟删除 0未删除 1删除
*/
@TableLogic
private Integer dataStatus;
/**
* 负责人
*/
private String responsiblePerson;
/**
* 联系电话
*/
private Integer contactNumber;
/**
* 会议室照片
*/
private String pictures;
/**
* 会议室描述
*/
private String description;
/**
* 是否需要审核0需要审核1不需要审核
*/
private Integer review;
/**
* 启用状态0禁用1启用
*/
private Integer enabledStatus;
/**
* 开放星期1星期一2星期二
*/
private Integer openingWeek;
/**
* 开放结束时间
*/
private LocalDateTime openingEndTime;
/**
* 开放开始时间
*/
private LocalDateTime openingBeginTime;
}

View File

@@ -0,0 +1,20 @@
package by.dimp.web.model.domain.conferenceStatistics;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ConferenceStatistics {
private Integer id;
//参会人数
private Integer approverCount;
//签到开始时间
private Integer signInBeginTime;
//签到结束时间
private Integer signInEndTime;
//设备使用情况
}

View File

@@ -0,0 +1,21 @@
package by.dimp.web.model.domain.roomBooking.req;
import cn.hutool.core.date.DateTime;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RoomBookingPageQueryReq implements Serializable {
private int page;
private int pageSize;
private int roomName;
private LocalDateTime appointmentBeginTime;
private LocalDateTime appointmentEndTime;
}

View File

@@ -0,0 +1,125 @@
package by.dimp.web.model.domain.roomBooking.req;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RoomBookingReq {
/**
* id
*/
private Integer id;
/**
* 会议室id
*/
private Integer tbConferenceId;
/**
* 预约状态0未预定 1使用中 2已预订
*/
private Integer bookingStatus;
/**
* 审核状态0未审核 1通过 2未通过
*/
private Integer reviewStatus;
/**
* 会议预订人
*/
private String bookingName;
/**
* 使用单位
*/
private String userUnit;
/**
* 会议主题
*/
private String conferenceTheme;
/**
* 预约日期
*/
private Date appointmentDate;
/**
* 预约开始时段
*/
private LocalDateTime appointmentBeginTime;
/**
* 预约结束时段
*/
private LocalDateTime appointmentEndTime;
/**
* 参会人员
*/
private String attendeesName;
/**
* 参会人数
*/
private Integer approverCount;
/**
* 签到开始时间
*/
private LocalDateTime checkInStartTime;
/**
* 签到结束时间
*/
private LocalDateTime checkInEndTime;
/**
* 审批人
*/
private String approver;
/**
* 审批时间
*/
private LocalDateTime approverTime;
/**
* 评价
*/
private String evaluate;
/**
* 备注
*/
private String remark;
/**
* 是否需要增值服务0需要1不需要
*/
private Integer addServices;
/**
* 创建人id
*/
private Long createById;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新人id
*/
private Long updateById;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 数据状态(模拟删除 0未删除 1删除
*/
@TableLogic
private Integer dataStatus;
}

View File

@@ -0,0 +1,67 @@
package by.dimp.web.model.domain.roomBooking.resp;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RoomBookingRes {
/**
* id
*/
private Integer id;
/**
* 会议室id
*/
private Integer tbConferenceId;
/**
* 会议开始使用时间
*/
private LocalDateTime roomBeginTime;
/**
* 会议结束使用时间
*/
private LocalDateTime roomEndTime;
/**
* 会议预订人
*/
private String bookingName;
/**
* 使用单位
*/
private String userUnit;
/**
* 会议主题
*/
private String conferenceTheme;
/**
* 会议室名称
*/
private String roomName;
/**
* 预约日期
*/
private Date appointmentDate;
/**
* 预约开始时段
*/
private LocalDateTime appointmentBeginTime;
/**
* 预约结束时段
*/
private LocalDateTime appointmentEndTime;
}

View File

@@ -0,0 +1,58 @@
package by.dimp.web.model.domain.serviceClassification.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ServiceClassificationReq {
/**
* id
*/
private Integer id;
/**
* 分类
*/
private String type;
/**
* 分类名称
*/
private String name;
/**
* 排序
*/
private Integer sort;
/**
* 分类状态0禁用1启用
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
private String createBy;
/**
* 创建人id
*/
private Long createById;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新人id
*/
private Integer updateById;
}

View File

@@ -0,0 +1,17 @@
package by.dimp.web.model.domain.serviceClassification.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TbServiceClassificationPageQuery {
private int page;
private int pageSize;
private String name;
}

View File

@@ -0,0 +1,62 @@
package by.dimp.web.model.domain.serviceClassification.resp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TbServiceClassificationRes {
/**
* id
*/
private Integer id;
/**
* 分类
*/
@Length(max= 64,message="编码长度不能超过64")
private String type;
/**
* 分类名称
*/
@Length(max= 64,message="编码长度不能超过64")
private String name;
/**
* 排序
*/
private Integer sort;
/**
* 分类状态0禁用1启用
*/
private Integer status;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 创建人id
*/
private Integer createById;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新人id
*/
private Integer updateById;
}

View File

@@ -0,0 +1,101 @@
package by.dimp.web.model.domain.visitorManagement.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class VisitorManagementReq {
/**
* id
*/
private Integer id;
/**
* 访客姓名
*/
@Length(max = 256, message = "编码长度不能超过256")
private String visitorName;
/**
* 访客电话
*/
private Integer visitorPhone;
/**
* 身份证号
*/
private String identityCard;
/**
* 拜访事由
*/
@Length(max = 256, message = "编码长度不能超过256")
private String visitingReason;
/**
* 拜访开始时间
*/
private LocalDateTime visitingBeginTime;
/**
* 拜访结束时间
*/
private LocalDateTime visitingEndTime;
/**
* 预约车位
*/
private Integer bookingParkingSpace;
/**
* 车牌号
*/
@Length(max = 256, message = "编码长度不能超过256")
private String licensePlate;
/**
* 人脸图片
*/
@Length(max = 256, message = "编码长度不能超过256")
private String facePictures;
/**
* 验证码
*/
private String verificationCode;
/**
* 预约状态(0待审核1待访问2已取消3已完成)
*/
private int serveStatus;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
@Length(max = 64, message = "编码长度不能超过64")
private String createBy;
/**
* 创建人id
*/
private Long createById;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新人
*/
@Length(max = 64, message = "编码长度不能超过64")
private String updateBy;
/**
* 更新人id
*/
private Long updateById;
}

View File

@@ -0,0 +1,48 @@
package by.dimp.web.model.domain.visitorManagement.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class VistorManagementPageQuery {
private int page;
private int pageSize;
/**
* 访客姓名
*/
private String visitorName;
/**
* 被访人
*/
private String interviewee;
/**
* 被访单位
*/
private String interviewedUnit;
/**
* 预约状态(0待确认1已确认2已取消3已完成)
*/
private int serve_status;
/**
* 提交时间(创建时间)
*/
private Date createTime;
/**
* 拜访开始时间
*/
private Date visitingBeginTime;
/**
* 拜访结束时间
*/
private Date visitingEndTime;
}

View File

@@ -0,0 +1,87 @@
package by.dimp.web.model.domain.visitorManagement.resp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class VisitorManagementRes {
/**
* id
*/
private Integer id;
/**
* 访客姓名
*/
@Length(max = 256, message = "编码长度不能超过256")
private String visitorName;
/**
* 访客电话
*/
private Integer visitorPhone;
/**
* 拜访事由
*/
/**
* 预约状态(0待确认1已确认2已取消3已完成)
*/
private int serve_status;
@Length(max = 256, message = "编码长度不能超过256")
private String visitingReason;
/**
* 拜访开始时间
*/
private LocalDateTime visitingBeginTime;
/**
* 拜访结束时间
*/
private LocalDateTime visitingEndTime;
/**
* 预约车位
*/
private Integer bookingParkingSpace;
/**
* 车牌号
*/
@Length(max = 256, message = "编码长度不能超过256")
private String licensePlate;
/**
* 人脸图片
*/
@Length(max = 256, message = "编码长度不能超过256")
private String facePictures;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
@Length(max = 64, message = "编码长度不能超过64")
private String createBy;
/**
* 创建人id
*/
private Integer createById;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新人
*/
@Length(max = 64, message = "编码长度不能超过64")
private String updateBy;
/**
* 更新人id
*/
private Integer updateById;
}

View File

@@ -0,0 +1,243 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
import java.util.Date;
/**
* @author zcxlsm
* @title: AccessRecordInfo
* @date 2025/5/11 20:22
*/
@Data
public class AccessRecordInfo {
/**
* 主键
*/
private Long id;
/**
* 记录ID
*/
private String recordId;
/**
* 设备ID
*/
private Long deviceId;
/**
* 设备编号
*/
private Integer devNo;
/**
* 设备名称
*/
private String deviceName;
/**
* 门ID
*/
private Long doorId;
/**
* 门名称
*/
private String doorName;
/**
* 设备类型例如1102-车场控制机205-辅机等)
*/
private Integer deviceType;
/**
* 分控ID
*/
private Long deviceSubId;
/**
* 读头ID
*/
private Long readerId;
/**
* 读头名称
*/
private String readerName;
/**
* 出入口类型0-未知1-入口2-出口)
*/
private Integer gatewayType;
/**
* 区域ID
*/
private Long areaId;
/**
* 区域名称
*/
private String areaName;
/**
* 客户ID
*/
private Long customerId;
/**
* 客户编号
*/
private String customerNo;
/**
* 客户名称
*/
private String customerName;
/**
* 客户名称(备用字段)
*/
private String customerName1;
/**
* 客户手机号
*/
private String customerTel;
/**
* 客户手机号(备用字段)
*/
private String customerTel1;
/**
* 组织ID
*/
private String organIds;
/**
* 组织全路径
*/
private String organFullPath;
/**
* 卡类别例如34-普通用户卡35-胁迫卡等)
*/
private Integer cardType;
/**
* 凭证编号
*/
private String idno;
/**
* 凭证类型例如10-MF1-A卡20-个人密码等)
*/
private Integer voucherType;
/**
* 凭证模式0-ID卡模式1-IC卡模式等
*/
private Integer voucherMode;
/**
* 图片地址
*/
private String pictureUrl;
/**
* 监控图片地址
*/
private String monitorPictureUrl;
/**
* 视频地址
*/
private String videoUrl;
/**
* 通行记录类型例如1-卡开门2-人脸开门等)
*/
private Integer recordType;
/**
* 是否脱机记录0-否1-是)
*/
private Integer offineFlag;
/**
* 通行时间
*/
private Date actionTime;
/**
* 添加时间
*/
private Date addTime;
/**
* 扩展字段
*/
private String extend;
/**
* 体温
*/
private Double temperature;
/**
* 健康状态0-未知1-正常2-异常)
*/
private Integer healthCodeStatus;
/**
* 设备类型描述
*/
private String deviceTypeDesc;
/**
* 出入口类型描述
*/
private String gatewayTypeDesc;
/**
* 凭证类型描述
*/
private String voucherTypeDesc;
/**
* 凭证模式描述
*/
private String voucherModeDesc;
/**
* 卡类描述
*/
private String cardTypeDesc;
/**
* 记录类型描述
*/
private String recordTypeDesc;
/**
* 体温描述
*/
private String temperatureDesc;
/**
* 健康码状态描述
*/
private String healthCodeStatusDesc;
/**
* 人脸凭证地址
*/
private String voucherUrl;
/**
* 是否显示敏感信息true-隐藏false-显示)
*/
private Boolean isViewFullData;
}

View File

@@ -0,0 +1,86 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
/**
* @author zcxlsm
* @title: AreaInfo
* @date 2025/5/8 17:25
*/
@Data
public class AreaInfo {
/**
* 区域id
*/
private Long areaId;
/**
* 区域名称
*/
private String areaName;
/**
* 用户类型 0:业主 1:家属 2:租客 3:员工 4:企业主 11:职员 12:临时人员 13:户主 14:外部人员 100:其他人员
*/
private Integer userType;
/**
* 区域类型 0:区域 1:楼栋 2:房屋 3:门 4:楼层
*/
private Integer areaType;
/**
* 区域类型中文描述
*/
private String areaTypeDesc;
/**
* 编号
*/
private String areaNo;
/**
* 标志0区域1通道
*/
private Integer flag;
/**
* 门类型 0:双向门 1:入口 2:出口 3:虚拟门
*/
private Integer doorType;
/**
* 楼层
*/
private Integer floor;
/**
* 门牌序号(楼栋起始楼层)
*/
private Integer roomIndex;
/**
* 容纳人数
*/
private Integer capacity;
/**
* 父Id
*/
private Long parentId;
/**
* 备注
*/
private String remark;
/**
* 居民姓名
*/
private String customerName;
/**
* 是否脱敏 true脱敏敏感信息加***隐藏false完整显示
*/
private Boolean isViewFullData;
}

View File

@@ -0,0 +1,41 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
import java.util.List;
/**
* @author zcxlsm
* @title: AuthGroupInfo
* @date 2025/5/9 17:50
*/
@Data
public class AuthGroupInfo {
/**
* id int64 Y 门/电梯ID
* type int32 Y 类型 0门 1电梯
* gatewayType int32 Y 出入口类型 0未知 1入口 2出口
* floors List<FloorDto> N 楼层权限
*/
/**
* 门/电梯ID
*/
private Long id;
/**
* 类型 0门 1电梯
*/
private Integer type;
/**
* 出入口类型 0未知 1入口 2出口
*/
private Integer gatewayType;
/**
* 楼层权限
*/
private List<FloorInfo> floors;
}

View File

@@ -0,0 +1,136 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
/**
* @author zcxlsm
* @title: CustomerDetailInfo
* @date 2025/5/8 17:24
*/
@Data
public class CustomerDetailInfo {
/**
* 主键
*/
private Long id;
/**
* 创建时间
*/
private String creationTime;
/**
* 创建人
*/
private String creator;
/**
* 最后修改时间
*/
private String lastModificationTime;
/**
* 最后修改人
*/
private String lastModifier;
/**
* 删除人
*/
private String deleter;
/**
* 删除时间
*/
private String deletionTime;
/**
* 客户Id
*/
private Long customerId;
/**
* 工号
*/
private String workNo;
/**
* 最高学历
*/
private Integer education;
/**
* 毕业学校
*/
private String school;
/**
* 专业
*/
private String master;
/**
* 政治面貌
*/
private String politics;
/**
* 婚姻状况
*/
private Integer marriage;
/**
* QQ
*/
private String qq;
/**
* 微信
*/
private String wechat;
/**
* 驾驶证号
*/
private String driverLicense;
/**
* 驾驶证号 (脱敏)
*/
private String driverLicense1;
/**
* 是否忽略反潜回(1:是0:否)
*/
private Integer isIgnoreEntryBack;
/**
* 是否忽略门时区(1:是0:否)
*/
private Integer isIgnoreDoorSchedule;
/**
* 是否忽略互锁(1:是0:否)
*/
private Integer isIgnoreLock;
/**
* 是否忽略报警(1:是0:否)
*/
private Integer isIgnoreAlarm;
/**
* 是否发行卡凭证(0:未录入1未发行2已发行)
*/
private Integer isIssue;
/**
* 是否忽略人时区(1:是0:否)
*/
private Integer isIgnorePersonSchedule;
/**
* 是否黑名单人员(1:是0:否)
*/
private Integer isBlacklist;
}

View File

@@ -0,0 +1,161 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author zcxlsm
* @title: CustomerInfo
* @date 2025/5/8 17:23
*/
@Data
public class CustomerInfo {
/**
* 主键
*/
private Long id;
/**
* 人员编号
*/
private String no;
/**
* 客户姓名
*/
private String name;
/**
* 证件类型0身份证1驾驶证2工作证100其他
*/
private Integer identityType;
/**
* 证件号码
*/
private String identityNo;
/**
* 籍贯
*/
private String hometown;
/**
* 出生日期
*/
private String birthday;
/**
* 住址
*/
private String address;
/**
* 性别0女1男
*/
private Integer gender;
/**
* 职务
*/
private String duty;
/**
* 房间号
*/
private String roomNo;
/**
* 入职时间
*/
private Date enterTime;
/**
* 手机号码
*/
private String mobile;
/**
* 电子邮件
*/
private String email;
/**
* 紧急联系人
*/
private String emergencyContact;
/**
* 紧急联系人电话
*/
private String emergencyContactPhone;
/**
* 备注信息
*/
private String remark;
/**
* 区域ID以;分隔)
*/
private String areaIds;
/**
* 区域全路径(多个以;分割,层级以|分割)
*/
private String areaFullPath;
/**
* 组织ID以;分隔)
*/
private String organIds;
/**
* 组织全路径(多个以;分割,层级以|分割)
*/
private String organFullPath;
/**
* 车牌号码
*/
private String carNos;
/**
* 人员图片
*/
private String image;
/**
* 指纹索引0-90-左手大拇指4-左手小指……9-右手小指
*/
private String fingerNo;
/**
* 指纹信息 多个以“;”分隔
*/
private String fingerData;
/**
* 是否为特殊车牌
*/
private Boolean isSpecialPlate;
/**
* 客户关联的车辆信息列表
*/
private List<VehicleInfo> vehicleInfos;
/**
* 客户关联的区域信息列表
*/
private List<AreaInfo> relAreas;
/**
* 客户详细信息
*/
private CustomerDetailInfo detail;
}

View File

@@ -0,0 +1,247 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
import java.util.List;
/**
* @author zcxlsm
* @title: DoorDeviceInfo
* @date 2025/5/8 17:56
*/
@Data
public class DoorDeviceInfo {
/**
* 主键
*/
private Long id;
/**
* 创建时间
*/
private String creationTime;
/**
* 创建人
*/
private String creatorId;
/**
* 最后修改时间
*/
private String lastModificationTime;
/**
* 最后修改人
*/
private String lastModifierId;
/**
* 是否删除
*/
private Boolean isDeleted;
/**
* 删除人
*/
private String deleterId;
/**
* 删除时间
*/
private String deletionTime;
/**
* 设备编号
*/
private String no;
/**
* 设备编号序列号
*/
private Integer noCode;
/**
* 设备对接平台的ID
*/
private String cloudId;
/**
* 设备名称
*/
private String name;
/**
* 父设备ID
*/
private Long parentId;
/**
* 父设备名称
*/
private String parentName;
/**
* 管理机IP
*/
private String masterIp;
/**
* 设备IP
*/
private String ip;
/**
* 设备端口
*/
private Integer port;
/**
* 设备MAC
*/
private String mac;
/**
* 子网掩码
*/
private String netMask;
/**
* 设备网关
*/
private String gatewayIP;
/**
* 设备产品线类型
* 0:车行 1:车位 2:人行
*/
private Integer productType;
/**
* 设备类型
* 2201:一体式门禁 2202:分体式门禁 2203:人脸门禁 2204:梯控 2207:人脸盒子终端
* 2208:人脸盒子面板机 2209:一体式读头 2211:梯控读头 2102:电子哨兵
*/
private Integer type;
/**
* 设备类型描述
*/
private String typeDescription;
/**
* 业务逻辑设备类
*/
private Integer logicType;
/**
* 设备型号
*/
private Integer model;
/**
* 设备型号
*/
private String modelDescription;
/**
* 设备型号名称
*/
private String modelName;
/**
* 设备序列号
*/
private String sn;
/**
* 设备CPUID
*/
private String cpuID;
/**
* 设备状态 0:未认证 1:非本项目设备 2:非本项目设备 3:认证失败 4:认证成功 5:无需认证
*/
private Integer status;
/**
* 设备状态0未认证 1非本项目设备 2非官方设备3是密钥系统认证失败 4认证成功 5 无需认证
*/
private String statusDescription;
/**
* 机号
*/
private String macNo;
/**
* 蓝牙地址
*/
private String bluetoothAddr;
/**
* 设备关联的区域组ID
*/
private Integer deviceGroupId;
/**
* 设备层级
*/
private Integer deviceLevel;
/**
* 父级设备路径ID列表
*/
private String parentIdPath;
/**
* 设备是否需要系统升级
*/
private Boolean isNeedUpgrade;
/**
* 项目ID
*/
private Integer projectId;
/**
* 关联门
*/
private String relDoors;
/**
* 出入口类型 0:未知 1:入口 2:出口
*/
private Integer gatewayType;
/**
* 出入口类型
*/
private String gatewayTypeDesc;
/**
* 备注
*/
private String remark;
/**
* 子设备列表
*/
private List<DoorDeviceInfo> childList;
/**
* 设备通讯方式 0:TCP/IP 1:RS485
*/
private Integer commType;
/**
* 工单号(设备搜索)
*/
private String projectNumber;
/**
* 固件版本信息(设备搜索)
*/
private String version;
}

View File

@@ -0,0 +1,56 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
/**
* @author zcxlsm
* @title: FloorInfo
* @date 2025/5/9 17:51
*/
@Data
public class FloorInfo {
/**
* floorId int64 N 楼层权限标识
* floorName string N 楼层名称
* isFrontDoor bool N 是否前门可用
* isBackDoor bool N 是否后门可用
* isSelectFrontDoor bool N 是否选择前门
* isSelectBackDoor bool N 是否选择后门
* isCommonFloor bool N 是否公共门
*/
/**
* 楼层权限标识
*/
private Long floorId;
/**
* 楼层名称
*/
private String floorName;
/**
* 是否前门可用
*/
private Boolean isFrontDoor;
/**
* 是否后门可用
*/
private Boolean isBackDoor;
/**
* 是否选择前门
*/
private Boolean isSelectFrontDoor;
/**
* 是否选择后门
*/
private Boolean isSelectBackDoor;
/**
* 是否公共门
*/
private Boolean isCommonFloor;
}

View File

@@ -0,0 +1,33 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
/**
* @author zcxlsm
* @title: LiftInfo
* @date 2025/5/9 11:49
*/
@Data
public class LiftInfo {
/**
* 主键
*/
private Integer id;
/**
* 名称
*/
private String name;
/**
* 区域ID
*/
private Integer areaId;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,81 @@
package by.dimp.web.model.entity.E8;
import lombok.Data;
/**
* @author zcxlsm
* @title: VehicleInfo
* @date 2025/5/8 17:26
*/
@Data
public class VehicleInfo {
/**
* 主键
*/
private Long id;
/**
* 创建时间
*/
private String creationTime;
/**
* 创建人
*/
private String creatorId;
/**
* 最后修改时间
*/
private String lastModificationTime;
/**
* 最后修改人
*/
private String lastModifierId;
/**
* 是否删除
*/
private Boolean isDeleted;
/**
* 删除人
*/
private String deleterId;
/**
* 删除时间
*/
private String deletionTime;
/**
* 客户ID
*/
private Long customerId;
/**
* 车牌号码
*/
private String plateNO;
/**
* 车牌类型 0:其他 1:蓝牌 2:黄牌 3:白牌 4:黑牌 5:绿牌 6:黄绿牌
*/
private Integer plateColor;
/**
* 车辆类型 0:小型车 1:大型车 2:其它 3:摩托车
*/
private Integer type;
/**
* 车辆状态 0:未发证 1:已发证
*/
private Integer status;
/**
* 车辆品牌
*/
private String carLogo;
}

View File

@@ -0,0 +1,93 @@
package by.dimp.web.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
*
* @TableName tb_ceremonial_serve
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TbCeremonialServe implements Serializable {
/**
* id
*/
private Integer id;
/**
* 预订id
*/
private Integer roomBookId;
/**
* 服务数量
*/
private Integer serveNum;
/**
* 服务类型
*/
private Integer serveType;
/**
* 产品名称
*/
private String serveName;
/**
* 预订状态0待确认1已确认2已取消3已完成
*/
private Integer serveStatus;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 创建人id
*/
private Integer createById;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新人id
*/
private Integer updateById;
/**
* 确认人id
*/
private Integer confirmId;
/**
* 服务开始时间
*/
private Date beginTime;
/**
* 服务结束时间
*/
private Date endTime;
/**
* 服务总价格
*/
private BigDecimal servePrice;
/**
* 数据状态(模拟删除 0:删除 1:未删除)
*/
private Integer dataStauts;
/**
* 产品图片
*/
private String serveImage;
}

View File

@@ -0,0 +1,36 @@
package by.dimp.web.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
*
* @TableName tb_ceremonialserve_roombooking
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TbCeremonialserveRoombooking implements Serializable {
/**
* id
*/
private Integer id;
/**
* 服务id
*/
private Integer ceremonialServeId;
/**
* 预订id
*/
private Integer roomBookingId;
/**
* 服务和预订总价格
*/
private BigDecimal totalPrice;
}

View File

@@ -0,0 +1,101 @@
package by.dimp.web.model.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author lxj
* @since 2025-04-28
*/
@Data
@TableName("tb_cleaning_Indicators")
public class TbCleaningIndicators implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 指标项名称
*/
@TableField("metric_name")
private String metricName;
/**
* 指标标准值
*/
@TableField("standard_value")
private BigDecimal standardValue;
/**
* 指标上限
*/
@TableField("upper_limit")
private BigDecimal upperLimit;
/**
* 指标下限
*/
@TableField("lower_limit")
private BigDecimal lowerLimit;
/**
* 描述
*/
@TableField("description")
private String description;
/**
* 数据状态1有效0无效
*/
@TableField("data_state")
@TableLogic
private Integer dataState;
/**
* 创建人
*/
@TableField("create_emp_id")
private String createEmpId;
/**
* 创建人名称
*/
@TableField("create_emp_name")
private String createEmpName;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 修改人
*/
@TableField("modify_emp_id")
private String modifyEmpId;
/**
* 修改人名称
*/
@TableField("modify_emp_name")
private String modifyEmpName;
/**
* 修改时间
*/
@TableField("modify_time")
private LocalDateTime modifyTime;
}

View File

@@ -0,0 +1,126 @@
package by.dimp.web.model.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import jakarta.annotation.security.DenyAll;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
/**
*
* @TableName tb_conference
*/
public class TbConference implements Serializable {
/**
* id
*/
private Integer id;
/**
* 会议室名称
*/
private String roomName;
/**
* 会议室编号
*/
private Integer roomNo;
/**
* 会议室位置
*/
private String roomLocation;
/**
* 会议室面积
*/
private String roomArea;
/**
* 会议室类型
*/
private String roomType;
/**
* 会议室容纳人数
*/
private Integer roomNumber;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 创建人id
*/
private Integer createById;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新人id
*/
private Integer updateById;
/**
* 会议室配套设施
*/
private String roomFacilities;
/**
* 会议室价格类型0免费1付费2面议
*/
private Integer feeType;
/**
* 费用金额
*/
private BigDecimal feePrice;
/**
* 数据状态(模拟删除 0未删除 1删除
*/
@TableLogic
private Integer dataStatus;
/**
* 负责人
*/
private String responsiblePerson;
/**
* 联系电话
*/
private Integer contactNumber;
/**
* 会议室照片
*/
private String pictures;
/**
* 会议室描述
*/
private String description;
/**
* 是否需要审核0需要审核1不需要审核
*/
private Integer review;
/**
* 启用状态0禁用1启用
*/
private Integer enabledStatus;
/**
* 开放星期1星期一2星期二
*/
private Integer openingWeek;
/**
* 开放时间
*/
private Date openingHours;
}

View File

@@ -0,0 +1,129 @@
package by.dimp.web.model.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
/**
*
* @TableName tb_room_booking
*/
public class TbRoomBooking implements Serializable {
/**
* id
*/
private Integer id;
/**
* 会议室id
*/
private Integer tbConferenceId;
/**
* 预约状态0未预定 1使用中 2已预订
*/
private Integer bookingStatus;
/**
* 审核状态0未审核 1通过 2未通过
*/
private Integer reviewStatus;
/**
* 会议预订人
*/
private String bookingName;
/**
* 使用单位
*/
private String userUnit;
/**
* 会议主题
*/
private String conferenceTheme;
/**
* 预约日期
*/
private Date appointmentDate;
/**
* 预约开始时段
*/
private LocalDateTime appointmentBeginTime;
/**
* 预约结束时段
*/
private LocalDateTime appointmentEndTime;
/**
* 参会人员
*/
private String attendeesName;
/**
* 参会人数
*/
private Integer approverCount;
/**
* 签到开始时间
*/
private LocalDateTime checkInStartTime;
/**
* 签到结束时间
*/
private LocalDateTime checkInEndTime;
/**
* 审批人
*/
private String approver;
/**
* 审批时间
*/
private LocalDateTime approverTime;
/**
* 评价
*/
private String evaluate;
/**
* 备注
*/
private String remark;
/**
* 是否需要增值服务0需要1不需要
*/
private Integer addServices;
/**
* 创建人id
*/
private Integer createById;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新人id
*/
private Integer updateById;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 数据状态(模拟删除 0未删除 1删除
*/
@TableLogic
private Integer dataStatus;
}

View File

@@ -0,0 +1,71 @@
package by.dimp.web.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
*
* @TableName tb_service_classification
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TbServiceClassification implements Serializable {
/**
* id
*/
private Integer id;
/**
* 分类
*/
@Length(max= 64,message="编码长度不能超过64")
private String type;
/**
* 分类名称
*/
@Length(max= 64,message="编码长度不能超过64")
private String name;
/**
* 排序
*/
private Integer sort;
/**
* 分类状态0禁用1启用
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
private String createBy;
/**
* 创建人id
*/
private Integer createById;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新人id
*/
private Integer updateById;
private List<TbCeremonialServe> ceremonialServeList;
}

View File

@@ -0,0 +1,108 @@
package by.dimp.web.model.entity;
import ch.qos.logback.core.joran.spi.NoAutoStart;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @TableName tb_visitor_management
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TbVisitorManagement implements Serializable {
/**
* id
*/
private Integer id;
/**
* 访客姓名
*/
@Length(max = 256, message = "编码长度不能超过256")
private String visitorName;
/**
* 访客电话
*/
private Integer visitorPhone;
/**
* 身份证号
*/
private String identityCard;
/**
* 拜访事由
*/
@Length(max = 256, message = "编码长度不能超过256")
private String visitingReason;
/**
* 拜访开始时间
*/
private LocalDateTime visitingBeginTime;
/**
* 拜访结束时间
*/
private LocalDateTime visitingEndTime;
/**
* 预约车位
*/
private Integer bookingParkingSpace;
/**
* 车牌号
*/
@Length(max = 256, message = "编码长度不能超过256")
private String licensePlate;
/**
* 人脸图片
*/
@Length(max = 256, message = "编码长度不能超过256")
private String facePictures;
/**
* 验证码
*/
private String verificationCode;
/**
* 预约状态(0待审核1待访问2已取消3已完成)
*/
private int serveStatus;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
@Length(max = 64, message = "编码长度不能超过64")
private String createBy;
/**
* 创建人id
*/
private Long createById;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新人
*/
@Length(max = 64, message = "编码长度不能超过64")
private String updateBy;
/**
* 更新人id
*/
private Long updateById;
}

View File

@@ -0,0 +1,53 @@
package by.dimp.web.service.E8Service.base;
import by.dimp.web.model.entity.E8.AreaInfo;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
* @author zcxlsm
* @title: AreaService
* @date 2025/5/9 15:22
*/
public interface AreaService {
/**
* 查询区域信息
*
* @param dto 传参
* @return ApiResp
*/
AreaInfo getAreaInfo(QueryDto dto);
/**
* 获取区域列表
*
* @param dto 传参
* @return ApiResp
*/
IPage<AreaInfo> getAreaList(QueryDto dto);
/**
* 新增区域
*
* @param dto 传参
* @return ApiResp
*/
Boolean addArea(QueryDto dto);
/**
* 修改区域
*
* @param dto 传参
* @return ApiResp
*/
Boolean updateArea(QueryDto dto);
/**
* 删除区域
*
* @param dto 传参
* @return ApiResp
*/
Boolean deleteArea(QueryDto dto);
}

View File

@@ -0,0 +1,50 @@
package by.dimp.web.service.E8Service.base;
import by.dimp.web.model.entity.E8.AuthGroupInfo;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
* @author zcxlsm
* @title: AuthGroupService
* @date 2025/5/9 17:48
*/
public interface AuthGroupService {
/**
* 权限组分页查询
*
* @param dto
* @return ApiResp
* @implNote 通过接口查询权限组列表信息,支持按权限组名称查询门禁权限和梯控权限
*/
IPage<AuthGroupInfo> getPageList(QueryDto dto);
/**
* 添加权限组
*
* @param dto
* @return ApiResp
* @implNote 通过接口新增权限组(门+电梯权限),仅支持单个新增
*/
Boolean addAuthGroup(QueryDto dto);
/**
* 修改权限组
*
* @param dto
* @return ApiResp
* @implNote 通过接口修改权限组的门/电梯权限
*/
Boolean updateAuthGroup(QueryDto dto);
/**
* 根据主键ID删除权限组
*
* @param dto
* @return ApiResp
* @implNote 通过接口删除权限组信息
*/
Boolean deleteAuthGroup(QueryDto dto);
}

View File

@@ -0,0 +1,53 @@
package by.dimp.web.service.E8Service.base;
import by.dimp.web.model.entity.E8.CustomerInfo;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
* @author zcxlsm
* @title: CustomerService
* @date 2025/5/9 14:49
*/
public interface CustomerService {
/**
* 查询单个人员信息
*
* @param dto
* @return ApiResp
*/
CustomerInfo selectCustomer(QueryDto dto);
/**
* 人员信息分页查询
*
* @param dto
* @return ApiResp
*/
IPage<CustomerInfo> selectCustomerList(QueryDto dto);
/**
* 新增人员信息
*
* @param dto
* @return ApiResp
*/
Boolean addCustomer(QueryDto dto);
/**
* 人员信息修改
*
* @param dto
* @return ApiResp
*/
Boolean updateCustomer(QueryDto dto);
/**
* 删除人员信息
*
* @param dto
* @return ApiResp
*/
Boolean deleteCustomer(QueryDto dto);
}

View File

@@ -0,0 +1,53 @@
package by.dimp.web.service.E8Service.base;
import by.dimp.web.model.entity.E8.DoorDeviceInfo;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
* @author zcxlsm
* @title: DoorDeviceService
* @date 2025/5/9 18:05
*/
public interface DoorDeviceService {
/**
* 查询门禁信息
*
* @param dto 入参
* @return DoorDeviceInfo
*/
DoorDeviceInfo selectDoorDevice(QueryDto dto);
/**
* 门禁信息分页查询
*
* @param dto 入参
* @return IPage<DoorDeviceInfo>
*/
IPage<DoorDeviceInfo> selectDoorDeviceList(QueryDto dto);
/**
* 新增门禁信息
*
* @param dto 入参
* @return Boolean
*/
Boolean addDoorDevice(QueryDto dto);
/**
* 门禁信息修改
*
* @param dto 入参
* @return Boolean
*/
Boolean updateDoorDevice(QueryDto dto);
/**
* 删除门禁信息
*
* @param dto 入参
* @return Boolean
*/
Boolean deleteDoorDevice(QueryDto dto);
}

View File

@@ -0,0 +1,53 @@
package by.dimp.web.service.E8Service.base;
import by.dimp.web.model.entity.E8.LiftInfo;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
* @author zcxlsm
* @title: LiftService
* @date 2025/5/9 18:04
*/
public interface LiftService {
/**
* 电梯信息分页查询
*
* @param dto
* @return IPage<LiftInfo>
*/
IPage<LiftInfo> getPageList(QueryDto dto);
/**
* 查询电梯楼层
*
* @param dto
* @return LiftInfo
*/
LiftInfo getLiftFloor(QueryDto dto);
/**
* 添加电梯
*
* @param dto
* @return Boolean
*/
Boolean addLift(QueryDto dto);
/**
* 修改电梯信息
*
* @param dto
* @return Boolean
*/
Boolean updateLift(QueryDto dto);
/**
* 删除电梯信息
*
* @param dto
* @return Boolean
*/
Boolean deleteLift(QueryDto dto);
}

View File

@@ -0,0 +1,155 @@
package by.dimp.web.service.E8Service.base.impl;
import by.dimp.web.service.E8Service.base.AreaService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import by.dimp.web.model.domain.E8.general.ApiResp;
import by.dimp.web.model.entity.E8.AreaInfo;
import by.dimp.web.utils.E8ApiUtils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @author zcxlsm
* @title: AreaServiceImpl
* @date 2025/5/9 9:27
*/
@Service
public class AreaServiceImpl implements AreaService {
private static final String AREA_GET_BY_ID = "/api/E8/area/{id}";
private static final String GET_AREA_LIST = "/api/E8/area/get-area-list";
private static final String ADD_AREA = "/api/E8/area";
private static final String UPDATE_AREA = "/api/E8/area/{id}/update";
private static final String DELETE_AREA = "/api/E8/area/{id}";
@Resource
private E8ApiUtils e8ApiUtils;
/**
* 查询区域信息
*
* @param dto 传参
* @return AreaInfo
*/
@Override
public AreaInfo getAreaInfo(QueryDto dto) {
// 将查询DTO转换为AreaInfo对象用于获取区域信息
AreaInfo areaInfo = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), AreaInfo.class);
// 构造获取区域信息的API路径替换路径中的{id}为实际的区域ID
String api = AREA_GET_BY_ID.replace("{id}", areaInfo.getAreaId().toString());
// 调用API接口发送GET请求获取区域信息
ApiResp apiResp = e8ApiUtils.doGetOrDel(api, null);
// 检查API响应是否成功
if (!apiResp.getSuccess()) {
return null;
}
// 将API响应结果转换为AreaInfo对象并返回
return JSONUtil.toBean(apiResp.getResult().toString(), AreaInfo.class);
}
/**
* 获取区域列表
*
* @param dto 传参
* @return IPage<AreaInfo>
*/
@Override
public IPage<AreaInfo> getAreaList(QueryDto dto) {
// 将查询DTO转换为Map对象以便作为API请求的参数
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 调用第三方API获取区域列表
ApiResp apiResp = e8ApiUtils.doPost(params, GET_AREA_LIST);
// 检查API响应是否成功
if (!apiResp.getSuccess()) {
return null;
}
// 将API响应结果转换为Map对象以便进一步处理
Map<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), Map.class);
// 初始化Page对象用于存储区域信息
IPage<AreaInfo> pageInfo = new Page<>();
// 设置总记录数
pageInfo.setTotal(Long.parseLong(result.get("total").toString()));
// 设置区域信息列表
pageInfo.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AreaInfo.class));
// 返回存储区域信息的Page对象
return pageInfo;
}
/**
* 新增区域
*
* @param dto 传参
* @return Boolean
*/
@Override
public Boolean addArea(QueryDto dto) {
// 将查询DTO转换为JSON字符串然后解析到Map对象中以备后续API调用使用
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 执行API调用传递转换后的参数和指定的API端点此处API端点为ADD_AREA
ApiResp apiResp = e8ApiUtils.doPost(params, ADD_AREA);
// 返回API调用是否成功的标志
return apiResp.getSuccess();
}
/**
* 修改区域
*
* @param dto 传参
* @return Boolean
*/
@Override
public Boolean updateArea(QueryDto dto) {
// 将查询DTO转换为AreaInfo对象用于后续的区域信息更新
AreaInfo areaInfo = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), AreaInfo.class);
// 构造更新区域信息的API路径{id}将被具体的区域ID替换
String api = UPDATE_AREA.replace("{id}", areaInfo.getAreaId().toString());
// 将AreaInfo对象转换为Map以便将其作为API请求的参数
Map<String, Object> params = BeanUtil.beanToMap(areaInfo);
// 调用API工具类的POST方法发送更新请求并获取API响应对象
ApiResp apiResp = e8ApiUtils.doPost(params, api);
// 返回API调用是否成功的标志
return apiResp.getSuccess();
}
/**
* 删除区域
*
* @param dto 传参
* @return Boolean
*/
public Boolean deleteArea(QueryDto dto) {
// 将查询DTO转换为AreaInfo对象用于获取区域信息
AreaInfo areaInfo = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), AreaInfo.class);
// 构造删除区域的API路径替换{id}为实际的区域ID
String api = DELETE_AREA.replace("{id}", areaInfo.getAreaId().toString());
// 调用API工具类的删除方法执行删除操作
ApiResp apiResp = e8ApiUtils.doGetOrDel(api, null);
// 返回删除操作是否成功的标志
return apiResp.getSuccess();
}
}

View File

@@ -0,0 +1,132 @@
package by.dimp.web.service.E8Service.base.impl;
import by.dimp.web.model.entity.E8.AuthGroupInfo;
import by.dimp.web.service.E8Service.base.AuthGroupService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import by.dimp.web.model.domain.E8.general.ApiResp;
import by.dimp.web.utils.E8ApiUtils;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @author zcxlsm
* @title: AuthGroupServiceImpl
* @date 2025/5/8 17:34
*/
@Service
public class AuthGroupServiceImpl implements AuthGroupService {
private static final String GET_PAGE_LIST = "/api/E8Door/man-auth-group/get-page-list";
private static final String AUTH_GROUP_ADD = "/api/E8Door/man-auth-group";
private static final String AUTH_GROUP_UPDATE = "/api/E8Door/man-auth-group/{id}/update";
private static final String AUTH_GROUP_DELETE = "/api/E8Door/man-auth-group/{id}";
@Resource
private E8ApiUtils e8ApiUtils;
/**
* 权限组分页查询
*
* @param dto 入参
* @return ApiResp
* @implNote 通过接口查询权限组列表信息,支持按权限组名称查询门禁权限和梯控权限
*/
@Override
public IPage<AuthGroupInfo> getPageList(QueryDto dto) {
// 创建一个参数映射用于存储API请求所需的参数
Map<String, Object> params = new HashMap<>();
// 将页码信息添加到参数映射中
params.put("pageIndex", dto.getPageIndex());
// 将最大结果数添加到参数映射中
params.put("maxResultCount", dto.getMaxResultCount());
// 将查询DTO转换为JSON字符串再转换为Map对象并添加到参数映射中
params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class));
// 调用API工具类的POST方法传入参数和API路径获取API响应对象
ApiResp apiResp = e8ApiUtils.doPost(params, GET_PAGE_LIST);
// 如果API响应不成功则返回null
if (!apiResp.getSuccess()) {
return null;
}
// 将API响应的结果转换为JSON字符串再转换为Map对象以便于后续处理
Map<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), Map.class);
// 创建一个分页信息对象,传入页码和最大结果数
IPage<AuthGroupInfo> pageInfo = new Page<>(dto.getPageIndex(), dto.getMaxResultCount());
// 设置总记录数
pageInfo.setTotal(Long.parseLong(result.get("total").toString()));
// 将结果中的项转换为JSON字符串再转换为AuthGroupInfo对象列表并设置到分页信息中
pageInfo.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AuthGroupInfo.class));
// 返回分页信息对象
return pageInfo;
}
/**
* 添加权限组
*
* @param dto 入参
* @return ApiResp
* @implNote 通过接口新增权限组(门+电梯权限),仅支持单个新增
*/
@Override
public Boolean addAuthGroup(QueryDto dto) {
// 将查询对象转换为JSON字符串然后解析到一个Map对象中以便作为API请求的参数
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 调用第三方API进行授权组添加操作
ApiResp apiResp = e8ApiUtils.doPost(params, AUTH_GROUP_ADD);
// 返回操作是否成功的标识
return apiResp.getSuccess();
}
/**
* 修改权限组
*
* @param dto 入参
* @return ApiResp
* @implNote 通过接口修改权限组的门/电梯权限
*/
@Override
public Boolean updateAuthGroup(QueryDto dto) {
// 将查询对象转换为Map类型参数以便于后续API调用
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 构造更新授权组的URL其中{id}将被参数中的id值替换
String url = AUTH_GROUP_UPDATE.replace("{id}", params.get("id").toString());
// 发起API调用传递参数和构造好的URL并获取API响应对象
ApiResp apiResp = e8ApiUtils.doPost(params, url);
// 返回API调用是否成功的标志
return apiResp.getSuccess();
}
/**
* 根据主键ID删除权限组
*
* @param dto 入参
* @return ApiResp
* @implNote 通过接口删除权限组信息
*/
@Override
public Boolean deleteAuthGroup(QueryDto dto) {
// 将查询对象转换为Map类型参数以便于后续操作
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 构造删除授权组的URL其中{id}将被参数中的id值替换
String url = AUTH_GROUP_DELETE.replace("{id}", params.get("id").toString());
// 调用API进行删除操作传入构造的URL和null作为第二个参数因为此操作不需要额外参数
ApiResp apiResp = e8ApiUtils.doGetOrDel(url, null);
// 返回API调用是否成功的标志
return apiResp.getSuccess();
}
}

View File

@@ -0,0 +1,154 @@
package by.dimp.web.service.E8Service.base.impl;
import by.dimp.web.service.E8Service.base.CustomerService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import by.dimp.web.model.domain.E8.general.ApiResp;
import by.dimp.web.model.entity.E8.CustomerInfo;
import by.dimp.web.utils.E8ApiUtils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @author zcxlsm
* @title: CustomerServiceImpl
* @date 2025/5/8 17:31
*/
@Service
public class CustomerServiceImpl implements CustomerService {
private final static String CUSTOMER_GET_PAGE_LIST = "/api/E8/customer/get-page-list";
private final static String CUSTOMER_GET_FIRST_OR_DEFAULT = "/api/E8/customer/get-first-or-default";
private final static String CUSTOMER_CREATE = "/api/E8/customer";
private final static String CUSTOMER_UPDATE = "/api/E8/customer/{id}/update";
private final static String CUSTOMER_DELETE = "/api/E8/customer/{id}";
@Resource
private E8ApiUtils e8ApiUtils;
/**
* 查询单个人员信息
*
* @param dto 传参
* @return CustomerInfo
*/
@Override
public CustomerInfo selectCustomer(QueryDto dto) {
// 将查询DTO转换为Map参数以便进行API请求
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 调用API接口获取客户信息
ApiResp apiResp = e8ApiUtils.doPost(params, CUSTOMER_GET_FIRST_OR_DEFAULT);
// 检查API响应是否成功
if (!apiResp.getSuccess()) {
// 如果API调用失败返回null
return null;
}
// 将API响应结果转换为CustomerInfo对象并返回
return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), CustomerInfo.class);
}
/**
* 人员信息分页查询
*
* @param dto 传参
* @return IPage<CustomerInfo>
*/
@Override
public IPage<CustomerInfo> selectCustomerList(QueryDto dto) {
// 创建参数映射用于存储HTTP请求的参数
Map<String, Object> params = new HashMap<>();
// 添加分页参数:当前页码和最大结果数量
params.put("pageIndex", dto.getPageIndex());
params.put("maxResultCount", dto.getMaxResultCount());
// 将查询条件对象转换为JSON字符串并再次转换为Map对象然后添加到参数映射中
params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class));
// 调用API工具类的POST方法发送请求到第三方API并获取响应结果
ApiResp apiResp = e8ApiUtils.doPost(params, CUSTOMER_GET_PAGE_LIST);
// 如果API响应不成功返回null
if (!apiResp.getSuccess()) {
return null;
}
// 将API响应结果转换为Map对象以便于后续处理
Map<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), Map.class);
// 创建一个分页对象,用于存储客户信息列表和分页数据
IPage<CustomerInfo> pageInfo = new Page<>(dto.getPageIndex(), dto.getMaxResultCount());
// 设置总记录数
pageInfo.setTotal(Long.parseLong(result.get("total").toString()));
// 将API响应结果中的客户信息列表转换为CustomerInfo对象列表并设置到分页对象中
pageInfo.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), CustomerInfo.class));
// 返回分页对象
return pageInfo;
}
/**
* 新增人员信息
*
* @param dto 传参
* @return Boolean
*/
@Override
public Boolean addCustomer(QueryDto dto) {
// 将查询DTO转换为JSON字符串然后解析到Map对象中以便作为API请求的参数
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 执行API请求传入参数和指定的API类型CUSTOMER_CREATE并获取API响应对象
ApiResp apiResp = e8ApiUtils.doPost(params, CUSTOMER_CREATE);
// 返回API请求是否成功的标志
return apiResp.getSuccess();
}
/**
* 人员信息修改
*
* @param dto 传参
* @return Boolean
*/
@Override
public Boolean updateCustomer(QueryDto dto) {
// 将查询DTO转换为CustomerInfo对象以便进行后续操作
CustomerInfo customer = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), CustomerInfo.class);
// 构造更新客户的API路径使用客户ID替换占位符
String api = CUSTOMER_UPDATE.replace("{id}", customer.getId().toString());
// 将CustomerInfo对象转换为Map以符合API请求参数的格式
Map<String, Object> params = BeanUtil.beanToMap(customer);
// 调用API进行客户信息更新并返回操作是否成功的标志
ApiResp apiResp = e8ApiUtils.doPost(params, api);
// 返回API响应的成功标志表示客户信息是否成功更新
return apiResp.getSuccess();
}
/**
* 删除人员信息
*
* @param dto 传参
* @return Boolean
*/
@Override
public Boolean deleteCustomer(QueryDto dto) {
// 将查询DTO转换为CustomerInfo对象以便获取客户信息
CustomerInfo customer = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), CustomerInfo.class);
// 构造删除客户的API路径替换{id}为实际的客户ID
String api = CUSTOMER_DELETE.replace("{id}", customer.getId().toString());
// 调用API处理删除操作并返回删除结果的成功状态
ApiResp apiResp = e8ApiUtils.doGetOrDel(api, null);
return apiResp.getSuccess();
}
}

View File

@@ -0,0 +1,155 @@
package by.dimp.web.service.E8Service.base.impl;
import by.dimp.web.service.E8Service.base.DoorDeviceService;
import by.dimp.web.model.domain.E8.general.QueryDto;
import by.dimp.web.model.domain.E8.general.ApiResp;
import by.dimp.web.model.entity.E8.DoorDeviceInfo;
import by.dimp.web.utils.E8ApiUtils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @author zcxlsm
* @title: DoorDeviceServiceImpl
* @date 2025/5/8 18:12
*/
@Service
public class DoorDeviceServiceImpl implements DoorDeviceService {
private final static String DOOR_DEVICE_GET_PAGE_LIST = "/api/E8Door/man-device-info/get-page-list";
private final static String DOOR_DEVICE_GET_FIRST_OR_DEFAULT = "/api/E8Door/man-device-info/{id}";
private final static String DOOR_DEVICE_CREATE = "/api/E8Door/man-device-info";
private final static String DOOR_DEVICE_UPDATE = "/api/E8Door/man-device-info/{id}/update";
private final static String DOOR_DEVICE_DELETE = "/api/E8Door/man-device-info/{id}";
@Resource
private E8ApiUtils e8ApiUtils;
/**
* 查询门禁信息
*
* @param dto
* @return DoorDeviceInfo
*/
@Override
public DoorDeviceInfo selectDoorDevice(QueryDto dto) {
// 将查询DTO转换为Map对象以便作为API请求的参数
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 调用第三方API获取门禁设备信息
ApiResp apiResp = e8ApiUtils.doPost(params, DOOR_DEVICE_GET_FIRST_OR_DEFAULT);
// 检查API响应是否成功
if (!apiResp.getSuccess()) {
return null;
}
// 将API响应结果转换为门禁设备信息对象并返回
return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), DoorDeviceInfo.class);
}
/**
* 门禁信息分页查询
*
* @param dto
* @return IPage<DoorDeviceInfo>
*/
@Override
public IPage<DoorDeviceInfo> selectDoorDeviceList(QueryDto dto) {
// 创建一个参数映射用于存储API请求所需的参数
Map<String, Object> params = new HashMap<>();
// 将分页索引和最大结果数放入参数映射中
params.put("pageIndex", dto.getPageIndex());
params.put("maxResultCount", dto.getMaxResultCount());
// 将查询DTO转换为JSON字符串再转换为Map对象然后放入参数映射中
params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class));
// 调用第三方API获取门禁设备分页列表
ApiResp apiResp = e8ApiUtils.doPost(params, DOOR_DEVICE_GET_PAGE_LIST);
// 如果API调用不成功则返回null
if (!apiResp.getSuccess()) {
return null;
}
// 将API响应结果转换为Map对象以便后续处理
Map<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), Map.class);
// 创建一个分页对象,用于存储处理后的门禁设备信息
IPage<DoorDeviceInfo> page = new Page<>(dto.getPageIndex(), dto.getMaxResultCount());
// 设置分页对象的总记录数
page.setTotal(Long.parseLong(result.get("total").toString()));
// 将API响应结果中的门禁设备信息列表转换为DoorDeviceInfo对象列表并设置到分页对象中
page.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), DoorDeviceInfo.class));
// 返回处理后的分页对象
return page;
}
/**
* 新增门禁信息
*
* @param dto
* @return Boolean
*/
@Override
public Boolean addDoorDevice(QueryDto dto) {
// 将查询DTO转换为JSON字符串然后转为Map对象以便作为API请求的参数
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 调用第三方API进行门禁设备创建并传入转换后的参数
ApiResp apiResp = e8ApiUtils.doPost(params, DOOR_DEVICE_CREATE);
// 返回API调用是否成功的标志
return apiResp.getSuccess();
}
/**
* 门禁信息修改
*
* @param dto
* @return Boolean
*/
@Override
public Boolean updateDoorDevice(QueryDto dto) {
// 将查询DTO转换为门设备信息对象
DoorDeviceInfo doorDeviceInfo = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), DoorDeviceInfo.class);
// 构造门设备更新API的URL
String api = DOOR_DEVICE_UPDATE.replace("{id}", doorDeviceInfo.getId().toString());
// 将门设备信息对象转换为键值对形式的参数
Map<String, Object> params = BeanUtil.beanToMap(doorDeviceInfo);
// 调用API进行门设备信息更新
ApiResp apiResp = e8ApiUtils.doPost(params, api);
// 返回API调用是否成功的结果
return apiResp.getSuccess();
}
/**
* 删除门禁信息
*
* @param dto
* @return Boolean
*/
@Override
public Boolean deleteDoorDevice(QueryDto dto) {
// 将查询DTO转换为门设备信息对象
DoorDeviceInfo doorDeviceInfo = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), DoorDeviceInfo.class);
// 构造删除门设备的API路径使用设备ID替换占位符
String api = DOOR_DEVICE_DELETE.replace("{id}", doorDeviceInfo.getId().toString());
// 调用E8 API工具类进行HTTP DELETE请求参数为构造的API路径和null因为DELETE请求通常不需要请求体
ApiResp apiResp = e8ApiUtils.doGetOrDel(api, null);
// 返回API响应的成功标志
return apiResp.getSuccess();
}
}

View File

@@ -0,0 +1,158 @@
package by.dimp.web.service.E8Service.base.impl;
import by.dimp.web.service.E8Service.base.LiftService;
import by.dimp.web.model.domain.E8.general.ApiResp;
import by.dimp.web.model.domain.E8.general.QueryDto;
import by.dimp.web.model.entity.E8.LiftInfo;
import by.dimp.web.utils.E8ApiUtils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @author zcxlsm
* @title: LiftServiceImpl
* @date 2025/5/9 11:52
*/
@Service
public class LiftServiceImpl implements LiftService {
private static final String GET_PAGE_LIST = "/api/E8Door/man-elevator-management/get-page-list";
private static final String GET_LIFT_FLOOR = "/api/E8Door/man-elevator-management/{id}/get-man-elevator-floors";
private static final String LIFT_ADD = "/api/E8Door/man-elevator-management";
private static final String LIFT_UPDATE = "/api/E8Door/man-elevator-management/{id}/update";
private static final String LIFT_DELETE = "/api/E8Door/man-elevator-management/{id}";
@Resource
private E8ApiUtils e8ApiUtils;
/**
* 电梯信息分页查询
*
* @param dto
* @return IPage<LiftInfo>
*/
@Override
public IPage<LiftInfo> getPageList(QueryDto dto) {
// 创建一个参数映射用于存储API请求所需的参数
Map<String, Object> params = new HashMap<>();
// 将分页索引和最大结果数放入参数映射中
params.put("pageIndex", dto.getPageIndex());
params.put("maxResultCount", dto.getMaxResultCount());
// 将查询DTO转换为LiftInfo对象并将其添加到参数映射中
params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), LiftInfo.class));
// 调用E8 API工具类的POST方法传入参数和API路径获取API响应
ApiResp apiResp = e8ApiUtils.doPost(params, GET_PAGE_LIST);
// 如果API响应不成功则返回null
if(!apiResp.getSuccess()){
return null;
}
// 将API响应的结果转换为一个Map对象
Map<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), Map.class);
// 创建一个分页对象,传入分页索引和最大结果数
IPage<LiftInfo> page = new Page<>(dto.getPageIndex(), dto.getMaxResultCount());
// 设置分页对象的总记录数
page.setTotal(Long.parseLong(result.get("total").toString()));
// 将结果中的项转换为LiftInfo列表并设置为分页对象的记录
page.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), LiftInfo.class));
// 返回填充了数据的分页对象
return page;
}
/**
* 查询电梯楼层
*
* @param dto
* @return LiftInfo
*/
@Override
public LiftInfo getLiftFloor(QueryDto dto) {
// 将查询DTO转换为LiftInfo对象以便后续使用
LiftInfo liftInfo = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), LiftInfo.class);
// 构造请求URL其中{id}将被liftInfo的ID替换
String url = GET_LIFT_FLOOR.replace("{id}", liftInfo.getId().toString());
// 调用API接口获取电梯信息
ApiResp apiResp = e8ApiUtils.doPost(null, url);
// 如果API调用不成功则返回null
if(!apiResp.getSuccess()){
return null;
}
// 将API响应结果转换为LiftInfo对象并返回
return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), LiftInfo.class);
}
/**
* 添加电梯
*
* @param dto
* @return Boolean
*/
@Override
public Boolean addLift(QueryDto dto) {
// 将查询DTO转换为JSON字符串然后转为Map对象以便作为API请求的参数
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 调用第三方API进行电梯添加操作并获取API响应结果
ApiResp apiResp = e8ApiUtils.doPost(params, LIFT_ADD);
// 返回API操作是否成功的标志
return apiResp.getSuccess();
}
/**
* 修改电梯信息
*
* @param dto
* @return Boolean
*/
@Override
public Boolean updateLift(QueryDto dto) {
// 将DTO中的查询对象转换为LiftInfo对象
LiftInfo liftInfo = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), LiftInfo.class);
// 根据LiftInfo对象中的ID生成请求URL
String url = LIFT_UPDATE.replace("{id}", liftInfo.getId().toString());
// 将LiftInfo对象转换为Map类型以便于API请求参数的处理
Map<String, Object> params = BeanUtil.beanToMap(liftInfo);
// 调用E8 API进行POST请求并返回API响应对象
ApiResp apiResp = e8ApiUtils.doPost(params, url);
// 返回API调用是否成功的标志
return apiResp.getSuccess();
}
/**
* 删除电梯信息
*
* @param dto
* @return Boolean
*/
@Override
public Boolean deleteLift(QueryDto dto) {
// 将DTO中的查询信息转换为LiftInfo对象以便获取具体的电梯信息
LiftInfo liftInfo = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), LiftInfo.class);
// 构造删除电梯的API请求URL使用LiftInfo对象中的ID替换模板中的{id}占位符
String url = LIFT_DELETE.replace("{id}", liftInfo.getId().toString());
// 调用e8ApiUtils工具类执行DELETE请求并获取API响应结果
ApiResp apiResp = e8ApiUtils.doGetOrDel(url, null);
// 返回API响应中的成功标志表示删除操作是否成功
return apiResp.getSuccess();
}
}

View File

@@ -0,0 +1,45 @@
package by.dimp.web.service.E8Service.service;
import by.dimp.web.model.entity.E8.AccessRecordInfo;
import by.dimp.web.model.domain.E8.general.QueryDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
* @author zcxlsm
* @title: EntranceGuardService
* @date 2025/5/9 18:06
*/
public interface EntranceGuardService {
/**
* 远程开门
*
* @param dto
* @return Boolean
*/
Boolean remoteOpenDoor(QueryDto dto);
/**
* 获取通行记录分页列表
*
* @param dto
* @return IPage<AccessRecordInfo>
*/
IPage<AccessRecordInfo> getPageAccessRecordList(QueryDto dto);
/**
* 人员授权
*
* @param dto
* @return Boolean
*/
Boolean addAccessControl(QueryDto dto);
// /**
// * 获取人员权限分页列表
// *
// * @param dto
// * @return ApiResp
// */
// IPage getPageAccessControl(QueryDto dto);
}

View File

@@ -0,0 +1,130 @@
package by.dimp.web.service.E8Service.service.impl;
import by.dimp.web.model.entity.E8.AccessRecordInfo;
import by.dimp.web.model.domain.E8.general.QueryDto;
import by.dimp.web.model.domain.E8.general.ApiResp;
import by.dimp.web.service.E8Service.service.EntranceGuardService;
import by.dimp.web.utils.E8ApiUtils;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @author zcxlsm
* @title: EntranceGuardServiceImpl
* @date 2025/5/8 17:43
*/
@Service
public class EntranceGuardServiceImpl implements EntranceGuardService {
// 远程开门
private static final String REMOTE_OPEN_DOOR = "/api/E8Door/man-device-info/device-control";
// 获取通行记录分页列表
private static final String GET_PAGE_ACCESS_RECORD_PAGE_LIST = "/api/E8Door/man-pass-record/get-page-list";
// 人员授权
private static final String PERSON_AUTHORIZATION = "/api/E8Door/man-auth-info/auth-info-by-type";
// 获取人员权限分页列表
private static final String GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST = "/api/E8Door/man-person-device-finally/get-page-list";
@Resource
private E8ApiUtils e8ApiUtils;
/**
* 远程开门
*
* @param dto
* @return Boolean
*/
@Override
public Boolean remoteOpenDoor(QueryDto dto) {
// 将查询DTO转换为JSON字符串然后解析为Map对象以便作为API请求的参数
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 调用第三方API进行开门操作传入处理后的参数和指定的API端点
ApiResp apiResp = e8ApiUtils.doPost(params, REMOTE_OPEN_DOOR);
// 返回API调用是否成功的结果
return apiResp.getSuccess();
}
/**
* 获取通行记录分页列表
*
* @param dto
* @return IPage<AccessRecordInfo>
*/
@Override
public IPage<AccessRecordInfo> getPageAccessRecordList(QueryDto dto) {
// 创建一个参数映射用于存储API请求的参数
Map<String, Object> params = new HashMap<>();
// 将分页索引和最大结果数放入参数映射中
params.put("pageIndex", dto.getPageIndex());
params.put("maxResultCount", dto.getMaxResultCount());
// 将查询DTO转换为JSON字符串再转换为Map对象然后放入参数映射中
params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class));
// 调用API工具类的POST方法传入参数和API路径获取API响应对象
ApiResp apiResp = e8ApiUtils.doPost(params, GET_PAGE_ACCESS_RECORD_PAGE_LIST);
// 如果API响应不成功则返回null
if (!apiResp.getSuccess()) {
return null;
}
// 将API响应的结果转换为JSON字符串再转换为Map对象
Map<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), Map.class);
// 创建一个分页对象,传入分页索引和最大结果数
IPage<AccessRecordInfo> page = new Page<>(dto.getPageIndex(), dto.getMaxResultCount());
// 从结果映射中获取总记录数,转换为长整型后设置到分页对象中
page.setTotal(Long.parseLong(result.get("total").toString()));
// 从结果映射中获取项目列表,转换为访问记录信息列表后设置到分页对象中
page.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AccessRecordInfo.class));
// 返回填充了数据的分页对象
return page;
}
/**
* 人员授权
*
* @param dto
* @return ApiResp
*/
@Override
public Boolean addAccessControl(QueryDto dto) {
// 将查询DTO转换为JSON字符串然后解析到Map中以便作为API请求的参数
Map<String, Object> params = JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class);
// 执行API请求并获取响应结果
ApiResp apiResp = e8ApiUtils.doPost(params, PERSON_AUTHORIZATION);
// 返回API请求是否成功的标志
return apiResp.getSuccess();
}
// /**
// * 获取人员权限分页列表
// *
// * @param dto
// * @return ApiResp
// */
// public ApiResp getPageAccessControl(QueryDto dto) {
// Map<String, Object> params = new HashMap<>();
// params.put("pageIndex", dto.getPageIndex());
// params.put("maxResultCount", dto.getMaxResultCount());
// params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), Map.class));
//
// ApiResp apiResp = e8ApiUtils.doPost(params, GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST);
//
// return e8ApiUtils.doPost(params, GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST);
// }
}

View File

@@ -0,0 +1,11 @@
package by.dimp.web.service.admin;
import by.dimp.web.model.domain.attendanceStatistics.req.AttendanceStatisticsQueryReq;
import by.dimp.web.model.domain.attendanceStatistics.res.AttendanceStatisticsRes;
public interface ITbAttendanceStatisticsService {
AttendanceStatisticsRes pageQuery(AttendanceStatisticsQueryReq query);
int export();
}

View File

@@ -0,0 +1,36 @@
package by.dimp.web.service.admin;
import by.dimp.web.model.domain.ceremonialServe.req.CeremonialServePageQueryReq;
import by.dimp.web.model.domain.ceremonialServe.req.CeremonialServeReq;
import by.dimp.web.model.domain.ceremonialServe.res.CeremonialServeRes;
import com.baomidou.mybatisplus.core.metadata.IPage;
public interface ITbCeremonialServeService {
/**
* 分页查询会议服务的预订信息
* @param pageQueryReq
* @return
*/
IPage<CeremonialServeRes> pageQuery(CeremonialServePageQueryReq pageQueryReq);
/**
* 新增会议服务的预订信息
* @param ceremonialServeReq
* @return
*/
int addCeremonialServe(CeremonialServeReq ceremonialServeReq);
/**
* 删除会议服务的预订信息
* @param id
* @return
*/
int deleteCeremonialServe(Integer id);
/**
* 服务预订信息的确认
* @param ceremonialServeReq
* @return
*/
int confirm(CeremonialServeReq ceremonialServeReq);
}

Some files were not shown because too many files have changed in this diff Show More