Frost 1 éve
commit
571050f182

+ 38 - 0
.gitignore

@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 7 - 0
.idea/encodings.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 14 - 0
.idea/misc.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 80 - 0
pom.xml

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>3.2.3</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <groupId>com</groupId>
+    <artifactId>yt-wj-api-1</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>yt-wj-api-1</name>
+    <description>yt-wj-api-1</description>
+
+    <properties>
+        <java.version>21</java.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jdbc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <version>3.2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-jpa</artifactId>
+            <version>3.2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+
+                <artifactId>spring-boot-maven-plugin</artifactId>
+
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build-image</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 13 - 0
src/main/java/com/wj/Application.java

@@ -0,0 +1,13 @@
+package com.wj;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ImportResource;
+
+@ImportResource
+@SpringBootApplication
+public class Application {
+    public static void main(String[] args) {
+        SpringApplication.run(Application.class, args);
+    }
+}

+ 31 - 0
src/main/java/com/wj/controller/PhoneNumberController.java

@@ -0,0 +1,31 @@
+package com.wj.controller;
+
+import com.wj.dto.PhoneNumberDTO;
+import com.wj.service.PhoneNumberService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api")
+public class PhoneNumberController {
+
+    @Autowired
+    private PhoneNumberService phoneNumberService;
+
+    @PostMapping("/check")
+    public ResponseEntity<Map<String, Object>> checkDuplicateNumber(@RequestBody PhoneNumberDTO phoneNumberDTO) {
+        String customerNo = phoneNumberDTO.getAni();
+        Map<String, Object> serviceResult = phoneNumberService.checkNumber(customerNo);
+        Map<String, Object> response = new HashMap<>();
+        response.put("ani", customerNo);
+        response.putAll(serviceResult);
+        return ResponseEntity.ok(response);
+    }
+}

+ 11 - 0
src/main/java/com/wj/dto/PhoneNumberDTO.java

@@ -0,0 +1,11 @@
+package com.wj.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+public class PhoneNumberDTO {
+    private String ani;
+
+}

+ 24 - 0
src/main/java/com/wj/entity/PhoneNumber.java

@@ -0,0 +1,24 @@
+package com.wj.entity;
+
+import jakarta.persistence.*;
+
+import java.time.LocalDateTime;
+
+@Entity
+@Table(name = "tb_call")
+public class PhoneNumber {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "call_id")
+    private String callId;
+
+    @Column(name = "customer_no")
+    private String customerNo;
+
+    @Column(name = "begin_time")
+    private LocalDateTime beginTime;
+
+}
+
+
+

+ 12 - 0
src/main/java/com/wj/repository/PhoneNumberRepository.java

@@ -0,0 +1,12 @@
+package com.wj.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDateTime;
+
+@Repository
+public interface PhoneNumberRepository extends JpaRepository<com.wj.entity.PhoneNumber, Long> {
+    long countByCustomerNoAndBeginTimeBetween(
+            String customerNo, LocalDateTime startOfDay, LocalDateTime now);
+}

+ 7 - 0
src/main/java/com/wj/service/PhoneNumberService.java

@@ -0,0 +1,7 @@
+package com.wj.service;
+
+import java.util.Map;
+
+public interface PhoneNumberService {
+    Map<String, Object> checkNumber(String customerNo);
+}

+ 39 - 0
src/main/java/com/wj/service/impl/PhoneNumberServiceImpl.java

@@ -0,0 +1,39 @@
+package com.wj.service.impl;
+
+import com.wj.repository.PhoneNumberRepository;
+import com.wj.service.PhoneNumberService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class PhoneNumberServiceImpl implements PhoneNumberService {
+
+    private static final Logger logger = LoggerFactory.getLogger(PhoneNumberServiceImpl.class);
+
+    @Autowired
+    private PhoneNumberRepository phoneNumberRepository;
+
+    @Override
+    public Map<String, Object> checkNumber(String customerNo) {
+        LocalDateTime startOfDay = LocalDate.now().atStartOfDay();
+        LocalDateTime now = LocalDateTime.now();
+        Map<String, Object> result = new HashMap<>();
+        try {
+            long callsCount = phoneNumberRepository.countByCustomerNoAndBeginTimeBetween(customerNo, startOfDay, now);
+            result.put("repeat", callsCount > 0 ? "Y" : "N");
+            result.put("callsNumber", callsCount);
+            logger.debug("Check for duplicate number: {} - Calls Count: {}", customerNo, callsCount);
+        } catch (Exception e) {
+            logger.error("Error checking for duplicate number: {}", customerNo, e);
+            throw e;
+        }
+        return result;
+    }
+}

+ 18 - 0
src/main/resources/application.properties

@@ -0,0 +1,18 @@
+spring.application.name=yt-wj-api
+server.port=8080
+mybatis.type-aliases-package=com.wj.entity
+mybatis.mapper-locations=classpath:mapper/*.xml
+mybatis.configuration.map-underscore-to-camel-case=true
+spring.main.allow-circular-references=true
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.format_sql=true
+logging.level.org.hibernate.SQL=DEBUG
+logging.level.org.hibernate.type=TRACE
+#spring.datasource.url=jdbc:mysql://${DBAddr}/${DB_NAME}?useSSL=false
+#spring.datasource.username=${DB_USERNAME}
+#spring.datasource.password=${DB_PASSWORD}
+spring.datasource.url=jdbc:mysql://192.168.11.170/history?useSSL=false
+spring.datasource.username=readcti
+spring.datasource.password=RWellcloud123!

+ 11 - 0
src/main/resources/logback-spring.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+    <root level="DEBUG">
+        <appender-ref ref="STDOUT"/>
+    </root>
+</configuration>