Parcourir la source

“提交项目”

wangqian il y a 1 mois
Parent
commit
748b1f1206
22 fichiers modifiés avec 1088 ajouts et 0 suppressions
  1. 35 0
      basic-demo-service/.gitignore
  2. 8 0
      basic-demo-service/Dockerfile
  3. 8 0
      basic-demo-service/Dockerfile-arm
  4. 145 0
      basic-demo-service/pom.xml
  5. 24 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/BasicDemoApplication.java
  6. 66 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/config/DemoDataSourceConfig.java
  7. 13 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/constants/Constants.java
  8. 28 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/constants/OrderLevel.java
  9. 94 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/controller/AuthController.java
  10. 100 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/controller/OrderController.java
  11. 24 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/dao/OrderCategoryDao.java
  12. 27 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/dao/OrderDao.java
  13. 21 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/pojo/OrderCategoryInfo.java
  14. 34 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/pojo/OrderInfo.java
  15. 23 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/pojo/OrderQueryInfo.java
  16. 21 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/service/OrderCategoryService.java
  17. 25 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/service/OrderService.java
  18. 51 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/service/impl/OrderCategoryServiceImpl.java
  19. 91 0
      basic-demo-service/src/main/java/cn/gov/customs/demo/service/impl/OrderServiceImpl.java
  20. 180 0
      basic-demo-service/src/main/resources/application.yml
  21. 25 0
      basic-demo-service/src/main/resources/mapper/demo/order/OrderCategoryMapper.xml
  22. 45 0
      basic-demo-service/src/main/resources/mapper/demo/order/OrderMapper.xml

+ 35 - 0
basic-demo-service/.gitignore

@@ -0,0 +1,35 @@
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+# https://github.com/takari/maven-wrapper#usage-without-binary-jar
+.mvn/wrapper/maven-wrapper.jar
+.idea/
+.flattened-pom.xml
+# Compiled class file
+*.class
+# Log file
+*.log
+# BlueJ files
+*.ctxt
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.rar
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+.classpath
+.metadata
+.settings
+.project
+*.iml

+ 8 - 0
basic-demo-service/Dockerfile

@@ -0,0 +1,8 @@
+FROM registry.cacp-test.hg.cn:31104/haiguan_base/openjdk:8u312-jdk-slim-hg-tsf-1.46
+
+ADD ./target/*.jar /app/app.jar
+RUN mkdir -p /app/servlet/logs
+ENV TRACE_AGENT="-javaagent:/app/opentelemetry-javaagent.jar -Dotel.javaagent.extensions=/app/femas-trace-opentelemetry.jar -Dotel.traces.exporter=none -Dotel.propagators=b3,b3multi"
+CMD ["sh", "-c", "cd /app; java ${JAVA_OPTS} ${TRACE_AGENT} -Djava.security.egd=file:/dev/./urandom -jar /app/app.jar ${RUN_ARGS}"]
+
+EXPOSE 15000

+ 8 - 0
basic-demo-service/Dockerfile-arm

@@ -0,0 +1,8 @@
+FROM 10.100.23.30:31104/tsf_base/openjdk:8u312-jdk-slim-hg-tsf-1.46
+
+ADD ./target/*.jar /app/app.jar
+RUN mkdir -p /app/servlet/logs
+ENV TRACE_AGENT="-javaagent:/app/opentelemetry-javaagent.jar -Dotel.javaagent.extensions=/app/femas-trace-opentelemetry.jar -Dotel.traces.exporter=none -Dotel.propagators=b3,b3multi"
+CMD ["sh", "-c", "cd /app; java ${JAVA_OPTS} ${TRACE_AGENT} -Djava.security.egd=file:/dev/./urandom -jar /app/app.jar ${RUN_ARGS}"]
+
+EXPOSE 15000

+ 145 - 0
basic-demo-service/pom.xml

@@ -0,0 +1,145 @@
+<?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">
+    <parent>
+        <artifactId>cacp-spring-boot-parent</artifactId>
+        <groupId>cn.gov.customs.cacp</groupId>
+        <version>2024.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>basic-demo-service</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-service-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-datasource-spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+
+        <!-- cacp -->
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-audit-sdk</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>cn.gov.customs.cus4a</groupId>
+                    <artifactId>open-api-native-sdk</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-auth-sdk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-counter-sdk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-document-sdk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-file-service-sdk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-frame-api-sdk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-heai-sdk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-hgid-sdk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-holiday-sdk</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-message-sdk</artifactId>
+            <version>2024.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-redisson-sdk</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-enhance-storage-sdk</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-enhance-accessory-sdk</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-enhance-audit-sdk</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-enhance-counter-sdk</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-enhance-holiday-sdk</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-enhance-workflow-full-sdk</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-enhance-heai-sdk</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.gov.customs.cacp</groupId>
+            <artifactId>cacp-enhance-form-sdk</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <!-- dm -->
+        <dependency>
+            <groupId>com.dameng</groupId>
+            <artifactId>DmJdbcDriver18</artifactId>
+        </dependency>
+
+        <!-- swagger-ui -->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 24 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/BasicDemoApplication.java

@@ -0,0 +1,24 @@
+package cn.gov.customs.demo;
+
+import static org.springframework.boot.SpringApplication.run;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.tsf.annotation.EnableTsf;
+
+/**
+ * 启动类
+ *
+ * @author chuxianming
+ * @since 2024-06-14 11:16:12
+ */
+@EnableTsf
+@SpringBootApplication
+@EnableFeignClients(basePackages = "cn.gov.customs")
+@ComponentScan(basePackages = "cn.gov.customs")
+public class BasicDemoApplication {
+  public static void main(String[] args) {
+    run(BasicDemoApplication.class, args);
+  }
+}

