yangchao 2 недель назад
Сommit
210eb79931
36 измененных файлов с 1054 добавлено и 0 удалено
  1. 9 0
      .gitignore
  2. BIN
      lib/dingtalk-sdk.jar
  3. 233 0
      pom.xml
  4. 7 0
      src/main/config/dev/cache.properties
  5. 6 0
      src/main/config/dev/config.properties
  6. 7 0
      src/main/config/dev/jdbc.properties
  7. 7 0
      src/main/config/product/cache.properties
  8. 7 0
      src/main/config/product/config.properties
  9. 4 0
      src/main/config/product/jdbc.properties
  10. 29 0
      src/main/java/cn/com/citycloud/rent/Application.java
  11. 16 0
      src/main/java/cn/com/citycloud/rent/ConfigClass.java
  12. 47 0
      src/main/java/cn/com/citycloud/rent/Swagger2.java
  13. 7 0
      src/main/java/cn/com/citycloud/rent/cache/package-info.java
  14. 44 0
      src/main/java/cn/com/citycloud/rent/controller/QuerySrmController.java
  15. 7 0
      src/main/java/cn/com/citycloud/rent/controller/package-info.java
  16. 12 0
      src/main/java/cn/com/citycloud/rent/dao/InitDao.java
  17. 6 0
      src/main/java/cn/com/citycloud/rent/dao/package-info.java
  18. 20 0
      src/main/java/cn/com/citycloud/rent/dao/rent/QuerySrmDao.java
  19. 10 0
      src/main/java/cn/com/citycloud/rent/message/listener/package-info.java
  20. 9 0
      src/main/java/cn/com/citycloud/rent/message/sender/package-info.java
  21. 7 0
      src/main/java/cn/com/citycloud/rent/package-info.java
  22. 17 0
      src/main/java/cn/com/citycloud/rent/service/InitService.java
  23. 20 0
      src/main/java/cn/com/citycloud/rent/service/QuerySrmFeignService.java
  24. 68 0
      src/main/java/cn/com/citycloud/rent/service/impl/InitServiceImpl.java
  25. 33 0
      src/main/java/cn/com/citycloud/rent/service/impl/QuerySrmFeignServiceImpl.java
  26. 7 0
      src/main/java/cn/com/citycloud/rent/service/package-info.java
  27. 21 0
      src/main/java/cn/com/citycloud/rent/service/querySrm/QuerySrmService.java
  28. 28 0
      src/main/java/cn/com/citycloud/rent/service/querySrm/impl/QuerySrmServiceImpl.java
  29. 103 0
      src/main/java/cn/com/citycloud/rent/util/JSONUtils.java
  30. 9 0
      src/main/java/cn/com/citycloud/rent/util/package-info.java
  31. 35 0
      src/main/resources/application.properties
  32. 7 0
      src/main/resources/cache-redis.properties
  33. 125 0
      src/main/resources/logback-spring.xml
  34. 34 0
      src/main/resources/spring/application-beans.xml
  35. 19 0
      src/main/resources/sqlmap/mapper/querySrmMapper.xml
  36. 34 0
      src/main/resources/sqlmap/mybatis-config.xml

+ 9 - 0
.gitignore

@@ -0,0 +1,9 @@
+.project
+.classpath
+.settings/
+target/
+.DS_Store
+*.iml
+bin/
+logs/
+

BIN
lib/dingtalk-sdk.jar


+ 233 - 0
pom.xml

