feat:Init project
This commit is contained in:
+37
@@ -0,0 +1,37 @@
|
|||||||
|
# Maven
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
pom.xml.tag
|
||||||
|
pom.xml.releaseBackup
|
||||||
|
pom.xml.versionsBackup
|
||||||
|
pom.xml.next
|
||||||
|
release.properties
|
||||||
|
dependency-reduced-pom.xml
|
||||||
|
buildNumber.properties
|
||||||
|
.mvn/timing.properties
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
*.iml
|
||||||
|
*.iws
|
||||||
|
*.ipr
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
ops_runtime/logs/
|
||||||
|
|
||||||
|
# OS
|
||||||
|
Thumbs.db
|
||||||
|
desktop.ini
|
||||||
|
|
||||||
|
# Application specific
|
||||||
|
serviceKey.json
|
||||||
|
**/config/service/serviceKey.json
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# SVN (if exists)
|
||||||
|
.svn/
|
||||||
|
svn.url
|
||||||
@@ -0,0 +1,236 @@
|
|||||||
|
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.sjmresorts</groupId>
|
||||||
|
<artifactId>auto-check-in-backend</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>auto-check-in-backend</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<java.version>21</java.version>
|
||||||
|
<logback.version>1.5.20</logback.version>
|
||||||
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>3.5.7</version>
|
||||||
|
<relativePath/>
|
||||||
|
</parent>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-mail</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-validation</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-aop</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-devtools</artifactId>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<version>${logback.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-core</artifactId>
|
||||||
|
<version>${logback.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.retry</groupId>
|
||||||
|
<artifactId>spring-retry</artifactId>
|
||||||
|
<version>2.0.12</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springdoc</groupId>
|
||||||
|
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
|
||||||
|
<version>2.8.11</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mapstruct</groupId>
|
||||||
|
<artifactId>mapstruct</artifactId>
|
||||||
|
<version>1.6.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok-mapstruct-binding</artifactId>
|
||||||
|
<version>0.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mapstruct</groupId>
|
||||||
|
<artifactId>mapstruct-processor</artifactId>
|
||||||
|
<version>1.6.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.microsoft.sqlserver</groupId>
|
||||||
|
<artifactId>mssql-jdbc</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mysql</groupId>
|
||||||
|
<artifactId>mysql-connector-j</artifactId>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.fastjson2</groupId>
|
||||||
|
<artifactId>fastjson2</artifactId>
|
||||||
|
<version>2.0.58</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>3.18.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents.client5</groupId>
|
||||||
|
<artifactId>httpclient5</artifactId>
|
||||||
|
<version>5.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.pdfbox</groupId>
|
||||||
|
<artifactId>pdfbox</artifactId>
|
||||||
|
<version>3.0.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.sourceforge.tess4j</groupId>
|
||||||
|
<artifactId>tess4j</artifactId>
|
||||||
|
<version>5.11.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.auth0</groupId>
|
||||||
|
<artifactId>java-jwt</artifactId>
|
||||||
|
<version>4.5.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<!-- JAXB API (Java 8及之前版本需要) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-api</artifactId>
|
||||||
|
<version>2.3.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish.jaxb</groupId>
|
||||||
|
<artifactId>jaxb-runtime</artifactId>
|
||||||
|
<version>4.0.5</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- Firebase -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.firebase</groupId>
|
||||||
|
<artifactId>firebase-admin</artifactId>
|
||||||
|
<version>9.5.0</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- LDAP -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-data-ldap</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- SMBJ for SMB/CIFS network file access -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.hierynomus</groupId>
|
||||||
|
<artifactId>smbj</artifactId>
|
||||||
|
<version>0.13.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>${java.version}</source>
|
||||||
|
<target>${java.version}</target>
|
||||||
|
<verbose>true</verbose>
|
||||||
|
<annotationProcessorPaths>
|
||||||
|
<path>
|
||||||
|
<groupId>org.mapstruct</groupId>
|
||||||
|
<artifactId>mapstruct-processor</artifactId>
|
||||||
|
<version>1.6.3</version>
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok-mapstruct-binding</artifactId>
|
||||||
|
<version>0.2.0</version>
|
||||||
|
</path>
|
||||||
|
</annotationProcessorPaths>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
<configuration>
|
||||||
|
<jvmArguments>-Xms512m -Xmx1536m -XX:MaxMetaspaceSize=256m -XX:ReservedCodeCacheSize=128m</jvmArguments>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
<mainClass>com.sjmresorts.opsapp.MainApplication</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.sjmresorts.opsapp;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.boot.web.servlet.ServletComponentScan;
|
||||||
|
import org.springframework.data.web.config.EnableSpringDataWebSupport;
|
||||||
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
@ServletComponentScan
|
||||||
|
@EnableScheduling
|
||||||
|
@EnableAsync
|
||||||
|
@EnableSpringDataWebSupport(pageSerializationMode = EnableSpringDataWebSupport.PageSerializationMode.VIA_DTO)
|
||||||
|
public class MainApplication{
|
||||||
|
|
||||||
|
public static void main( String[] args ) {
|
||||||
|
SpringApplication.run(MainApplication.class, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.controllers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.appsetting.AdminDevicesInfoPageRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.appsetting.AdminDevicesInfoPageResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.appsetting.AdminGetClientInfosResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.appsetting.ClientInfosDto;
|
||||||
|
import com.sjmresorts.opsapp.admin.services.AdminDevicesService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@Tag(name = "CMS", description = "APIs for Admin Devices functions")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/admin")
|
||||||
|
public class AdminDevicesController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminDevicesService adminDeviceService;
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Query CMS devices info page",
|
||||||
|
description = "API for query CMS devices info page"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS devices info page queried successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/devices/queryPage", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminDevicesInfoPageResponse> getAppDevicesByPage(HttpServletRequest request,
|
||||||
|
|
||||||
|
@RequestBody(required = true) AdminDevicesInfoPageRequest pageRequest) {
|
||||||
|
|
||||||
|
DataTableResult<ClientInfosDto> devicesInfoList = adminDeviceService.getDevicesInfoListByPage(pageRequest);
|
||||||
|
AdminDevicesInfoPageResponse devicesInfoResponse = new AdminDevicesInfoPageResponse();
|
||||||
|
devicesInfoResponse.setCode("200");
|
||||||
|
devicesInfoResponse.setSuccess(true);
|
||||||
|
devicesInfoResponse.setMessage("Query Successfully");
|
||||||
|
devicesInfoResponse.setData(devicesInfoList);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(devicesInfoResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Update CMS devices info",
|
||||||
|
description = "API for CMS devices info update"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS devices info updated successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/devices/update", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<BaseApiResponse> updateDevice(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@RequestBody ClientInfosDto requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if (loginUserInfo == null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
} else {
|
||||||
|
BaseApiResponse responseData = adminDeviceService.updateDevice(requestData, loginUserInfo);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Get one CMS devices info",
|
||||||
|
description = "API for get one CMS devices info"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS devices info got successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@GetMapping(value = "/devices/{deviceId}", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminGetClientInfosResponse> getAppDeviceById(
|
||||||
|
@PathVariable(name = "deviceId", required = true) @NotNull Long deviceId) {
|
||||||
|
|
||||||
|
AdminGetClientInfosResponse responseData = new AdminGetClientInfosResponse();
|
||||||
|
ClientInfosDto deviceDto = adminDeviceService.queryDeviceById(deviceId);
|
||||||
|
responseData.setCode("200");
|
||||||
|
responseData.setSuccess(deviceDto != null);
|
||||||
|
responseData.setMessage(deviceDto != null ? "Query Successfully" : "Device does not exists");
|
||||||
|
responseData.setData(deviceDto);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.controllers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.login.AdminLoginRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.login.AdminLoginResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.login.AdminLogoutResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.login.CmsLoginInfo;
|
||||||
|
import com.sjmresorts.opsapp.admin.services.AdminLoginService;
|
||||||
|
import com.sjmresorts.opsapp.common.constants.AppConstants;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.RefreshTokenResponse;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.UserToken;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.UserTokenService;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
@Tag(name = "CMS", description = "APIs for CMS administration")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/admin")
|
||||||
|
@CrossOrigin(origins = "*")
|
||||||
|
public class AdminLoginController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminLoginService adminLoginService;
|
||||||
|
@Resource
|
||||||
|
private UserTokenService userTokenService;
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Login",
|
||||||
|
description = "API for CMS login with input ad account and password"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Check ad login success")
|
||||||
|
})
|
||||||
|
@PostMapping(value="/login",produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminLoginResponse> cmsLogin(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "login request info", required = true) @Valid @RequestBody AdminLoginRequest requestData){
|
||||||
|
AdminLoginResponse result = new AdminLoginResponse();
|
||||||
|
String passwordVal = requestData.getPassword();
|
||||||
|
if(StringUtils.isNotBlank(passwordVal)) {
|
||||||
|
passwordVal =new String(Base64.getDecoder().decode(passwordVal.getBytes()));
|
||||||
|
}
|
||||||
|
int isCheckLogin;
|
||||||
|
try{
|
||||||
|
isCheckLogin = adminLoginService.checkLoginByLoginIdAndPassword(requestData.getUserCode(), passwordVal);
|
||||||
|
} catch (Exception e) {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode("500");
|
||||||
|
result.setMessage(e.getCause().toString());
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isCheckLogin >= 1) {
|
||||||
|
CmsLoginInfo loginInfo;
|
||||||
|
try{
|
||||||
|
loginInfo = adminLoginService.getLoginUserInfoByEmployeeId(requestData.getUserCode());
|
||||||
|
} catch (Exception e) {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode("500");
|
||||||
|
result.setMessage(e.getCause().toString());
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(result);
|
||||||
|
}
|
||||||
|
if (loginInfo != null && loginInfo.getLoginUser()!=null) {
|
||||||
|
userTokenService.clearUserTokenByType(AppConstants.CMS_API_ACCESS_TOKEN_TYPE,requestData.getUserCode());
|
||||||
|
userTokenService.clearUserTokenByType(AppConstants.CMS_REFRESH_TOKEN_TYPE,requestData.getUserCode());
|
||||||
|
LoginUserInfo loginUser = loginInfo.getLoginUser();
|
||||||
|
loginUser.setLoginSource("cms_login");
|
||||||
|
UserToken accessToken = JwtTokenUtil.generateTokenByLoginUser(AppConstants.CMS_API_ACCESS_TOKEN_TYPE,loginUser);
|
||||||
|
userTokenService.saveUserToken(accessToken);
|
||||||
|
UserToken refreshToken = JwtTokenUtil.generateTokenByLoginUser(AppConstants.CMS_REFRESH_TOKEN_TYPE,loginUser);
|
||||||
|
userTokenService.saveUserToken(refreshToken);
|
||||||
|
loginInfo.setAccessToken(accessToken.getTokenValue());
|
||||||
|
loginInfo.setRefreshToken(refreshToken.getTokenValue());
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("User "+requestData.getUserCode() + " login CMS successful.");
|
||||||
|
result.setLoginInfo(loginInfo);
|
||||||
|
} else {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setMessage("User "+requestData.getUserCode()+" not found.");
|
||||||
|
}
|
||||||
|
} else if (isCheckLogin == -2) {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setMessage(requestData.getUserCode() + " has been locked.");
|
||||||
|
} else if (isCheckLogin == -3) {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setMessage(requestData.getUserCode() + " has been disabled.");
|
||||||
|
} else {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setMessage("Incorrect login ID or password.");
|
||||||
|
}
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping(value="/verifyToken",produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<String> verifyToken(
|
||||||
|
HttpServletRequest request,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body("Token Verified");
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping(value="/logout",produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminLogoutResponse> processLogout(
|
||||||
|
HttpServletRequest request,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
AdminLogoutResponse result = new AdminLogoutResponse();
|
||||||
|
LoginUserInfo loginUser = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUser!=null){
|
||||||
|
adminLoginService.processLogout(loginUser);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Logout successful.");
|
||||||
|
}else{
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode("401");
|
||||||
|
result.setMessage("Unauthorized logout");
|
||||||
|
}
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Renew API token by refresh token",
|
||||||
|
description = "API to renew access token"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Access Token refreshed successful")
|
||||||
|
})
|
||||||
|
@PostMapping(value="/refreshToken",produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<RefreshTokenResponse> refreshToken(
|
||||||
|
HttpServletRequest request,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
RefreshTokenResponse responseData = new RefreshTokenResponse();
|
||||||
|
LoginUserInfo loginUser = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUser!=null){
|
||||||
|
responseData = adminLoginService.refreshToken(loginUser);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}else{
|
||||||
|
responseData.setSuccess(false);
|
||||||
|
responseData.setCode("401");
|
||||||
|
responseData.setMessage("Unauthorized operation");
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.controllers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.menus.AdminMenuStatusRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.menus.AdminMenuStatusResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.menus.AdminMenusListResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.services.AdminMenusService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@Tag(name = "CMS", description = "APIs for CMS sidebar menus")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/admin")
|
||||||
|
@CrossOrigin(origins = "*")
|
||||||
|
public class AdminMenusController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminMenusService adminMenusService;
|
||||||
|
|
||||||
|
@Operation(summary = "List CMS sidebar menus with visibility status")
|
||||||
|
@PostMapping(value = "/menu/list", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminMenusListResponse> listMenus(HttpServletRequest request) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if (loginUserInfo == null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}
|
||||||
|
return ResponseEntity.ok(adminMenusService.listMenus());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "Update CMS sidebar menu visibility (sys_routers.status)")
|
||||||
|
@PostMapping(value = "/menu/update_status", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminMenuStatusResponse> updateStatus(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Valid @RequestBody AdminMenuStatusRequest body) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if (loginUserInfo == null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}
|
||||||
|
return ResponseEntity.ok(adminMenusService.updateStatus(body, loginUserInfo));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.controllers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.permissions.AdminAssignGroupPermissionRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.permissions.AdminAssignGroupPermissionResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.roleUsers.AdminGetRoleUsersRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.roleUsers.AdminGetRoleUsersResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.services.AdminPermissionService;
|
||||||
|
import com.sjmresorts.opsapp.admin.services.AdminUserService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.User;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Tag(name = "CMS", description = "APIs for CMS RoleUser")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/admin")
|
||||||
|
@CrossOrigin(origins = "*")
|
||||||
|
public class AdminRoleUsersController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminUserService adminUserService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminPermissionService adminPermissionService;
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Get Role And User Status",
|
||||||
|
description = "API for CMS Get Role And User Status"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Check CMS Get Role And User Status Success")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/get_role_user_status", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminGetRoleUsersResponse> cmsGetRoleUserStatus(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@RequestBody(required = true) AdminGetRoleUsersRequest pageRequest) {
|
||||||
|
AdminGetRoleUsersResponse Requestresult = new AdminGetRoleUsersResponse();
|
||||||
|
Map<String, List<User>> serviceResult = new HashMap<>();
|
||||||
|
List<User> assignUsers = adminUserService.listUser(pageRequest,"USER_ROLE");
|
||||||
|
List<User> unassignUsers = adminUserService.listUser(pageRequest,"UNASSIGN_USER");
|
||||||
|
serviceResult.put("assignUser", assignUsers);
|
||||||
|
serviceResult.put("unassignUser", unassignUsers);
|
||||||
|
|
||||||
|
if (serviceResult != null) {
|
||||||
|
Requestresult.setSuccess(true);
|
||||||
|
Requestresult.setMessage("CMS Get Roles Success");
|
||||||
|
Requestresult.setData(serviceResult);
|
||||||
|
Requestresult.setCode("200");
|
||||||
|
}else{
|
||||||
|
Requestresult.setCode("401");
|
||||||
|
Requestresult.setMessage("CMS Get Roles Failed");
|
||||||
|
Requestresult.setSuccess(false);
|
||||||
|
}
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(Requestresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Assign Role Permissions",
|
||||||
|
description = "API for CMS Assign Role Permissions"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS Assign Role Permissions")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/assign_permission", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminAssignGroupPermissionResponse> cmsAssignRolePermissions(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "CMS Assign Role Permissions", required = true) @Valid @RequestBody AdminAssignGroupPermissionRequest requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUserInfo==null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}else{
|
||||||
|
boolean success = adminPermissionService.assginPermission(requestData);
|
||||||
|
AdminAssignGroupPermissionResponse responseData = new AdminAssignGroupPermissionResponse();
|
||||||
|
if(success) {
|
||||||
|
responseData.setCode("200");
|
||||||
|
responseData.setSuccess(true);
|
||||||
|
responseData.setMessage("CMS Assign Role Permissions Success");
|
||||||
|
}else{
|
||||||
|
responseData.setSuccess(false);
|
||||||
|
responseData.setMessage("CMS Assign Role Permissions Failed");
|
||||||
|
}
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,203 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.controllers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.permissions.AdminListPermissionSettingRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.permissions.AdminListPermissionSettingResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.roles.*;
|
||||||
|
import com.sjmresorts.opsapp.admin.services.AdminPermissionService;
|
||||||
|
import com.sjmresorts.opsapp.admin.services.AdminRolesService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@Tag(name = "CMS", description = "APIs for CMS Roles")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/admin")
|
||||||
|
@CrossOrigin(origins = "*")
|
||||||
|
public class AdminRolesController {
|
||||||
|
@Resource
|
||||||
|
private AdminRolesService adminRolesService;
|
||||||
|
@Resource
|
||||||
|
private AdminPermissionService adminPermissionService;
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Get Roles",
|
||||||
|
description = "API for CMS Get Roles"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Check CMS Get Roles success")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/get_roles", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminGetRolesResponse> cmsGetRoles(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@RequestBody(required = true) AdminGetRolesRequest pageRequest) {
|
||||||
|
AdminGetRolesResponse Requestresult = new AdminGetRolesResponse();
|
||||||
|
DataTableResult<AdminRoleDto> serviceResult = adminRolesService.getRoleInfoListByPage(pageRequest);
|
||||||
|
|
||||||
|
if (serviceResult != null) {
|
||||||
|
Requestresult.setSuccess(true);
|
||||||
|
Requestresult.setMessage("CMS Get Roles Success");
|
||||||
|
Requestresult.setData(serviceResult);
|
||||||
|
Requestresult.setCode("200");
|
||||||
|
}else{
|
||||||
|
Requestresult.setCode("401");
|
||||||
|
Requestresult.setMessage("CMS Get Roles Failed");
|
||||||
|
Requestresult.setSuccess(false);
|
||||||
|
}
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(Requestresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Create Role",
|
||||||
|
description = "API for CMS Create Role"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Check CMS Create Role success")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/create_role", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<BaseApiResponse> cmsCreateRole(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "CMS Create Role info", required = true) @Valid @RequestBody AdminCreateRoleRequest requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUserInfo==null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}else{
|
||||||
|
BaseApiResponse responseData = adminRolesService.createRole(requestData, loginUserInfo);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Delete Role",
|
||||||
|
description = "API for CMS Delete Role"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Check CMS Delete Role success")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/delete_role", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<BaseApiResponse> cmsDeleteRole(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "CMS Delete Role info", required = true) @Valid @RequestBody AdminDeleteRoleRequest requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUserInfo==null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}else{
|
||||||
|
BaseApiResponse responseData = adminRolesService.deleteRole(requestData, loginUserInfo);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Modify Role",
|
||||||
|
description = "API for CMS Modify Role"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Check CMS Modify Role success")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/modify_role", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<BaseApiResponse> cmsmodifyRole(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "CMS modify Role info", required = true) @Valid @RequestBody AdminModifyRoleRequest requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUserInfo==null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}else{
|
||||||
|
BaseApiResponse responseData = adminRolesService.modifyRole(requestData, loginUserInfo);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Get Role By Id",
|
||||||
|
description = "API for CMS Get Role By Id"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Check CMS Get Role success")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/get_role_by_id", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminGetRoleByIdResponse> cmsGetRoleById(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "CMS modify Role info", required = true) @Valid @RequestBody AdminGetRoleByIdRequest requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUserInfo==null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}else{
|
||||||
|
AdminGetRoleByIdResponse responseData = adminRolesService.getRoleById(requestData);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Set Assign Users",
|
||||||
|
description = "API for CMS Set Assign Users"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS Set Assign Users")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/assign_users", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminRoleAssignUsersResponse> cmsSetAssignUsers(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "CMS modify Role info", required = true) @Valid @RequestBody AdminRoleAssignUsersRequest requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUserInfo==null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}else{
|
||||||
|
AdminRoleAssignUsersResponse responseData = new AdminRoleAssignUsersResponse();
|
||||||
|
Boolean serviceResult = adminRolesService.updateGroupAssignUser(requestData,loginUserInfo);
|
||||||
|
if(serviceResult) {
|
||||||
|
responseData.setCode("200");
|
||||||
|
responseData.setSuccess(true);
|
||||||
|
responseData.setMessage("CMS Set Assign Users Success");
|
||||||
|
}else{
|
||||||
|
responseData.setSuccess(false);
|
||||||
|
responseData.setMessage("CMS Set Assign Users Failed");
|
||||||
|
}
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "CMS Get Permission",
|
||||||
|
description = "API for CMS Get Permission"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS Get Permission")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/role/list_permission_setting", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AdminListPermissionSettingResponse> cmsGetListPermission(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "CMS Get Permission", required = true) @Valid @RequestBody AdminListPermissionSettingRequest requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUserInfo==null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}else{
|
||||||
|
AdminListPermissionSettingResponse responseData = adminPermissionService.getPermissionById(requestData);
|
||||||
|
if(responseData!=null) {
|
||||||
|
responseData.setCode("200");
|
||||||
|
responseData.setSuccess(true);
|
||||||
|
responseData.setMessage("CMS Get Permission Success");
|
||||||
|
}else{
|
||||||
|
responseData.setSuccess(false);
|
||||||
|
responseData.setMessage("CMS Get Permission Failed");
|
||||||
|
}
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.controllers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.user.CmsAppUserPageRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.user.CmsUserDto;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.user.CmsUserInfoResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.user.GetCmsUserResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.services.AdminUserService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@Tag(name = "CMS", description = "APIs for Admin User functions")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/admin")
|
||||||
|
public class AdminUserController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminUserService adminUserService;
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Query CMS user info page",
|
||||||
|
description = "API for query CMS user info page"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS user info page queried successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/user/queryPage", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<CmsUserInfoResponse> getAppUserByPage(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@RequestBody(required = true) CmsAppUserPageRequest pageRequest) {
|
||||||
|
|
||||||
|
DataTableResult<CmsUserDto> userInfoList = adminUserService.getUserInfoListByPage(pageRequest);
|
||||||
|
CmsUserInfoResponse cmsUserInfoResponse = new CmsUserInfoResponse();
|
||||||
|
cmsUserInfoResponse.setCode("200");
|
||||||
|
cmsUserInfoResponse.setSuccess(true);
|
||||||
|
cmsUserInfoResponse.setMessage("Query Successfully");
|
||||||
|
cmsUserInfoResponse.setData(userInfoList);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(cmsUserInfoResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Create CMS user",
|
||||||
|
description = "API for CMS user creation"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS user created successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/user/create", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<BaseApiResponse> createUser(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@RequestBody CmsUserDto requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if (loginUserInfo == null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
} else {
|
||||||
|
BaseApiResponse responseData = adminUserService.createUser(requestData, loginUserInfo);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Update CMS user status",
|
||||||
|
description = "API for CMS user status update"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS user status updated successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/user/updateStatus", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<BaseApiResponse> updateStatus(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@RequestBody CmsUserDto requestData) {
|
||||||
|
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if (loginUserInfo == null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
} else {
|
||||||
|
BaseApiResponse responseData = adminUserService.updateStatus(requestData, loginUserInfo);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Update CMS user info",
|
||||||
|
description = "API for CMS user info update"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS user info updated successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/user/update", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<BaseApiResponse> updateUser(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@RequestBody CmsUserDto requestData) {
|
||||||
|
LoginUserInfo loginUserInfo = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if (loginUserInfo == null) {
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
} else {
|
||||||
|
BaseApiResponse responseData = adminUserService.updateUser(requestData, loginUserInfo);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Get one CMS user info",
|
||||||
|
description = "API for get one CMS user info"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "CMS user info got successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@GetMapping(value = "/user/{userId}", produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<GetCmsUserResponse> getUserById(
|
||||||
|
@PathVariable(name = "userId", required = true) @NotNull Long userId) {
|
||||||
|
|
||||||
|
GetCmsUserResponse responseData = new GetCmsUserResponse();
|
||||||
|
CmsUserDto userDto = adminUserService.queryCmsUserById(userId);
|
||||||
|
responseData.setCode("200");
|
||||||
|
responseData.setSuccess(userDto != null);
|
||||||
|
responseData.setMessage(userDto != null ? "Query Successfully" : "User does not exists");
|
||||||
|
responseData.setData(userDto);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.appsetting;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BasePageRequest;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Get Admin Devices Info Page Request")
|
||||||
|
public class AdminDevicesInfoPageRequest extends BasePageRequest {
|
||||||
|
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.appsetting;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Get Admin Devices Info Page Response")
|
||||||
|
public class AdminDevicesInfoPageResponse extends BaseApiResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Match Devices Info items")
|
||||||
|
private DataTableResult<ClientInfosDto> data;
|
||||||
|
}
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.appsetting;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "CMS get device Request")
|
||||||
|
public class AdminGetClientInfosRequest {
|
||||||
|
@Schema(description = "Device ID of Clients Info")
|
||||||
|
@NotBlank(message = "Device Id must not be blank")
|
||||||
|
private String deviceId;
|
||||||
|
}
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.appsetting;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "CMS get device Response")
|
||||||
|
public class AdminGetClientInfosResponse extends BaseApiResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Match Device items")
|
||||||
|
private ClientInfosDto data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.appsetting;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ClientInfosDto {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private Boolean isLatest;
|
||||||
|
|
||||||
|
private Boolean isActive;
|
||||||
|
|
||||||
|
private String clientName;
|
||||||
|
|
||||||
|
private String clientVersion;
|
||||||
|
|
||||||
|
private String deviceFuid;
|
||||||
|
|
||||||
|
private String casinoCode;
|
||||||
|
|
||||||
|
private Instant updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.appsetting;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "CMS get App Setting Request")
|
||||||
|
public class GetAppSettingRequest {
|
||||||
|
@Schema(description = "App setting keys to retrieve")
|
||||||
|
@NotNull(message = "App setting keys must not be empty")
|
||||||
|
private List<String> appSettingKeys;
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.menus;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class AdminMenuItemDto {
|
||||||
|
private String id;
|
||||||
|
private String parentId;
|
||||||
|
private String heading;
|
||||||
|
private String sectionTitle;
|
||||||
|
private String route;
|
||||||
|
private String fontIcon;
|
||||||
|
private Integer sortNo;
|
||||||
|
/** 1=显示,0=隐藏 */
|
||||||
|
private Integer status;
|
||||||
|
/** 不可关闭(避免锁死后台) */
|
||||||
|
private boolean locked;
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.menus;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class AdminMenuStatusRequest {
|
||||||
|
@NotBlank
|
||||||
|
private String routerId;
|
||||||
|
/** 1=显示,0=隐藏 */
|
||||||
|
@NotNull
|
||||||
|
private Integer status;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.menus;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.router.UserRouterDto;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class AdminMenuStatusResponse extends BaseApiResponse {
|
||||||
|
/** 更新后当前登录用户侧栏菜单(可立刻刷新) */
|
||||||
|
private List<UserRouterDto> userRouters = new ArrayList<>();
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.menus;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class AdminMenusListResponse extends BaseApiResponse {
|
||||||
|
private List<AdminMenuItemDto> data = new ArrayList<>();
|
||||||
|
}
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.permissions;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RouterPermission;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = " Assign Role Permission Request")
|
||||||
|
public class AdminAssignGroupPermissionRequest {
|
||||||
|
@Schema(description = "Role Id",example="200")
|
||||||
|
private Long roleId;
|
||||||
|
@Schema(description = "Router Operation",example="200")
|
||||||
|
private List<RouterPermission> assignRouterOperation;
|
||||||
|
}
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.permissions;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.models.GroupPermissionObject;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Delete Role")
|
||||||
|
public class AdminAssignGroupPermissionResponse {
|
||||||
|
@Schema(description = "Indicate CMS delete roles success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private GroupPermissionObject data;
|
||||||
|
}
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.permissions;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = " Delete Role Request")
|
||||||
|
public class AdminListPermissionSettingRequest {
|
||||||
|
@Schema(description = "Role Id",example="200")
|
||||||
|
private Long roleId;
|
||||||
|
}
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.permissions;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.models.GroupPermissionObject;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Delete Role")
|
||||||
|
public class AdminListPermissionSettingResponse {
|
||||||
|
@Schema(description = "Indicate CMS delete roles success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private GroupPermissionObject data;
|
||||||
|
}
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roleUsers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BasePageRequest;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "CMS Get Role Uers Status Request")
|
||||||
|
public class AdminGetRoleUsersRequest extends BasePageRequest {
|
||||||
|
|
||||||
|
private Long searchRoleId;
|
||||||
|
|
||||||
|
private String searchRoleName;
|
||||||
|
|
||||||
|
}
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roleUsers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.User;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Role Users Status")
|
||||||
|
public class AdminGetRoleUsersResponse {
|
||||||
|
@Schema(description = "Indicate CMS get roles success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private Map<String, List<User>> data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roleUsers;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public class AdminRoleUsersDto {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
private Long roleId;
|
||||||
|
private Long userId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = " Create Role Request")
|
||||||
|
public class AdminCreateRoleRequest {
|
||||||
|
@Schema(description = "Role Name",example="200")
|
||||||
|
private String roleName;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.Role;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Create Role")
|
||||||
|
public class AdminCreateRoleResponse {
|
||||||
|
@Schema(description = "Indicate CMS create roles success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private Role data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = " Delete Role Request")
|
||||||
|
public class AdminDeleteRoleRequest {
|
||||||
|
@Schema(description = "Role Id",example="200")
|
||||||
|
private Long roleId;
|
||||||
|
@Schema(description = "Role Name",example="200")
|
||||||
|
private String roleName;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.Role;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Delete Role")
|
||||||
|
public class AdminDeleteRoleResponse {
|
||||||
|
@Schema(description = "Indicate CMS delete roles success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private Role data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = " Modify Role Request")
|
||||||
|
public class AdminGetRoleByIdRequest {
|
||||||
|
@Schema(description = "Role Id",example="200")
|
||||||
|
private Long roleId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.Role;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Get Role By Id")
|
||||||
|
public class AdminGetRoleByIdResponse {
|
||||||
|
@Schema(description = "Indicate CMS get roles by id success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private Role data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BasePageRequest;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "CMS Roles Request")
|
||||||
|
public class AdminGetRolesRequest extends BasePageRequest {
|
||||||
|
|
||||||
|
private String searchRoleName;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Roles")
|
||||||
|
public class AdminGetRolesResponse {
|
||||||
|
@Schema(description = "Indicate CMS get roles success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private DataTableResult<AdminRoleDto> data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = " Modify Role Request")
|
||||||
|
public class AdminModifyRoleRequest {
|
||||||
|
@Schema(description = "Role Id",example="200")
|
||||||
|
private Long roleId;
|
||||||
|
@Schema(description = "Role Name",example="200")
|
||||||
|
private String roleName;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.Role;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Modify Role")
|
||||||
|
public class AdminModifyRoleResponse {
|
||||||
|
@Schema(description = "Indicate CMS modify roles success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private Role data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = " Delete Role Request")
|
||||||
|
public class AdminRoleAssignUsersRequest {
|
||||||
|
@Schema(description = "Role Id",example="200")
|
||||||
|
private Long roleId;
|
||||||
|
@Schema(description = "Role Name",example="200")
|
||||||
|
private List<String> employeeIds;
|
||||||
|
}
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.Role;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS Delete Role")
|
||||||
|
public class AdminRoleAssignUsersResponse {
|
||||||
|
@Schema(description = "Indicate CMS delete roles success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Get roles successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "data of result")
|
||||||
|
private Role data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.roles;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public class AdminRoleDto {
|
||||||
|
private Long roleId;
|
||||||
|
private String roleName;
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.login;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "CMS LoginRequest")
|
||||||
|
public class AdminLoginRequest {
|
||||||
|
|
||||||
|
@Schema(description = "AD Account of Employee")
|
||||||
|
@NotBlank(message = "Employee Id must not be blank")
|
||||||
|
private String userCode;
|
||||||
|
|
||||||
|
@Schema(description = "Password of AD Account")
|
||||||
|
@NotBlank(message = "Password must not be blank")
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.login;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS login with AD")
|
||||||
|
public class AdminLoginResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Indicate CMS login authorization success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Login successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "Login Info of response")
|
||||||
|
private CmsLoginInfo loginInfo;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.login;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of CMS logout")
|
||||||
|
public class AdminLogoutResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Indicate CMS logout success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Logout successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.login;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.router.RouterPermissionDto;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.router.UserRouterDto;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class CmsLoginInfo {
|
||||||
|
private String accessToken;
|
||||||
|
private String refreshToken;
|
||||||
|
private String defaultRouter;
|
||||||
|
private LoginUserInfo loginUser;
|
||||||
|
private List<UserRouterDto> userRouters;
|
||||||
|
private Map<String, List<RouterPermissionDto>> userPermissions;
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.router;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class RouterPermissionDto {
|
||||||
|
private String id;
|
||||||
|
private String routerId;
|
||||||
|
private String permissionName;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.router;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class UserRouterDto {
|
||||||
|
private String parentId;
|
||||||
|
private String heading;
|
||||||
|
private String sectionTitle;
|
||||||
|
private String route;
|
||||||
|
private String svgIcon;
|
||||||
|
private String fontIcon;
|
||||||
|
private Integer sortNo;
|
||||||
|
private Integer status;
|
||||||
|
private List<UserRouterDto> sub;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.user;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BasePageRequest;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
@Getter
|
||||||
|
public class CmsAppUserPageRequest extends BasePageRequest {
|
||||||
|
|
||||||
|
private String searchAccount;
|
||||||
|
private String searchUserName;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.user;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class CmsUserDto {
|
||||||
|
|
||||||
|
private Long userId;
|
||||||
|
private String userCode;
|
||||||
|
private String userName;
|
||||||
|
private String email;
|
||||||
|
private Integer status;
|
||||||
|
private Instant updatedAt;
|
||||||
|
private Instant createdAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.user;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "User Info List")
|
||||||
|
public class CmsUserInfoResponse extends BaseApiResponse {
|
||||||
|
private DataTableResult<CmsUserDto> data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.dtos.system.user;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of getting CMS User")
|
||||||
|
public class GetCmsUserResponse extends BaseApiResponse {
|
||||||
|
private CmsUserDto data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.mappers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.appsetting.ClientInfosDto;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.ClientInfo;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public interface ClientInfosMapper {
|
||||||
|
|
||||||
|
ClientInfosDto toClientInfosDto(ClientInfo device);
|
||||||
|
|
||||||
|
List<ClientInfosDto> toClientInfosDtoList(List<ClientInfo> content);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.mappers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.router.RouterPermissionDto;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.router.UserRouterDto;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RouterPermission;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.SysRouter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class CmsLoginRouterMapper {
|
||||||
|
private final SysRouterMapper routerMapper;
|
||||||
|
private final RouterPermissionMapper routerPermissionMapper;
|
||||||
|
|
||||||
|
public List<UserRouterDto> toRouterDtoListWithChildren(List<SysRouter> sysRouters) {
|
||||||
|
List<UserRouterDto> routerDtos = new ArrayList<UserRouterDto>();
|
||||||
|
routerMapper.toUserRouterDtoList(sysRouters);
|
||||||
|
for(SysRouter sysRouter:sysRouters){
|
||||||
|
UserRouterDto routerDto = routerMapper.toUserRouterDto(sysRouter);
|
||||||
|
if(sysRouter.getSub()!=null && !sysRouter.getSub().isEmpty()){
|
||||||
|
routerDto.setSub(toRouterDtoListWithChildren(sysRouter.getSub()));
|
||||||
|
}
|
||||||
|
routerDtos.add(routerDto);
|
||||||
|
}
|
||||||
|
return routerDtos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, List<RouterPermissionDto>> toRouterPermissionMap(Map<String, List<RouterPermission>> userPermissions) {
|
||||||
|
Map<String, List<RouterPermissionDto>> permissionMap = new HashMap<String, List<RouterPermissionDto>>();
|
||||||
|
userPermissions.forEach((key, value) -> {
|
||||||
|
permissionMap.put(key, routerPermissionMapper.toRouterPermissionDtoList(value));
|
||||||
|
});
|
||||||
|
return permissionMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.mappers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.router.RouterPermissionDto;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RouterPermission;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public interface RouterPermissionMapper {
|
||||||
|
|
||||||
|
RouterPermissionDto toRouterPermissionDto(RouterPermission entity);
|
||||||
|
|
||||||
|
List<RouterPermissionDto> toRouterPermissionDtoList(List<RouterPermission> routerPermissions);
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.mappers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.router.UserRouterDto;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.SysRouter;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public interface SysRouterMapper {
|
||||||
|
|
||||||
|
@Mapping(target = "sub", ignore = true)
|
||||||
|
UserRouterDto toUserRouterDto(SysRouter sysRouter);
|
||||||
|
|
||||||
|
List<UserRouterDto> toUserRouterDtoList(List<SysRouter> sysRouters);
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.models;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.SysRouter;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class GroupPermissionObject {
|
||||||
|
private Long groupId;
|
||||||
|
private String groupName;
|
||||||
|
private List<SysRouter> groupRouterSetting;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.repositories;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RoleUsers;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface RoleUsersRepository extends JpaRepository<RoleUsers, Long> {
|
||||||
|
|
||||||
|
|
||||||
|
List<RoleUsers> findAllByRoleId(Long roleId);
|
||||||
|
|
||||||
|
@Query(value = "select roleUser.roleId from RoleUsers roleUser where employeeId=?1 ")
|
||||||
|
List<Long> findRoleIdListByEmployeeId(String employeeId);
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.repositories;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.Role;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface RolesRepository extends JpaRepository<Role, Long> {
|
||||||
|
|
||||||
|
Page<Role> findAll(Specification<Role> listSpec, Pageable pageable);
|
||||||
|
|
||||||
|
Role getRoleByRoleId(Long roleId);
|
||||||
|
|
||||||
|
@Query(value="select r.roleId from Role r where r.roleName = ?1")
|
||||||
|
List<Long> queryRoleIdByRoleName(String roleName);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.services;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.appsetting.AdminDevicesInfoPageRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.appsetting.ClientInfosDto;
|
||||||
|
import com.sjmresorts.opsapp.admin.mappers.ClientInfosMapper;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.ClientInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.DeviceInfoRepository;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BasePageRequest;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.DaoUtil;
|
||||||
|
import com.sjmresorts.opsapp.logging.models.AuditLog;
|
||||||
|
import com.sjmresorts.opsapp.logging.services.AuditLogService;
|
||||||
|
import jakarta.persistence.criteria.Predicate;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AdminDevicesService {
|
||||||
|
|
||||||
|
private final DeviceInfoRepository deviceInfoRepository;
|
||||||
|
private final AuditLogService auditLogService;
|
||||||
|
private final ClientInfosMapper clientInfosMapper;
|
||||||
|
private final DeviceInfoRepository deviceRepository;
|
||||||
|
|
||||||
|
public DataTableResult<ClientInfosDto> getDevicesInfoListByPage(AdminDevicesInfoPageRequest pageRequest) {
|
||||||
|
|
||||||
|
Specification<ClientInfo> listSpec = buildSpecificationByPageRequest(pageRequest);
|
||||||
|
int pageSize = pageRequest.getPageSize();
|
||||||
|
int pageStart = pageRequest.getStartRow() / pageSize;
|
||||||
|
Sort sort = DaoUtil.buildSortByString(pageRequest.getSortOrder(), "id");
|
||||||
|
Pageable pageable = PageRequest.of(pageStart, pageSize, sort);
|
||||||
|
Page<ClientInfo> resultPage = deviceInfoRepository.findAll(listSpec, pageable);
|
||||||
|
List<ClientInfosDto> resultList = clientInfosMapper.toClientInfosDtoList(resultPage.getContent());
|
||||||
|
DataTableResult<ClientInfosDto> dataResult = new DataTableResult<>();
|
||||||
|
dataResult.setTotalRecords(resultPage.getTotalElements());
|
||||||
|
dataResult.setPageSize(pageSize);
|
||||||
|
if (resultList == null) {
|
||||||
|
resultList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
dataResult.setRowData(resultList);
|
||||||
|
return dataResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Specification<ClientInfo> buildSpecificationByPageRequest(BasePageRequest pageRequest) {
|
||||||
|
|
||||||
|
return ((root, criteriaQuery, cb) -> {
|
||||||
|
List<Predicate> list = new ArrayList<>();
|
||||||
|
// if (StringUtils.isNotBlank(pageRequest.getSearchUserName())) {
|
||||||
|
// list.add(cb.like(cb.upper(root.get("userName")),
|
||||||
|
// "%" + pageRequest.getSearchUserName().toUpperCase() + "%"));
|
||||||
|
// }
|
||||||
|
// if (StringUtils.isNotBlank(pageRequest.getSearchAccount())) {
|
||||||
|
// list.add(cb.like(cb.upper(root.get("employeeId")),
|
||||||
|
// "%" + pageRequest.getSearchAccount().toUpperCase() + "%"));
|
||||||
|
// }
|
||||||
|
Predicate[] predicates = new Predicate[list.size()];
|
||||||
|
criteriaQuery.where(list.toArray(predicates));
|
||||||
|
return cb.and(list.toArray(predicates));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public BaseApiResponse updateDevice(ClientInfosDto deviceDto, LoginUserInfo loginUserInfo) {
|
||||||
|
BaseApiResponse result = new BaseApiResponse();
|
||||||
|
AuditLog auditLog = auditLogService.createAuditLog("Update Device", "Update Device from AdminDevicesService.updateDevice()", loginUserInfo);
|
||||||
|
ClientInfo device = deviceRepository.findById(deviceDto.getId()).orElse(null);
|
||||||
|
Instant currentTime = Instant.now();
|
||||||
|
if (device != null) {
|
||||||
|
auditLogService.setLogOldValue(auditLog, device);
|
||||||
|
device.setCasinoCode(deviceDto.getCasinoCode());
|
||||||
|
device.setUpdatedAt(currentTime);
|
||||||
|
deviceRepository.save(device);
|
||||||
|
auditLogService.setLogNewValue(auditLog, device);
|
||||||
|
auditLogService.saveAuditLog(auditLog);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Updated Successfully");
|
||||||
|
} else {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode("400");
|
||||||
|
result.setMessage("User does not exists");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ClientInfosDto queryDeviceById(@NotBlank long deviceId) {
|
||||||
|
ClientInfosDto deviceDto = null;
|
||||||
|
ClientInfo device = deviceRepository.findById(deviceId).orElse(null);
|
||||||
|
|
||||||
|
if (device != null) {
|
||||||
|
deviceDto = clientInfosMapper.toClientInfosDto(device);
|
||||||
|
}
|
||||||
|
return deviceDto;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.services;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.login.CmsLoginInfo;
|
||||||
|
import com.sjmresorts.opsapp.admin.mappers.CmsLoginRouterMapper;
|
||||||
|
import com.sjmresorts.opsapp.admin.repositories.RoleUsersRepository;
|
||||||
|
import com.sjmresorts.opsapp.admin.repositories.RolesRepository;
|
||||||
|
import com.sjmresorts.opsapp.common.constants.AppConstants;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.RefreshTokenResponse;
|
||||||
|
import com.sjmresorts.opsapp.authentication.mappers.UserMapper;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RouterPermission;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.SysRouter;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.User;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.UserToken;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.RouterPermissionRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.UserRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.RolePermissionService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.SysRouterService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.UserTokenService;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.LDAP.ADAccountInfo;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.AESUtil;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.LDAPUtil;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.dao.OptimisticLockingFailureException;
|
||||||
|
import org.springframework.retry.annotation.Backoff;
|
||||||
|
import org.springframework.retry.annotation.Retryable;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AdminLoginService {
|
||||||
|
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
private final RoleUsersRepository roleUsersRepository;
|
||||||
|
private final UserMapper userMapper;
|
||||||
|
private final CmsLoginRouterMapper cmsLoginRouterMapper;
|
||||||
|
private final SysRouterService sysRouterService;
|
||||||
|
private final RolePermissionService rolePermissionService;
|
||||||
|
private final UserTokenService userTokenService;
|
||||||
|
private final LDAPUtil ldapUtil;
|
||||||
|
private final RolesRepository rolesRepository;
|
||||||
|
private final RouterPermissionRepository routerPermissionRepository;
|
||||||
|
|
||||||
|
// -3=disabled, -2=locked, -1 or 0=incorrect loginId or password, 1=success
|
||||||
|
public int checkLoginByLoginIdAndPassword(String employeeId, String password) {
|
||||||
|
int checkPassed = -1;
|
||||||
|
if(AppConstants.SUPER_ADMIN_ID.equalsIgnoreCase(employeeId)) {
|
||||||
|
User user = userRepository.findByEmployeeId(employeeId).orElse(null);
|
||||||
|
if (user != null) {
|
||||||
|
if(user.getStatus()==null || user.getStatus()==0){
|
||||||
|
return -3; // user disabled by app
|
||||||
|
}else if(user.getStatus()==2) {
|
||||||
|
return -2; // user locked
|
||||||
|
}
|
||||||
|
String encryptPassword = AESUtil.sha256(password);
|
||||||
|
checkPassed = userRepository.countByEmployeeIdAndPassword(employeeId.toUpperCase(), encryptPassword);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//Check AD
|
||||||
|
boolean adResult = ldapUtil.authenticate(employeeId, password);
|
||||||
|
if(adResult) checkPassed = 1;
|
||||||
|
}
|
||||||
|
return checkPassed;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Retryable(retryFor = OptimisticLockingFailureException.class,
|
||||||
|
maxAttempts = 3,
|
||||||
|
backoff = @Backoff(delay = 100))
|
||||||
|
@Transactional
|
||||||
|
public CmsLoginInfo getLoginUserInfoByEmployeeId(@NotBlank(message = "Employee Id must not be blank") String employeeId) {
|
||||||
|
CmsLoginInfo result = null;
|
||||||
|
if(AppConstants.SUPER_ADMIN_ID.equalsIgnoreCase(employeeId)) {
|
||||||
|
User user = userRepository.findByEmployeeId(employeeId).orElse(null);
|
||||||
|
if(user!=null){
|
||||||
|
user.setCmsLastLogin(Instant.now());
|
||||||
|
userRepository.save(user);
|
||||||
|
result = new CmsLoginInfo();
|
||||||
|
LoginUserInfo loginUser = userMapper.toLoginUser(user);
|
||||||
|
result.setLoginUser(loginUser);
|
||||||
|
Map<String, List<RouterPermission>> userPermissions = new HashMap<String, List<RouterPermission>>();
|
||||||
|
userPermissions = rolePermissionService.getFullRouterPermissions();
|
||||||
|
List<SysRouter> routers = sysRouterService.getRoutersByPermission("0",userPermissions);
|
||||||
|
result.setUserRouters(cmsLoginRouterMapper.toRouterDtoListWithChildren(routers));
|
||||||
|
result.setUserPermissions(cmsLoginRouterMapper.toRouterPermissionMap(userPermissions));
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
ADAccountInfo adResult = ldapUtil.getAccountInfo(employeeId);
|
||||||
|
if(adResult!=null){
|
||||||
|
result = new CmsLoginInfo();
|
||||||
|
LoginUserInfo loginUser = new LoginUserInfo();
|
||||||
|
loginUser.setUserName(adResult.getDisplayName());
|
||||||
|
loginUser.setEmployeeId(employeeId);
|
||||||
|
loginUser.setEmail(adResult.getMail());
|
||||||
|
loginUser.setUserCode(employeeId);
|
||||||
|
result.setLoginUser(loginUser);
|
||||||
|
Map<String, List<RouterPermission>> userPermissions = new HashMap<String, List<RouterPermission>>();
|
||||||
|
List<Long> userRoleIds = getUserRoleIds(adResult.getDirectGroups());
|
||||||
|
userPermissions = rolePermissionService.getRouterPermissionsByGroupIds(userRoleIds);
|
||||||
|
List<SysRouter> routers = sysRouterService.getRoutersByPermission("0",userPermissions);
|
||||||
|
result.setUserRouters(cmsLoginRouterMapper.toRouterDtoListWithChildren(routers));
|
||||||
|
result.setUserPermissions(cmsLoginRouterMapper.toRouterPermissionMap(userPermissions));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void processLogout(LoginUserInfo loginUser) {
|
||||||
|
if(loginUser!=null){
|
||||||
|
userTokenService.clearUserTokenByType(AppConstants.CMS_API_ACCESS_TOKEN_TYPE,loginUser.getEmployeeId());
|
||||||
|
userTokenService.clearUserTokenByType(AppConstants.CMS_REFRESH_TOKEN_TYPE,loginUser.getEmployeeId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public RefreshTokenResponse refreshToken(LoginUserInfo loginUser) {
|
||||||
|
RefreshTokenResponse result = new RefreshTokenResponse();
|
||||||
|
UserToken accessToken = null;
|
||||||
|
UserToken refreshToken = null;
|
||||||
|
if(loginUser!=null){
|
||||||
|
accessToken= JwtTokenUtil.generateTokenByLoginUser(AppConstants.CMS_API_ACCESS_TOKEN_TYPE,loginUser);
|
||||||
|
userTokenService.saveUserToken(accessToken);
|
||||||
|
refreshToken=JwtTokenUtil.generateTokenByLoginUser(AppConstants.CMS_REFRESH_TOKEN_TYPE,loginUser);
|
||||||
|
userTokenService.saveUserToken(refreshToken);
|
||||||
|
if(StringUtils.isNotBlank(loginUser.getTokenUuid())){
|
||||||
|
userTokenService.removeTokenByUniqueId(loginUser.getTokenUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(accessToken!=null){
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setAccessToken(accessToken.getTokenValue());
|
||||||
|
result.setRefreshToken(refreshToken.getTokenValue());
|
||||||
|
result.setMessage("Token renew successful.");
|
||||||
|
}else{
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Token failed.");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Long> getUserRoleIds(List<String> groupName) {
|
||||||
|
List<Long> roleIdList = new ArrayList<>();
|
||||||
|
if(groupName!=null&&!groupName.isEmpty()){
|
||||||
|
for(String roleName : groupName){
|
||||||
|
List<Long> roleIds = rolesRepository.queryRoleIdByRoleName(roleName);
|
||||||
|
roleIdList.addAll(roleIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return roleIdList;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.services;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.menus.AdminMenuItemDto;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.menus.AdminMenuStatusRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.menus.AdminMenuStatusResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.menus.AdminMenusListResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.router.UserRouterDto;
|
||||||
|
import com.sjmresorts.opsapp.admin.mappers.CmsLoginRouterMapper;
|
||||||
|
import com.sjmresorts.opsapp.admin.repositories.RoleUsersRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RouterPermission;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.SysRouter;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.SysRouterRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.RolePermissionService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.SysRouterService;
|
||||||
|
import com.sjmresorts.opsapp.common.constants.AppConstants;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AdminMenusService {
|
||||||
|
|
||||||
|
private static final Set<String> LOCKED_ROUTER_IDS = Set.of(
|
||||||
|
"ESIGN_DASHBOARD",
|
||||||
|
"ESIGN_SYSTEM",
|
||||||
|
"ESIGN_SYS_USERS",
|
||||||
|
"ESIGN_SYS_ROLES",
|
||||||
|
"ESIGN_SYS_MENUS");
|
||||||
|
|
||||||
|
private final SysRouterRepository sysRouterRepository;
|
||||||
|
private final SysRouterService sysRouterService;
|
||||||
|
private final RolePermissionService rolePermissionService;
|
||||||
|
private final RoleUsersRepository roleUsersRepository;
|
||||||
|
private final CmsLoginRouterMapper cmsLoginRouterMapper;
|
||||||
|
|
||||||
|
public AdminMenusListResponse listMenus() {
|
||||||
|
AdminMenusListResponse response = new AdminMenusListResponse();
|
||||||
|
List<SysRouter> routers = sysRouterRepository.queryAllRoutersOrderBySort();
|
||||||
|
for (SysRouter router : routers) {
|
||||||
|
AdminMenuItemDto item = new AdminMenuItemDto();
|
||||||
|
item.setId(router.getId());
|
||||||
|
item.setParentId(router.getParentId());
|
||||||
|
item.setHeading(router.getHeading());
|
||||||
|
item.setSectionTitle(router.getSectionTitle());
|
||||||
|
item.setRoute(router.getRoute());
|
||||||
|
item.setFontIcon(router.getFontIcon());
|
||||||
|
item.setSortNo(router.getSortNo());
|
||||||
|
item.setStatus(router.getStatus() == null ? 1 : router.getStatus());
|
||||||
|
item.setLocked(LOCKED_ROUTER_IDS.contains(router.getId()));
|
||||||
|
response.getData().add(item);
|
||||||
|
}
|
||||||
|
response.setSuccess(true);
|
||||||
|
response.setCode("200");
|
||||||
|
response.setMessage("ok");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public AdminMenuStatusResponse updateStatus(AdminMenuStatusRequest request, LoginUserInfo loginUser) {
|
||||||
|
AdminMenuStatusResponse response = new AdminMenuStatusResponse();
|
||||||
|
if (request == null || StringUtils.isBlank(request.getRouterId()) || request.getStatus() == null) {
|
||||||
|
response.setSuccess(false);
|
||||||
|
response.setCode("400");
|
||||||
|
response.setMessage("routerId and status required");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
int status = request.getStatus() == 0 ? 0 : 1;
|
||||||
|
if (LOCKED_ROUTER_IDS.contains(request.getRouterId()) && status == 0) {
|
||||||
|
response.setSuccess(false);
|
||||||
|
response.setCode("400");
|
||||||
|
response.setMessage("This menu cannot be hidden");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
SysRouter router = sysRouterRepository.findById(request.getRouterId()).orElse(null);
|
||||||
|
if (router == null) {
|
||||||
|
response.setSuccess(false);
|
||||||
|
response.setCode("404");
|
||||||
|
response.setMessage("menu not found");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
router.setStatus(status);
|
||||||
|
sysRouterRepository.save(router);
|
||||||
|
|
||||||
|
response.setUserRouters(buildUserRouters(loginUser));
|
||||||
|
response.setSuccess(true);
|
||||||
|
response.setCode("200");
|
||||||
|
response.setMessage("saved");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<UserRouterDto> buildUserRouters(LoginUserInfo loginUser) {
|
||||||
|
if (loginUser == null || StringUtils.isBlank(loginUser.getEmployeeId())) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
Map<String, List<RouterPermission>> userPermissions;
|
||||||
|
if (AppConstants.SUPER_ADMIN_ID.equalsIgnoreCase(loginUser.getEmployeeId())) {
|
||||||
|
userPermissions = rolePermissionService.getFullRouterPermissions();
|
||||||
|
} else {
|
||||||
|
List<Long> roleIds = roleUsersRepository.findRoleIdListByEmployeeId(loginUser.getEmployeeId());
|
||||||
|
userPermissions = rolePermissionService.getRouterPermissionsByGroupIds(
|
||||||
|
roleIds != null ? roleIds : List.of());
|
||||||
|
}
|
||||||
|
List<SysRouter> routers = sysRouterService.getRoutersByPermission("0", userPermissions);
|
||||||
|
return cmsLoginRouterMapper.toRouterDtoListWithChildren(routers);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.services;
|
||||||
|
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.permissions.AdminAssignGroupPermissionRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.permissions.AdminAssignGroupPermissionResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.permissions.AdminListPermissionSettingRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.permissions.AdminListPermissionSettingResponse;
|
||||||
|
import com.sjmresorts.opsapp.admin.models.GroupPermissionObject;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.*;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.RolePermissionRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.RouterPermissionRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.SysRouterRepository;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AdminPermissionService {
|
||||||
|
private final SysRouterRepository sysRouterRepository;
|
||||||
|
private final RouterPermissionRepository routerPermissionRepository;
|
||||||
|
private final RolePermissionRepository rolePermissionRepository;
|
||||||
|
|
||||||
|
|
||||||
|
public AdminListPermissionSettingResponse getPermissionById(AdminListPermissionSettingRequest request) {
|
||||||
|
AdminListPermissionSettingResponse result = new AdminListPermissionSettingResponse();
|
||||||
|
GroupPermissionObject newObject = new GroupPermissionObject();
|
||||||
|
|
||||||
|
// 获取路由信息,路由权限,权限组权限
|
||||||
|
List<SysRouter> listRouter = sysRouterRepository.getAllChildrenRoutes();
|
||||||
|
List<RouterPermission> listPermission = routerPermissionRepository.findAll();
|
||||||
|
List<RolePermission> listRolePermission = rolePermissionRepository.getAllPermissionByRoleId(request.getRoleId());
|
||||||
|
// 判断权限组是否有权限,并将selectAble属性加入返回数据
|
||||||
|
if (listRolePermission.size() > 0) {
|
||||||
|
for(int i=0; i<listPermission.size(); i++) {
|
||||||
|
RouterPermission rolePermission = listPermission.get(i);
|
||||||
|
for (RolePermission permission : listRolePermission) {
|
||||||
|
Long permissionId = permission.getPermissionId();
|
||||||
|
if(permissionId==rolePermission.getId()){
|
||||||
|
// 如果权限组有对应权限将selected设置为true
|
||||||
|
rolePermission.setSelected(true);
|
||||||
|
listRolePermission.remove(permission);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i=0;i<listRouter.size();i++) {
|
||||||
|
SysRouter sysRouter = listRouter.get(i);
|
||||||
|
for (int j=0;j<listPermission.size();j++) {
|
||||||
|
RouterPermission permission = listPermission.get(j);
|
||||||
|
// 将权限信息放入返回数据中
|
||||||
|
if(StringUtils.equals(sysRouter.getId(),permission.getRouterId())) {
|
||||||
|
sysRouter.getRoutePermissions().add(permission);
|
||||||
|
listPermission.remove(j);
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
newObject.setGroupId(request.getRoleId());
|
||||||
|
newObject.setGroupRouterSetting(listRouter);
|
||||||
|
result.setData(newObject);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Get List Permission By Id Successfully");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean assginPermission(AdminAssignGroupPermissionRequest request) {
|
||||||
|
AdminAssignGroupPermissionResponse result = new AdminAssignGroupPermissionResponse();
|
||||||
|
List<RolePermission> permissionToDelete = rolePermissionRepository.getAllPermissionByRoleId(request.getRoleId());
|
||||||
|
if(request.getAssignRouterOperation()!=null &&request.getAssignRouterOperation().size()>0){
|
||||||
|
List<RouterPermission> assignRouterOperation = request.getAssignRouterOperation();
|
||||||
|
List<RolePermission>saveData = new ArrayList<>();
|
||||||
|
for(int i =0;i<assignRouterOperation.size();i++){
|
||||||
|
RouterPermission permission = assignRouterOperation.get(i);
|
||||||
|
boolean existItem = false;
|
||||||
|
for(int j=0;j<permissionToDelete.size();j++){
|
||||||
|
RolePermission rolePermission = permissionToDelete.get(j);
|
||||||
|
if(permission.getId()==rolePermission.getPermissionId()){
|
||||||
|
existItem = true;
|
||||||
|
permissionToDelete.remove(j);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!existItem){
|
||||||
|
RolePermission rolePermission = new RolePermission();
|
||||||
|
rolePermission.setRoleId(request.getRoleId());
|
||||||
|
rolePermission.setPermissionId(permission.getId());
|
||||||
|
saveData.add(rolePermission);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!saveData.isEmpty()){
|
||||||
|
rolePermissionRepository.saveAll(saveData);
|
||||||
|
}
|
||||||
|
if(!permissionToDelete.isEmpty()){
|
||||||
|
rolePermissionRepository.deleteAll(permissionToDelete);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.services;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AdminRoleUsersService {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.services;
|
||||||
|
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.roles.*;
|
||||||
|
import com.sjmresorts.opsapp.admin.repositories.RoleUsersRepository;
|
||||||
|
import com.sjmresorts.opsapp.admin.repositories.RolesRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.mappers.RoleMapper;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.*;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.RolePermissionRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.RouterPermissionRepository;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.SysRouterRepository;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.DaoUtil;
|
||||||
|
import com.sjmresorts.opsapp.logging.models.AuditLog;
|
||||||
|
import com.sjmresorts.opsapp.logging.services.AuditLogService;
|
||||||
|
import jakarta.persistence.criteria.Predicate;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AdminRolesService {
|
||||||
|
|
||||||
|
private final RolesRepository rolesRepository;
|
||||||
|
private final AuditLogService auditLogService;
|
||||||
|
private final RoleUsersRepository roleUsersRepository;
|
||||||
|
private final RoleMapper roleMapper;
|
||||||
|
private final SysRouterRepository sysRouterRepository;
|
||||||
|
private final RouterPermissionRepository routerPermissionRepository;
|
||||||
|
private final RolePermissionRepository rolePermissionRepository;
|
||||||
|
|
||||||
|
public List<Role> getAllRoles() {
|
||||||
|
return rolesRepository.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataTableResult<AdminRoleDto> getRoleInfoListByPage(AdminGetRolesRequest pageRequest) {
|
||||||
|
|
||||||
|
Specification<Role> listSpec = buildSpecificationByPageRequest(pageRequest);
|
||||||
|
int pageSize = pageRequest.getPageSize();
|
||||||
|
int pageStart = pageRequest.getStartRow() / pageSize;
|
||||||
|
Sort sort = DaoUtil.buildSortByString(pageRequest.getSortOrder(), "roleId");
|
||||||
|
Pageable pageable = PageRequest.of(pageStart, pageSize, sort);
|
||||||
|
Page<Role> resultPage = rolesRepository.findAll(listSpec,pageable);
|
||||||
|
List<AdminRoleDto> resultList = roleMapper.toAdminRoleDto(resultPage.getContent());
|
||||||
|
DataTableResult<AdminRoleDto> dataResult = new DataTableResult<>();
|
||||||
|
dataResult.setTotalRecords(resultPage.getTotalElements());
|
||||||
|
dataResult.setPageSize(pageSize);
|
||||||
|
if (resultList == null) {
|
||||||
|
resultList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
dataResult.setRowData(resultList);
|
||||||
|
return dataResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public BaseApiResponse createRole(AdminCreateRoleRequest request, LoginUserInfo loginUserInfo) {
|
||||||
|
BaseApiResponse result = new BaseApiResponse();
|
||||||
|
AuditLog auditLog = auditLogService.createAuditLog("Create Role", "Create a new Role from AdminRolesService.createRole()", loginUserInfo);
|
||||||
|
Role newRole = new Role();
|
||||||
|
newRole.setRoleName(request.getRoleName());
|
||||||
|
auditLogService.setLogOldValue(auditLog,null);
|
||||||
|
rolesRepository.save(newRole);
|
||||||
|
auditLogService.setLogNewValue(auditLog,newRole);
|
||||||
|
auditLogService.saveAuditLog(auditLog);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Created Successfully");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BaseApiResponse deleteRole(AdminDeleteRoleRequest request, LoginUserInfo loginUserInfo) {
|
||||||
|
BaseApiResponse result = new BaseApiResponse();
|
||||||
|
AuditLog auditLog = auditLogService.createAuditLog("Delete Role", "Delete a Role from AdminRolesService.deleteRole()", loginUserInfo);
|
||||||
|
auditLogService.setLogOldValue(auditLog,request.getRoleName());
|
||||||
|
rolesRepository.deleteById(request.getRoleId());
|
||||||
|
auditLogService.setLogNewValue(auditLog,"");
|
||||||
|
auditLogService.saveAuditLog(auditLog);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Created Successfully");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BaseApiResponse modifyRole(AdminModifyRoleRequest request, LoginUserInfo loginUserInfo) {
|
||||||
|
BaseApiResponse result = new BaseApiResponse();
|
||||||
|
AuditLog auditLog = auditLogService.createAuditLog("Modify Role", "Modify a Role from AdminRolesService.deleteRole()", loginUserInfo);
|
||||||
|
auditLogService.setLogOldValue(auditLog,request.getRoleName());
|
||||||
|
Role oRole = rolesRepository.getRoleByRoleId((request.getRoleId()));
|
||||||
|
oRole.setRoleName(request.getRoleName());
|
||||||
|
rolesRepository.save(oRole);
|
||||||
|
auditLogService.setLogNewValue(auditLog,"");
|
||||||
|
auditLogService.saveAuditLog(auditLog);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Modify Successfully");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AdminGetRoleByIdResponse getRoleById(AdminGetRoleByIdRequest request) {
|
||||||
|
AdminGetRoleByIdResponse result = new AdminGetRoleByIdResponse();
|
||||||
|
Role getRole = rolesRepository.findById(request.getRoleId()).orElse(null);
|
||||||
|
result.setData(getRole);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Get Role By Id Successfully");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Specification<Role> buildSpecificationByPageRequest(AdminGetRolesRequest pageRequest) {
|
||||||
|
|
||||||
|
return ((root, criteriaQuery, cb) -> {
|
||||||
|
List<Predicate> list = new ArrayList<>();
|
||||||
|
if (StringUtils.isNotBlank(pageRequest.getSearchRoleName())) {
|
||||||
|
list.add(cb.like(cb.upper(root.get("roleName")),
|
||||||
|
"%" + pageRequest.getSearchRoleName().toUpperCase() + "%"));
|
||||||
|
}
|
||||||
|
Predicate[] predicates = new Predicate[list.size()];
|
||||||
|
criteriaQuery.where(list.toArray(predicates));
|
||||||
|
return cb.and(list.toArray(predicates));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean updateGroupAssignUser(AdminRoleAssignUsersRequest request, LoginUserInfo loginUserInfo) {
|
||||||
|
Long roleId = request.getRoleId();
|
||||||
|
List<String> employeeIdList = request.getEmployeeIds();
|
||||||
|
List<RoleUsers> dataToDelete =roleUsersRepository.findAllByRoleId(roleId);
|
||||||
|
AuditLog auditLog = auditLogService.createAuditLog("Update Group Assign Users", "Update Group Assign Users from AdminRolesService.updateGroupAssignUser()", loginUserInfo);
|
||||||
|
auditLogService.setLogOldValue(auditLog,dataToDelete);
|
||||||
|
if(employeeIdList!=null) {
|
||||||
|
List<RoleUsers> saveData = new ArrayList<>();
|
||||||
|
for(int i=0; i<employeeIdList.size();i++) {
|
||||||
|
String employeeId = employeeIdList.get(i);
|
||||||
|
boolean isExist = false;
|
||||||
|
for(int j=0;j<dataToDelete.size();j++) {
|
||||||
|
RoleUsers existItem = dataToDelete.get(j);
|
||||||
|
if(existItem.getEmployeeId().equals(employeeId)) {
|
||||||
|
isExist = true;
|
||||||
|
dataToDelete.remove(j);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(isExist==false) {
|
||||||
|
RoleUsers userItem = new RoleUsers();
|
||||||
|
userItem.setRoleId(roleId);
|
||||||
|
userItem.setEmployeeId(employeeId);
|
||||||
|
saveData.add(userItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(saveData.size()>0) {
|
||||||
|
roleUsersRepository.saveAll(saveData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(dataToDelete.size()>0) {
|
||||||
|
roleUsersRepository.deleteAll(dataToDelete);
|
||||||
|
}
|
||||||
|
auditLogService.setLogNewValue(auditLog,request);
|
||||||
|
auditLogService.saveAuditLog(auditLog);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,180 @@
|
|||||||
|
package com.sjmresorts.opsapp.admin.services;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.roleUsers.AdminGetRoleUsersRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.user.CmsAppUserPageRequest;
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.user.CmsUserDto;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.mappers.UserMapper;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RoleUsers;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.User;
|
||||||
|
import com.sjmresorts.opsapp.authentication.repositories.UserRepository;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.DataTableResult;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.DaoUtil;
|
||||||
|
import com.sjmresorts.opsapp.logging.models.AuditLog;
|
||||||
|
import com.sjmresorts.opsapp.logging.services.AuditLogService;
|
||||||
|
import jakarta.persistence.criteria.*;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AdminUserService {
|
||||||
|
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
private final AuditLogService auditLogService;
|
||||||
|
private final UserMapper userMapper;
|
||||||
|
|
||||||
|
public DataTableResult<CmsUserDto> getUserInfoListByPage(CmsAppUserPageRequest pageRequest) {
|
||||||
|
|
||||||
|
Specification<User> listSpec = buildSpecificationByPageRequest(pageRequest);
|
||||||
|
int pageSize = pageRequest.getPageSize();
|
||||||
|
int pageStart = pageRequest.getStartRow() / pageSize;
|
||||||
|
Sort sort = DaoUtil.buildSortByString(pageRequest.getSortOrder(), "userId");
|
||||||
|
Pageable pageable = PageRequest.of(pageStart, pageSize, sort);
|
||||||
|
Page<User> resultPage = userRepository.findAll(listSpec, pageable);
|
||||||
|
List<CmsUserDto> resultList = userMapper.toCmsUserDtoList(resultPage.getContent());
|
||||||
|
DataTableResult<CmsUserDto> dataResult = new DataTableResult<>();
|
||||||
|
dataResult.setTotalRecords(resultPage.getTotalElements());
|
||||||
|
dataResult.setPageSize(pageSize);
|
||||||
|
if (resultList == null) {
|
||||||
|
resultList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
dataResult.setRowData(resultList);
|
||||||
|
return dataResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Specification<User> buildSpecificationByPageRequest(CmsAppUserPageRequest pageRequest) {
|
||||||
|
|
||||||
|
return ((root, criteriaQuery, cb) -> {
|
||||||
|
List<Predicate> list = new ArrayList<>();
|
||||||
|
if (StringUtils.isNotBlank(pageRequest.getSearchUserName())) {
|
||||||
|
list.add(cb.like(cb.upper(root.get("userName")),
|
||||||
|
"%" + pageRequest.getSearchUserName().toUpperCase() + "%"));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(pageRequest.getSearchAccount())) {
|
||||||
|
list.add(cb.like(cb.upper(root.get("employeeId")),
|
||||||
|
"%" + pageRequest.getSearchAccount().toUpperCase() + "%"));
|
||||||
|
}
|
||||||
|
Predicate[] predicates = new Predicate[list.size()];
|
||||||
|
criteriaQuery.where(list.toArray(predicates));
|
||||||
|
return cb.and(list.toArray(predicates));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<User> listUser(AdminGetRoleUsersRequest request, String searchType) {
|
||||||
|
Specification<User> listSpec = buildSpecificationByRequest(request,searchType);
|
||||||
|
Sort sort = DaoUtil.buildSortByString(request.getSortOrder(), "employeeId");
|
||||||
|
List<User> resultList = userRepository.findAll(listSpec,sort);
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Specification<User> buildSpecificationByRequest(AdminGetRoleUsersRequest request, String searchType) {
|
||||||
|
Specification<User> SysUserpec = new Specification<User>() {
|
||||||
|
@Override
|
||||||
|
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
|
||||||
|
List<Predicate> list = new ArrayList<>();
|
||||||
|
if (StringUtils.equals(searchType, "USER_ROLE") && request.getSearchRoleId() != null) {
|
||||||
|
Subquery<String> groupSubQuery = criteriaQuery.subquery(String.class);
|
||||||
|
Root<RoleUsers> subQueryRoot = groupSubQuery.from(RoleUsers.class);
|
||||||
|
groupSubQuery.select(subQueryRoot.get("employeeId"));
|
||||||
|
List<Predicate> subQueryPredicates = new ArrayList<>();
|
||||||
|
subQueryPredicates.add(cb.equal(subQueryRoot.get("roleId"), request.getSearchRoleId()));
|
||||||
|
groupSubQuery.where(subQueryPredicates.toArray(new Predicate[] {}));
|
||||||
|
list.add(cb.in(root.get("employeeId")).value(groupSubQuery));
|
||||||
|
} else if (StringUtils.equals(searchType, "UNASSIGN_USER")) {
|
||||||
|
Subquery<Long> groupSubQuery = criteriaQuery.subquery(Long.class);
|
||||||
|
Root<RoleUsers> subQueryRoot = groupSubQuery.from(RoleUsers.class);
|
||||||
|
groupSubQuery.select(cb.literal(1L));
|
||||||
|
List<Predicate> subQueryPredicates = new ArrayList<>();
|
||||||
|
subQueryPredicates.add(cb.equal(subQueryRoot.get("employeeId"), root.get("employeeId")));
|
||||||
|
groupSubQuery.where(subQueryPredicates.toArray(new Predicate[] {}));
|
||||||
|
list.add(cb.not(cb.exists(groupSubQuery)));
|
||||||
|
}
|
||||||
|
Predicate[] predicates = new Predicate[list.size()];
|
||||||
|
criteriaQuery.where(list.toArray(predicates));
|
||||||
|
return cb.and(list.toArray(predicates));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return SysUserpec;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public BaseApiResponse createUser(CmsUserDto userDto, LoginUserInfo loginUserInfo) {
|
||||||
|
BaseApiResponse result = new BaseApiResponse();
|
||||||
|
AuditLog auditLog = auditLogService.createAuditLog("Create User", "Create a new User from AdminUserService.createUser()", loginUserInfo);
|
||||||
|
User user = userMapper.toUserEntity(userDto);
|
||||||
|
user.setCasinoCode("");
|
||||||
|
auditLogService.setLogOldValue(auditLog, null);
|
||||||
|
userRepository.save(user);
|
||||||
|
auditLogService.setLogNewValue(auditLog, user);
|
||||||
|
auditLogService.saveAuditLog(auditLog);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Created Successfully");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BaseApiResponse updateUser(CmsUserDto userDto, LoginUserInfo loginUserInfo) {
|
||||||
|
BaseApiResponse result = new BaseApiResponse();
|
||||||
|
AuditLog auditLog = auditLogService.createAuditLog("Update User", "Update User from AdminUserService.updateUser()", loginUserInfo);
|
||||||
|
User user = userRepository.findById(userDto.getUserId()).orElse(null);
|
||||||
|
if (user != null) {
|
||||||
|
auditLogService.setLogOldValue(auditLog, user);
|
||||||
|
userMapper.updateUserFromCmsUserDto(userDto, user);
|
||||||
|
userRepository.save(user);
|
||||||
|
auditLogService.setLogNewValue(auditLog, user);
|
||||||
|
auditLogService.saveAuditLog(auditLog);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Updated Successfully");
|
||||||
|
} else {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode("400");
|
||||||
|
result.setMessage("User does not exists");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BaseApiResponse updateStatus(CmsUserDto userDto, LoginUserInfo loginUserInfo) {
|
||||||
|
BaseApiResponse result = new BaseApiResponse();
|
||||||
|
AuditLog auditLog = auditLogService.createAuditLog("Update User Status", "Update User status from AdminUserService.updateStatus()", loginUserInfo);
|
||||||
|
User user = userRepository.findById(userDto.getUserId()).orElse(null);
|
||||||
|
if (user != null) {
|
||||||
|
auditLogService.setLogOldValue(auditLog, user);
|
||||||
|
user.setStatus(userDto.getStatus());
|
||||||
|
userRepository.save(user);
|
||||||
|
auditLogService.setLogNewValue(auditLog, user);
|
||||||
|
auditLogService.saveAuditLog(auditLog);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Status Updated Successfully");
|
||||||
|
} else {
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode("400");
|
||||||
|
result.setMessage("User does not exists");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CmsUserDto queryCmsUserById(@NotBlank long userId) {
|
||||||
|
CmsUserDto userDto = null;
|
||||||
|
User user = userRepository.findById(userId).orElse(null);
|
||||||
|
|
||||||
|
if (user != null) {
|
||||||
|
userDto = userMapper.toCmsUserDto(user);
|
||||||
|
}
|
||||||
|
return userDto;
|
||||||
|
}
|
||||||
|
}
|
||||||
+147
@@ -0,0 +1,147 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.controllers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.*;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.AdAuthorizeService;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.LoginService;
|
||||||
|
import com.sjmresorts.opsapp.common.constants.AppConstants;
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@Tag(name = "Authorization", description = "APIs relate with ad login authorization")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/authorization")
|
||||||
|
@CrossOrigin(origins = "*")
|
||||||
|
public class MobileAuthorizationController {
|
||||||
|
@Resource
|
||||||
|
private LoginService loginService;
|
||||||
|
@Resource
|
||||||
|
private AdAuthorizeService adAuthService;
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "appLogout",
|
||||||
|
description = "API for app logout process"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "App logout successful")
|
||||||
|
})
|
||||||
|
@PostMapping(value="/logout",produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<AppLogoutResponse> deviceLogin(
|
||||||
|
HttpServletRequest request) {
|
||||||
|
|
||||||
|
AppLogoutResponse result = new AppLogoutResponse();
|
||||||
|
LoginUserInfo loginUser = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
if(loginUser!=null){
|
||||||
|
loginService.processLogout(loginUser);
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode("200");
|
||||||
|
result.setMessage("Logout successful.");
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(result);
|
||||||
|
}else{
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode("401");
|
||||||
|
result.setMessage("Unauthorized logout");
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Register Pits info for tracking",
|
||||||
|
description = "API for location tracking registration"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Register Pits successful"),
|
||||||
|
@ApiResponse(responseCode = "400", description = "Invalid request data")
|
||||||
|
})
|
||||||
|
@PostMapping(value="/register_track_pits",produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<RegisterTrackInfoResponse> registerTrackScope(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "Register request for pits tracking", required = true) @Valid @RequestBody RegisterTrackInfoRequest requestData) {
|
||||||
|
RegisterTrackInfoResponse responseData = loginService.registerTrackPits(requestData.getData());
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Third Party Authorization",
|
||||||
|
description = "API to retrieve access token for third party caller, such as Service Button"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Access Token generated successful"),
|
||||||
|
@ApiResponse(responseCode = "401", description = "Authorization key not math")
|
||||||
|
})
|
||||||
|
@PostMapping(value="/getAccessToken",produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<GetAuthTokenResponse> getApiAccessToken(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@Parameter(description = "Third party requestor info", required = true) @Valid @RequestBody GetAuthTokenRequest requestData) {
|
||||||
|
String authorizationKey = request.getHeader("Authorization");
|
||||||
|
if(authorizationKey!=null && authorizationKey.equals(JwtTokenUtil.getThirdPartySecretKey())){
|
||||||
|
GetAuthTokenResponse responseData = loginService.assignAccessToken(AppConstants.THIRD_PARTY_TOKEN_TYPE,requestData.getData());
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}else{
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Renew API token by non-expired token",
|
||||||
|
description = "API to renew access token"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Access Token refreshed successful")
|
||||||
|
})
|
||||||
|
@PostMapping(value="/refreshToken",produces = "application/json;charset=UTF-8")
|
||||||
|
public ResponseEntity<RefreshTokenResponse> refreshToken(
|
||||||
|
HttpServletRequest request,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
RefreshTokenResponse responseData = new RefreshTokenResponse();
|
||||||
|
LoginUserInfo loginUser = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
boolean isRenewRefreshToken = (!"false".equalsIgnoreCase(request.getParameter("isRenewRefreshToken")));
|
||||||
|
if(loginUser!=null){
|
||||||
|
responseData = loginService.refreshToken(loginUser,isRenewRefreshToken);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}else{
|
||||||
|
responseData.setSuccess(false);
|
||||||
|
responseData.setCode("401");
|
||||||
|
responseData.setMessage("Unauthorized operation");
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "Heart-beat API",
|
||||||
|
description = "API to register last heart-beat time for login user"
|
||||||
|
)
|
||||||
|
@ApiResponses({
|
||||||
|
@ApiResponse(responseCode = "200", description = "Access Token refreshed successful")
|
||||||
|
})
|
||||||
|
@GetMapping(value="/appHeartBeat")
|
||||||
|
public ResponseEntity<BaseApiResponse> sendHeartBeat(
|
||||||
|
HttpServletRequest request,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
LoginUserInfo loginUser = JwtTokenUtil.parseUserFromRequest(request);
|
||||||
|
BaseApiResponse responseData = new BaseApiResponse();
|
||||||
|
if(loginUser!=null){
|
||||||
|
boolean registerSuccess = loginService.registerHeartBeat(loginUser);
|
||||||
|
responseData.setSuccess(registerSuccess);
|
||||||
|
return ResponseEntity.status(HttpStatus.OK).body(responseData);
|
||||||
|
}else{
|
||||||
|
responseData.setSuccess(false);
|
||||||
|
responseData.setCode("401");
|
||||||
|
responseData.setMessage("Unauthorized operation");
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(responseData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class AdAuthorizeResponse {
|
||||||
|
|
||||||
|
private boolean success=false;
|
||||||
|
private String code;
|
||||||
|
private String message;
|
||||||
|
private AdUserInfo userInfo;
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Data field of AdLoginRequest")
|
||||||
|
public class AdLoginData {
|
||||||
|
@Schema(description = "AD Account of Employee", example = "XXX")
|
||||||
|
@NotBlank(message = "Employee Id must not be blank")
|
||||||
|
private String employeeId;
|
||||||
|
|
||||||
|
@Schema(description = "Password of AD Account", nullable = false)
|
||||||
|
@NotBlank(message = "Password must not be blank")
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
@Schema(description = "UUID of user login device")
|
||||||
|
private String deviceId;
|
||||||
|
|
||||||
|
@Schema(description = "FCM token of current login device")
|
||||||
|
private String deviceToken;
|
||||||
|
|
||||||
|
@Schema(description = "Device name of user login")
|
||||||
|
private String deviceName;
|
||||||
|
|
||||||
|
@Schema(description = "Device version of user login")
|
||||||
|
private String deviceVersion;
|
||||||
|
|
||||||
|
@Schema(description = "App version of current using")
|
||||||
|
private String appVersion;
|
||||||
|
|
||||||
|
@Schema(description = "Is Mockup Login")
|
||||||
|
private Boolean isMock;
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.SchemaEntry;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Request info of AD login with password")
|
||||||
|
public class AdLoginRequest {
|
||||||
|
@Schema(description = "Schema field of request")
|
||||||
|
@NotNull(message = "Schema attribute must not be null")
|
||||||
|
private SchemaEntry schema;
|
||||||
|
|
||||||
|
@Schema(description = "Data field of request")
|
||||||
|
@NotNull(message = "Data attribute must not be null")
|
||||||
|
private AdLoginData data;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of AD login with password")
|
||||||
|
public class AdLoginResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Indicate AD authorization success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Login successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "JWT token assign for login user")
|
||||||
|
private String accessToken;
|
||||||
|
|
||||||
|
@Schema(description = "JWT refresh token assign for login user")
|
||||||
|
private String refreshToken;
|
||||||
|
|
||||||
|
@Schema(description = "AD account of login user")
|
||||||
|
private String employeeId;
|
||||||
|
|
||||||
|
@Schema(description = "User name of login user")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Schema(description = "User Id of login user")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Schema(description = "Available access property of login user")
|
||||||
|
private String casinoCode;
|
||||||
|
|
||||||
|
@Schema(description = "Permission Group of login user")
|
||||||
|
private Set<String> permissionGroup;
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class AdUserInfo {
|
||||||
|
|
||||||
|
private String employeeId;
|
||||||
|
private String userName;
|
||||||
|
private List<String> adGroup;
|
||||||
|
private String role;
|
||||||
|
private String email;
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of App logout")
|
||||||
|
public class AppLogoutResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Indicate app logout success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Device logout successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Data field of DeviceLoginRequest")
|
||||||
|
public class DeviceLoginData {
|
||||||
|
@Schema(description = "Security content provide by SJM launcher")
|
||||||
|
private String securityContent;
|
||||||
|
|
||||||
|
@Schema(description = "UUID of user login device")
|
||||||
|
private String deviceId;
|
||||||
|
|
||||||
|
@Schema(description = "FCM token of current login device")
|
||||||
|
private String deviceToken;
|
||||||
|
|
||||||
|
@Schema(description = "Device name of user login")
|
||||||
|
private String deviceName;
|
||||||
|
|
||||||
|
@Schema(description = "Device version of user login")
|
||||||
|
private String deviceVersion;
|
||||||
|
|
||||||
|
@Schema(description = "Employee ID from Launcher", example = "000001")
|
||||||
|
@NotBlank(message = "Employee Id must not be blank")
|
||||||
|
private String employeeId;
|
||||||
|
|
||||||
|
@Schema(description = "User Name from Launcher", example = "XXX")
|
||||||
|
@NotBlank(message = "User Name must not be blank")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Schema(description = "Property code from Launcher", example = "GLC")
|
||||||
|
private String casinoCode;
|
||||||
|
|
||||||
|
@Schema(description = "App version of current using")
|
||||||
|
private String appVersion;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.SchemaEntry;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Login request info of SJM launcher")
|
||||||
|
public class DeviceLoginRequest {
|
||||||
|
@Schema(description = "Schema field of request")
|
||||||
|
private SchemaEntry schema;
|
||||||
|
|
||||||
|
@Schema(description = "Data field of request")
|
||||||
|
private DeviceLoginData data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of SJM launcher login with AD content")
|
||||||
|
public class DeviceLoginResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Indicate AD authorization success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Device login successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "JWT API token assign for this login")
|
||||||
|
private String accessToken;
|
||||||
|
|
||||||
|
@Schema(description = "JWT Refresh token assign for this login")
|
||||||
|
private String refreshToken;
|
||||||
|
|
||||||
|
@Schema(description = "AD account of login user")
|
||||||
|
private String employeeId;
|
||||||
|
|
||||||
|
@Schema(description = "User name of login user")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Schema(description = "User Id of login user")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Schema(description = "Available access property of login user")
|
||||||
|
private String casinoCode;
|
||||||
|
|
||||||
|
@Schema(description = "Permission Group of login user")
|
||||||
|
private Set<String> permissionGroup;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Data field of GetAuthToken request")
|
||||||
|
public class GetAuthTokenData {
|
||||||
|
@Schema(description = "Requester ID of notification API caller", example = "ELO_XXXX")
|
||||||
|
@NotBlank(message = "Requester Id must not be blank")
|
||||||
|
private String requesterId;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.SchemaEntry;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Request to get notification API access token")
|
||||||
|
public class GetAuthTokenRequest {
|
||||||
|
@Schema(description = "Schema field of request")
|
||||||
|
@NotNull(message = "Schema attribute must not be null")
|
||||||
|
private SchemaEntry schema;
|
||||||
|
|
||||||
|
@Schema(description = "Data field of request")
|
||||||
|
@NotNull(message = "Data attribute must not be null")
|
||||||
|
private GetAuthTokenData data;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of notification API access token")
|
||||||
|
public class GetAuthTokenResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Indicate access token generated success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Access token generated successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Schema(description = "JWT token assign for service button")
|
||||||
|
private String accessToken;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class LoginUserInfo {
|
||||||
|
private Long userId;
|
||||||
|
private String employeeId;
|
||||||
|
private String userCode;
|
||||||
|
private String userName;
|
||||||
|
private String adGroup;
|
||||||
|
private String role;
|
||||||
|
private String email;
|
||||||
|
private String loginSource;
|
||||||
|
private String tokenUuid;
|
||||||
|
private String appVersion;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.BaseApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of refreshing App access token")
|
||||||
|
public class RefreshTokenResponse extends BaseApiResponse {
|
||||||
|
|
||||||
|
@Schema(description = "New API JWT token generated")
|
||||||
|
private String accessToken;
|
||||||
|
|
||||||
|
@Schema(description = "New Refresh JWT token generated")
|
||||||
|
private String refreshToken;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Data field of RegisterTrackInfoRequest")
|
||||||
|
public class RegisterTrackInfoData {
|
||||||
|
@Schema(description = "Employee ID of current user")
|
||||||
|
private String employeeId;
|
||||||
|
|
||||||
|
@Schema(description = "Casino code of user selected")
|
||||||
|
private String casinoCode;
|
||||||
|
|
||||||
|
@Schema(description = "Pits code of user selected")
|
||||||
|
private List<String> pitCodes;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.common.dtos.SchemaEntry;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Request info of Track pits registeration")
|
||||||
|
public class RegisterTrackInfoRequest {
|
||||||
|
@Schema(description = "Schema field of request")
|
||||||
|
private SchemaEntry schema;
|
||||||
|
|
||||||
|
@Schema(description = "Data field of request")
|
||||||
|
private RegisterTrackInfoData data;
|
||||||
|
|
||||||
|
}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.dtos;
|
||||||
|
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Schema(description = "Response info of Track pits registeration")
|
||||||
|
public class RegisterTrackInfoResponse {
|
||||||
|
|
||||||
|
@Schema(description = "Indicate success status")
|
||||||
|
private boolean success=false;
|
||||||
|
|
||||||
|
@Schema(description = "Status Code of response",example="200")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@Schema(description = "Description of result",example="Pits are registered successfully")
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.filters;
|
||||||
|
|
||||||
|
import com.auth0.jwt.JWTVerifier;
|
||||||
|
import com.auth0.jwt.exceptions.TokenExpiredException;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.services.UserTokenService;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.JwtTokenUtil;
|
||||||
|
import com.sjmresorts.opsapp.common.utils.NetworkUtil;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.FilterChain;
|
||||||
|
import jakarta.servlet.ServletException;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import lombok.NonNull;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.util.AntPathMatcher;
|
||||||
|
import org.springframework.web.filter.OncePerRequestFilter;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class JwtAuthFilter extends OncePerRequestFilter {
|
||||||
|
|
||||||
|
private final AntPathMatcher pathMatcher = new AntPathMatcher();
|
||||||
|
private final Logger logger = LoggerFactory.getLogger(JwtAuthFilter.class);
|
||||||
|
@Setter
|
||||||
|
private List<String> excludePatterns;
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
private List<String> verifyAppVersionList;
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
@Resource
|
||||||
|
private UserTokenService userTokenService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doFilterInternal(
|
||||||
|
@NonNull HttpServletRequest request,
|
||||||
|
@NonNull HttpServletResponse response,
|
||||||
|
@NonNull FilterChain filterChain
|
||||||
|
) throws ServletException, IOException{
|
||||||
|
|
||||||
|
NetworkUtil.checkAndSetAllowOrigin(request,response);
|
||||||
|
NetworkUtil.setSecurityHeaders(request,response);
|
||||||
|
String token = request.getHeader("Authorization");
|
||||||
|
String uri = request.getRequestURI();
|
||||||
|
if(StringUtils.isNotBlank(token) && token.startsWith("Bearer ")){
|
||||||
|
token = token.substring(7);
|
||||||
|
}
|
||||||
|
if(StringUtils.isNotBlank(token)) {
|
||||||
|
JWTVerifier jwtVerifier = JwtTokenUtil.getJwtVerifier();
|
||||||
|
try {
|
||||||
|
jwtVerifier.verify(token);
|
||||||
|
}catch (TokenExpiredException e) {
|
||||||
|
sendErrorResponse(response,HttpServletResponse.SC_UNAUTHORIZED,"Token Expired");
|
||||||
|
request.setAttribute("AUTH_EXCEPTION","Token Expired");
|
||||||
|
return;
|
||||||
|
}catch (Exception e) {
|
||||||
|
sendErrorResponse(response,HttpServletResponse.SC_UNAUTHORIZED,"Unauthorized");
|
||||||
|
request.setAttribute("AUTH_EXCEPTION","Unauthorized");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LoginUserInfo loginInfo = JwtTokenUtil.parseUserFromToken(token);
|
||||||
|
if(loginInfo==null){
|
||||||
|
sendErrorResponse(response,HttpServletResponse.SC_UNAUTHORIZED,"Unauthorized");
|
||||||
|
request.setAttribute("AUTH_EXCEPTION","Invalid token");
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
|
if(!userTokenService.checkUserTokenValid(loginInfo.getTokenUuid())){
|
||||||
|
sendErrorResponse(response,HttpServletResponse.SC_UNAUTHORIZED,"Not Existing Token");
|
||||||
|
request.setAttribute("AUTH_EXCEPTION","Not Existing Token");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}else if(!"OPTIONS".equals(request.getMethod())) {
|
||||||
|
sendErrorResponse(response,HttpServletResponse.SC_UNAUTHORIZED,"Unauthorized");
|
||||||
|
request.setAttribute("AUTH_EXCEPTION","Unauthorized");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
filterChain.doFilter(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean shouldNotFilter(@NonNull HttpServletRequest request) {
|
||||||
|
if (excludePatterns == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return excludePatterns.stream()
|
||||||
|
.anyMatch(pattern -> pathMatcher.match(pattern, request.getRequestURI()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean needCheckAppVersion(@NonNull HttpServletRequest request){
|
||||||
|
if(verifyAppVersionList==null || verifyAppVersionList.isEmpty()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return verifyAppVersionList.stream()
|
||||||
|
.anyMatch(pattern -> pathMatcher.match(pattern, request.getRequestURI()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendErrorResponse(HttpServletResponse response, int errorCode, String errorMessage) throws IOException {
|
||||||
|
response.setStatus(errorCode);
|
||||||
|
response.setContentType("application/text");
|
||||||
|
response.setCharacterEncoding("UTF-8");
|
||||||
|
response.getWriter().write(errorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.mappers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.roles.AdminRoleDto;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.Role;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public interface RoleMapper {
|
||||||
|
@Mapping(source = "roleId", target = "roleName")
|
||||||
|
List<AdminRoleDto> toAdminRoleDto(List<Role> roles);
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.mappers;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.admin.dtos.system.user.CmsUserDto;
|
||||||
|
import com.sjmresorts.opsapp.authentication.dtos.LoginUserInfo;
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.User;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
import org.mapstruct.MappingTarget;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public interface UserMapper {
|
||||||
|
|
||||||
|
@Mapping(source = "ldapGroup", target = "adGroup")
|
||||||
|
@Mapping(source = "employeeId", target = "userCode")
|
||||||
|
LoginUserInfo toLoginUser(User user);
|
||||||
|
|
||||||
|
@Mapping(source = "employeeId", target = "userCode")
|
||||||
|
CmsUserDto toCmsUserDto(User user);
|
||||||
|
|
||||||
|
@Mapping(source = "employeeId", target = "userCode")
|
||||||
|
List<CmsUserDto> toCmsUserDtoList(List<User> users);
|
||||||
|
|
||||||
|
@Mapping(source = "userCode", target = "employeeId")
|
||||||
|
User toUserEntity(CmsUserDto userDto);
|
||||||
|
|
||||||
|
@Mapping(target = "userId", ignore = true)
|
||||||
|
@Mapping(source = "userCode", target = "employeeId")
|
||||||
|
void updateUserFromCmsUserDto(CmsUserDto dto, @MappingTarget User entity);
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="client_infos")
|
||||||
|
public class ClientInfo {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@Column(name = "id",nullable = false)
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Column(name = "is_latest")
|
||||||
|
private Boolean isLatest;
|
||||||
|
|
||||||
|
@Column(name = "is_active")
|
||||||
|
private Boolean isActive;
|
||||||
|
|
||||||
|
@Column(name = "current_login_user")
|
||||||
|
private String currentLoginUser;
|
||||||
|
|
||||||
|
@Column(name = "client_version")
|
||||||
|
private String clientVersion;
|
||||||
|
|
||||||
|
@Column(name = "device_fuid")
|
||||||
|
private String deviceFuid;
|
||||||
|
|
||||||
|
@Column(name = "client_name")
|
||||||
|
private String clientName;
|
||||||
|
|
||||||
|
@Column(name = "casino_code")
|
||||||
|
private String casinoCode;
|
||||||
|
|
||||||
|
@Column(name = "created_at")
|
||||||
|
private Instant createdAt;
|
||||||
|
|
||||||
|
@Column(name = "updated_at")
|
||||||
|
private Instant updatedAt;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="roles")
|
||||||
|
public class Role {
|
||||||
|
@Id
|
||||||
|
@Column(name = "role_id")
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long roleId;
|
||||||
|
|
||||||
|
@Column(name = "role_name")
|
||||||
|
private String roleName;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="role_permissions")
|
||||||
|
public class RolePermission {
|
||||||
|
@Id
|
||||||
|
@Column(name = "id")
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Column(name = "role_id")
|
||||||
|
private Long roleId;
|
||||||
|
|
||||||
|
@Column(name = "permission_id")
|
||||||
|
private Long permissionId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="role_users")
|
||||||
|
public class RoleUsers {
|
||||||
|
@Id
|
||||||
|
@Column(name = "id")
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Column(name = "role_id")
|
||||||
|
private Long roleId;
|
||||||
|
|
||||||
|
@Column(name = "employee_id")
|
||||||
|
private String employeeId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="permissions")
|
||||||
|
public class RouterPermission {
|
||||||
|
@Id
|
||||||
|
@Column(name = "permission_id")
|
||||||
|
private Long id;
|
||||||
|
@Column(name = "router_id")
|
||||||
|
private String routerId;
|
||||||
|
@Column(name = "permission_name")
|
||||||
|
private String permissionName;
|
||||||
|
@Transient
|
||||||
|
private boolean selected=false;
|
||||||
|
@Transient
|
||||||
|
private String dataPermissionTag;
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="users")
|
||||||
|
public class SimpleUser {
|
||||||
|
@Id
|
||||||
|
@Column(name = "user_id")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Column(name = "employee_id")
|
||||||
|
private String employeeId;
|
||||||
|
|
||||||
|
@Column(name = "username")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Column(name = "email")
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="sys_routers")
|
||||||
|
public class SysRouter {
|
||||||
|
@Id
|
||||||
|
@Column(name = "id")
|
||||||
|
private String id;
|
||||||
|
@Column(name="parent_id")
|
||||||
|
private String parentId;
|
||||||
|
@Column(name="heading")
|
||||||
|
private String heading;
|
||||||
|
@Column(name="section_title")
|
||||||
|
private String sectionTitle;
|
||||||
|
@Column(name="route")
|
||||||
|
private String route;
|
||||||
|
@Column(name="svg_icon")
|
||||||
|
private String svgIcon;
|
||||||
|
@Column(name="font_icon")
|
||||||
|
private String fontIcon;
|
||||||
|
@Column(name="sort_no")
|
||||||
|
private Integer sortNo;
|
||||||
|
@Column(name="status")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private List<SysRouter> sub;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private List<RouterPermission> routePermissions=new ArrayList<RouterPermission>();
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.hibernate.annotations.SQLDelete;
|
||||||
|
import org.hibernate.annotations.SQLRestriction;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="users")
|
||||||
|
@SQLDelete(sql = "UPDATE users SET deleted_at = CURRENT_TIMESTAMP WHERE user_id = ?")
|
||||||
|
@SQLRestriction("deleted_at IS NULL")
|
||||||
|
public class User {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@Column(name = "user_id",nullable = false)
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Column(name = "employee_id",nullable = false)
|
||||||
|
private String employeeId;
|
||||||
|
|
||||||
|
@Column(name = "username")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Column(name = "ldap_group")
|
||||||
|
private String ldapGroup;
|
||||||
|
|
||||||
|
@Column(name = "role")
|
||||||
|
private String role;
|
||||||
|
|
||||||
|
@Column(name = "casino_code",nullable = false)
|
||||||
|
private String casinoCode;
|
||||||
|
|
||||||
|
@Column(name = "pits")
|
||||||
|
private String pitCodes;
|
||||||
|
|
||||||
|
@Column(name = "device_id")
|
||||||
|
private String deviceId;
|
||||||
|
|
||||||
|
@Column(name = "device_token")
|
||||||
|
private String deviceToken;
|
||||||
|
|
||||||
|
@Column(name = "online_status")
|
||||||
|
private Boolean onlineStatus;
|
||||||
|
|
||||||
|
@Column(name = "last_heartbeat")
|
||||||
|
private Instant lastHeartbeat;
|
||||||
|
|
||||||
|
@Column(name = "email")
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@Column(name = "password")
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
@Column(name = "status")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Column(name = "last_login")
|
||||||
|
private Instant lastLogin;
|
||||||
|
|
||||||
|
@Column(name = "cms_last_login")
|
||||||
|
private Instant cmsLastLogin;
|
||||||
|
|
||||||
|
@Column(name = "is_deleted")
|
||||||
|
private Boolean deleted;
|
||||||
|
|
||||||
|
@Column(name = "deleted_at")
|
||||||
|
private Instant deletedAt;
|
||||||
|
|
||||||
|
@Version
|
||||||
|
@Column(name="version")
|
||||||
|
private Long version;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="user_roles")
|
||||||
|
public class UserRole {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@Column(name = "id",nullable = false)
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Column(name = "user_id")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Column(name = "role_id")
|
||||||
|
private Long roleId;
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.models;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Entity
|
||||||
|
@Table(name="user_tokens")
|
||||||
|
public class UserToken {
|
||||||
|
@Id
|
||||||
|
@Column(name = "token_id",nullable = false)
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long tokenId;
|
||||||
|
|
||||||
|
@Column(name = "user_code",nullable = false)
|
||||||
|
private String userCode;
|
||||||
|
|
||||||
|
@Column(name = "token_type",nullable = false)
|
||||||
|
private String tokenType;
|
||||||
|
|
||||||
|
@Column(name = "token_value",nullable = false)
|
||||||
|
private String tokenValue;
|
||||||
|
|
||||||
|
@Column(name = "token_uuid")
|
||||||
|
private String tokenUniqueId;
|
||||||
|
|
||||||
|
@Column(name = "created_at")
|
||||||
|
private Instant createdAt;
|
||||||
|
|
||||||
|
@Column(name = "expiry_time")
|
||||||
|
private Date expiryTime;
|
||||||
|
|
||||||
|
}
|
||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.repositories;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.ClientInfo;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Modifying;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface DeviceInfoRepository extends JpaRepository<ClientInfo, Long> {
|
||||||
|
|
||||||
|
List<ClientInfo> findAllByDeviceFuid(String deviceId);
|
||||||
|
|
||||||
|
Page<ClientInfo> findAll(Specification<ClientInfo> listSpec, Pageable pageable);
|
||||||
|
|
||||||
|
@Modifying
|
||||||
|
@Transactional
|
||||||
|
@Query(value="update ClientInfo set currentLoginUser=null, updatedAt=?2 " +
|
||||||
|
"where currentLoginUser=?1 ")
|
||||||
|
void clearLogoutDevice(String employeeId, Instant updateTime);
|
||||||
|
|
||||||
|
}
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.repositories;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RolePermission;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface RolePermissionRepository extends JpaRepository<RolePermission, Long> {
|
||||||
|
|
||||||
|
@Query("SELECT rp FROM RolePermission rp WHERE rp.roleId = ?1")
|
||||||
|
List<RolePermission> getAllPermissionByRoleId(Long roleId);
|
||||||
|
|
||||||
|
}
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.repositories;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.RouterPermission;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface RouterPermissionRepository extends JpaRepository<RouterPermission, Long> {
|
||||||
|
|
||||||
|
@Query(value="select rp from RouterPermission rp where rp.id in " +
|
||||||
|
" (select rop.permissionId from RolePermission rop where rop.roleId in ?1) ")
|
||||||
|
List<RouterPermission> queryPermissionByRoleIds(List<Long> roleIds);
|
||||||
|
|
||||||
|
@Query(value="select rp from RouterPermission rp where rp.id in " +
|
||||||
|
" (select rop.permissionId from RolePermission rop where rop.roleId in ?1) and rp.routerId in ?2 ")
|
||||||
|
List<RouterPermission> queryPermissionByRoleAndRouterIds(List<Long> roleIds,List<String> routerIds);
|
||||||
|
|
||||||
|
}
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
package com.sjmresorts.opsapp.authentication.repositories;
|
||||||
|
|
||||||
|
import com.sjmresorts.opsapp.authentication.models.SysRouter;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface SysRouterRepository extends JpaRepository<SysRouter, String> {
|
||||||
|
|
||||||
|
@Query(value="select rte from SysRouter rte where rte.status=1 order by rte.sortNo")
|
||||||
|
List<SysRouter> queryAllActiveRouter();
|
||||||
|
|
||||||
|
@Query(value="select rte from SysRouter rte order by rte.sortNo")
|
||||||
|
List<SysRouter> queryAllRoutersOrderBySort();
|
||||||
|
|
||||||
|
@Query(value="select rte from SysRouter rte where rte.heading is not null and rte.status=1 order by rte.sortNo")
|
||||||
|
List<SysRouter> getAllChildrenRoutes();
|
||||||
|
|
||||||
|
@Query(value="select rte.id from SysRouter rte where heading=?1")
|
||||||
|
List<String> queryIdsByHeading(String appRouterName);
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user