+ 66 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/config/DemoDataSourceConfig.java

@@ -0,0 +1,66 @@
+package cn.gov.customs.demo.config;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+
+import com.github.pagehelper.page.PageAutoDialect;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.mybatis.spring.boot.autoconfigure.MybatisProperties;
+import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+/**
+ * DateSourceConfig content
+ *
+ * @author chuxianming
+ * @date 2024-05-24 10:18:12
+ */
+@Configuration
+@MapperScan(
+    basePackages = {"cn.gov.customs.demo.dao"},
+    annotationClass = Mapper.class,
+    sqlSessionFactoryRef = "demoSqlSessionFactory",
+    sqlSessionTemplateRef = "demoSqlTemplate")
+@EnableTransactionManagement
+public class DemoDataSourceConfig {
+
+  @Resource
+  private MybatisProperties properties;
+  @Resource
+  @Qualifier("DEMODataSource")
+  private DataSource dataSource;
+
+  @Bean(name = "demoSqlSessionFactory")
+  public SqlSessionFactory demoSqlSessionFactory() throws Exception {
+    SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+    bean.setConfiguration(this.properties.getConfiguration());
+    bean.setVfs(SpringBootVFS.class);
+    bean.setDataSource(dataSource);
+    bean.setMapperLocations(
+        new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/demo/**/*.xml"));
+    bean.setTypeAliasesPackage("cn.gov.customs.demo");
+    return bean.getObject();
+  }
+
+  @Bean(name = "demoSqlTemplate")
+  public SqlSessionTemplate demoSqlTemplate(
+      @Qualifier("demoSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
+    return new SqlSessionTemplate(sqlSessionFactory);
+  }
+
+  @Bean(name = "demoTransactionManager")
+  public PlatformTransactionManager demoTransactionManager() {
+    return new DataSourceTransactionManager(dataSource);
+  }
+
+}

+ 13 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/constants/Constants.java

@@ -0,0 +1,13 @@
+package cn.gov.customs.demo.constants;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:19
+ */
+public final class Constants {
+
+  private Constants() {}
+
+  public static final String CACHE_NAME = "BASIC_DEMO";
+}

+ 28 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/constants/OrderLevel.java

@@ -0,0 +1,28 @@
+package cn.gov.customs.demo.constants;
+
+import cn.gov.customs.cacp.sdks.core.reflection.TypeDescriptor;
+import lombok.Getter;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:18
+ */
+@Getter
+public enum OrderLevel implements TypeDescriptor {
+  HIGH("高"),
+  NORMAL("中"),
+  LOW("低"),
+  ;
+
+  @Override
+  public String getCode() {
+    return this.name();
+  }
+
+  private final String name;
+
+  OrderLevel(String name) {
+    this.name = name;
+  }
+}

+ 94 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/controller/AuthController.java

@@ -0,0 +1,94 @@
+package cn.gov.customs.demo.controller;
+
+import cn.gov.customs.cacp.sdks.auth.*;
+import cn.gov.customs.cacp.sdks.core.config.CacpAppProperties;
+import cn.gov.customs.cacp.sdks.core.result.Result;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * todo
+ *
+ * @author sunxuewen
+ * @date 2024/7/31 13:40
+ */
+@RestController
+@RequestMapping("/auth")
+public class AuthController {
+  private final AuthAdapter adapter;
+  private final CacpAppProperties properties;
+
+  public AuthController(AuthAdapter adapter, CacpAppProperties properties) {
+    this.adapter = adapter;
+    this.properties = properties;
+  }
+
+  @GetMapping("get-root-organization")
+  public Result<CacpOrganization> getRootOrganization() {
+    Map<String, Object> configuration = this.adapter.getConfiguration();
+    String viewCode = (String) configuration.get("defaultBaseView"); 
+    CacpOrganization result = this.adapter.getRootOrganization(viewCode);
+    return Result.success(result);
+  }
+
+  @GetMapping("get-organization")
+  public Result<CacpOrganization> getOrganization(@RequestParam String orgId) {
+    Map<String, Object> configuration = this.adapter.getConfiguration();
+    String viewCode = (String) configuration.get("defaultBaseView");
+    CacpOrganization result = this.adapter.getOrganization(viewCode, orgId);
+    return Result.success(result);
+  }
+
+  @GetMapping("get-organization-by-path")
+  public Result<CacpOrganization> getOrganizationByPath(@RequestParam String orgPath) {
+    Map<String, Object> configuration = this.adapter.getConfiguration();
+    String viewCode = (String) configuration.get("defaultBaseView");
+    CacpOrganization result = this.adapter.getOrganizationByPath(viewCode, orgPath);
+    return Result.success(result);
+  }
+
+  @GetMapping("get-organization-list-by-parent")
+  public Result<List<? extends CacpOrganization>> getOrganizationListByParent(@RequestParam String parentPath, @RequestParam boolean oneLevel) {
+    Map<String, Object> configuration = this.adapter.getConfiguration();
+    String viewCode = (String) configuration.get("defaultBaseView");
+    List<? extends CacpOrganization> result = this.adapter.getOrganizationListByParent(viewCode, parentPath, oneLevel);
+    return Result.success(result);
+  }
+
+  @GetMapping("get-user")
+  public Result<CacpUser> getUser(@RequestParam String parentId, @RequestParam String userId) {
+    Map<String, Object> configuration = this.adapter.getConfiguration();
+    String viewCode = (String) configuration.get("defaultBaseView");
+    CacpUser result = this.adapter.getUser(viewCode, parentId, userId);
+    return Result.success(result);
+  }
+
+  @GetMapping("get-user-list-by-id")
+  public Result<List<? extends CacpUser>> getUserListById(@RequestParam String userId) {
+    Map<String, Object> configuration = this.adapter.getConfiguration();
+    String viewCode = (String) configuration.get("defaultBaseView");
+    List<? extends CacpUser> result = this.adapter.getUserListById(viewCode, userId);
+    return Result.success(result);
+  }
+
+  @GetMapping("get-user-list-by-parent")
+  public Result<List<? extends CacpUser>> getUserListByParent(@RequestParam String parentPath, @RequestParam boolean oneLevel) {
+    Map<String, Object> configuration = this.adapter.getConfiguration();
+    String viewCode = (String) configuration.get("defaultBaseView");
+    List<? extends CacpUser> result = this.adapter.getUserListByParent(viewCode, parentPath, oneLevel);
+    return Result.success(result);
+  }
+
+  @GetMapping("query-user-list-by-condition")
+  public Result<List<? extends CacpUser>> queryUserListByCondition(@RequestParam String parentPath, @RequestParam String keyword) {
+    Map<String, Object> configuration = this.adapter.getConfiguration();
+    String viewCode = (String) configuration.get("defaultBaseView");
+    List<? extends CacpUser> result = this.adapter.queryUserListByCondition(viewCode, parentPath, keyword);
+    return Result.success(result);
+  }
+}

+ 100 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/controller/OrderController.java

@@ -0,0 +1,100 @@
+package cn.gov.customs.demo.controller;
+
+import cn.gov.customs.cacp.sdks.core.reflection.TypeDescriptor;
+import cn.gov.customs.cacp.sdks.core.reflection.TypeDescriptorHelper;
+import cn.gov.customs.cacp.sdks.core.result.Result;
+import cn.gov.customs.cacp.sdks.core.user.annotation.LogonUser;
+import cn.gov.customs.cacp.sdks.core.user.pojo.CacpLogonUser;
+import cn.gov.customs.demo.constants.OrderLevel;
+import cn.gov.customs.demo.pojo.OrderCategoryInfo;
+import cn.gov.customs.demo.pojo.OrderInfo;
+import cn.gov.customs.demo.pojo.OrderQueryInfo;
+import cn.gov.customs.demo.service.OrderCategoryService;
+import cn.gov.customs.demo.service.OrderService;
+import java.util.List;
+
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageInfo;
+import lombok.RequiredArgsConstructor;
+import oracle.jdbc.proxy.annotation.Post;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * TODO
+ *
+ * @author sunxuewen
+ * @since 2024/8/21 17:16
+ */
+@RestController
+@RequestMapping("/order")
+@RequiredArgsConstructor
+public class OrderController {
+
+  private final OrderCategoryService categoryService;
+  private final OrderService service;
+
+
+  @GetMapping("/get-category-list")
+  public Result<List<OrderCategoryInfo>> getCategoryList() {
+    List<OrderCategoryInfo> list = this.categoryService.getList();
+    return Result.success(list);
+  }
+
+  @PostMapping("/insert-category")
+  public Result<Integer> insertCategory(@RequestBody OrderCategoryInfo info) {
+    int result = this.categoryService.insert(info);
+    return Result.success(result);
+  }
+
+  @PostMapping("/update-category")
+  public Result<Integer> updateCategory(@RequestBody OrderCategoryInfo info) {
+    int result = this.categoryService.update(info);
+    return Result.success(result);
+  }
+
+  @PostMapping("/delete-category")
+  public Result<Integer> deleteCategory(@RequestParam String categoryCode) {
+    int result = this.categoryService.delete(categoryCode);
+    return Result.success(result);
+  }
+
+  @GetMapping("/get-order")
+  public Result<OrderInfo> getOrder(@RequestParam String orderId) {
+    OrderInfo info = this.service.get(orderId);
+    return Result.success(info);
+  }
+
+  @PostMapping("/get-order-list")
+  public Result<PageInfo<OrderInfo>> getOrderList(@RequestBody OrderQueryInfo query) {
+    PageInfo<OrderInfo> list = this.service.getPageList(query);
+    return Result.success(list);
+  }
+
+  @PostMapping("/insert-order")
+  public Result<Integer> insertOrder(@LogonUser CacpLogonUser user, @RequestBody OrderInfo info) {
+    info.setParentId(user.getParentId());
+    info.setUserId(user.getUserId());
+    info.setUserName(user.getUserName());
+
+    int result = this.service.insert(info);
+    return Result.success(result);
+  }
+
+  @PostMapping("/update-order")
+  public Result<Integer> updateOrder(@RequestBody OrderInfo info) {
+    int result = this.service.update(info);
+    return Result.success(result);
+  }
+
+  @PostMapping("/delete-order")
+  public Result<Integer> deleteOrder(@RequestParam String orderId) {
+    int result = this.service.delete(orderId);
+    return Result.success(result);
+  }
+
+  @GetMapping("/get-level-list")
+  public Result<List<TypeDescriptor>> getLevelList() {
+    List<TypeDescriptor> list = TypeDescriptorHelper.getEnumMap(OrderLevel.class);
+    return Result.success(list);
+  }
+}

+ 24 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/dao/OrderCategoryDao.java

@@ -0,0 +1,24 @@
+package cn.gov.customs.demo.dao;
+
+import cn.gov.customs.demo.pojo.OrderCategoryInfo;
+
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:23
+ */
+@Mapper
+public interface OrderCategoryDao {
+
+  List<OrderCategoryInfo> getList();
+
+  int insert(OrderCategoryInfo info);
+
+  int update(OrderCategoryInfo info);
+
+  int delete(String categoryCode);
+
+}

+ 27 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/dao/OrderDao.java

@@ -0,0 +1,27 @@
+package cn.gov.customs.demo.dao;
+
+import cn.gov.customs.demo.pojo.OrderInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:23
+ */
+@Mapper
+public interface OrderDao {
+
+  OrderInfo get(String orderId);
+
+  List<OrderInfo> getList(String keyword, LocalDate beginDate, LocalDate endDate);
+
+  int insert(OrderInfo info);
+
+  int update(OrderInfo info);
+
+  int delete(String personId);
+
+}

+ 21 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/pojo/OrderCategoryInfo.java

@@ -0,0 +1,21 @@
+package cn.gov.customs.demo.pojo;
+
+import java.io.Serializable;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:16
+ */
+@Getter
+@Setter
+@ToString(of = {"categoryCode", "categoryName"})
+@EqualsAndHashCode(of = "categoryCode")
+public class OrderCategoryInfo implements Serializable {
+  private String categoryCode;
+  private String categoryName;
+}

+ 34 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/pojo/OrderInfo.java

@@ -0,0 +1,34 @@
+package cn.gov.customs.demo.pojo;
+
+import cn.gov.customs.cacp.enhance.accessory.pojo.Accessory;
+import cn.gov.customs.demo.constants.OrderLevel;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:16
+ */
+@Getter
+@Setter
+@ToString(of = {"orderId", "parentId", "userId", "userName", "orderAmount"})
+@EqualsAndHashCode(of = "orderId")
+public class OrderInfo implements Serializable {
+  private String orderId;
+  private String parentId;
+  private String userId;
+  private String userName;
+  private String categoryCode;
+  private int orderAmount;
+  private OrderLevel orderLevel;
+  private LocalDateTime createTime;
+
+  private List<Accessory> accessoryList;
+}

+ 23 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/pojo/OrderQueryInfo.java

@@ -0,0 +1,23 @@
+package cn.gov.customs.demo.pojo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/25 上午10:52
+ */
+@Getter
+@Setter
+public class OrderQueryInfo implements Serializable {
+
+  private String keyword;
+  private LocalDate beginDate;
+  private LocalDate endDate;
+  private int pageIndex;
+  private int pageSize;
+}

+ 21 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/service/OrderCategoryService.java

@@ -0,0 +1,21 @@
+package cn.gov.customs.demo.service;
+
+import cn.gov.customs.demo.pojo.OrderCategoryInfo;
+import cn.gov.customs.demo.pojo.OrderInfo;
+import java.util.List;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:25
+ */
+public interface OrderCategoryService {
+
+  List<OrderCategoryInfo> getList();
+
+  int insert(OrderCategoryInfo info);
+
+  int update(OrderCategoryInfo info);
+
+  int delete(String categoryCode);
+}

+ 25 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/service/OrderService.java

@@ -0,0 +1,25 @@
+package cn.gov.customs.demo.service;
+
+import cn.gov.customs.demo.pojo.OrderInfo;
+import cn.gov.customs.demo.pojo.OrderQueryInfo;
+import com.github.pagehelper.PageInfo;
+
+import java.util.List;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:25
+ */
+public interface OrderService {
+
+  OrderInfo get(String orderId);
+
+  PageInfo<OrderInfo> getPageList(OrderQueryInfo query);
+
+  int insert(OrderInfo info);
+
+  int update(OrderInfo info);
+
+  int delete(String orderId);
+}

+ 51 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/service/impl/OrderCategoryServiceImpl.java

@@ -0,0 +1,51 @@
+package cn.gov.customs.demo.service.impl;
+
+import cn.gov.customs.demo.constants.Constants;
+import cn.gov.customs.demo.dao.OrderCategoryDao;
+import cn.gov.customs.demo.pojo.OrderCategoryInfo;
+import cn.gov.customs.demo.service.OrderCategoryService;
+import java.util.List;
+import lombok.RequiredArgsConstructor;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:25
+ */
+@Service
+@RequiredArgsConstructor
+@CacheConfig(cacheNames = Constants.CACHE_NAME)
+public class OrderCategoryServiceImpl implements OrderCategoryService {
+
+  private static final String CACHE_KEY = "'ORDER_CATEGORY'";
+
+  private final OrderCategoryDao mapper;
+
+  @Cacheable(key = CACHE_KEY)
+  @Override
+  public List<OrderCategoryInfo> getList() {
+    return this.mapper.getList();
+  }
+
+  @CacheEvict(key = CACHE_KEY)
+  @Override
+  public int insert(OrderCategoryInfo info) {
+    return this.mapper.insert(info);
+  }
+
+  @CacheEvict(key = CACHE_KEY)
+  @Override
+  public int update(OrderCategoryInfo info) {
+    return this.mapper.update(info);
+  }
+
+  @CacheEvict(key = CACHE_KEY)
+  @Override
+  public int delete(String categoryCode) {
+    return this.mapper.delete(categoryCode);
+  }
+}

+ 91 - 0
basic-demo-service/src/main/java/cn/gov/customs/demo/service/impl/OrderServiceImpl.java

@@ -0,0 +1,91 @@
+package cn.gov.customs.demo.service.impl;
+
+import cn.gov.customs.cacp.enhance.accessory.pojo.Accessory;
+import cn.gov.customs.cacp.enhance.accessory.service.AccessoryService;
+import cn.gov.customs.cacp.sdks.core.config.CacpAppProperties;
+import cn.gov.customs.cacp.sdks.hgid.HgidGenerator;
+import cn.gov.customs.demo.dao.OrderDao;
+import cn.gov.customs.demo.pojo.OrderInfo;
+import cn.gov.customs.demo.pojo.OrderQueryInfo;
+import cn.gov.customs.demo.service.OrderService;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @description TODO
+ * @author sunxuewen
+ * @since 2024/11/21 上午8:25
+ */
+@Service
+@RequiredArgsConstructor
+public class OrderServiceImpl implements OrderService {
+
+  private final OrderDao mapper;
+  private final AccessoryService accessoryService;
+  private final HgidGenerator idHelper;
+  private final CacpAppProperties properties;
+
+  @Override
+  public OrderInfo get(String orderId) {
+    OrderInfo info = this.mapper.get(orderId);
+
+    List<Accessory> accessoryList = this.accessoryService.getPersistListByBizId(this.properties.getAppCode(), orderId);
+    info.setAccessoryList(accessoryList);
+
+    return info;
+  }
+
+  @Override
+  public PageInfo<OrderInfo> getPageList(OrderQueryInfo query) {
+    PageHelper.startPage(query.getPageIndex(), query.getPageSize());
+    List<OrderInfo> list = this.mapper.getList(query.getKeyword(), query.getBeginDate(), query.getEndDate().plusDays(1));
+    return PageInfo.of(list);
+  }
+
+  @Transactional(value = "demoTransactionManager", rollbackFor = Exception.class)
+  @Override
+  public int insert(OrderInfo info) {
+    String orderId = this.idHelper.nextId();
+    info.setOrderId(orderId);
+
+    if (!CollectionUtils.isEmpty(info.getAccessoryList())) {
+      info.getAccessoryList()
+          .forEach(
+              a -> {
+                a.setBizId(orderId);
+                a.setAppCode(this.properties.getAppCode());
+              });
+    }
+    this.accessoryService.persistFiles(info.getAccessoryList());
+
+    info.setCreateTime(LocalDateTime.now());
+    return this.mapper.insert(info);
+  }
+
+  @Transactional(value = "demoTransactionManager", rollbackFor = Exception.class)
+  @Override
+  public int update(OrderInfo info) {
+    info.getAccessoryList().forEach(a -> {
+      a.setBizId(info.getOrderId());
+      a.setAppCode(this.properties.getAppCode());
+    });
+    this.accessoryService.persistFiles(info.getAccessoryList());
+
+    return this.mapper.update(info);
+  }
+
+  @Transactional(value = "demoTransactionManager", rollbackFor = Exception.class)
+  @Override
+  public int delete(String orderId) {
+    this.accessoryService.deleteListByBizId(this.properties.getAppCode(), orderId);
+    return this.mapper.delete(orderId);
+  }
+}

+ 180 - 0
basic-demo-service/src/main/resources/application.yml

@@ -0,0 +1,180 @@
+server:
+  port: 18001
+
+spring:
+  application:
+    name: basic-demo-service
+  cache:
+    type: redis
+ #   type: caffeine
+  redis:
+    database: 5
+#    host: 10.200.67.105
+#    port: 6379
+    host: 43.137.18.189
+    port: 6397
+    password: qaz!@#
+    timeout: 3000
+    lettuce:
+      pool:
+        max-idle: 8
+        min-idle: 0
+        max-active: 8
+        max-wait: -1
+  servlet:
+    multipart:
+      max-file-size: 100MB
+      max-request-size: 1000MB
+  http:
+    encoding:
+      force: true
+      charset: UTF-8
+
+tsf:
+  swagger:
+    enabled: true #swagger-ui 开启状态,上线时建议关闭
+
+#第三方SDK配置
+mybatis:
+  configuration:
+    mapUnderscoreToCamelCase: true
+    # logImpl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+logging:
+  level:
+#    root: warn # debug
+    org.apache.http.client: info
+    org.apache.http.headers: info
+    org.apache.http.impl: info
+    org.apache.http.wire: info
+
+#平台提供的其它SDK配置
+cacp:
+  core:
+    logonUser:
+      mock: true
+      mockUser:
+        userId: a1111111-1111-1111-1111-111111111111
+        userName: admin
+        parentId: 3c870cc2-5b5f-b0f3-4db8-ff98e7fb99c2
+        fullPathName: 中国海关\admin
+        personId: 2200123
+        customsCode: 0000
+        status: 1
+        ipAddress: 127.0.0.1
+        viewCode: CCIC_VIEW
+        logonType: forms
+  app:
+    appCode: DEMO
+    authAppCode: ZWCJ
+    featureCode: GOV
+    publishType: service
+  #database config配置
+  database:
+    initType: fromYml
+    datasource:
+      ENHANCE:
+        driverClassName: dm.jdbc.driver.DmDriver
+#        url: jdbc:dm://10.100.21.127:5236
+#        username: CACP50USER
+#        password: CACP50USER
+        url: jdbc:dm://43.137.18.189:5326
+        username: SYSDBA
+        password: Dameng@2025
+        isPrimary: true
+      DEMO:
+        driverClassName: dm.jdbc.driver.DmDriver
+        url: jdbc:dm://43.137.18.189:5326
+        username: SYSDBA
+        password: Dameng@2025
+  cache:
+    caffeine:
+      DEMO_CACHE: maximumSize=500, expireAfterWrite=3600s, recordStats
+  audit:
+    enabled: true
+  auth:
+    type: h4a # h4a, cus4a, proxy
+    log: true
+    cus4a:
+      #单点登录地址
+      authenticateUrl: http://cus4a-sso.dev-xc.com
+      #注销地址
+      logOffUrl: http://cus4a-sso.dev-xc.com/logout
+      #注销后跳转地址
+      logOffCallBackUrl: /api/getlogoffurl
+      #H4A应用名称
+      appID: ZWCJ
+      #要求H4A返回的用户登录名类型(forms返回表单登录时录入的登录名,hr返回海关员工号...等)
+      idAuthenticationMode: forms
+      #认证类型
+      defaultAuthenticationMode: FormsAuthentication
+      #默认视角
+      defaultBaseView: CCIC_VIEW
+      #返回参数名称,默认token
+      paramT: token
+      #调用身份服务附带参数
+      beanObjectsDetailLastParam: PERSON_ID,SIDELINE,STATUS,PARENT_GUID
+      #调取机构服务附带参数
+      organizationCategoryLastParam: CUSTOMS_CODE,ORG_CLASS,STATUS,ORG_TYPE,PARENT_GUID
+    h4a:
+      #机构读取服务
+      oguReaderService: http://10.200.21.195/CupaaCenterService/OguReaderService.svc
+      #身份读取服务
+      accreditReaderService: http://10.200.21.195/CupaaCenterService/AccreditReaderService.svc
+      registerAppService: http://10.200.21.195/AppRegisterService/RegisterAppReaderService.svc
+      #默认视角
+      defaultBaseView: CCIC_VIEW
+      #系统基础视角
+      systemBaseView: BASE_VIEW
+      #调用身份服务附带参数
+      beanObjectsDetailLastParam: PERSON_ID,SIDELINE,STATUS,PARENT_GUID
+      #调取机构服务附带参数
+      organizationCategoryLastParam: CUSTOMS_CODE,ORG_CLASS,STATUS,ORG_TYPE,PARENT_GUID
+      #调用角色信息接口附带参数
+      beanRolesLastParam: RESOURCE_LEVEL
+      #单点登录地址
+      authenticateUrl: http://10.200.21.195/Passport/SsoLogin.aspx
+      #注销地址
+      logOffUrl: http://10.200.21.195/Passport/LogOff.aspx
+      #注销后跳转地址
+      logOffCallBackUrl: /api/getlogoffurl
+      #H4A应用名称
+      appID: ZWCJ
+      #要求H4A返回的用户登录名类型(forms返回表单登录时录入的登录名,hr返回海关员工号...等)
+      idAuthenticationMode: forms
+      #认证类型
+      defaultAuthenticationMode: FormsAuthentication
+      #返回参数名称,默认token
+      paramT: token
+      #建立webService连接超时时间
+      connectionTimeout: 10
+      #webService请求响应超时时间
+      requestTimeout: 10
+  proxy:
+    audit:
+      enabled: false
+      name: hlog-api-service
+      url: http://app-api.expc.dev2.com/hlog-api-service/
+    auth:
+      name: cacp-authproxy-service
+    counter:
+      enabled: false
+      name: cacp-counter-service
+      url: http://localhost:15000/
+    fileserver:
+      url:  http://application.testf-nb.com/file-access-service/
+    hgid:
+      enabled: false
+      name: hgid-main-service
+      url: http://application.testf-nb.com/hgid-main-service/
+    holiday:
+      enabled: false
+      name: cacp-holiday-service
+      url: http://localhost:15001/
+
+#新4a服务地址配置
+cus4a:
+  open-api:
+    url: cus4a-api.dev-xc.com:80
+    auth-name: cus4a-authorization-new-read-service # cus4a-authorization-new-read-service为新授权服务名, cus4a-authorization-read-service为授权兼容版服务名
+

+ 25 - 0
basic-demo-service/src/main/resources/mapper/demo/order/OrderCategoryMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.gov.customs.demo.dao.OrderCategoryDao">
+    <resultMap id="BaseResultMap" type="cn.gov.customs.demo.pojo.OrderCategoryInfo">
+        <id column="CATEGORY_CODE" jdbcType="VARCHAR" property="categoryCode"/>
+        <result column="CATEGORY_NAME" jdbcType="VARCHAR" property="categoryName"/>
+    </resultMap>
+
+    <insert id="insert">
+        INSERT INTO CACP_DEMO_BASIC_ORDER_CATEGORY VALUES (#{categoryCode}, #{categoryName})
+    </insert>
+
+    <update id="update">
+        UPDATE CACP_DEMO_BASIC_ORDER_CATEGORY SET CATEGORY_NAME = #{categoryName} WHERE CATEGORY_CODE = #{categoryCode}
+    </update>
+
+    <select id="getList" resultMap="BaseResultMap">
+        SELECT * FROM CACP_DEMO_BASIC_ORDER_CATEGORY
+    </select>
+
+    <delete id="delete">
+        DELETE FROM CACP_DEMO_BASIC_ORDER_CATEGORY WHERE CATEGORY_CODE = #{categoryCode}
+    </delete>
+
+</mapper>

+ 45 - 0
basic-demo-service/src/main/resources/mapper/demo/order/OrderMapper.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.gov.customs.demo.dao.OrderDao">
+    <resultMap id="BaseResultMap" type="cn.gov.customs.demo.pojo.OrderInfo">
+        <id column="ORDER_ID" jdbcType="VARCHAR" property="orderId"/>
+        <result column="PARENT_ID" jdbcType="VARCHAR" property="parentId"/>
+        <result column="USER_ID" jdbcType="VARCHAR" property="userId"/>
+        <result column="USER_NAME" jdbcType="VARCHAR" property="userName"/>
+        <result column="CATEGORY_CODE" jdbcType="VARCHAR" property="categoryCode"/>
+        <result column="ORDER_AMOUNT" jdbcType="INTEGER" property="orderAmount"/>
+        <result column="ORDER_LEVEL" jdbcType="VARCHAR" property="orderLevel" javaType="cn.gov.customs.demo.constants.OrderLevel"/>
+        <result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime"/>
+    </resultMap>
+
+    <insert id="insert">
+        INSERT INTO CACP_DEMO_BASIC_ORDER VALUES
+        (#{orderId}, #{parentId}, #{userId}, #{userName}, #{categoryCode}, #{orderAmount}, #{orderLevel}, #{createTime,jdbcType=TIMESTAMP})
+    </insert>
+
+    <update id="update">
+        UPDATE CACP_DEMO_BASIC_ORDER
+        SET ORDER_AMOUNT = #{orderAmount}, ORDER_LEVEL = #{orderLevel}
+        WHERE ORDER_ID = #{orderId}
+    </update>
+
+    <select id="getList" resultMap="BaseResultMap">
+        SELECT *
+        FROM CACP_DEMO_BASIC_ORDER
+        WHERE CREATE_TIME &gt;= #{beginDate,jdbcType=DATE} AND CREATE_TIME &lt; #{endDate,jdbcType=DATE}
+        <if test="keyword != null and keyword != ''">
+            <bind name="pattern" value="'%' + keyword + '%'" />
+            AND USER_NAME LIKE #{pattern}
+        </if>
+        ORDER BY CREATE_TIME
+    </select>
+
+    <select id="get" resultMap="BaseResultMap">
+        SELECT * FROM CACP_DEMO_BASIC_ORDER WHERE ORDER_ID = #{orderId}
+    </select>
+
+    <delete id="delete">
+        DELETE FROM CACP_DEMO_BASIC_ORDER WHERE ORDER_ID = #{orderId}
+    </delete>
+
+</mapper>