@@ -0,0 +1,233 @@
+<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>
+    <artifactId>service-querySrm</artifactId>
+    <name>service-querySrm</name>
+    <description>基于spring-boot构建的租赁服务系统</description>
+    <packaging>jar</packaging>
+
+    <parent>
+        <artifactId>service-querySrm-parent</artifactId>
+        <groupId>cn.com.citycloud</groupId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <swagger.version>2.6.1</swagger.version>
+        <alibaba.druid.version>1.0.29</alibaba.druid.version>
+        <spring.web.version>4.3.8.RELEASE</spring.web.version>
+        <mahout.version>0.9</mahout.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <artifactId>service-entity</artifactId>
+            <groupId>cn.com.citycloud</groupId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <artifactId>service-common</artifactId>
+            <groupId>cn.com.citycloud</groupId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <artifactId>service-configuration</artifactId>
+            <groupId>cn.com.citycloud</groupId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <!-- 数据库连接池 -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>${alibaba.druid.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>1.1.1</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.27</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>tk.mybatis</groupId>
+            <artifactId>mapper-spring-boot-starter</artifactId>
+            <version>1.1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>${swagger.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>${swagger.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-tx</artifactId>
+            <version>${spring.web.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.dingtalk</groupId>
+            <artifactId>dingtalk-sdk</artifactId>
+            <version>1.0.0</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/lib/dingtalk-sdk.jar</systemPath>
+        </dependency>
+
+        <!-- 智能推荐算法库 -->
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-core</artifactId>
+            <version>${mahout.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-integration</artifactId>
+            <version>${mahout.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.huaweicloud.sdk</groupId>
+            <artifactId>huaweicloud-sdk-ocr</artifactId>
+            <version>3.0.77</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+            <version>2.13.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.13.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+            <version>2.13.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>2.13.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jdk8</artifactId>
+            <version>2.13.1</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.4.6</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <filters>
+            <filter>src/main/config/${env.name}/jdbc.properties</filter>
+            <filter>src/main/config/${env.name}/config.properties</filter>
+            <filter>src/main/config/${env.name}/cache.properties</filter>
+        </filters>
+        <finalName>${project.artifactId}</finalName>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                    <excludeDevtools>true</excludeDevtools>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <nonFilteredFileExtensions>
+                        <nonFilteredFileExtension>xls</nonFilteredFileExtension>
+                        <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
+                    </nonFilteredFileExtensions>
+                </configuration>
+            </plugin>
+
+          <!--  <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>dockerfile-maven-plugin</artifactId>
+                <version>1.4.1</version>
+                <executions>
+                    <execution>
+                        <id>default</id>
+                        <goals>
+                            <goal>build</goal>
+                            <goal>push</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+                    <repository>10.0.0.27/ayn/${project.name}</repository>
+                    <tag>${project.version}</tag>
+                    <buildArgs>
+                        <JAR_FILE>target/${project.name}.jar</JAR_FILE>
+                    </buildArgs>
+                </configuration>
+            </plugin>-->
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <env.name>dev</env.name>
+            </properties>
+        </profile>
+        <profile>
+            <id>product</id>
+            <properties>
+                <env.name>product</env.name>
+            </properties>
+        </profile>
+    </profiles>
+
+</project>

+ 7 - 0
src/main/config/dev/cache.properties

@@ -0,0 +1,7 @@
+cache.redis.host=8.130.89.26
+cache.redis.password=Aiyangniu@1218
+cache.redis.port=6379
+cache.redis.pool.max-idle=100 
+cache.redis.pool.min-idle=1
+cache.redis.pool.max-active=1000
+cache.redis.pool.max-wait=-1

+ 6 - 0
src/main/config/dev/config.properties

@@ -0,0 +1,6 @@
+#日志
+logging.level=debug
+logging.level.root=info
+
+#spring profiles 配置,默认开发环境激活dev
+springProfiles=dev

+ 7 - 0
src/main/config/dev/jdbc.properties

@@ -0,0 +1,7 @@
+#数据库访问配置 42.159.6.100  10.0.0.8
+#spring.datasource.url=jdbc:mysql://10.0.0.8:3306/platform?characterEncoding=UTF-8&allowMultiQueries=true
+#spring.datasource.username=root
+#spring.datasource.password=aiyangniu
+spring.datasource.url=jdbc:mysql://rm-0jl0imz11u4z6n8nd-l7.mysql.rds.aliyuncs.com:3306/vendorent?characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
+spring.datasource.username=root
+spring.datasource.password=Aiyangniu@1218*()

+ 7 - 0
src/main/config/product/cache.properties

@@ -0,0 +1,7 @@
+cache.redis.host=192.168.0.61
+cache.redis.password=aiyangniu
+cache.redis.port=6379
+cache.redis.pool.max-idle=100 
+cache.redis.pool.min-idle=1
+cache.redis.pool.max-active=1000
+cache.redis.pool.max-wait=-1

+ 7 - 0
src/main/config/product/config.properties

@@ -0,0 +1,7 @@
+#日志
+logging.level=warn
+logging.level.root=warn
+
+springProfiles=product
+
+rabbitmq.host=192.168.0.61

+ 4 - 0
src/main/config/product/jdbc.properties

@@ -0,0 +1,4 @@
+# 数据库访问配置
+spring.datasource.url=jdbc:mysql://192.168.0.20:3306/platform?characterEncoding=UTF-8&allowMultiQueries=true
+spring.datasource.username=root
+spring.datasource.password=aiyangniu

+ 29 - 0
src/main/java/cn/com/citycloud/rent/Application.java

@@ -0,0 +1,29 @@
+package cn.com.citycloud.rent;
+
+import cn.com.citycloud.common.Constants;
+import cn.com.citycloud.configuration.privilege.EnablePrivilegeAuthorization;
+import cn.com.citycloud.configuration.privilege.EnablePrivilegeAuthorizations;
+import cn.com.citycloud.configuration.privilege.PrivilegeType;
+import cn.hutool.extra.spring.EnableSpringUtil;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
+import org.springframework.cloud.netflix.feign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+@SpringBootApplication(scanBasePackages = {"cn.com.citycloud"})
+@EnableCircuitBreaker
+@EnableTransactionManagement
+@EnableFeignClients({"cn.com.citycloud.configuration.feign"})
+@EnablePrivilegeAuthorizations({
+@EnablePrivilegeAuthorization(sessionKey = Constants.PLATFORM_PRIVILEGE, privilegeType = PrivilegeType.PLATFORM),
+@EnablePrivilegeAuthorization(sessionKey = Constants.SYSTEM_PRIVILEGE_KEYWORD, privilegeType = PrivilegeType.MANAGER)
+})
+@EnableAsync
+@EnableSpringUtil
+public class Application {
+    public static void main(String[] args) {
+        SpringApplication.run(Application.class, args);
+    }
+}

+ 16 - 0
src/main/java/cn/com/citycloud/rent/ConfigClass.java

@@ -0,0 +1,16 @@
+package cn.com.citycloud.rent;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.ImportResource;
+
+/**
+ * 配置导入
+ *
+ * @author huanghongye
+ */
+
+@Configuration
+@ImportResource(locations = {"classpath:spring/application-beans.xml"})
+public class ConfigClass {
+
+}

+ 47 - 0
src/main/java/cn/com/citycloud/rent/Swagger2.java

@@ -0,0 +1,47 @@
+package cn.com.citycloud.rent;
+
+import cn.com.citycloud.configuration.auth.HeaderParameterBuilder;
+import cn.com.citycloud.entity.purchase.PurchaseAnuualBudgetDetail;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.AlternateTypeRules;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.List;
+
+@Configuration
+@EnableSwagger2
+@Profile("dev")
+public class Swagger2 {
+
+    @Bean
+    public Docket createRestApi() {
+        HeaderParameterBuilder builder = new HeaderParameterBuilder();
+        Docket docket = new Docket(DocumentationType.SWAGGER_2).enableUrlTemplating(false).globalOperationParameters(builder.build())
+                .apiInfo(apiInfo())
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("cn.com.citycloud"))
+                .paths(PathSelectors.any())
+                .build();
+        docket.alternateTypeRules(AlternateTypeRules.newMapRule(Integer.class, List.class));
+        docket.alternateTypeRules(AlternateTypeRules.newMapRule(List.class, PurchaseAnuualBudgetDetail.class));
+        return docket;
+    }
+
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder()
+                .title("租赁服务系统 RESTful APIs")
+                .description("租赁服务系统 RESTful APIs")
+                .termsOfServiceUrl("http://aiyangniu.cn").contact(new Contact("爱养牛项目组", "http://aiyangniu.cn", ""))
+                .version("1.0")
+                .build();
+    }
+}

+ 7 - 0
src/main/java/cn/com/citycloud/rent/cache/package-info.java

@@ -0,0 +1,7 @@
+/**
+ * 商品系统redis缓存配置
+ *
+ * @author YC
+ * @createDate 2023/8/9 9:57
+ **/
+package cn.com.citycloud.rent.cache;

+ 44 - 0
src/main/java/cn/com/citycloud/rent/controller/QuerySrmController.java

@@ -0,0 +1,44 @@
+package cn.com.citycloud.rent.controller;
+
+import cn.com.citycloud.common.Response;
+import cn.com.citycloud.configuration.BasicController;
+import cn.com.citycloud.entity.querySrm.SrmBankInfo;
+import cn.com.citycloud.rent.service.querySrm.QuerySrmService;
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 商品控制层
+ *
+ * @author changyq
+ * @version 2017/3/6 19:02
+ */
+@RestController
+@RequestMapping("/query/srm")
+@Api(tags = {"rentApply"}, description = "设备租赁申请")
+public class QuerySrmController extends BasicController {
+
+    private static final Logger logger = LoggerFactory.getLogger(QuerySrmController.class);
+
+    @Autowired
+    private QuerySrmService querySrmService;
+
+    @RequestMapping(value = "/getBankData", method = RequestMethod.GET)
+    @ApiOperation(value = "查询SRM银行数据", notes = "查询SRM银行数据", httpMethod = "GET")
+    public Response<List<SrmBankInfo>> getBankData(Integer shopId) {
+
+        List<SrmBankInfo> SrmBankInfoList = querySrmService.getBankData(shopId);
+        return new Response().message("").success().data(SrmBankInfoList);
+
+    }
+
+}

+ 7 - 0
src/main/java/cn/com/citycloud/rent/controller/package-info.java

@@ -0,0 +1,7 @@
+/**
+ * querySrm service controller 层
+ *
+ * @author YC
+ * @createDate 2023/8/9 9:57
+ **/
+package cn.com.citycloud.rent.controller;

+ 12 - 0
src/main/java/cn/com/citycloud/rent/dao/InitDao.java

@@ -0,0 +1,12 @@
+package cn.com.citycloud.rent.dao;
+
+import cn.com.citycloud.entity.item.sku.ItemSku;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface InitDao {
+    String init();
+}

+ 6 - 0
src/main/java/cn/com/citycloud/rent/dao/package-info.java

@@ -0,0 +1,6 @@
+/**
+ *
+ * @author YC
+ * @createDate 2023/8/9 9:57
+ **/
+package cn.com.citycloud.rent.dao;

+ 20 - 0
src/main/java/cn/com/citycloud/rent/dao/rent/QuerySrmDao.java

@@ -0,0 +1,20 @@
+package cn.com.citycloud.rent.dao.rent;
+import cn.com.citycloud.entity.querySrm.SrmBankInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * Description
+ *
+ * @author YC
+ * @createDate 2023/8/9 17:50
+ **/
+@Mapper
+public interface QuerySrmDao {
+
+    List<SrmBankInfo> getBankData(Integer shopId);
+
+}

+ 10 - 0
src/main/java/cn/com/citycloud/rent/message/listener/package-info.java

@@ -0,0 +1,10 @@
+/**
+ * Copyright (c) 2017 citycloud.com.cn All Rights Reserved.
+ * <p>
+ * <p>
+ * 消息处理接口
+ *
+ * @author huanghy
+ * @since 2017/6/1
+ */
+package cn.com.citycloud.rent.message.listener;

+ 9 - 0
src/main/java/cn/com/citycloud/rent/message/sender/package-info.java

@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) 2017 citycloud.com.cn All Rights Reserved.
+ * <p>
+ * 消息发送处理接口
+ *
+ * @author huanghy
+ * @since 2017/6/1
+ */
+package cn.com.citycloud.rent.message.sender;

+ 7 - 0
src/main/java/cn/com/citycloud/rent/package-info.java

@@ -0,0 +1,7 @@
+/**
+ * Description
+ *
+ * @author YC
+ * @createDate 2023/8/9 9:58
+ **/
+package cn.com.citycloud.rent;

+ 17 - 0
src/main/java/cn/com/citycloud/rent/service/InitService.java

@@ -0,0 +1,17 @@
+package cn.com.citycloud.rent.service;
+
+import cn.com.citycloud.entity.account.User;
+import cn.com.citycloud.entity.item.sku.ItemSku;
+
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @author YC
+ * @createDate 2023/8/9 10:03
+ **/
+public interface InitService {
+
+    String init();
+}

+ 20 - 0
src/main/java/cn/com/citycloud/rent/service/QuerySrmFeignService.java

@@ -0,0 +1,20 @@
+package cn.com.citycloud.rent.service;
+
+import cn.com.citycloud.common.Response;
+import cn.com.citycloud.entity.querySrm.SrmBankInfo;
+import cn.com.citycloud.entity.shop.Shop;
+
+import java.util.List;
+
+/**
+ * Description 查询SRM数据RESTful APIs调用接口
+ * @author YC
+ * @createDate 2025/11/20 9:07
+ **/
+public interface QuerySrmFeignService {
+
+
+    Response<List<SrmBankInfo>> getBankData(Integer shopId);
+
+
+}

+ 68 - 0
src/main/java/cn/com/citycloud/rent/service/impl/InitServiceImpl.java

@@ -0,0 +1,68 @@
+package cn.com.citycloud.rent.service.impl;
+
+import cn.com.citycloud.rent.dao.InitDao;
+import cn.com.citycloud.rent.service.InitService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * @author YC
+ * @createDate 2023/8/9 10:04
+ **/
+@Service
+@Transactional
+public class InitServiceImpl implements InitService {
+
+    @Autowired
+    private InitDao initDao;
+    @Override
+    public String init() {
+        return initDao.init();
+    }
+
+    public static void main(String[] args) {
+        // 读取图片文件
+        File imageFile = new File("E:\\images\\logo\\1024.jpg");
+        try {
+            // 将图片转换为BufferedImage对象
+            BufferedImage bufferedImage = ImageIO.read(imageFile);
+
+            // 设置字符画的宽度和高度
+            int asciiWidth = 80;
+            int asciiHeight = 40;
+
+            // 缩放图片以适应字符画的宽度和高度
+            BufferedImage resizedImage = new BufferedImage(asciiWidth, asciiHeight, BufferedImage.TYPE_INT_RGB);
+            Graphics2D g2d = resizedImage.createGraphics();
+            g2d.drawImage(bufferedImage, 0, 0, asciiWidth, asciiHeight, null);
+            g2d.dispose();
+
+            // 将图片转换为字符画
+            char[] asciiChars = {'@', '#', 'S', '%', '?', '*', '+', ';', ':', ',', '.'};
+            StringBuilder asciiArt = new StringBuilder();
+            for (int y = 0; y < asciiHeight; y++) {
+                for (int x = 0; x < asciiWidth; x++) {
+                    Color pixelColor = new Color(resizedImage.getRGB(x, y));
+                    int grayValue = (pixelColor.getRed() + pixelColor.getGreen() + pixelColor.getBlue()) / 3;
+                    int index = Math.min((int) (grayValue * asciiChars.length / 255.0), asciiChars.length - 1);
+                    asciiArt.append(asciiChars[index]);
+                }
+                asciiArt.append("\n");
+            }
+
+            // 输出字符画
+            System.out.println(asciiArt.toString());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+    }
+}
+

+ 33 - 0
src/main/java/cn/com/citycloud/rent/service/impl/QuerySrmFeignServiceImpl.java

@@ -0,0 +1,33 @@
+package cn.com.citycloud.rent.service.impl;
+
+import cn.com.citycloud.common.Response;
+import cn.com.citycloud.configuration.feign.ShopsFeignClient;
+import cn.com.citycloud.entity.querySrm.SrmBankInfo;
+import cn.com.citycloud.entity.shop.Shop;
+import cn.com.citycloud.rent.service.QuerySrmFeignService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author YC
+ * @createDate 2025/11/20 9:18
+ **/
+@Service
+public class QuerySrmFeignServiceImpl implements QuerySrmFeignService {
+
+    @Autowired
+    private ShopsFeignClient shopsFeignClient;
+    @Autowired
+    private HttpServletRequest request;
+
+    @Override
+    public Response<List<SrmBankInfo>> getBankData(Integer shopId) {
+        return shopsFeignClient.getBankData(shopId);
+    }
+
+}

+ 7 - 0
src/main/java/cn/com/citycloud/rent/service/package-info.java

@@ -0,0 +1,7 @@
+/**
+ * 租赁服务 service层
+ *
+ * @author YC
+ * @createDate 2023/8/9 9:58
+ **/
+package cn.com.citycloud.rent.service;

+ 21 - 0
src/main/java/cn/com/citycloud/rent/service/querySrm/QuerySrmService.java

@@ -0,0 +1,21 @@
+package cn.com.citycloud.rent.service.querySrm;
+
+import cn.com.citycloud.common.QueryPage;
+import cn.com.citycloud.entity.account.BargainInformation;
+import cn.com.citycloud.entity.querySrm.SrmBankInfo;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 议价信息管理接口(管理端)
+ *
+ * @author lzq
+ * @date 2023/05/08
+ */
+public interface QuerySrmService {
+
+    List<SrmBankInfo> getBankData(Integer shopId);
+
+}

+ 28 - 0
src/main/java/cn/com/citycloud/rent/service/querySrm/impl/QuerySrmServiceImpl.java

@@ -0,0 +1,28 @@
+package cn.com.citycloud.rent.service.querySrm.impl;
+
+import cn.com.citycloud.entity.querySrm.SrmBankInfo;
+import cn.com.citycloud.rent.dao.rent.QuerySrmDao;
+import cn.com.citycloud.rent.service.querySrm.QuerySrmService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 议价信息管理实现类(管理端)
+ *
+ * @author lzq
+ * @date 2023/05/08
+ */
+@Service
+public class QuerySrmServiceImpl implements QuerySrmService {
+
+    @Autowired
+    private QuerySrmDao querySrmDao;
+
+    @Override
+    public List<SrmBankInfo> getBankData(Integer shopId) {
+        return querySrmDao.getBankData(shopId);
+    }
+}

+ 103 - 0
src/main/java/cn/com/citycloud/rent/util/JSONUtils.java

@@ -0,0 +1,103 @@
+package cn.com.citycloud.rent.util;
+
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.util.ObjectUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class JSONUtils {
+    /**
+     * Bean对象转JSON
+     *
+     * @param object
+     * @param dataFormatString
+     * @return
+     */
+    public static String beanToJson(Object object, String dataFormatString) {
+        if (object != null) {
+            if (StringUtils.isEmpty(dataFormatString)) {
+                return JSONObject.toJSONString(object);
+            }
+            return JSON.toJSONStringWithDateFormat(object, dataFormatString);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Bean对象转JSON
+     *
+     * @param object
+     * @return
+     */
+    public static String beanToJson(Object object) {
+        if (object != null) {
+            return JSON.toJSONString(object);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * String转JSON字符串
+     *
+     * @param key
+     * @param value
+     * @return
+     */
+    public static String stringToJsonByFastjson(String key, String value) {
+        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {
+            return null;
+        }
+        Map<String, String> map = new HashMap<String, String>(16);
+        map.put(key, value);
+        return beanToJson(map, null);
+    }
+
+    /**
+     * 将json字符串转换成对象
+     *
+     * @param json
+     * @param clazz
+     * @return
+     */
+    public static Object jsonToBean(String json, Object clazz) {
+        if (StringUtils.isEmpty(json) || clazz == null) {
+            return null;
+        }
+        return JSON.parseObject(json, clazz.getClass());
+    }
+
+    /**
+     * json字符串转map
+     *
+     * @param json
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public static Map<String, Object> jsonToMap(String json) {
+        if (StringUtils.isEmpty(json)) {
+            return null;
+        }
+        return JSON.parseObject(json, Map.class);
+    }
+
+   /**
+    * jsonMap转Obj
+    *
+    * @author YC
+    * @createDate 2021/1/27 11:58
+    **/
+    public static Object jsonMapToBean(Map<String,Object> map,Object clazz) {
+        if (ObjectUtils.isEmpty(map)) {
+            return null;
+        }
+        return JSON.parseObject(JSON.toJSONString(map), clazz.getClass());
+    }
+    public static Object jsonMapToBean(String json,Object clazz) {
+        return JSON.parseObject(json, clazz.getClass());
+    }
+}

+ 9 - 0
src/main/java/cn/com/citycloud/rent/util/package-info.java

@@ -0,0 +1,9 @@
+/*
+* Copyright (c) 2017 citycloud.com.cn All Rights Reserved.
+*//**
+ * 工具类
+ *
+ * @author huanghy
+ * @version 2017/9/5
+ */
+package cn.com.citycloud.rent.util;

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

@@ -0,0 +1,35 @@
+spring.datasource.url=@spring.datasource.url@
+spring.datasource.username=@spring.datasource.username@
+spring.datasource.password=@spring.datasource.password@
+
+#pagehelper
+pagehelper.helperDialect=mysql
+pagehelper.reasonable=true
+pagehelper.supportMethodsArguments=true
+pagehelper.params=count=countSql
+
+#MyBatis配置文件
+mybatis.typeAliasesPackage=cn.com.citycloud.entity
+mybatis.mapperLocations=classpath:/sqlmap/mapper/*.xml
+mybatis.configLocation=classpath:/sqlmap/mybatis-config.xml
+
+spring.devtools.restart.additional-paths=service-querySrm/src/main/java,service-common/src/main/java,\
+  service-entity/src/main/java,service-configuration/src/main/java
+
+spring.profiles.active=@springProfiles@
+
+spring.http.multipart.enabled=true
+spring.http.multipart.max-file-size=200MB
+spring.http.multipart.max-request-size=200MB
+spring.http.multipart.resolve-lazily=true
+
+# 企业要素核验
+alibaba.cloud.endPoint=cloudauth.aliyuncs.com
+alibaba.cloud.accessKeyId=LTAI5t6nA2WbuXc9SUWCxVWQ
+alibaba.cloud.accessKeySecret=dNxyqwI5pwPd6Jaqbqy6JsmeJ0jkTd
+
+rent.task.master=true
+
+
+# 正式:9040 测试:9000
+server.port=9040

+ 7 - 0
src/main/resources/cache-redis.properties

@@ -0,0 +1,7 @@
+cache.redis.host=@cache.redis.host@
+cache.redis.password=@cache.redis.password@
+cache.redis.port=@cache.redis.port@
+cache.redis.pool.max-idle=@cache.redis.pool.max-idle@ 
+cache.redis.pool.min-idle=@cache.redis.pool.min-idle@
+cache.redis.pool.max-active=@cache.redis.pool.max-active@
+cache.redis.pool.max-wait=@cache.redis.pool.max-wait@

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

@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <contextName>service-querySrm</contextName>
+    <property name="LOG_PATH" value="logs/"/>
+    <property name="APP" value="service_querySrm"/>
+
+    <appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_PATH}/${APP}/log_error.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/${APP}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>20MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <append>true</append>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>[${APP}][ERROR]: %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>error</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="WARN_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_PATH}/${APP}/log_warn.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/${APP}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>20MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>[${APP}][WARN]: %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_PATH}/${APP}/log_info.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/${APP}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>20MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <append>true</append>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>[${APP}][INFO]: %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="FILE_UPLOAD_INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_PATH}/${APP}/log_file_upload_info.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/${APP}/info/log-file-upload-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>20MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <append>true</append>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>[${APP}]: %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>@logging.level@</level>
+        </filter>
+    </appender>
+
+    <logger name="org.springframework" level="@logging.level.root@"/>
+    <logger name="org.apache.ibatis" level="@logging.level@"/>
+    <logger name="java.sql.Connection" level="@logging.level@"/>
+    <logger name="java.sql.Statement" level="@logging.level@"/>
+    <logger name="java.sql.PreparedStatement" level="@logging.level@"/>
+    <logger name="cn.com.citycloud" level="@logging.level@"/>
+    <!--文件上传日志-->
+    <logger name="cn.com.citycloud.configuration.uploadfile.ImagesUploadController" level="info">
+        <appender-ref ref="FILE_UPLOAD_INFO_LOG"/>
+    </logger>
+
+    <!--指定开发环境下输出日志-->
+    <springProfile name="dev">
+        <root level="@logging.level.root@">
+            <appender-ref ref="ERROR_LOG"/>
+            <appender-ref ref="WARN_LOG"/>
+            <appender-ref ref="INFO_LOG"/>
+            <appender-ref ref="STDOUT"/>
+        </root>
+    </springProfile>
+
+    <!--指定生产环境下输出日志-->
+    <springProfile name="product">
+        <root level="@logging.level.root@">
+            <appender-ref ref="ERROR_LOG"/>
+            <appender-ref ref="WARN_LOG"/>
+            <appender-ref ref="INFO_LOG"/>
+        </root>
+    </springProfile>
+</configuration>

+ 34 - 0
src/main/resources/spring/application-beans.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="
+	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd ">
+
+	<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
+		destroy-method="close">
+		<property name="url" value="${spring.datasource.url}"/>
+		<property name="username" value="${spring.datasource.username}"/>
+		<property name="password" value="${spring.datasource.password}"/>
+
+		<property name="filters" value="stat" />
+
+		<property name="maxActive" value="100" />
+		<property name="initialSize" value="10" />
+		<property name="maxWait" value="60000" />
+		<property name="minIdle" value="1" />
+
+		<property name="timeBetweenEvictionRunsMillis" value="60000" />
+		<property name="minEvictableIdleTimeMillis" value="300000" />
+
+		<property name="validationQuery" value="SELECT 'x'" />
+		<property name="testWhileIdle" value="true" />
+		<property name="testOnBorrow" value="false" />
+		<property name="testOnReturn" value="false" />
+		<property name="poolPreparedStatements" value="false" />
+		<property name="maxPoolPreparedStatementPerConnectionSize"
+			value="20" />
+		<!-- 通过connectProperties属性来打开mergeSql功能;慢SQL记录 -->
+		<property name="connectionProperties"
+			value="druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000" />
+	</bean>
+</beans>

+ 19 - 0
src/main/resources/sqlmap/mapper/querySrmMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.citycloud.rent.dao.rent.QuerySrmDao">
+
+   <select id="getBankData" parameterType="java.lang.Integer" resultType="cn.com.citycloud.entity.querySrm.SrmBankInfo">
+       SELECT
+       b.countryname as countryName,
+       b.countrycode as countryCode,
+       b.bankcode as bankCode,
+       b.bankname as bankName,
+       b.bankaccount as bankAccount,
+       b.bankhost as bankHost
+       FROM
+       d_sl_vendor a
+       LEFT JOIN d_sl_vendorbankdtl b on a.vendorid=b.vendorid
+       WHERE
+       a.ext007 = #{shopId}
+   </select>
+</mapper>

+ 34 - 0
src/main/resources/sqlmap/mybatis-config.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+"http://www.mybatis.org/dtd/mybatis-3-config.dtd">
+
+<configuration>
+	<properties>
+		<property name="dialect" value="mysql" />
+	</properties>
+	<settings>
+		<setting name="logImpl" value="LOG4J" />
+		<!-- 这个配置使全局的映射器启用或禁用缓存 -->
+		<setting name="cacheEnabled" value="true" />
+		<!-- 这个配置使Map空置也能映射 -->
+		<setting name="callSettersOnNulls" value="true" />
+		<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 -->
+		<setting name="lazyLoadingEnabled" value="true" />
+		<!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载 -->
+		<setting name="aggressiveLazyLoading" value="false" />
+		<!-- 允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动) -->
+		<setting name="multipleResultSetsEnabled" value="true" />
+		<!-- 使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动 -->
+		<setting name="useColumnLabel" value="true" />
+		<!-- 允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如Derby) -->
+		<setting name="useGeneratedKeys" value="true" />
+		<!-- 指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况) -->
+		<setting name="autoMappingBehavior" value="FULL" />
+		<!-- 配置默认的执行器。SIMPLE执行器没有什么特别之处。REUSE执行器重用预处理语句。BATCH执行器重用语句和批量更新;选择simple,由于spring事务支持的需要 -->
+		<setting name="defaultExecutorType" value="SIMPLE" />
+		<!-- 设置超时时间,它决定驱动等待一个数据库响应的时间 -->
+		<setting name="defaultStatementTimeout" value="25000" />
+		<!--开启驼峰命名转换-->
+		<setting name="mapUnderscoreToCamelCase" value="true"/>
+	</settings>
+</configuration>