diff --git a/docker-compose.yml b/docker-compose.yml
index 5b64e5f0..e69de29b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,10 +0,0 @@
-version: "3"
-services:
- aida_back:
- container_name: prod-version-aida-back
- build: .
- volumes:
- # 日志目录映射
- - ./log:/log
- ports:
- - "10010:5567"
diff --git a/files/CODE-CREATE LIMITED-3015240422190522-merchant.private.key.txt b/files/CODE-CREATE LIMITED-3015240422190522-merchant.private.key.txt
new file mode 100644
index 00000000..b8487446
--- /dev/null
+++ b/files/CODE-CREATE LIMITED-3015240422190522-merchant.private.key.txt
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC1XpZ0+EIoJvQk
+GHAdpcpr35S+UnxNdOE+1sZsIDWuyzXG0d6vOudITmYFTqVzJRaAArhwp+NQ/R9y
+onsuUsEc0x2qTntySYMedHfI2TSl6qTsqpHykSLr6u0E4TuYUiGs/nf3t0A/rEvm
+KK6OP4vNgUlANhOKDwiCAdmJkiOBEHJwLsN1xlcnBkUR0Wr+uauVo+A0opkM7HrB
+aXXTcy+gpold+uCgCbRzFCiDr0uKsLJgb3Ce1aXTwa8k2dDg6mzhE0U65yhsNzjC
+Cqg+g8tfEVha9Nrsmd6hG2iFHnk4rCqRXhjuI1V10GiZUppMWJtGD2tj7ZK0XXKh
+5sAclu9RAgMBAAECggEBAKSQy8IclKKsHbA2wFwWV6Ijv2olnAYH/G0xId9wJmWQ
+mx3oxb6Hmt3fzPAZ2UOuLkk+rq4Bl9+fnQ494bk5e2G1KWCjT512mFNk6F9EvmGh
+k73uUvkeueoIQsG/wHxIYaf/SUlqbBCaPE/9L82AWVDBc36g0n/dfiHAnesWv8JV
+agiTF/SIWDPtzRaVh8VObFOusHdqnRuLqV7n0FSVJePSNBFSSOz5XTttOtM4whg8
+kw3jlCHbVMVKtPYcebxGf0vkDapyGJiZ6wc1rD4MXJTciG+WQNfNE+Af2UB606VC
+Nlq/CRkXr2Ix9ASSMeE4TcH+0EoxeITpP2NV+3hAzgECgYEA7mWSd6HgPXMdwO33
+efmx0qky+I/4bhicG9Go6021fRY+jUhRcj6VtDWBzuZwblgTSiDH4t2TbfB+hvQD
+GVTJNc21+hXEVNu0ajqLuMiCgqaZCeNeJYYYowbLSbYd4t/nQh1vCZ/44aRWqG8G
+eWEGruMaqSlGyFG7kyaoQaY1X6ECgYEAwsMGiupkNZ/JU3PZd2X2X+37b8BXcIt7
+itL413GDiLwCNII5pArD7GHYFQzN4GaUCt/VjrRXbTY1xYCk2RA0FyBMsxAGa+eH
+9iTSLQvDJpxV/44UY3L9ZFcz4t0WjRcsdqPt30yUBNWiAIGcjtae2tMvtfxKICLQ
+sYXAS+ciMbECgYEA4tnerV5pfq/7QSpw0y4Ky5ZcPXDqiwF6E3LH1dlleTlgnpqR
+fjAVzp0X/+UCWc4P1PsqmjQU5YnzLMIn7MPkkAFHSEnMQJ+sp2U8rcKHhoG3oVQt
+s3FOIlwFuAfHmqtLaXuOvM7wSu9R0weLVpdAf8z2AsCXbWlxH86qT4Y0xeECgYBM
+NJkbw8i//qx8vciqYjf7oxeNy1mrTLhjQldhnSXVW5MVTpsVJ60vkb1Fx0PK+PgW
+JSzfcIsAzYROqh5WXHO1VMsOCUgp8mcNlayzOXX7ZpJzsvkhTH3/Q+umadGIFTgt
+l8jcZY9JMPn5br1+WlW/04BImdW7K0QzId1zFZYYkQKBgQDqswTLEpbBDOE/3uk4
+laZ9kTLJMP/hVmDJ0/jbETMdCkzIORnr3xFxmZIHG17E2In9PVumD0ESCh7qbCDE
+isbfLSgfJR6ItdOM6W2R0GAsXQ3e0byBpR7qm0j9J3zYRhQwfVbZtkX0uywB9a/4
+q2bz4491ESrbryx16FZKUJeX8g==
+-----END PRIVATE KEY-----
diff --git a/files/CODE-CREATE LIMITED.merchant.aqs.public.key.pem b/files/CODE-CREATE LIMITED.merchant.aqs.public.key.pem
new file mode 100644
index 00000000..39a68d27
--- /dev/null
+++ b/files/CODE-CREATE LIMITED.merchant.aqs.public.key.pem
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtV6WdPhCKCb0JBhwHaXK
+a9+UvlJ8TXThPtbGbCA1rss1xtHerzrnSE5mBU6lcyUWgAK4cKfjUP0fcqJ7LlLB
+HNMdqk57ckmDHnR3yNk0peqk7KqR8pEi6+rtBOE7mFIhrP5397dAP6xL5iiujj+L
+zYFJQDYTig8IggHZiZIjgRBycC7DdcZXJwZFEdFq/rmrlaPgNKKZDOx6wWl103Mv
+oKaJXfrgoAm0cxQog69LirCyYG9wntWl08GvJNnQ4Ops4RNFOucobDc4wgqoPoPL
+XxFYWvTa7JneoRtohR55OKwqkV4Y7iNVddBomVKaTFibRg9rY+2StF1yoebAHJbv
+UQIDAQAB
+-----END PUBLIC KEY-----
diff --git a/pom.xml b/pom.xml
index 4186fc61..70da458b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -158,6 +158,12 @@
1.4
+
+ com.microsoft.sqlserver
+ mssql-jdbc
+ 9.2.1.jre8
+
+
org.springframework.boot
@@ -170,6 +176,39 @@
commons-pool2
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.22.57.ALL
+
+
+
+
+ com.paypal.sdk
+ checkout-sdk
+ 1.0.5
+
+
+
+ com.paypal.sdk
+ rest-api-sdk
+ LATEST
+
+
+
+ org.json
+ json
+ 20230618
+
+
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.17.1
+
+
+
org.apache.poi
poi
diff --git a/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java
similarity index 59%
rename from src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java
rename to src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java
index 77f46dbd..3e8e6a6e 100644
--- a/src/main/java/com/ai/da/common/RabbitMQ/MQConsumer.java
+++ b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java
@@ -1,13 +1,16 @@
package com.ai.da.common.RabbitMQ;
import com.ai.da.common.config.exception.BusinessException;
+import com.ai.da.common.constant.CommonConstant;
import com.ai.da.common.utils.RedisUtil;
import com.ai.da.model.dto.GenerateThroughImageTextDTO;
-import com.ai.da.model.vo.GenerateCollectionVO;
+import com.ai.da.model.vo.GenerateResultVO;
import com.ai.da.service.GenerateService;
import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.jni.Time;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
@@ -17,12 +20,12 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
-import java.util.Objects;
+import java.util.Map;
@Slf4j
@Component
-public class MQConsumer {
+public class GenerateConsumer {
@Resource
private GenerateService generateService;
@@ -30,17 +33,17 @@ public class MQConsumer {
@Resource
private RedisUtil redisUtil;
- @Value("${redis.key.consumptionOrder}")
+ @Value("${redis.key.orderForGenerate}")
private String consumptionOrderKey;
- @Value("${redis.key.cancelSet}")
+ @Value("${redis.key.generateCancelSet}")
private String cancelSetKey;
- @Value("${redis.key.exceptionMap}")
+ @Value("${redis.key.generateExceptionMap}")
private String exceptionMapKey;
- @Value("${redis.key.resultMap}")
- private String resultMapKey;
+ @Value("${redis.key.generateResult}")
+ private String generateResultKey;
public void generate(Message msg, Channel channel, String consumerName) {
log.info("============start listening==========");
@@ -63,20 +66,16 @@ public class MQConsumer {
// 2.2 将该消息从取消列表中删除
// redisUtil.removeFromSet(cancelSetKey, uniqueId);
} else {
- /*try {
- Thread.sleep(15000);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }*/
- GenerateCollectionVO generateCollectionVO = generateService.generateThroughImageText(generateThroughImageTextDTO);
+// GenerateCollectionVO generateCollectionVO = generateService.generateThroughImageText(generateThroughImageTextDTO);
+ generateService.generateThroughImageText(generateThroughImageTextDTO);
// 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除
redisUtil.removeFromZSet(consumptionOrderKey, uniqueId);
- if (!Objects.isNull(generateCollectionVO)) {
+ /*if (!Objects.isNull(generateCollectionVO)) {
HashMap generateResult = new HashMap<>();
generateResult.put(uniqueId, JSONObject.toJSONString(generateCollectionVO));
// 将结果存在redis中 ,为空时不要存
redisUtil.addToMap(resultMapKey, generateResult);
- }
+ }*/
}
} catch (BusinessException e) {
@@ -87,6 +86,9 @@ public class MQConsumer {
channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
// 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除
redisUtil.removeFromZSet(consumptionOrderKey, uniqueId);
+ String key = generateResultKey + ":" + uniqueId;
+ GenerateResultVO generateResultVO = new GenerateResultVO(generateThroughImageTextDTO.getUniqueId(), null, null, "Fail");
+ redisUtil.addToString(key, new Gson().toJson(generateResultVO), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
} catch (IOException exception) {
log.error("手动确认,取消返回队列,不再重新消费");
}
@@ -104,6 +106,54 @@ public class MQConsumer {
log.info("=============end listening===========");
}
+ public void processGenerateResult(Message msg, Channel channel) {
+ log.info("============ProcessGenerateResult listening==========");
+ long start = System.currentTimeMillis();
+
+ Map generateResult = JSONObject.parseObject(msg.getBody(), Map.class);
+ log.info("generate response : {}", generateResult);
+
+ try {
+ log.info("tasks_id : {} start ", generateResult.get("tasks_id"));
+ if (generateResult.get("status").equals("SUCCESS")) {
+ String url = generateResult.get("image_url");
+ String taskId = generateResult.get("tasks_id");
+ String category = generateResult.get("category");
+ generateService.processGenerateResult(taskId, url, category);
+ } else {
+ // 修改redis中的数据状态为exception
+ String key = generateResultKey + ":" + generateResult.get("tasks_id");
+ redisUtil.addToString(key, new Gson().toJson(new GenerateResultVO(generateResult.get("tasks_id"), null, null, "Fail")), CommonConstant.GENERATE_RESULT_EXPIRE_TIME);
+ // 将异常信息存到exception中
+ HashMap exceptionInfo = new HashMap<>();
+ exceptionInfo.put(generateResult.get("tasks_id"), generateResult.get("data"));
+ // 存redis
+ redisUtil.addToMap(exceptionMapKey, exceptionInfo);
+ }
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ try {
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ // 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除
+ redisUtil.removeFromZSet(consumptionOrderKey, generateResult.get("tasks_id"));
+ } catch (IOException exception) {
+ log.error("手动确认,取消返回队列,不再重新消费");
+ }
+ // 将入参和错误信息存入数据库
+ String exceptionMessage = JSONObject.toJSONString(generateResult) +
+ " Exception message : " + e.getMessage();
+ HashMap exceptionInfo = new HashMap<>();
+ exceptionInfo.put(String.valueOf(generateResult.get("tasks_id")), exceptionMessage);
+ // 存redis
+ redisUtil.addToMap(exceptionMapKey, exceptionInfo);
+ }
+
+ long end = System.currentTimeMillis();
+ log.info("tasks_id : {}, end , message : {}, 执行时长: {} 毫秒", generateResult.get("tasks_id"), generateResult.get("message"), (end - start));
+ log.info("============ProcessGenerateResult End listening==========");
+
+ }
+
@RabbitListener(queues = MQConfig.GENERATE_QUEUE)
@RabbitHandler
public void generateConsumer1(Message msg, Channel channel) {
@@ -158,4 +208,9 @@ public class MQConsumer {
generate(msg, channel, "consumer 9");
}
+ @RabbitListener(queues = MQConfig.GENERATE_RESULT_QUEUE)
+ @RabbitHandler
+ public void getGenerateResult(Message msg, Channel channel) {
+ processGenerateResult(msg, channel);
+ }
}
diff --git a/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java b/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java
index 7f7428ad..7079f02a 100644
--- a/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java
+++ b/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java
@@ -1,23 +1,27 @@
package com.ai.da.common.RabbitMQ;
-import org.springframework.amqp.core.Binding;
-import org.springframework.amqp.core.BindingBuilder;
-import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
-import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.rabbit.core.RabbitAdmin;
-import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.beans.factory.annotation.Value;
@Configuration
public class MQConfig {
public static final String GENERATE_EXCHANGE_FANOUT = "generate-exchange";
- public static final String GENERATE_QUEUE = "generate-queue-prod";
+ // public static final String GENERATE_QUEUE = "generate-queue-prod";
// public static final String GENERATE_QUEUE = "generate-queue-test";
+// ==================================================================
+// public static final String GENERATE_QUEUE = "generate-queue-local";
+ public static final String GENERATE_QUEUE = "generate-queue-dev";
+
+// public static final String SR_QUEUE = "SR-queue-local";
+ public static final String SR_QUEUE = "SR-queue-dev";
+
+// public static final String SR_RESULT_QUEUE = "SuperResolution-local";
+ public static final String SR_RESULT_QUEUE = "SuperResolution-dev";
+
+// public static final String GENERATE_RESULT_QUEUE = "GenerateImage-local";
+ public static final String GENERATE_RESULT_QUEUE = "GenerateImage-dev";
public MQConfig() {
}
@@ -31,10 +35,20 @@ public class MQConfig {
* 创建队列,使用工作模式,不用定义交换机
*/
@Bean
- public Queue queueRasa() {
+ public Queue generateQueue() {
return new Queue(GENERATE_QUEUE);
}
+ @Bean
+ public Queue SRQueue() {
+ return new Queue(SR_QUEUE);
+ }
+
+ @Bean
+ public Queue SRResultQueue() {
+ return new Queue(SR_RESULT_QUEUE);
+ }
+
/**
* 将队列绑定到交换机上【队列订阅交换机】
*/
diff --git a/src/main/java/com/ai/da/common/RabbitMQ/MQPublisher.java b/src/main/java/com/ai/da/common/RabbitMQ/MQPublisher.java
index b0429110..5cffa019 100644
--- a/src/main/java/com/ai/da/common/RabbitMQ/MQPublisher.java
+++ b/src/main/java/com/ai/da/common/RabbitMQ/MQPublisher.java
@@ -10,7 +10,7 @@ import javax.annotation.Resource;
@Component
public class MQPublisher {
- private final String url = "http://localhost:15672/api/queues/%2f/generate-queue";
+// private final String url = "http://localhost:15672/api/queues/%2f/generate-queue";
@Resource
private AmqpTemplate amqpTemplate;
@@ -18,7 +18,11 @@ public class MQPublisher {
public void sendGenerateMessage(String mm) {
log.info("send message:" + mm);
amqpTemplate.convertAndSend(MQConfig.GENERATE_QUEUE, mm);
+ }
+ public void sendSRMessage(String mm) {
+ log.info("send message:" + mm);
+ amqpTemplate.convertAndSend(MQConfig.SR_QUEUE, mm);
}
}
diff --git a/src/main/java/com/ai/da/common/RabbitMQ/SRConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/SRConsumer.java
new file mode 100644
index 00000000..6ad261bd
--- /dev/null
+++ b/src/main/java/com/ai/da/common/RabbitMQ/SRConsumer.java
@@ -0,0 +1,234 @@
+package com.ai.da.common.RabbitMQ;
+
+import com.ai.da.common.config.exception.BusinessException;
+import com.ai.da.common.utils.RedisUtil;
+import com.ai.da.model.dto.SuperResolutionDTO;
+import com.ai.da.model.dto.TaskDTO;
+import com.ai.da.service.SuperResolutionService;
+import com.ai.da.service.TaskListService;
+import com.alibaba.fastjson.JSONException;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.util.HashMap;
+
+@Slf4j
+@Component
+public class SRConsumer {
+
+ @Resource
+ private RedisUtil redisUtil;
+
+ @Resource
+ private TaskListService taskListService;
+
+ @Value("${redis.key.orderForSR}")
+ private String consumptionOrderKey;
+
+ @Value("${redis.key.SRCancelSet}")
+ private String cancelSetKey;
+
+ @Value("${redis.key.SRExceptionMap}")
+ private String exceptionMapKey;
+
+ @Value("${redis.key.taskList}")
+ private String taskListKey;
+
+ @Resource
+ private SuperResolutionService superResolutionService;
+
+ /**
+ * 请求超分处理
+ */
+ public void superResolution(Message msg, Channel channel, String consumerName) {
+ log.info("============SR start listening==========");
+ long start = System.currentTimeMillis();
+
+ SuperResolutionDTO superResolutionDTO;
+ String uniqueId = null;
+
+ try {
+ superResolutionDTO = JSONObject.parseObject(msg.getBody(), SuperResolutionDTO.class);
+ uniqueId = superResolutionDTO.getUniqueId();
+ log.info("From " + consumerName + " : " + uniqueId);
+ superResolutionService.updateSROutput(uniqueId, "Executing", null);
+ taskListService.updateTaskStatusOrOutputRedis(uniqueId, "Executing", null);
+ /*try {
+ Thread.sleep(2 * 60 * 1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }*/
+ // 2、判断当前消息是否在取消列表中
+ Boolean isMember = redisUtil.isElementExistsInSet(cancelSetKey, uniqueId);
+ if (isMember) {
+ try {
+ // 2.1 手动确认该消息
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ } catch (IOException ex) {
+ log.error("手动确认,不返回队列重新消费");
+ }
+ } else {
+ // 请求python端进行超分
+ superResolutionService.SR(superResolutionDTO);
+ }
+ } catch (BusinessException e) {
+ log.error(e.getMsg());
+ superResolutionDTO = JSONObject.parseObject(msg.getBody(), SuperResolutionDTO.class);
+ // channel.basicNack() 为不确认deliveryTag对应的消息,第二个参数是否应用于多消息,第三个参数是否requeue
+ setErrorMessage(msg, channel, e.getMsg(), superResolutionDTO);
+ try {
+ // 2.1 手动确认该消息
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ } catch (IOException ex) {
+ log.error("手动确认,不返回队列重新消费, error message : " + e.getMessage());
+ }
+ } catch (JSONException e) {
+ log.error(e.getMessage());
+ setErrorMessage(msg, channel, e.getMessage(), null);
+ try {
+ // 2.1 手动确认该消息
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ } catch (IOException ex) {
+ log.error("手动确认,不返回队列重新消费, error message : " + e.getMessage());
+ }
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ superResolutionDTO = JSONObject.parseObject(msg.getBody(), SuperResolutionDTO.class);
+ setErrorMessage(msg, channel, e.getMessage(), superResolutionDTO);
+ try {
+ // 2.1 手动确认该消息
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ } catch (IOException ex) {
+ log.error("手动确认,不返回队列重新消费, error message : " + e.getMessage());
+ }
+ }
+
+ long end = System.currentTimeMillis();
+
+ log.info(" task_id: " + uniqueId + "----------" + consumerName + " 执行时长:" + (end - start) + "毫秒");
+ log.info("=============SR end listening===========");
+ }
+
+ /**
+ * 获取超分结果
+ */
+ public void getSRResult(Message msg, Channel channel, String consumerName) {
+ log.info("============SRResult start listening==========");
+ long start = System.currentTimeMillis();
+
+ JSONObject result = null;
+ String taskId = null;
+
+ try {
+ result = JSONObject.parseObject(msg.getBody(), JSONObject.class);
+ log.info("SR response : {}", result);
+ taskId = result.get("tasks_id").toString();
+ } catch (JSONException e) {
+ log.error("SRResult 返回数据格式不合规范");
+ log.error(e.getMessage());
+ setErrorMessage(msg, channel, e.getMessage(), null);
+ try {
+ // 第二个参数,是否批量确认消息,当传false时,只确认当前 deliveryTag对应的消息;当传true时,会确认当前及之前所有未确认的消息。
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ } catch (IOException exception) {
+ log.error("手动确认,取消返回队列,不再重新消费");
+ }
+ } catch (Exception e){
+ log.error(e.getMessage());
+ setErrorMessage(msg, channel, e.getMessage(), null);
+ try {
+ // 第二个参数,是否批量确认消息,当传false时,只确认当前 deliveryTag对应的消息;当传true时,会确认当前及之前所有未确认的消息。
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ } catch (IOException exception) {
+ log.error("手动确认,取消返回队列,不再重新消费");
+ }
+ }
+
+
+ try {
+ // 2、判断状态是否成功
+ if ("SUCCESS".equals(result.get("status").toString())) {
+ String output = result.get("data").toString();
+ superResolutionService.setSRResult(taskId, output, "success");
+ taskListService.updateTaskStatusOrOutputRedis(taskId, "success", output);
+ } else {
+ superResolutionService.setSRResult(taskId, null, "fail");
+ taskListService.updateTaskStatusOrOutputRedis(taskId, "fail", null);
+ HashMap exceptionInfo = new HashMap<>();
+ // 获取输入信息
+ String task = redisUtil.getFromString(taskListKey + taskId + taskId.substring(taskId.lastIndexOf("-") + 1));
+ Gson gson = new Gson();
+ Type type = new TypeToken>() {
+ }.getType();
+ TaskDTO taskDTO = gson.fromJson(task, type);
+ // 将输入信息和报错信息均存入redis todo 加判空
+ exceptionInfo.put(taskId, "Input ==> " + taskDTO.getInputParam() + "Fail Message ==> " + result.get("message").toString());
+ // 将报错信息存入redis
+ redisUtil.addToMap(exceptionMapKey, exceptionInfo);
+ }
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ // channel.basicNack() 为不确认deliveryTag对应的消息,第二个参数是否应用于多消息,第三个参数是否requeue
+ try {
+ // 第二个参数,是否批量确认消息,当传false时,只确认当前 deliveryTag对应的消息;当传true时,会确认当前及之前所有未确认的消息。
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ } catch (IOException exception) {
+ log.error("手动确认,取消返回队列,不再重新消费");
+ }
+ }
+
+ long end = System.currentTimeMillis();
+
+ log.info(" task_id: " + taskId + "----------" + consumerName + " 执行时长:" + (end - start) + "毫秒");
+ log.info("=============SRResult end listening===========");
+ }
+
+ private void setErrorMessage(Message msg, Channel channel, String message, SuperResolutionDTO superResolutionDTO) {
+ String uniqueId;
+ try {
+ // 第二个参数,是否批量确认消息,当传false时,只确认当前 deliveryTag对应的消息;当传true时,会确认当前及之前所有未确认的消息。
+ channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ uniqueId = superResolutionDTO.getUniqueId();
+ // 将消息从redis排队队列中删除,需保证被消费的消息存储到db之后再从redis删除
+ redisUtil.removeFromZSet(consumptionOrderKey, uniqueId);
+ } catch (Exception exception) {
+ log.error("手动确认,取消返回队列,不再重新消费");
+ throw new BusinessException("发生错误,手动确认消息");
+ }
+ // 将入参和错误信息存入redis
+ String exceptionMessage = JSONObject.toJSONString(superResolutionDTO) +
+ " Exception message : " + message;
+// " Exception message : " + e.getMessage();
+ HashMap exceptionInfo = new HashMap<>();
+ uniqueId = superResolutionDTO.getUniqueId();
+ exceptionInfo.put(String.valueOf(uniqueId), exceptionMessage);
+ // 存redis
+ redisUtil.addToMap(exceptionMapKey, exceptionInfo);
+ taskListService.updateTaskStatusOrOutputRedis(uniqueId, "fail", null);
+ }
+
+ @RabbitListener(queues = MQConfig.SR_QUEUE)
+ @RabbitHandler
+ public void SRConsumer1(Message msg, Channel channel) {
+ superResolution(msg, channel, "consumer 1");
+ }
+
+
+ @RabbitListener(queues = MQConfig.SR_RESULT_QUEUE)
+ @RabbitHandler
+ public void SRResultConsumer1(Message msg, Channel channel) {
+ getSRResult(msg, channel, "consumer 1");
+ }
+
+}
diff --git a/src/main/java/com/ai/da/common/config/AlipayClientConfig.java b/src/main/java/com/ai/da/common/config/AlipayClientConfig.java
new file mode 100644
index 00000000..5b1ec344
--- /dev/null
+++ b/src/main/java/com/ai/da/common/config/AlipayClientConfig.java
@@ -0,0 +1,43 @@
+package com.ai.da.common.config;
+
+import com.alipay.api.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.core.env.Environment;
+
+import javax.annotation.Resource;
+
+@Configuration
+//加载配置文件
+@PropertySource("classpath:alipay-sandbox.properties")
+public class AlipayClientConfig {
+
+ @Resource
+ private Environment config;
+
+ @Bean
+ public AlipayClient alipayClient() throws AlipayApiException {
+
+ AlipayConfig alipayConfig = new AlipayConfig();
+
+ //设置网关地址
+ alipayConfig.setServerUrl(config.getProperty("alipay.gateway-url"));
+ //设置应用Id
+ alipayConfig.setAppId(config.getProperty("alipay.app-id"));
+ //设置应用私钥
+ alipayConfig.setPrivateKey(config.getProperty("alipay.merchant-private-key"));
+ //设置请求格式,固定值json
+ alipayConfig.setFormat(AlipayConstants.FORMAT_JSON);
+ //设置字符集
+ alipayConfig.setCharset(AlipayConstants.CHARSET_UTF8);
+ //设置支付宝公钥
+ alipayConfig.setAlipayPublicKey(config.getProperty("alipay.alipay-public-key"));
+ //设置签名类型
+ alipayConfig.setSignType(AlipayConstants.SIGN_TYPE_RSA2);
+ //构造client
+ AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
+
+ return alipayClient;
+ }
+}
diff --git a/src/main/java/com/ai/da/common/config/CRMReportInterface.java b/src/main/java/com/ai/da/common/config/CRMReportInterface.java
new file mode 100644
index 00000000..3714d11d
--- /dev/null
+++ b/src/main/java/com/ai/da/common/config/CRMReportInterface.java
@@ -0,0 +1,393 @@
+package com.ai.da.common.config;
+
+import com.ai.da.mapper.primary.entity.CustomerData;
+import com.ai.da.mapper.primary.entity.TransactionData;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class CRMReportInterface {
+
+ // JDBC 驱动器名称以及数据库 URL
+ static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
+ static final String DB_URL = "jdbc:sqlserver://118.142.0.178:1550;databaseName=Hayman_prod";
+
+ // 数据库凭据
+ static final String USER = "user01";
+ static final String PASS = "haySIS-2302";
+
+ public static void main(String[] args) {
+ Connection conn = null;
+ Statement stmt = null;
+ try {
+ // 注册 JDBC 驱动器
+ Class.forName(JDBC_DRIVER);
+
+ // 打开一个连接
+ System.out.println("连接数据库...");
+ conn = DriverManager.getConnection(DB_URL, USER, PASS);
+
+ // 执行查询步骤1: 生成 RW0095 报告以获取客户完整数据
+ System.out.println("执行步骤1:生成 RW0095 报告...");
+ // 执行相应的查询并获取数据
+// List customerData = retrieveCustomerData();
+ // 执行查询步骤2: 使用 MZG013 报告检查客户的销售历史
+ System.out.println("执行步骤2:使用 MZG013 报告检查客户的销售历史...");
+ // 执行相应的查询并获取数据
+ List transactionData = retrieveTransactionData();
+ List collect = transactionData.stream().map(TransactionData::getUserMember).collect(Collectors.toList());
+ List customerData = retrieveCustomerData(collect);
+ for (TransactionData transactionDatum : transactionData) {
+ for (CustomerData customerDatum : customerData) {
+ if (customerDatum.getMbrCode().equals(transactionDatum.getUserMember())) {
+ customerDatum.setLastMonth(transactionDatum.getSumAmt());
+ break;
+ }
+ }
+ }
+ // 执行步骤3: 合并(vlookup)RW0095中的客户购买金额
+ System.out.println("执行步骤3:合并客户购买金额...");
+ // 执行相应的操作,如vlookup
+
+ // 执行步骤4: 按“发行店”筛选以分离不同文件并逐个发送给店铺
+ System.out.println("执行步骤4:按发行店筛选并发送文件给店铺...");
+ // 执行相应的操作,如过滤和导出
+ String filePath = "C:\\Users\\10233\\Desktop\\CRM.csv";
+ exportToCSV(customerData, filePath);
+ // 关闭连接
+ conn.close();
+ } catch (SQLException se) {
+ // 处理 JDBC 错误
+ se.printStackTrace();
+ } catch (Exception e) {
+ // 处理 Class.forName 错误
+ e.printStackTrace();
+ } finally {
+ // 关闭资源
+ try {
+ if (stmt != null) stmt.close();
+ } catch (SQLException se2) {
+ } // 什么都不做
+ try {
+ if (conn != null) conn.close();
+ } catch (SQLException se) {
+ se.printStackTrace();
+ }
+ }
+ System.out.println("接口执行完成!");
+ }
+
+ private static void exportToCSV(List customerDataList, String filePath) throws IOException {
+ FileWriter writer = new FileWriter(filePath);
+
+// // 写入 CSV 文件的第一行,即字段名
+// writer.append("User Member,Mbr Name,Sh Code,Sum Amt\n");
+//
+// // 遍历数据列表,并将每一行数据写入 CSV 文件
+// for (TransactionData transaction : transactionDataList) {
+// writer.append(transaction.getUserMember()).append(",");
+// writer.append(transaction.getMbrName()).append(",");
+// writer.append(transaction.getShCode()).append(",");
+// writer.append(String.valueOf(transaction.getSumAmt())).append("\n");
+// }
+ writer.append("mbrCode,mbrName,mbrMobile,mbrGroup,mbrStatus,joinDate,mbrIssue,birthMonth,mbrSex,offBonus,effBonus,sumBonus,lastMonth\n");
+
+ // 遍历 customerDataList,并将数据写入 CSV 文件
+ for (CustomerData customer : customerDataList) {
+ writer.append(customer.getMbrCode()).append(",");
+ writer.append(customer.getMbrName()).append(",");
+ writer.append(customer.getMbrMobile()).append(",");
+ writer.append(customer.getMbrGroup()).append(",");
+ writer.append(customer.getMbrStatus()).append(",");
+ writer.append(customer.getJoinDate().toString()).append(","); // 日期需要根据实际情况格式化
+ writer.append(customer.getMbrIssue()).append(",");
+ writer.append(Integer.toString(customer.getBirthMonth())).append(",");
+ writer.append(customer.getMbrSex()).append(",");
+ writer.append(Double.toString(customer.getOffBonus())).append(",");
+ writer.append(Double.toString(customer.getEffBonus())).append(",");
+ writer.append(Double.toString(customer.getSumBonus())).append(",");
+ writer.append(Double.toString(customer.getLastMonth())).append("\n");
+ }
+
+ writer.close();
+ }
+
+ public static List retrieveCustomerData(List collect) {
+ List customerDataList = new ArrayList<>();
+ Connection conn = null;
+ Statement stmt = null;
+ try {
+ // 注册 JDBC 驱动器
+ Class.forName(JDBC_DRIVER);
+
+ // 打开一个连接
+ System.out.println("连接数据库...");
+ conn = DriverManager.getConnection(DB_URL, USER, PASS);
+
+ // 执行查询
+ System.out.println("创建声明...");
+ stmt = conn.createStatement();
+ String sql;
+ // 构建 IN 子句的字符串,用于添加到 SQL 查询中
+ StringBuilder inClause = new StringBuilder("(");
+ for (String code : collect) {
+ inClause.append("'").append(code).append("',");
+ }
+ inClause.deleteCharAt(inClause.length() - 1); // 删除最后一个逗号
+ inClause.append(")");
+
+ // 构建完整的 SQL 查询语句
+ sql = "SELECT * FROM V_RW0095B WHERE mbr_code IN " + inClause.toString();
+ ResultSet rs = stmt.executeQuery(sql);
+
+
+ // 处理结果集
+ while (rs.next()) {
+ // 将每行数据转换为 CustomerData 对象并添加到列表中
+ CustomerData customer = new CustomerData();
+ customer.setMbrCode(rs.getString("mbr_code"));
+ customer.setMbrName(rs.getString("mbr_name"));
+ customer.setMbrMobile(rs.getString("mbr_mobile"));
+ customer.setMbrGroup(rs.getString("mbr_group"));
+ customer.setMbrStatus(rs.getString("mbr_status"));
+ customer.setJoinDate(rs.getDate("join_date"));
+ customer.setMbrIssue(rs.getString("mbr_issue"));
+ customer.setBirthMonth(rs.getInt("birth_m"));
+ customer.setMbrSex(rs.getString("mbr_sex"));
+ customer.setOffBonus(rs.getDouble("off_bonus"));
+ customer.setEffBonus(rs.getDouble("eff_bonus"));
+ customer.setSumBonus(rs.getDouble("sum_bonus"));
+ customerDataList.add(customer);
+
+ }
+
+ // 清理环境
+ rs.close();
+ stmt.close();
+ conn.close();
+ } catch (SQLException se) {
+ // 处理 JDBC 错误
+ se.printStackTrace();
+ } catch (Exception e) {
+ // 处理 Class.forName 错误
+ e.printStackTrace();
+ } finally {
+ // 关闭资源
+ try {
+ if (stmt != null) stmt.close();
+ } catch (SQLException se2) {
+ } // 什么都不做
+ try {
+ if (conn != null) conn.close();
+ } catch (SQLException se) {
+ se.printStackTrace();
+ }
+ }
+ System.out.println("查询执行完成!");
+ return customerDataList;
+ }
+
+ public static List retrieveTransactionData() {
+ List transactionDataList = new ArrayList<>();
+ Connection conn = null;
+ Statement stmt = null;
+ try {
+ // 注册 JDBC 驱动器
+ Class.forName(JDBC_DRIVER);
+
+ // 打开一个连接
+ System.out.println("连接数据库...");
+ conn = DriverManager.getConnection(DB_URL, USER, PASS);
+
+ // 执行查询
+ System.out.println("创建声明...");
+ stmt = conn.createStatement();
+ String sql;
+ sql = "SELECT user_member,mbr_name,sum(trx_bas_amt) sumAmtByMebBySh FROM V_MZG013\n" +
+ "WHERE trx_date >= DATEADD(day, -7, GETDATE())\n" +
+ "and user_member is not NULL\n" +
+ "GROUP BY user_member,mbr_name";
+ ResultSet rs = stmt.executeQuery(sql);
+
+ // 处理结果集
+ while (rs.next()) {
+ // 将每行数据转换为 TransactionData 对象并添加到列表中
+ TransactionData transaction = new TransactionData();
+ transaction.setUserMember(rs.getString("user_member"));
+ transaction.setMbrName(rs.getString("mbr_name"));
+// transaction.setShCode(rs.getString("sh_code"));
+ transaction.setSumAmt(rs.getDouble("sumAmtByMebBySh"));
+// transaction.setTrxNo(rs.getString("trx_no"));
+// transaction.setTrxDate(rs.getTimestamp("trx_date"));
+// transaction.setTrxType(rs.getString("trx_type"));
+// transaction.setTrxStatus(rs.getString("trx_status"));
+// transaction.setTrxTotQty(rs.getDouble("trx_tot_qty"));
+// transaction.setCurrCode(rs.getString("curr_code"));
+// transaction.setExchRate(rs.getDouble("exch_rate"));
+// transaction.setDiscountPerc(rs.getDouble("discount_perc"));
+// transaction.setTrxAccAmt(rs.getDouble("trx_acc_amt"));
+// transaction.setTrxBasAmt(rs.getDouble("trx_bas_amt"));
+// transaction.setOutstandAmt(rs.getDouble("outstand_amt"));
+// transaction.setReceiveAmt(rs.getDouble("receive_amt"));
+// transaction.setChangeAmt(rs.getDouble("change_amt"));
+// transaction.setTrxTotBonus(rs.getDouble("trx_tot_bonus"));
+// transaction.setDepositNo(rs.getString("deposit_no"));
+// transaction.setDepositAmt(rs.getDouble("deposit_amt"));
+// transaction.setDepositStatus(rs.getString("deposit_status"));
+// transaction.setTrxAmtDesc(rs.getString("trx_amt_desc"));
+// transaction.setRemark(rs.getString("remark"));
+// transaction.setShCode(rs.getString("sh_code"));
+// transaction.setWhCodeFrom(rs.getString("wh_code_from"));
+// transaction.setWhCodeTo(rs.getString("wh_code_to"));
+// transaction.setIssuedBy(rs.getString("issued_by"));
+// transaction.setClientCode(rs.getString("client_code"));
+// transaction.setClientName(rs.getString("client_name"));
+// transaction.setSalesmanCode(rs.getString("salesman_code"));
+// transaction.setCtypeCode(rs.getString("ctype_code"));
+// transaction.setUpdatedOn(rs.getTimestamp("updated_on"));
+// transaction.setDocType(rs.getString("doc_type"));
+// transaction.setRefNo(rs.getString("ref_no"));
+// transaction.setAdjType(rs.getString("adj_type"));
+// transaction.setRefType(rs.getString("ref_type"));
+// transaction.setOrderNo(rs.getString("order_no"));
+// transaction.setRecoverF(rs.getString("recover_f"));
+// transaction.setRecoverT(rs.getString("recover_t"));
+// transaction.setRequestBy(rs.getString("request_by"));
+// transaction.setError(rs.getString("error"));
+// transaction.setAuthorizedDate(rs.getTimestamp("authorized_date"));
+// transaction.setAuthorizedBy(rs.getString("authorized_by"));
+// transaction.setChangeCurrCode(rs.getString("change_curr_code"));
+// transaction.setChgRate(rs.getDouble("chg_rate"));
+// transaction.setCashier(rs.getString("cashier"));
+// transaction.setCashiNo(rs.getString("cashi_no"));
+// transaction.setSalesmanCode2(rs.getString("salesman_code2"));
+// transaction.setClassId(rs.getString("class_id"));
+// transaction.setDisAmt(rs.getDouble("dis_amt"));
+// transaction.setAcStatus(rs.getString("ac_status"));
+// transaction.setReprint(rs.getString("reprint"));
+// transaction.setAlt1(rs.getString("alt_1"));
+// transaction.setAlt2(rs.getString("alt_2"));
+// transaction.setAlt3(rs.getString("alt_3"));
+// transaction.setAlt4(rs.getString("alt_4"));
+// transaction.setAlt5(rs.getString("alt_5"));
+// transaction.setAltD1(rs.getDate("alt_d1"));
+// transaction.setAltD2(rs.getDate("alt_d2"));
+// transaction.setAltD3(rs.getDate("alt_d3"));
+// transaction.setAltD4(rs.getDate("alt_d4"));
+// transaction.setAltD5(rs.getDate("alt_d5"));
+// transaction.setSalesmanCode3(rs.getString("salesman_code3"));
+// transaction.setContractNo(rs.getString("contract_no"));
+// transaction.setExpireDate(rs.getTimestamp("expire_date"));
+// transaction.setDepositNetAmt(rs.getDouble("deposit_netamt"));
+// transaction.setClientRestriction(rs.getString("client_restriction"));
+// transaction.setRefStatus(rs.getString("ref_status"));
+// transaction.setMbrDis(rs.getDouble("mbr_dis"));
+// transaction.setPmtDiscount(rs.getDouble("pmt_discount"));
+// transaction.setPmtAmount(rs.getDouble("pmt_amount"));
+// transaction.setPmtNo(rs.getString("pmt_no"));
+// transaction.setRefCode(rs.getString("ref_code"));
+// transaction.setDocApproved(rs.getString("doc_approved"));
+// transaction.setRefractionNo(rs.getString("refraction_no"));
+// transaction.setCcpTot(rs.getDouble("ccp_tot"));
+// transaction.setCcpRed(rs.getDouble("ccp_red"));
+// transaction.setCcpExpired(rs.getDouble("ccp_expired"));
+// transaction.setPrintedTimes(rs.getInt("printed_times"));
+// transaction.setPickupShop(rs.getString("pickup_shop"));
+// transaction.setDeliveryDate(rs.getDate("delivery_date"));
+// transaction.setDeliveryTime(rs.getString("delivery_time"));
+// transaction.setWsCode(rs.getString("ws_code"));
+// transaction.setClCode(rs.getString("cl_code"));
+// transaction.setClDesc(rs.getString("cl_desc"));
+// transaction.setRatio(rs.getString("ratio"));
+// transaction.setUserMember(rs.getString("user_member"));
+// transaction.setHflag(rs.getString("hflag"));
+// transaction.setIssueShop(rs.getString("issue_shop"));
+// transaction.setHoUpdBy(rs.getString("ho_upd_by"));
+// transaction.setHoUpdOn(rs.getTimestamp("ho_upd_on"));
+// transaction.setBonusExpired(rs.getDouble("bonus_expired"));
+// transaction.setBonusRed(rs.getDouble("bonus_red"));
+// transaction.setConfirmedOn(rs.getTimestamp("confirmed_on"));
+// transaction.setConfirmedBy(rs.getString("confirmed_by"));
+// transaction.setDocConfirmed(rs.getString("doc_confirmed"));
+// transaction.setBrNo(rs.getString("br_no"));
+// transaction.setChangeAmt2(rs.getDouble("change_amt2"));
+// transaction.setSalesDate(rs.getDate("sales_date"));
+// transaction.setMbrName(rs.getString("mbr_name"));
+// transaction.setCanEntryDis(rs.getString("can_entry_dis"));
+// transaction.setReactiveClient(rs.getString("reactive_client"));
+// transaction.setReactiveMbr(rs.getString("reactive_mbr"));
+// transaction.setShUpdBy(rs.getString("sh_upd_by"));
+// transaction.setShUpdOn(rs.getTimestamp("sh_upd_on"));
+// transaction.setTax1(rs.getDouble("tax1"));
+// transaction.setTax2(rs.getDouble("tax2"));
+// transaction.setTax3(rs.getDouble("tax3"));
+// transaction.setTax4(rs.getDouble("tax4"));
+// transaction.setTax5(rs.getDouble("tax5"));
+// transaction.setAltChar1(rs.getString("alt_char1"));
+// transaction.setAltChar2(rs.getString("alt_char2"));
+// transaction.setAltChar3(rs.getString("alt_char3"));
+// transaction.setAltChar4(rs.getString("alt_char4"));
+// transaction.setAltChar5(rs.getString("alt_char5"));
+// transaction.setAltNum1(rs.getDouble("alt_num1"));
+// transaction.setAltNum2(rs.getDouble("alt_num2"));
+// transaction.setAltNum3(rs.getDouble("alt_num3"));
+// transaction.setAltNum4(rs.getDouble("alt_num4"));
+// transaction.setAltNum5(rs.getDouble("alt_num5"));
+// transaction.setNewClient(rs.getString("new_client"));
+// transaction.setNewMbr(rs.getString("new_mbr"));
+// transaction.setPmtExtraDiscount(rs.getDouble("pmt_extra_discount"));
+// transaction.setPmtExtraAmount(rs.getDouble("pmt_extra_amount"));
+// transaction.setManualDiscount(rs.getDouble("manual_discount"));
+// transaction.setManualAmount(rs.getDouble("manual_amount"));
+// transaction.setUsermbrDiscount(rs.getDouble("usermbr_discount"));
+// transaction.setClientDiscount(rs.getDouble("client_discount"));
+// transaction.setHoldVoid(rs.getString("hold_void"));
+// transaction.setPayBasAmt(rs.getDouble("pay_bas_amt"));
+// transaction.setPayDesc(rs.getString("pay_desc"));
+// transaction.setPayCode(rs.getString("pay_code"));
+// transaction.setCardNo(rs.getString("card_no"));
+// transaction.setPayCurr(rs.getString("pay_curr"));
+// transaction.setPayCurrAmt(rs.getDouble("pay_curr_amt"));
+// transaction.setOnbehalfPaid(rs.getString("onbehalf_paid"));
+// transaction.setOnbehalfLoc(rs.getString("onbehalf_loc"));
+// transaction.setOldCardNo(rs.getString("old_card_no"));
+// transaction.setTrxYear(rs.getInt("TRX_YEAR"));
+// transaction.setTrxMonth(rs.getInt("TRX_MONTH"));
+
+ transactionDataList.add(transaction);
+ }
+
+
+ // 清理环境
+ rs.close();
+ stmt.close();
+ conn.close();
+ } catch (SQLException | ClassNotFoundException e) {
+ // 处理异常
+ e.printStackTrace();
+ }
+ System.out.println("查询执行完成!");
+ return transactionDataList;
+ }
+
+ // 示例:导出数据到CSV文件
+ private static void exportToCSV(ResultSet resultSet, String filePath) throws SQLException, IOException {
+ FileWriter writer = new FileWriter(filePath);
+
+ while (resultSet.next()) {
+ // 将结果写入CSV文件
+ // 这里需要根据实际情况将数据写入CSV文件
+ }
+
+ writer.close();
+ }
+}
+
diff --git a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java
index 79889833..f505796e 100644
--- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java
+++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java
@@ -1,10 +1,10 @@
package com.ai.da.common.config;
import com.ai.da.common.utils.SendEmailUtil;
-import com.ai.da.mapper.AccountMapper;
-import com.ai.da.mapper.TrialOrderMapper;
-import com.ai.da.mapper.entity.Account;
-import com.ai.da.mapper.entity.TrialOrder;
+import com.ai.da.mapper.primary.AccountMapper;
+import com.ai.da.mapper.primary.TrialOrderMapper;
+import com.ai.da.mapper.primary.entity.Account;
+import com.ai.da.mapper.primary.entity.TrialOrder;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
@@ -32,11 +32,6 @@ public class MyTaskScheduler {
@Resource
private TrialOrderMapper trialOrderMapper;
-// @PostConstruct
-// public void executeWeeklyHeavyStockReport() {
-// sendTrialOrderExcelToManagements();
-// }
-
// 定时任务,每十五天执行一次
// @Scheduled(cron = "0 0 0 ? * MON")
@Scheduled(cron = "0 0 0 */15 * ?")
diff --git a/src/main/java/com/ai/da/common/config/mybatis/plus/MybatisPlusConfig.java b/src/main/java/com/ai/da/common/config/MybatisPlusConfig.java
similarity index 56%
rename from src/main/java/com/ai/da/common/config/mybatis/plus/MybatisPlusConfig.java
rename to src/main/java/com/ai/da/common/config/MybatisPlusConfig.java
index a0bdb29a..b49f7a65 100644
--- a/src/main/java/com/ai/da/common/config/mybatis/plus/MybatisPlusConfig.java
+++ b/src/main/java/com/ai/da/common/config/MybatisPlusConfig.java
@@ -1,20 +1,26 @@
-package com.ai.da.common.config.mybatis.plus;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@MapperScan("com.ai.da.mapper")
-public class MybatisPlusConfig {
-
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
- return interceptor;
- }
-}
+package com.ai.da.common.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+
+ @Bean(name = "primaryMybatisPlusInterceptor")
+ public MybatisPlusInterceptor primaryMybatisPlusInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+
+ @Bean(name = "secondaryMybatisPlusInterceptor")
+ public MybatisPlusInterceptor secondaryMybatisPlusInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
diff --git a/src/main/java/com/ai/da/common/config/PayPalClient.java b/src/main/java/com/ai/da/common/config/PayPalClient.java
new file mode 100644
index 00000000..bcdef0a3
--- /dev/null
+++ b/src/main/java/com/ai/da/common/config/PayPalClient.java
@@ -0,0 +1,51 @@
+package com.ai.da.common.config;
+
+import com.paypal.core.PayPalEnvironment;
+import com.paypal.core.PayPalHttpClient;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+
+import java.util.Iterator;
+
+@Configuration
+@Slf4j
+@PropertySource("classpath:paypal-sandbox.properties")
+public class PayPalClient {
+
+ public PayPalHttpClient client(String mode, String clientId, String clientSecret) {
+ log.info("mode={}, clientId={}, clientSecret={}", mode, clientId, clientSecret);
+ PayPalEnvironment environment = mode.equals("live") ? new PayPalEnvironment.Live(clientId, clientSecret) : new PayPalEnvironment.Sandbox(clientId, clientSecret);
+ return new PayPalHttpClient(environment);
+ }
+
+ /**
+ * @param jo
+ * @param pre
+ * @return
+ */
+ /*public String prettyPrint(JSONObject jo, String pre) {
+ Iterator> keys = jo.keys();
+ StringBuilder pretty = new StringBuilder();
+ while (keys.hasNext()) {
+ String key = (String) keys.next();
+ pretty.append(String.format("%s%s: ", pre, StringUtils.capitalize(key)));
+ if (jo.get(key) instanceof JSONObject) {
+ pretty.append(prettyPrint(jo.getJSONObject(key), pre + "\t"));
+ } else if (jo.get(key) instanceof JSONArray) {
+ int sno = 1;
+ for (Object jsonObject : jo.getJSONArray(key)) {
+ pretty.append(String.format("\n%s\t%d:\n", pre, sno++));
+ pretty.append(prettyPrint((JSONObject) jsonObject, pre + "\t\t"));
+ }
+ } else {
+ pretty.append(String.format("%s\n", jo.getString(key)));
+ }
+ }
+ return pretty.toString();
+ }*/
+}
+
diff --git a/src/main/java/com/ai/da/common/config/PrimaryDataSourceConfig.java b/src/main/java/com/ai/da/common/config/PrimaryDataSourceConfig.java
new file mode 100644
index 00000000..44a4540b
--- /dev/null
+++ b/src/main/java/com/ai/da/common/config/PrimaryDataSourceConfig.java
@@ -0,0 +1,63 @@
+package com.ai.da.common.config;
+
+import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan(basePackages = "com.ai.da.mapper.primary", sqlSessionFactoryRef = "primarySqlSessionFactory")
+public class PrimaryDataSourceConfig {
+ @Autowired
+ private MybatisPlusProperties mybatisPlusProperties;
+
+ @Primary
+ @Bean(name = "primaryDataSource")
+ @ConfigurationProperties(prefix = "spring.datasource.primary")
+ public DataSource dataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Primary
+ @Bean(name = "primarySqlSessionFactory")
+ public SqlSessionFactory sqlSessionFactory(
+ @Qualifier("primaryDataSource") DataSource dataSource,
+ ApplicationContext applicationContext,
+ @Qualifier("primaryMybatisPlusInterceptor") MybatisPlusInterceptor mybatisPlusInterceptor) throws Exception {
+ MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
+ bean.setDataSource(dataSource);
+ bean.setMapperLocations(applicationContext.getResources("classpath:mapper/primary/*.xml"));
+ // 设置 MyBatis Plus 全局配置
+ GlobalConfig globalConfig = this.mybatisPlusProperties.getGlobalConfig();
+ if (globalConfig != null) {
+ bean.setGlobalConfig(globalConfig);
+ }
+ bean.setPlugins(mybatisPlusInterceptor);
+ return bean.getObject();
+ }
+
+ @Primary
+ @Bean(name = "primarySqlSessionTemplate")
+ public SqlSessionTemplate sqlSessionTemplate(
+ @Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
+ return new SqlSessionTemplate(sqlSessionFactory);
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ai/da/common/config/SecondaryDataSourceConfig.java b/src/main/java/com/ai/da/common/config/SecondaryDataSourceConfig.java
new file mode 100644
index 00000000..eb6f3db5
--- /dev/null
+++ b/src/main/java/com/ai/da/common/config/SecondaryDataSourceConfig.java
@@ -0,0 +1,49 @@
+package com.ai.da.common.config;
+
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan(basePackages = "com.ai.da.mapper.secondary", sqlSessionFactoryRef = "secondarySqlSessionFactory")
+public class SecondaryDataSourceConfig {
+
+ @Bean(name = "secondaryDataSource")
+ @ConfigurationProperties(prefix = "spring.datasource.secondary")
+ public DataSource dataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean(name = "secondarySqlSessionFactory")
+ public SqlSessionFactory sqlSessionFactory(
+ @Qualifier("secondaryDataSource") DataSource dataSource,
+ ApplicationContext applicationContext,
+ @Qualifier("secondaryMybatisPlusInterceptor") MybatisPlusInterceptor mybatisPlusInterceptor) throws Exception {
+ MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
+// SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+ bean.setDataSource(dataSource);
+ bean.setMapperLocations(applicationContext.getResources("classpath:mapper/secondary/*.xml"));
+ bean.setPlugins(mybatisPlusInterceptor);
+ return bean.getObject();
+ }
+
+ @Bean(name = "secondarySqlSessionTemplate")
+ public SqlSessionTemplate sqlSessionTemplate(
+ @Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
+ return new SqlSessionTemplate(sqlSessionFactory);
+ }
+}
+
+
+
diff --git a/src/main/java/com/ai/da/common/config/mybatis/plus/CommonMapper.java b/src/main/java/com/ai/da/common/config/mybatis/plus/CommonMapper.java
index f39599e3..aed7e897 100644
--- a/src/main/java/com/ai/da/common/config/mybatis/plus/CommonMapper.java
+++ b/src/main/java/com/ai/da/common/config/mybatis/plus/CommonMapper.java
@@ -1,12 +1,12 @@
-package com.ai.da.common.config.mybatis.plus;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import org.apache.ibatis.annotations.Param;
-
-public interface CommonMapper extends BaseMapper {
-
- IPage voPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);
-}
+package com.ai.da.common.config.mybatis.plus;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+
+public interface CommonMapper extends BaseMapper {
+
+ IPage voPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);
+}
diff --git a/src/main/java/com/ai/da/common/config/mybatis/plus/CommonServiceImpl.java b/src/main/java/com/ai/da/common/config/mybatis/plus/CommonServiceImpl.java
index 795bd998..fc647498 100644
--- a/src/main/java/com/ai/da/common/config/mybatis/plus/CommonServiceImpl.java
+++ b/src/main/java/com/ai/da/common/config/mybatis/plus/CommonServiceImpl.java
@@ -1,48 +1,48 @@
-package com.ai.da.common.config.mybatis.plus;
-
-import cn.hutool.core.collection.CollUtil;
-import com.ai.da.common.response.PageResponse;
-import com.ai.da.common.response.Response;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-import java.util.List;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-
-public class CommonServiceImpl, T, E> extends ServiceImpl {
-
- public PageResponse voPage(QueryCriteria criteria) {
- IPage tPage = baseMapper.voPage(new Page<>(criteria.getPage(), criteria.getLimit()), criteria.buildWrapper());
- if (criteria.getMapper() != null && tPage != null && CollUtil.isNotEmpty(tPage.getRecords())) {
- List convert = convert(tPage, criteria.getMapper(), criteria);
- Response> response = Response.success(convert);
- PageResponse pageResponse = new PageResponse<>(response, tPage.getCurrent(), tPage.getSize(), tPage.getTotal(), tPage.getPages());
- if (criteria.getPeekAllAfter() != null) {
- Consumer> peekAllAfter = criteria.getPeekAllAfter();
- peekAllAfter.accept(pageResponse.getData());
- }
- return pageResponse;
- }
- PageResponse pageResponse = new PageResponse<>(null, criteria.getPage(), criteria.getLimit(), 0, 0);
- if (criteria.getPeekAllAfter() != null) {
- Consumer> peekAllAfter = criteria.getPeekAllAfter();
- peekAllAfter.accept(pageResponse.getData());
- }
- return pageResponse;
- }
-
- List convert(IPage page, Function super T, E> mapper, QueryCriteria criteria) {
- if (criteria.getPeekBefore() != null && criteria.getPeekAfter() != null) {
- return page.getRecords().stream().peek(criteria.getPeekBefore()).map(mapper).peek(criteria.getPeekAfter()).collect(Collectors.toList());
- } else if (criteria.getPeekBefore() != null && criteria.getPeekAfter() == null) {
- return page.getRecords().stream().peek(criteria.getPeekBefore()).map(mapper).collect(Collectors.toList());
- } else if (criteria.getPeekBefore() == null && criteria.getPeekAfter() != null) {
- return page.getRecords().stream().map(mapper).peek(criteria.getPeekAfter()).collect(Collectors.toList());
- }
- return page.getRecords().stream().map(mapper).collect(Collectors.toList());
- }
-}
+package com.ai.da.common.config.mybatis.plus;
+
+import cn.hutool.core.collection.CollUtil;
+import com.ai.da.common.response.PageResponse;
+import com.ai.da.common.response.Response;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+
+public class CommonServiceImpl, T, E> extends ServiceImpl {
+
+ public PageResponse voPage(QueryCriteria criteria) {
+ IPage tPage = baseMapper.voPage(new Page<>(criteria.getPage(), criteria.getLimit()), criteria.buildWrapper());
+ if (criteria.getMapper() != null && tPage != null && CollUtil.isNotEmpty(tPage.getRecords())) {
+ List convert = convert(tPage, criteria.getMapper(), criteria);
+ Response> response = Response.success(convert);
+ PageResponse pageResponse = new PageResponse<>(response, tPage.getCurrent(), tPage.getSize(), tPage.getTotal(), tPage.getPages());
+ if (criteria.getPeekAllAfter() != null) {
+ Consumer> peekAllAfter = criteria.getPeekAllAfter();
+ peekAllAfter.accept(pageResponse.getData());
+ }
+ return pageResponse;
+ }
+ PageResponse pageResponse = new PageResponse<>(null, criteria.getPage(), criteria.getLimit(), 0, 0);
+ if (criteria.getPeekAllAfter() != null) {
+ Consumer> peekAllAfter = criteria.getPeekAllAfter();
+ peekAllAfter.accept(pageResponse.getData());
+ }
+ return pageResponse;
+ }
+
+ List convert(IPage page, Function super T, E> mapper, QueryCriteria criteria) {
+ if (criteria.getPeekBefore() != null && criteria.getPeekAfter() != null) {
+ return page.getRecords().stream().peek(criteria.getPeekBefore()).map(mapper).peek(criteria.getPeekAfter()).collect(Collectors.toList());
+ } else if (criteria.getPeekBefore() != null && criteria.getPeekAfter() == null) {
+ return page.getRecords().stream().peek(criteria.getPeekBefore()).map(mapper).collect(Collectors.toList());
+ } else if (criteria.getPeekBefore() == null && criteria.getPeekAfter() != null) {
+ return page.getRecords().stream().map(mapper).peek(criteria.getPeekAfter()).collect(Collectors.toList());
+ }
+ return page.getRecords().stream().map(mapper).collect(Collectors.toList());
+ }
+}
diff --git a/src/main/java/com/ai/da/common/config/mybatis/plus/CustomerSqlInjector.java b/src/main/java/com/ai/da/common/config/mybatis/plus/CustomerSqlInjector.java
index cf81a83a..047f2f00 100644
--- a/src/main/java/com/ai/da/common/config/mybatis/plus/CustomerSqlInjector.java
+++ b/src/main/java/com/ai/da/common/config/mybatis/plus/CustomerSqlInjector.java
@@ -1,19 +1,19 @@
-package com.ai.da.common.config.mybatis.plus;
-
-import com.baomidou.mybatisplus.core.injector.AbstractMethod;
-import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
-import com.baomidou.mybatisplus.core.metadata.TableInfo;
-import org.springframework.context.annotation.Configuration;
-
-import java.util.List;
-
-@Configuration
-public class CustomerSqlInjector extends DefaultSqlInjector {
-
- @Override
- public List getMethodList(Class> mapperClass, TableInfo tableInfo) {
- List methodList = super.getMethodList(mapperClass, tableInfo);
- methodList.add(new SelectVoPage());
- return methodList;
- }
-}
+package com.ai.da.common.config.mybatis.plus;
+
+import com.baomidou.mybatisplus.core.injector.AbstractMethod;
+import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+@Configuration
+public class CustomerSqlInjector extends DefaultSqlInjector {
+
+ @Override
+ public List getMethodList(Class> mapperClass, TableInfo tableInfo) {
+ List methodList = super.getMethodList(mapperClass, tableInfo);
+ methodList.add(new SelectVoPage());
+ return methodList;
+ }
+}
diff --git a/src/main/java/com/ai/da/common/config/mybatis/plus/QueryCriteria.java b/src/main/java/com/ai/da/common/config/mybatis/plus/QueryCriteria.java
index 9942af90..13b674fa 100644
--- a/src/main/java/com/ai/da/common/config/mybatis/plus/QueryCriteria.java
+++ b/src/main/java/com/ai/da/common/config/mybatis/plus/QueryCriteria.java
@@ -1,85 +1,85 @@
-package com.ai.da.common.config.mybatis.plus;
-
-import cn.hutool.core.util.StrUtil;
-import com.ai.da.common.annotation.Condition;
-import com.ai.da.common.annotation.Order;
-import com.ai.da.common.enums.ConditionType;
-import com.ai.da.common.utils.ConvertUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import java.lang.reflect.Field;
-import java.util.Collection;
-import java.util.List;
-import java.util.function.Consumer;
-import java.util.function.Function;
-
-/**
- * @author: dangweijian
- * @description:
- * @create: 2020-09-14 15:47
- **/
-@Data
-@Slf4j
-public abstract class QueryCriteria {
-
- private long page = 1;
- private long limit = 10;
- private Function mapper;
- private Consumer> appendWrapper;
- private Consumer peekBefore;
- private Consumer peekAfter;
- private Consumer> peekAllAfter;
-
- public QueryCriteria(Function mapper) {
- this.mapper = mapper;
- }
-
- public QueryWrapper buildWrapper() {
- QueryWrapper wrapper = new QueryWrapper<>();
- Field[] fields = this.getClass().getDeclaredFields();
- for (Field field : fields) {
- Condition condition = field.getAnnotation(Condition.class);
- if (condition != null) {
- field.setAccessible(true);
- Object value = null;
- try {
- value = field.get(this);
- } catch (IllegalAccessException e) {
- log.warn("reflection anomaly!");
- }
- if (!StrUtil.isEmptyIfStr(value)) {
- switch (condition.type()) {
- case EQ:
- wrapper.eq(ConvertUtil.humpToLine2(field.getName()), value);
- break;
- case LIKE:
- wrapper.like(ConvertUtil.humpToLine2(field.getName()), value);
- case BETWEEN:
- if (value instanceof Collection && ((List) value).size() >= 2) {
- wrapper.between(ConvertUtil.humpToLine2(field.getName()), ((List) value).get(0), ((List) value).get(1));
- }
- default:
- }
- } else if (condition.isNull()) {
- wrapper.isNull(ConvertUtil.humpToLine2(field.getName()));
- }
- }
- Order order = field.getAnnotation(Order.class);
- if (order != null) {
- if (!StrUtil.isEmptyIfStr(order.order())) {
- switch (order.order()) {
- case DESC:
- wrapper.orderByDesc(ConvertUtil.humpToLine2(field.getName()));
- break;
- case ASC:
- wrapper.orderByAsc(ConvertUtil.humpToLine2(field.getName()));
- }
- }
- }
- }
- wrapper.func(this.getAppendWrapper() != null, this.getAppendWrapper());
- return wrapper;
- }
-}
+package com.ai.da.common.config.mybatis.plus;
+
+import cn.hutool.core.util.StrUtil;
+import com.ai.da.common.annotation.Condition;
+import com.ai.da.common.annotation.Order;
+import com.ai.da.common.enums.ConditionType;
+import com.ai.da.common.utils.ConvertUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+
+import java.lang.reflect.Field;
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+/**
+ * @author: dangweijian
+ * @description:
+ * @create: 2020-09-14 15:47
+ **/
+@Data
+@Slf4j
+public abstract class QueryCriteria {
+
+ private long page = 1;
+ private long limit = 10;
+ private Function mapper;
+ private Consumer> appendWrapper;
+ private Consumer peekBefore;
+ private Consumer peekAfter;
+ private Consumer> peekAllAfter;
+
+ public QueryCriteria(Function mapper) {
+ this.mapper = mapper;
+ }
+
+ public QueryWrapper buildWrapper() {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ Field[] fields = this.getClass().getDeclaredFields();
+ for (Field field : fields) {
+ Condition condition = field.getAnnotation(Condition.class);
+ if (condition != null) {
+ field.setAccessible(true);
+ Object value = null;
+ try {
+ value = field.get(this);
+ } catch (IllegalAccessException e) {
+ log.warn("reflection anomaly!");
+ }
+ if (!StrUtil.isEmptyIfStr(value)) {
+ switch (condition.type()) {
+ case EQ:
+ wrapper.eq(ConvertUtil.humpToLine2(field.getName()), value);
+ break;
+ case LIKE:
+ wrapper.like(ConvertUtil.humpToLine2(field.getName()), value);
+ case BETWEEN:
+ if (value instanceof Collection && ((List) value).size() >= 2) {
+ wrapper.between(ConvertUtil.humpToLine2(field.getName()), ((List) value).get(0), ((List) value).get(1));
+ }
+ default:
+ }
+ } else if (condition.isNull()) {
+ wrapper.isNull(ConvertUtil.humpToLine2(field.getName()));
+ }
+ }
+ Order order = field.getAnnotation(Order.class);
+ if (order != null) {
+ if (!StrUtil.isEmptyIfStr(order.order())) {
+ switch (order.order()) {
+ case DESC:
+ wrapper.orderByDesc(ConvertUtil.humpToLine2(field.getName()));
+ break;
+ case ASC:
+ wrapper.orderByAsc(ConvertUtil.humpToLine2(field.getName()));
+ }
+ }
+ }
+ }
+ wrapper.func(this.getAppendWrapper() != null, this.getAppendWrapper());
+ return wrapper;
+ }
+}
diff --git a/src/main/java/com/ai/da/common/config/mybatis/plus/SelectVoPage.java b/src/main/java/com/ai/da/common/config/mybatis/plus/SelectVoPage.java
index 968b0bc3..57449caa 100644
--- a/src/main/java/com/ai/da/common/config/mybatis/plus/SelectVoPage.java
+++ b/src/main/java/com/ai/da/common/config/mybatis/plus/SelectVoPage.java
@@ -1,22 +1,22 @@
-package com.ai.da.common.config.mybatis.plus;
-
-import com.baomidou.mybatisplus.core.enums.SqlMethod;
-import com.baomidou.mybatisplus.core.injector.AbstractMethod;
-import com.baomidou.mybatisplus.core.metadata.TableInfo;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.mapping.SqlSource;
-
-public class SelectVoPage extends AbstractMethod {
-
- private static final String MAPPER_METHOD = "voPage";
-
- public SelectVoPage() {
- super(MAPPER_METHOD);
- }
-
- public MappedStatement injectMappedStatement(Class> mapperClass, Class> modelClass, TableInfo tableInfo) {
- String sql = String.format(SqlMethod.SELECT_PAGE.getSql(), this.sqlFirst(), this.sqlSelectColumns(tableInfo, true), tableInfo.getTableName(), this.sqlWhereEntityWrapper(true, tableInfo), this.sqlOrderBy(tableInfo), this.sqlComment());
- SqlSource sqlSource = this.languageDriver.createSqlSource(this.configuration, sql, modelClass);
- return this.addSelectMappedStatementForTable(mapperClass, MAPPER_METHOD, sqlSource, tableInfo);
- }
-}
+package com.ai.da.common.config.mybatis.plus;
+
+import com.baomidou.mybatisplus.core.enums.SqlMethod;
+import com.baomidou.mybatisplus.core.injector.AbstractMethod;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.SqlSource;
+
+public class SelectVoPage extends AbstractMethod {
+
+ private static final String MAPPER_METHOD = "voPage";
+
+ public SelectVoPage() {
+ super(MAPPER_METHOD);
+ }
+
+ public MappedStatement injectMappedStatement(Class> mapperClass, Class> modelClass, TableInfo tableInfo) {
+ String sql = String.format(SqlMethod.SELECT_PAGE.getSql(), this.sqlFirst(), this.sqlSelectColumns(tableInfo, true), tableInfo.getTableName(), this.sqlWhereEntityWrapper(true, tableInfo), this.sqlOrderBy(tableInfo), this.sqlComment());
+ SqlSource sqlSource = this.languageDriver.createSqlSource(this.configuration, sql, modelClass);
+ return this.addSelectMappedStatementForTable(mapperClass, MAPPER_METHOD, sqlSource, tableInfo);
+ }
+}
diff --git a/src/main/java/com/ai/da/common/constant/CommonConstant.java b/src/main/java/com/ai/da/common/constant/CommonConstant.java
new file mode 100644
index 00000000..ac139e98
--- /dev/null
+++ b/src/main/java/com/ai/da/common/constant/CommonConstant.java
@@ -0,0 +1,14 @@
+package com.ai.da.common.constant;
+
+public class CommonConstant {
+ // 单位 秒 10分钟过期
+// public static final Long TASK_EXPIRE_TIME = 24 * 60 * 60L;
+ public static final Long TASK_EXPIRE_TIME = 10 * 60L;
+ // 单位 秒 两天过期
+ public static final Long CREDITS_EXPIRE_TIME = 2 * 24 * 60 * 60L;
+ // 单位 分钟
+ public static final Integer MINIO_IMAGE_EXPIRE_TIME = 24 * 60;
+ // 单位 秒 一天过期 in redis
+ public static final Long GENERATE_RESULT_EXPIRE_TIME = 24 * 60 * 60L;
+
+}
diff --git a/src/main/java/com/ai/da/common/constant/PayPalCheckoutConstant.java b/src/main/java/com/ai/da/common/constant/PayPalCheckoutConstant.java
new file mode 100644
index 00000000..21b3694b
--- /dev/null
+++ b/src/main/java/com/ai/da/common/constant/PayPalCheckoutConstant.java
@@ -0,0 +1,173 @@
+package com.ai.da.common.constant;
+
+public class PayPalCheckoutConstant {
+
+ public static final String CAPTURE = "CAPTURE";
+ /**
+ * 该标签将覆盖PayPal网站上PayPal帐户中的公司名称
+ */
+ public static final String BRANDNAME = "AIDA";
+ /**
+ * LOGIN。当客户单击PayPal Checkout时,客户将被重定向到页面以登录PayPal并批准付款。
+ * BILLING。当客户单击PayPal Checkout时,客户将被重定向到一个页面,以输入信用卡或借记卡以及完成购买所需的其他相关账单信息
+ * NO_PREFERENCE。当客户单击“ PayPal Checkout”时,将根据其先前的交互方式将其重定向到页面以登录PayPal并批准付款,或重定向至页面以输入信用卡或借记卡以及完成购买所需的其他相关账单信息使用PayPal。
+ * 默认值:NO_PREFERENCE
+ */
+ public static final String LANDINGPAGE = "NO_PREFERENCE";
+ /**
+ * CONTINUE。将客户重定向到PayPal付款页面后,将出现“ 继续”按钮。当结帐流程启动时最终金额未知时,请使用此选项,并且您想将客户重定向到商家页面而不处理付款。
+ * PAY_NOW。将客户重定向到PayPal付款页面后,出现“ 立即付款”按钮。当启动结帐时知道最终金额并且您要在客户单击“ 立即付款”时立即处理付款时,请使用此选项。
+ */
+ public static final String USERACTION = "PAY_NOW";
+ /**
+ * GET_FROM_FILE。使用贝宝网站上客户提供的送货地址。
+ * NO_SHIPPING。从PayPal网站编辑送货地址。推荐用于数字商品
+ * SET_PROVIDED_ADDRESS。使用商家提供的地址。客户无法在PayPal网站上更改此地址
+ */
+// public static final String SHIPPINGPREFERENCE = "SET_PROVIDED_ADDRESS";
+ public static final String SHIPPINGPREFERENCE = "NO_SHIPPING";
+ /**
+ * 交易异常
+ */
+ public static final String FAILURE = "failure";
+ /**
+ * 交易成功
+ */
+ public static final String SUCCESS = "success";
+
+ /**
+ * ipn回调。支付成功
+ */
+ public static final String PAYMENT_STATUS_COMPLETED = "Completed";
+ /**
+ * ipn回调。退款成功
+ */
+ public static final String PAYMENT_STATUS_REFUNDED = "Refunded";
+ /**
+ * ipn回调。待定
+ */
+ public static final String PAYMENT_STATUS_PENDING = "Pending";
+
+ /**
+ * ipn回调,付款因退款或其他类型的冲销而被冲销。资金已从您的帐户余额中删除,并退还给买方
+ */
+ public static final String PAYMENT_STATUS_REVERSED = "Reversed";
+
+ /**
+ * ipn回调, 撤销已被取消。例如,您赢得了与客户的纠纷,并且撤回的交易资金已退还给您
+ */
+ public static final String PAYMENT_STATUS_CANCELED_REVERSAL = "Canceled_Reversal";
+
+ /**
+ * ipn回调,付款被拒绝
+ */
+ public static final String PAYMENT_STATUS_DENIED = "Denied";
+
+ /**
+ * ipn回调, 此授权已过期,无法捕获
+ */
+ public static final String PAYMENT_STATUS_EXPIRED = "Expired";
+
+ /**
+ * ipn回调, 德国的ELV付款是通过Express Checkout进行的
+ */
+ public static final String PAYMENT_STATUS_CREATED = "Created";
+
+ /**
+ * ipn回调, 付款失败。仅当付款是通过您客户的银行帐户进行的。
+ */
+ public static final String PAYMENT_STATUS_FAILED = "Failed";
+
+ /**
+ * ipn回调,付款已被接受
+ */
+ public static final String PAYMENT_STATUS_PROCESSED = "Processed";
+
+ /**
+ * ipn回调,此授权已失效
+ */
+ public static final String PAYMENT_STATUS_VOIDED = "Voided";
+
+ //订单状态
+ /**
+ * 1、支付完成;捕获的付款的资金已记入收款人的PayPal帐户
+ * 2、退款完成;该交易的资金已记入客户的帐户
+ */
+ public static final String STATE_COMPLETED = "COMPLETED";
+ /**
+ * 部分退款;少于所捕获付款金额的金额已部分退还给付款人。
+ */
+ public static final String STATE_PARTIALLY_REFUNDED = "PARTIALLY_REFUNDED";
+
+
+ /**
+ * 1、支付待定;捕获的付款资金尚未记入收款人的PayPal帐户。有关更多信息请参见status.details。
+ * 2、退款待定;有关更多信息,请参见status_details.reason。
+ */
+ /**
+ * 支付待定:
+ * capture_status_details
+ * reason 枚举
+ * 捕获的付款状态为PENDING或DENIED的原因。可能的值为:
+ * BUYER_COMPLAINT。付款人与贝宝(PayPal)对此捕获的付款提出了争议。
+ * CHARGEBACK。响应于付款人与用于支付此已捕获付款的金融工具的发行人对此已捕获的付款提出异议,已收回的资金被撤回。
+ * ECHECK。由尚未结清的电子支票支付的付款人。
+ * INTERNATIONAL_WITHDRAWAL。访问您的在线帐户。在您的“帐户概览”中,接受并拒绝此笔付款。
+ * OTHER。无法提供其他特定原因。有关此笔付款的更多信息,请在线访问您的帐户或联系PayPal。
+ * PENDING_REVIEW。捕获的付款正在等待人工审核。
+ *(手动收取)RECEIVING_PREFERENCE_MANDATES_MANUAL_ACTION。收款人尚未为其帐户设置适当的接收首选项。有关如何接受或拒绝此付款的更多信息,请在线访问您的帐户。通常在某些情况下提供此原因,例如,当所捕获付款的货币与收款人的主要持有货币不同时。
+ * REFUNDED。收回的资金已退还。
+ * TRANSACTION_APPROVED_AWAITING_FUNDING。付款人必须将这笔付款的资金汇出。通常,此代码适用于手动EFT。
+ * UNILATERAL。收款人没有PayPal帐户。
+ * VERIFICATION_REQUIRED。收款人的PayPal帐户未通过验证。
+ */
+ /**
+ * 退款待定
+ * 退款具有“PENDING”或“FAILED”状态的原因。 可能的值为:
+ * ECHECK。客户的帐户通过尚未结清的eCheck进行注资。
+ */
+ public static final String STATE_PENDING = "PENDING";
+ /**
+ * 退款;大于或等于此捕获的付款金额的金额已退还给付款人
+ */
+ public static final String STATE_REFUNDED = "REFUNDED";
+ /**
+ * 支付拒绝
+ */
+ public static final String STATE_DENIED = "DENIED";
+ /**
+ * 退款失败
+ */
+ public static final String STATE_FAILED = "FAILED";
+
+ /**
+ * 争议状态
+ */
+ public static final String BUYER_COMPLAINT = "BUYER_COMPLAINT";
+
+ /**
+ * 沙箱环境请求网关地址
+ */
+ public static final String SANDBOX = "https://api.sandbox.paypal.com";
+ /**
+ * 生产环境请求网关地址
+ */
+ public static final String LIVE = "https://api.paypal.com";
+ /**
+ * 添加物流信息请求路径
+ */
+ public static final String ADD_TRACK_URL = "/v1/shipping/trackers-batch";
+
+ /**
+ * 修改物流信息请求路径
+ */
+ public static final String UPDATE_TRACK_URL = "/v1/shipping/trackers/";
+
+ public final static String CMD_NOTIFY_VALIDATE = "_notify-validate";
+
+ public final static String PAYPAL_TOKEN_KEY = "PayPalAccessToken";
+
+
+}
+
+
diff --git a/src/main/java/com/ai/da/common/enums/AliPayTradeStateEnum.java b/src/main/java/com/ai/da/common/enums/AliPayTradeStateEnum.java
new file mode 100644
index 00000000..573ec7dd
--- /dev/null
+++ b/src/main/java/com/ai/da/common/enums/AliPayTradeStateEnum.java
@@ -0,0 +1,39 @@
+package com.ai.da.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum AliPayTradeStateEnum {
+
+ /**
+ * 支付成功
+ */
+ SUCCESS("TRADE_SUCCESS"),
+
+ /**
+ * 未支付
+ */
+ NOTPAY("WAIT_BUYER_PAY"),
+
+ /**
+ * 已关闭
+ */
+ CLOSED("TRADE_CLOSED"),
+
+ /**
+ * 退款成功
+ */
+ REFUND_SUCCESS("REFUND_SUCCESS"),
+
+ /**
+ * 退款失败
+ */
+ REFUND_ERROR("REFUND_ERROR");
+
+ /**
+ * 类型
+ */
+ private final String type;
+}
diff --git a/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java
new file mode 100644
index 00000000..8a63d880
--- /dev/null
+++ b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java
@@ -0,0 +1,31 @@
+package com.ai.da.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CreditsEventsEnum {
+
+ PRICE("price","6"),
+
+ BUY_CREDITS("Buy Credits","600"),
+
+ INIT("init", "500"),
+
+ DAILY_CHECKIN("Daily Check-In", "20"),
+
+ SOCIAL_MEDIA_SHARING("Social Media Sharing","20"),
+
+// SUPER_RESOLUTION("Super Resolution","300"),
+ SUPER_RESOLUTION("Super Resolution","5"),
+
+ OTHER("Other","10");
+
+ private String name;
+
+ /**
+ * 对应事件需要消耗or获得的积分
+ */
+ private String value;
+}
diff --git a/src/main/java/com/ai/da/common/enums/CurrencyCodesEnum.java b/src/main/java/com/ai/da/common/enums/CurrencyCodesEnum.java
new file mode 100644
index 00000000..1f0225c8
--- /dev/null
+++ b/src/main/java/com/ai/da/common/enums/CurrencyCodesEnum.java
@@ -0,0 +1,40 @@
+package com.ai.da.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+public enum CurrencyCodesEnum {
+
+ AUSTRALIAN_DOLLAR("AUD"),
+ BRAZILIAN_REAL("BRL"),
+ CANADIAN_DOLLAR("CAD"),
+ CHINESE_RENMENBI("CNY"),
+ CZECH_KORUNA("CZK"),
+ DANISH_KRONE("DKK"),
+ EURO("EUR"),
+ HONG_KONG_DOLLAR("HKD"),
+ HUNGARIAN_FORINT("HUF"),
+ ISRAELI_NEW_SHEKEL("ILS"),
+ JAPANESE_YEN("JPY"),
+ MALAYSIAN_RINGGIT("MYR"),
+ MEXICAN_PESO("MXN"),
+ NEW_TAIWAN_DOLLAR("TWD"),
+ NEW_ZEALAND_DOLLAR("NZD"),
+ NORWEGIAN_KRONE("NOK"),
+ PHILIPPINE_PESO("PHP"),
+ POLISH_ZLOTY("PLN"),
+ POUND_STERLING("GBP"),
+ RUSSIAN_RUBLE("RUB"),
+ SINGAPORE_DOLLAR("SGD"),
+ SWEDISH_KRONA("SEK"),
+ SWISS_FRANC("CHF"),
+ THAI_BAHT("THB"),
+ UNITED_STATES_DOLLAR("USD");
+
+ private String code;
+
+ CurrencyCodesEnum(String code) {
+ this.code = code;
+ }
+}
diff --git a/src/main/java/com/ai/da/common/enums/CurrentDesignPictureTypeEnum.java b/src/main/java/com/ai/da/common/enums/CurrentDesignPictureTypeEnum.java
index d254997d..259d93ce 100644
--- a/src/main/java/com/ai/da/common/enums/CurrentDesignPictureTypeEnum.java
+++ b/src/main/java/com/ai/da/common/enums/CurrentDesignPictureTypeEnum.java
@@ -20,15 +20,15 @@ public enum CurrentDesignPictureTypeEnum {
/**
* USER_LIBRARY
*/
- USER_LIBRARY(2, "userLibrary"),
+// USER_LIBRARY(2, "userLibrary"),
/**
* SYS_FILE
*/
- SYS_FILE(3, "sysFile"),
+ SYS_FILE(2, "sysFile"),
/**
* noPIN
*/
- NO_PIN(4, "noPIN");
+ NO_PIN(3, "noPIN");
private Integer code;
private String desc;
diff --git a/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java b/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java
index 44409731..f3cc14e9 100644
--- a/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java
+++ b/src/main/java/com/ai/da/common/enums/GenerateModeEnum.java
@@ -12,26 +12,33 @@ public enum GenerateModeEnum {
/**
* 通过文本生成
*/
- TEXT(1, "text"),
+ TEXT(1, "text","txt2img"),
/**
* 通过图片生成
*/
- IMAGE(2, "image"),
+ IMAGE(2, "image", "img2img"),
/**
* 通过文本和图片生成
*/
- TEXT_IMAGE(2, "text-image");
+ TEXT_IMAGE(2, "text-image","img2img");
private Integer code;
private String value;
+ private String type;
GenerateModeEnum(int code, String value) {
this.code = code;
this.value = value;
}
+ GenerateModeEnum(Integer code, String value, String type) {
+ this.code = code;
+ this.value = value;
+ this.type = type;
+ }
+
public static List getGenerateModeList(){
return Stream.of(TEXT,IMAGE,TEXT_IMAGE).map(GenerateModeEnum::getValue).collect(Collectors.toList());
}
diff --git a/src/main/java/com/ai/da/common/enums/OrderStatusEnum.java b/src/main/java/com/ai/da/common/enums/OrderStatusEnum.java
new file mode 100644
index 00000000..aac9719d
--- /dev/null
+++ b/src/main/java/com/ai/da/common/enums/OrderStatusEnum.java
@@ -0,0 +1,54 @@
+package com.ai.da.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum OrderStatusEnum {
+ /**
+ * 未支付
+ */
+ NOT_PAY("未支付"),
+
+
+ /**
+ * 支付成功
+ */
+ SUCCESS("支付成功"),
+
+ /**
+ * 已关闭
+ */
+ TIMEOUT_CLOSED("超时已关闭"),
+
+ /**
+ * 已取消
+ */
+ CANCEL("用户已取消"),
+
+ /**
+ * 退款中
+ */
+ REFUND_PROCESSING("退款中"),
+
+ /**
+ * 已退款
+ */
+ REFUND_SUCCESS("已退款"),
+
+ /**
+ * 退款异常
+ */
+ REFUND_ABNORMAL("退款异常"),
+
+ /**
+ * paypal订单状态为 APPROVED
+ */
+ ORDER_PROCESSING("订单处理中");
+
+ /**
+ * 类型
+ */
+ private final String type;
+}
diff --git a/src/main/java/com/ai/da/common/enums/PayPalOrderStatusEnum.java b/src/main/java/com/ai/da/common/enums/PayPalOrderStatusEnum.java
new file mode 100644
index 00000000..f9735c05
--- /dev/null
+++ b/src/main/java/com/ai/da/common/enums/PayPalOrderStatusEnum.java
@@ -0,0 +1,30 @@
+package com.ai.da.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum PayPalOrderStatusEnum {
+
+ // The order was created with the specified context.
+ // 订单已创建并具有指定的上下文。
+ CREATED("CREATED"),
+ // The order was saved and persisted. The order status continues to be in progress until a capture is made with final_capture = true for all purchase units within the order.
+ // 订单已保存并持久化。订单状态仍处于进行中,直到对订单中的所有购买单元进行了 final_capture = true 的捕获为止
+ SAVED("SAVED"),
+ // The customer approved the payment through the PayPal wallet or another form of guest or unbranded payment. For example, a card, bank account, or so on.
+ // 客户通过PayPal钱包或其他形式的游客或非品牌支付批准了付款。例如,信用卡、银行账户等。
+ APPROVED("APPROVED"),
+ // All purchase units in the order are voided.
+ // 订单中的所有购买单元都已作废。
+ VOIDED("VOIDED"),
+ // The payment was authorized or the authorized payment was captured for the order.
+ // 订单的支付已被授权或已捕获授权的支付。
+ COMPLETED("COMPLETED"),
+ // The order requires an action from the payer (e.g. 3DS authentication). Redirect the payer to the "rel":"payer-action" HATEOAS link returned as part of the response prior to authorizing or capturing the order.
+ // 订单需要支付者执行某项操作(例如3DS身份验证)。在授权或捕获订单之前,请将支付者重定向到响应中返回的"rel":"payer-action" HATEOAS链接。
+ PAYER_ACTION_REQUIRED("PAYER_ACTION_REQUIRED");
+
+ private final String status;
+}
diff --git a/src/main/java/com/ai/da/common/enums/PayTypeEnum.java b/src/main/java/com/ai/da/common/enums/PayTypeEnum.java
new file mode 100644
index 00000000..70067578
--- /dev/null
+++ b/src/main/java/com/ai/da/common/enums/PayTypeEnum.java
@@ -0,0 +1,28 @@
+package com.ai.da.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum PayTypeEnum {
+ /**
+ * 微信
+ */
+ WXPAY("微信"),
+
+ /**
+ * 支付宝
+ */
+ ALIPAY("支付宝"),
+
+ /**
+ * PayPal
+ */
+ PAYPAL("PayPal");
+
+ /**
+ * 类型
+ */
+ private final String type;
+}
diff --git a/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java b/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java
index ad01d2ba..9e404107 100644
--- a/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java
+++ b/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java
@@ -49,8 +49,7 @@ public class AuthenticationFilter extends OncePerRequestFilter {
"/api/third/party/addNoLoginRequiredNew","/api/third/party/deleteNoLoginRequiredNew",
"/api/third/party/existNoLoginRequired","/api/third/party/getRedirectUrl",
// "/api/python/chatStream",
- "/api/python/flush",
- "/api/account/healthy"
+ "/api/python/flush","/api/account/healthy","/api/ali-pay/trade/notify","/api/paypal/ipn/back"
);
@Override
diff --git a/src/main/java/com/ai/da/common/task/AliPayTask.java b/src/main/java/com/ai/da/common/task/AliPayTask.java
new file mode 100644
index 00000000..fa9a9b3a
--- /dev/null
+++ b/src/main/java/com/ai/da/common/task/AliPayTask.java
@@ -0,0 +1,42 @@
+package com.ai.da.common.task;
+
+import com.ai.da.mapper.primary.entity.OrderInfo;
+import com.ai.da.common.enums.PayTypeEnum;
+import com.ai.da.service.AliPayService;
+import com.ai.da.service.OrderInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Slf4j
+@Component
+public class AliPayTask {
+
+ @Resource
+ private OrderInfoService orderInfoService;
+
+ @Resource
+ private AliPayService aliPayService;
+
+ /**
+ * 从第0秒开始每隔30秒执行1次,查询创建超过5分钟,并且未支付的订单
+ */
+// @Scheduled(cron = "0/30 * * * * ?")
+ public void orderConfirm(){
+
+ log.info("Alipay orderConfirm 被执行......");
+
+ List orderInfoList = orderInfoService.getNoPayOrderByDuration(5, PayTypeEnum.ALIPAY.getType());
+
+ for (OrderInfo orderInfo : orderInfoList) {
+ String orderNo = orderInfo.getOrderNo();
+ log.warn("超时订单 ===> {}", orderNo);
+
+ //核实订单状态:调用支付宝查单接口
+ aliPayService.checkOrderStatus(orderNo);
+ }
+ }
+}
diff --git a/src/main/java/com/ai/da/common/task/GenerateTask.java b/src/main/java/com/ai/da/common/task/GenerateTask.java
new file mode 100644
index 00000000..6d13d68f
--- /dev/null
+++ b/src/main/java/com/ai/da/common/task/GenerateTask.java
@@ -0,0 +1,21 @@
+package com.ai.da.common.task;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class GenerateTask {
+
+ @Scheduled(cron = "0 0 */1 * * ?")
+ public void generateScheduled(){
+ log.info("测试定时器:generate");
+
+ try{
+
+ }catch(Exception e){
+
+ }
+ }
+}
diff --git a/src/main/java/com/ai/da/common/task/PaypalTask.java b/src/main/java/com/ai/da/common/task/PaypalTask.java
new file mode 100644
index 00000000..bc0e24dd
--- /dev/null
+++ b/src/main/java/com/ai/da/common/task/PaypalTask.java
@@ -0,0 +1,42 @@
+package com.ai.da.common.task;
+
+import com.ai.da.common.enums.PayTypeEnum;
+import com.ai.da.mapper.primary.entity.OrderInfo;
+import com.ai.da.service.OrderInfoService;
+import com.ai.da.service.PayPalCheckoutService;
+import com.paypal.http.exceptions.SerializeException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Slf4j
+@Component
+public class PaypalTask {
+
+ @Resource
+ private OrderInfoService orderInfoService;
+
+ @Resource
+ private PayPalCheckoutService payPalCheckoutService;
+
+ @Scheduled(cron = "0/30 * * * * ?")
+ public void orderConfirm() throws SerializeException {
+
+ log.info("PayPal orderConfirm 被执行......");
+
+ List orderInfoList = orderInfoService.getNoPayOrderByDuration(5, PayTypeEnum.PAYPAL.getType());
+
+ for (OrderInfo orderInfo : orderInfoList) {
+ String orderNo = orderInfo.getOrderNo();
+ log.warn("超时订单 ===> {}", orderNo);
+
+ //核实订单状态:调用支付宝查单接口
+ payPalCheckoutService.checkOrderStatus(orderNo);
+
+ }
+ }
+}
diff --git a/src/main/java/com/ai/da/common/utils/AlipayHKEncryptionUtil.java b/src/main/java/com/ai/da/common/utils/AlipayHKEncryptionUtil.java
new file mode 100644
index 00000000..205c7f94
--- /dev/null
+++ b/src/main/java/com/ai/da/common/utils/AlipayHKEncryptionUtil.java
@@ -0,0 +1,329 @@
+package com.ai.da.common.utils;
+
+import com.ai.da.model.dto.AlipayHKParametersDTO;
+import com.ai.da.model.dto.AlipayHKRequestDTO;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import lombok.extern.slf4j.Slf4j;
+import org.bouncycastle.util.io.pem.PemObject;
+import org.bouncycastle.util.io.pem.PemReader;
+import org.springframework.beans.factory.annotation.Value;
+
+import javax.crypto.*;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.security.*;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.UUID;
+
+@Slf4j
+public class AlipayHKEncryptionUtil {
+
+ @Value("${alipay.hk.merchant-id}")
+ private static String merchantId;
+
+ @Value("${alipay.hk.segment-id}")
+ private static String segmentId;
+
+ @Value("${alipay.hk.AESKey}")
+ private static String aesKey;
+
+ @Value("${alipay.hk.rsaPrivateKey}")
+ private static String privateKeyPath;
+
+ @Value("${alipay.hk.rsaPublicKey}")
+ private static String publicKeyPath;
+
+ /**
+ * 加密
+ * @param param
+ * @param serviceName
+ * @return
+ * @throws NoSuchPaddingException
+ * @throws NoSuchAlgorithmException
+ * @throws InvalidAlgorithmParameterException
+ * @throws InvalidKeyException
+ * @throws IllegalBlockSizeException
+ * @throws BadPaddingException
+ * @throws IOException
+ */
+ public static AlipayHKRequestDTO AESCBCWithRSA(HashMap param, String serviceName) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, IOException {
+ // Pre-shared secret key, DO NOT hardcode this key
+ String key = aesKey;
+ // The path to the rsa private key file, DO NOT save this key to a publicly accessible location
+ // 使用私钥创建数字签名
+ // Mode, aes-128-cbc for 128bit key
+ String mode = "aes-128-cbc";
+ // Padding mode
+ String padding = "pkcs7";
+ // signature alogrithm
+ String signatureAlgorithm = "rsa-sha256";
+// String signatureAlgorithm = "SHA256withRSA";
+ // Message body
+ AlipayHKParametersDTO requestMessage = new AlipayHKParametersDTO();
+ requestMessage.setService(serviceName);
+ requestMessage.setMerchant_id(merchantId);
+ requestMessage.setRequest_time(Long.toString(System.currentTimeMillis() / 1000L));
+ requestMessage.setRequest_uuid(UUID.randomUUID().toString());
+// HashMap param = new HashMap<>();
+ requestMessage.setParameters(param);
+ /*String orderRef = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+ param.put("order_ref", orderRef);
+ param.put("amount", 208.12);
+ param.put("subject", "四月帳單 April Bill");
+ param.put("wallet", "ALIPAYHK");
+ param.put("segment_id", segmentId);
+ param.put("payment_solution", "WAP");*/
+
+
+ // Serialize message body
+ Gson gson = new GsonBuilder().disableHtmlEscaping().create();
+ String content = gson.toJson(requestMessage);
+
+ // Secure random iv 获取随机种子
+ SecureRandom secureRandom = new SecureRandom();
+ byte[] iv = new byte[16]; //NEVER REUSE THIS IV WITH THE SAME KEY
+ secureRandom.nextBytes(iv);
+
+ // Algorithms
+ String alogrithm = "AES/CBC/PKCS5Padding";
+
+ // 创建 AES 密钥对象
+ SecretKey secretKey = new SecretKeySpec(key.getBytes(), "AES");
+ // 为加密算法提供一个随机的初始化向量,以增强加密安全性
+ IvParameterSpec parameterSpec = new IvParameterSpec(iv);
+ // 创建 Cipher 对象
+ Cipher cipher = Cipher.getInstance(alogrithm);
+ // 初始化为加密模式 Cipher.ENCRYPT_MODE
+ cipher.init(Cipher.ENCRYPT_MODE, secretKey, parameterSpec);
+
+ // Cipher text 对请求内容加密
+ byte[] cipherText = cipher.doFinal(content.getBytes());
+
+ // Concat iv and cipher text for signing
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ outputStream.write(iv);
+ outputStream.write(cipherText);
+ byte signMessage[] = outputStream.toByteArray();
+
+ // Sign key 读取rsa私钥文件,解析并得到私钥对象 privateKey
+ String rsaPrivateKeyPath = privateKeyPath;
+ PrivateKey privateKey = null;
+ byte[] signature;
+ try {
+ privateKey = readPrivateKeyFromFile(rsaPrivateKeyPath);
+ Signature signer = Signature.getInstance("SHA256withRSA");
+ signer.initSign(privateKey);
+ // 将加密内容和随机向量均加签
+ signer.update(signMessage);
+ signature = signer.sign();
+ } catch (SignatureException e) {
+ throw new RuntimeException(e);
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ throw new RuntimeException(e);
+ }
+
+ Base64.Encoder encoder = Base64.getEncoder();
+ // Combine result
+ AlipayHKRequestDTO alipayHKRequestDTO = new AlipayHKRequestDTO();
+ alipayHKRequestDTO.setMerchant_id(merchantId);
+ alipayHKRequestDTO.setNonce(encoder.encodeToString(iv));
+ alipayHKRequestDTO.setMessage(encoder.encodeToString(cipherText));
+ alipayHKRequestDTO.setTag(encoder.encodeToString(signature));
+ String cipherSuite = mode + "-" + padding + "-with-" + signatureAlgorithm;
+ alipayHKRequestDTO.setCipher_suite(cipherSuite);
+
+ // Encode to json
+ String jsonEncoded = JSONObject.toJSONString(alipayHKRequestDTO);
+ log.info(jsonEncoded);
+
+// String info = AlipayHKRequestUtil.createOrder(alipayHKRequestDTO);
+// log.info(info);
+ return alipayHKRequestDTO;
+
+ }
+
+ /**
+ * 从文件中读取RSA私钥
+ * @param filePath
+ * @return
+ * @throws Exception
+ */
+ private static PrivateKey readPrivateKeyFromFile(String filePath) throws Exception {
+ BufferedReader reader = new BufferedReader(new FileReader(filePath));
+ StringBuilder keyBuffer = new StringBuilder();
+ String line;
+
+ // 读取文本文件中的内容
+ while ((line = reader.readLine()) != null) {
+ keyBuffer.append(line);
+ }
+ reader.close();
+
+ // 去除私钥内容中的头部和尾部信息
+ String privateKeyContent = keyBuffer.toString()
+ .replace("-----BEGIN PRIVATE KEY-----", "")
+ .replace("-----END PRIVATE KEY-----", "")
+ .replaceAll("\\s+", ""); // 去除空格、换行等字符
+
+ // 进行 Base64 解码
+ byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyContent);
+
+ // 根据 PKCS8 格式的私钥字节数组构造私钥对象
+ KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+ PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
+ return keyFactory.generatePrivate(keySpec);
+ }
+
+ /**
+ * 使用 AES 密钥和随机向量进行解密
+ */
+ public static String decryptAES(String encryptedText, String iv) throws Exception {
+ byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
+ byte[] ivBytes = Base64.getDecoder().decode(iv);
+
+ Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+ SecretKeySpec secretKeySpec = new SecretKeySpec(aesKey.getBytes(), "AES");
+ IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes);
+
+ cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
+ byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
+
+ return new String(decryptedBytes, StandardCharsets.UTF_8);
+ }
+
+ public static void test() throws Exception {
+ // 加密数据
+ AlipayHKParametersDTO requestMessage = new AlipayHKParametersDTO();
+ requestMessage.setService("create_order");
+ requestMessage.setMerchant_id(merchantId);
+ requestMessage.setRequest_time(Long.toString(System.currentTimeMillis() / 1000L));
+ requestMessage.setRequest_uuid(UUID.randomUUID().toString());
+ HashMap param = new HashMap<>();
+ requestMessage.setParameters(param);
+ String orderRef = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+ param.put("order_ref", orderRef);
+ param.put("amount", 208.12);
+ param.put("subject", "四月帳單 April Bill");
+ param.put("wallet", "ALIPAYHK");
+ param.put("segment_id", segmentId);
+ param.put("payment_solution", "WAP");
+ Gson gson = new Gson();
+ String plaintext = gson.toJson(requestMessage);
+ System.out.println(plaintext);
+
+ // 生成 AES 密钥
+ String key = aesKey;
+ SecretKey aesKey = new SecretKeySpec(key.getBytes(), "AES");
+
+ // 使用 RSA 公钥加密 AES 密钥
+ String rsaPublicKeyPath = publicKeyPath;
+ PublicKey publicKey = readPublicKey(new File(rsaPublicKeyPath));
+
+ Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
+// Cipher rsaCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+ rsaCipher.init(Cipher.ENCRYPT_MODE, publicKey);
+ byte[] encryptedAesKey = rsaCipher.doFinal(aesKey.getEncoded());
+
+ // 使用 AES-128-CBC 加密数据
+ Cipher aesCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+ byte[] ivBytes = generateRandomIV(aesCipher.getBlockSize());
+ IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
+
+ aesCipher.init(Cipher.ENCRYPT_MODE, aesKey, ivSpec);
+ byte[] encryptedData = aesCipher.doFinal(plaintext.getBytes());
+
+ // 数字签名(使用 RSA 私钥)
+ String rsaPrivateKeyPath = privateKeyPath;
+ PrivateKey privateKey = readPrivateKeyFromFile(rsaPrivateKeyPath);
+ Signature signer = Signature.getInstance("SHA256withRSA");
+ signer.initSign(privateKey);
+ signer.update(encryptedData);
+ byte[] signatureBytes = signer.sign();
+ Base64.Encoder encoder = Base64.getEncoder();
+
+ // 将加密后的数据和签名进行Base64编码
+ String base64EncryptedData = Base64.getEncoder().encodeToString(encryptedData);
+ String base64Signature = Base64.getEncoder().encodeToString(signatureBytes);
+
+ // 输出加密后的数据和签名
+ System.out.println("加密后的数据:" + base64EncryptedData);
+ System.out.println("数字签名:" + base64Signature);
+
+
+ HashMap result = new HashMap();
+ result.put("merchant_id",merchantId);
+ result.put("nonce", encoder.encodeToString(ivBytes));
+ result.put("message", encoder.encodeToString(encryptedData));
+ result.put("tag", encoder.encodeToString(signatureBytes));
+
+ String mode = "aes-128-cbc";
+ // Padding mode
+ String padding = "pkcs7";
+ // signature alogrithm
+ String signatureAlgorithm = "rsa-sha256";
+ String cipherSuite = mode + "-" + padding + "-with-" + signatureAlgorithm;
+ result.put("cipher_suite", cipherSuite);
+
+ System.out.println("map 格式:" + result);
+ // Encode to json
+ String jsonEncoded = JSONObject.toJSONString(result);
+ System.out.println("json 格式:" + jsonEncoded);
+
+ AlipayHKRequestDTO alipayHKRequestDTO = new AlipayHKRequestDTO();
+ alipayHKRequestDTO.setMerchant_id(merchantId);
+ alipayHKRequestDTO.setNonce(encoder.encodeToString(ivBytes));
+ alipayHKRequestDTO.setMessage(encoder.encodeToString(encryptedData));
+ alipayHKRequestDTO.setTag(encoder.encodeToString(signatureBytes));
+ alipayHKRequestDTO.setCipher_suite(cipherSuite);
+
+// String info = AlipayHKRequestUtil.createOrder(result);
+// log.info(info);
+
+ // 解密和验证
+// byte[] decryptedAesKey = rsaCipher.doFinal(encryptedAesKey);
+ byte[] decryptedAesKey = rsaCipher.doFinal(aesKey.getEncoded());
+ SecretKey decryptedAesSecretKey = new SecretKeySpec(decryptedAesKey, "AES");
+
+ aesCipher.init(Cipher.DECRYPT_MODE, decryptedAesSecretKey, ivSpec);
+ byte[] decryptedData = aesCipher.doFinal(Base64.getDecoder().decode(base64EncryptedData));
+
+ // 验证数字签名
+ Signature verifier = Signature.getInstance("SHA256withRSA");
+ verifier.initVerify(publicKey);
+ verifier.update(decryptedData);
+ boolean signatureValid = verifier.verify(Base64.getDecoder().decode(base64Signature));
+
+ System.out.println("解密后的数据:" + new String(decryptedData));
+ System.out.println("数字签名验证结果:" + signatureValid);
+ }
+
+ public static PublicKey readPublicKey(File file) throws Exception {
+ KeyFactory factory = KeyFactory.getInstance("RSA");
+
+ try (FileReader keyReader = new FileReader(file);
+ PemReader pemReader = new PemReader(keyReader)) {
+
+ PemObject pemObject = pemReader.readPemObject();
+ byte[] content = pemObject.getContent();
+ X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(content);
+ return factory.generatePublic(pubKeySpec);
+ }
+ }
+
+ private static byte[] generateRandomIV(int blockSize) {
+ SecureRandom random = new SecureRandom();
+ byte[] iv = new byte[blockSize];
+ random.nextBytes(iv);
+ return iv;
+ }
+}
diff --git a/src/main/java/com/ai/da/common/utils/AlipayHKRequestUtil.java b/src/main/java/com/ai/da/common/utils/AlipayHKRequestUtil.java
new file mode 100644
index 00000000..331c01ed
--- /dev/null
+++ b/src/main/java/com/ai/da/common/utils/AlipayHKRequestUtil.java
@@ -0,0 +1,53 @@
+package com.ai.da.common.utils;
+
+import com.ai.da.common.config.exception.BusinessException;
+import com.ai.da.model.dto.AlipayHKRequestDTO;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+
+import java.io.IOException;
+import java.time.Instant;
+import java.util.concurrent.TimeUnit;
+
+import com.alibaba.fastjson.JSONObject;
+
+@Slf4j
+public class AlipayHKRequestUtil {
+
+ public static String createOrder(AlipayHKRequestDTO alipayHKRequestDTO) throws IOException {
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .connectTimeout(30, TimeUnit.SECONDS)
+ .pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒)
+ .readTimeout(60, TimeUnit.SECONDS)//读取超时(单位:秒)
+ .writeTimeout(60, TimeUnit.SECONDS)//写入超时(单位:秒)
+ .build();
+ MediaType mediaType = MediaType.parse("application/json;charset=utf-8");
+ long epochMilli = Instant.now().toEpochMilli();
+ log.info("Alipay-HK send request unix timestamp: {}", epochMilli);
+
+ String jsonString = JSONObject.toJSONString(alipayHKRequestDTO, SerializerFeature.WriteMapNullValue);
+ log.info(jsonString);
+
+ RequestBody body = RequestBody.create(mediaType, jsonString);
+
+ Request request = new Request.Builder()
+// .url("https://aqs-api.sandbox-codpayment.com")
+ .url("https://aqs-api.sandbox-codpayment.com/v1/service")
+ .method("POST", body)
+ .addHeader("Content-Type", "application/json;charset=utf-8")
+ .build();
+ Response response = null;
+ String bodyString;
+ try {
+// log.info("generateSketchOrPrint请求入参content###{}", JSON.toJSONString(alipayHKRequestDTO, SerializerFeature.WriteMapNullValue));
+ response = client.newCall(request).execute();
+ } catch (Exception e) {
+// log.error("PythonService##generateSketchOrPrint异常###{}", ExceptionUtil.getThrowableList(ioException));
+// throw new BusinessException("generate.interface.error");
+ throw new BusinessException(e.getMessage());
+ }
+ return response.body().string();
+ }
+
+}
diff --git a/src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java b/src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java
index c864960c..40ae25db 100644
--- a/src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java
+++ b/src/main/java/com/ai/da/common/utils/AsyncCallerUtil.java
@@ -14,6 +14,7 @@ import java.util.concurrent.*;
@Component
public class AsyncCallerUtil {
+ // 存放状态 表示当前任务是否需要继续等待,默认持续等待
public static Map waitingStatus = new HashMap<>();
private static PythonService pythonService;
@@ -24,7 +25,8 @@ public class AsyncCallerUtil {
}
public CompletableFuture> callGenerateAsync(GenerateToPythonDTO generateToPython) {
- return CompletableFuture.supplyAsync(() -> pythonService.generateSketchOrPrint(generateToPython));
+// return CompletableFuture.supplyAsync(() -> pythonService.generateSketchOrPrint(generateToPython));
+ return null;
}
public List generate(GenerateToPythonDTO generateToPython) {
diff --git a/src/main/java/com/ai/da/common/utils/LocalCacheUtils.java b/src/main/java/com/ai/da/common/utils/LocalCacheUtils.java
index 48291bb8..82235e8c 100644
--- a/src/main/java/com/ai/da/common/utils/LocalCacheUtils.java
+++ b/src/main/java/com/ai/da/common/utils/LocalCacheUtils.java
@@ -1,11 +1,7 @@
package com.ai.da.common.utils;
-import com.ai.da.mapper.entity.Collection;
-import com.ai.da.mapper.entity.SysFile;
import com.ai.da.model.vo.SysFileVO;
import com.google.common.cache.*;
-import com.google.common.collect.Lists;
-import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
diff --git a/src/main/java/com/ai/da/common/utils/MinioUtil.java b/src/main/java/com/ai/da/common/utils/MinioUtil.java
index 5bd54cf8..352b4d79 100644
--- a/src/main/java/com/ai/da/common/utils/MinioUtil.java
+++ b/src/main/java/com/ai/da/common/utils/MinioUtil.java
@@ -1,29 +1,21 @@
package com.ai.da.common.utils;
import com.ai.da.common.config.exception.BusinessException;
-import com.ai.da.mapper.entity.ObjectItem;
+import com.ai.da.mapper.primary.entity.ObjectItem;
import io.minio.*;
import io.minio.errors.MinioException;
import io.minio.http.Method;
import io.minio.messages.DeleteError;
import io.minio.messages.DeleteObject;
import io.minio.messages.Item;
-import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
-import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
diff --git a/src/main/java/com/ai/da/common/utils/OrderNoUtils.java b/src/main/java/com/ai/da/common/utils/OrderNoUtils.java
new file mode 100644
index 00000000..2b0108de
--- /dev/null
+++ b/src/main/java/com/ai/da/common/utils/OrderNoUtils.java
@@ -0,0 +1,46 @@
+package com.ai.da.common.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Random;
+
+/**
+ * 订单号工具类
+ *
+ * @author qy
+ * @since 1.0
+ */
+public class OrderNoUtils {
+
+ /**
+ * 获取订单编号
+ * @return
+ */
+ public static String getOrderNo() {
+ return "ORDER_" + getNo();
+ }
+
+ /**
+ * 获取退款单编号
+ * @return
+ */
+ public static String getRefundNo() {
+ return "REFUND_" + getNo();
+ }
+
+ /**
+ * 获取编号
+ * @return
+ */
+ public static String getNo() {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+ String newDate = sdf.format(new Date());
+ String result = "";
+ Random random = new Random();
+ for (int i = 0; i < 3; i++) {
+ result += random.nextInt(10);
+ }
+ return newDate + result;
+ }
+
+}
diff --git a/src/main/java/com/ai/da/common/utils/RandomsUtil.java b/src/main/java/com/ai/da/common/utils/RandomsUtil.java
index fd4b352f..dc68ec90 100644
--- a/src/main/java/com/ai/da/common/utils/RandomsUtil.java
+++ b/src/main/java/com/ai/da/common/utils/RandomsUtil.java
@@ -48,5 +48,9 @@ public class RandomsUtil {
return RandomUtil.randomLong(randomStart, randomEnd);
}
+ public static Integer randomSysFile(Integer randomEnd) {
+ return RandomUtil.randomInt(randomEnd);
+ }
+
}
diff --git a/src/main/java/com/ai/da/common/utils/RedisUtil.java b/src/main/java/com/ai/da/common/utils/RedisUtil.java
index 5121e883..ef67de8f 100644
--- a/src/main/java/com/ai/da/common/utils/RedisUtil.java
+++ b/src/main/java/com/ai/da/common/utils/RedisUtil.java
@@ -7,8 +7,10 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
@Slf4j
@Component
@@ -17,6 +19,10 @@ public class RedisUtil {
@Resource
private RedisTemplate redisTemplate;
+ public Boolean hasKey(String key){
+ return redisTemplate.hasKey(key);
+ }
+
//- - - - - - - - - - - - - - - - - - - - - ZSet类型 - - - - - - - - - - - - - - - - - - - -
/**
@@ -64,10 +70,15 @@ public class RedisUtil {
/**
* 获取当前ZSet中数据量的总和
*/
- public Long getZSetTotal(String key) {
+ public Long getZSetTotalCount(String key) {
return redisTemplate.opsForZSet().zCard(key);
}
+
+ public Set getZSetTotalData(String key){
+ return redisTemplate.opsForZSet().range(key, 0, -1);
+ }
+
//- - - - - - - - - - - - - - - - - - - - - set类型 - - - - - - - - - - - - - - - - - - - -
/**
@@ -123,4 +134,34 @@ public class RedisUtil {
public Long removeFromMap(String key, String hashKeys) {
return redisTemplate.opsForHash().delete(key, hashKeys);
}
+
+ //- - - - - - - - - - - - - - - - - - - - - String类型 - - - - - - - - - - - - - - - - - - - -
+ public void addToString(String key, String value){
+ redisTemplate.opsForValue().set(key,value);
+ }
+
+ public void addToString(String key, String value, Long expiresIn){
+ redisTemplate.opsForValue().set(key,value,expiresIn, TimeUnit.SECONDS);
+ }
+
+ public String getFromString(String key){
+ return redisTemplate.opsForValue().get(key);
+ }
+
+ public Set getKeysFromString(String key){
+ return redisTemplate.keys(key);
+ }
+
+ public List getMultiValue(Set keys){
+ return redisTemplate.opsForValue().multiGet(keys);
+ }
+
+ public Long getExpire(String key){
+ return redisTemplate.getExpire(key);
+ }
+
+ public void removeFromString(String key){
+ redisTemplate.delete(key);
+ }
+
}
diff --git a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java
index e9389317..6653c7da 100644
--- a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java
+++ b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java
@@ -1,7 +1,7 @@
package com.ai.da.common.utils;
-import com.ai.da.mapper.entity.Account;
-import com.ai.da.mapper.entity.TrialOrder;
+import com.ai.da.mapper.primary.entity.Account;
+import com.ai.da.mapper.primary.entity.TrialOrder;
import com.alibaba.fastjson.JSONObject;
import com.ai.da.common.config.exception.BusinessException;
import com.tencentcloudapi.common.Credential;
@@ -355,4 +355,46 @@ public class SendEmailUtil {
throw new BusinessException("failed.to.send.mail");
}
}
+
+ private final static Long GENERATE_EXCEPTION_WARNING_ID = 122589L;
+ public static void sendGenerateExceptionWarning(String message){
+ try {
+ // 实例化一个认证对象
+ Credential cred = new Credential(SECRET_ID, SECRET_KEy);
+ HttpProfile httpProfile = new HttpProfile();
+ httpProfile.setEndpoint("ses.tencentcloudapi.com");
+ ClientProfile clientProfile = new ClientProfile();
+ clientProfile.setHttpProfile(httpProfile);
+ SesClient client = new SesClient(cred, "ap-hongkong", clientProfile);
+ SendEmailRequest req = new SendEmailRequest();
+ req.setFromEmailAddress(CODE_CREATE_SEND_ADDRESS);
+ req.setDestination(new String[]{"xupei3360@163.com"});
+
+ // 根据邮件类型设置不同的主题和模板
+ String subject = "";
+ Template template = new Template();
+ subject = "Warning: AiDA 3.0 Generate Exception Warning";
+ template.setTemplateID(GENERATE_EXCEPTION_WARNING_ID);
+
+ JSONObject parameter = new JSONObject();
+ parameter.put("errorMessage", message);
+ parameter.put("time", DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS));
+
+ template.setTemplateData(parameter.toJSONString());
+
+ req.setSubject(subject);
+ req.setTemplate(template);
+
+ // 发送邮件
+ SendEmailResponse resp = client.SendEmail(req);
+ log.info("短信发送结果res###{}", SendEmailResponse.toJsonString(resp));
+ } catch (TencentCloudSDKException e) {
+ log.info("邮件发送失败###{}", e.toString());
+ throw new BusinessException("failed.to.send.mail");
+ }
+ }
+
+
+
+
}
diff --git a/src/main/java/com/ai/da/common/utils/paypalRequest/AuthenticationRequest.java b/src/main/java/com/ai/da/common/utils/paypalRequest/AuthenticationRequest.java
new file mode 100644
index 00000000..eedda337
--- /dev/null
+++ b/src/main/java/com/ai/da/common/utils/paypalRequest/AuthenticationRequest.java
@@ -0,0 +1,30 @@
+package com.ai.da.common.utils.paypalRequest;
+
+import com.alibaba.fastjson.JSONObject;
+import com.paypal.http.HttpRequest;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+
+@Component
+public class AuthenticationRequest extends HttpRequest {
+
+ public AuthenticationRequest() {
+ super("/v1/oauth2/token", "POST", HashMap.class);
+ this.header("Content-Type", "application/x-www-form-urlencoded");
+ body();
+ }
+
+ public AuthenticationRequest authorization(String clientId, String clientSecret) {
+ this.header(clientId, clientSecret);
+ return this;
+ }
+
+ public AuthenticationRequest body() {
+ HashMap body = new HashMap<>();
+ body.put("grant_type", "client_credentials");
+ this.requestBody(body);
+ return this;
+ }
+}
diff --git a/src/main/java/com/ai/da/common/utils/paypalRequest/WebhookVerifyRequest.java b/src/main/java/com/ai/da/common/utils/paypalRequest/WebhookVerifyRequest.java
new file mode 100644
index 00000000..957482d3
--- /dev/null
+++ b/src/main/java/com/ai/da/common/utils/paypalRequest/WebhookVerifyRequest.java
@@ -0,0 +1,26 @@
+package com.ai.da.common.utils.paypalRequest;
+
+import com.ai.da.model.dto.WebhookVerifyDTO;
+import com.alibaba.fastjson.JSONObject;
+import com.paypal.http.HttpRequest;
+import com.paypal.orders.OrdersCreateRequest;
+
+import java.io.Serializable;
+import java.util.HashMap;
+
+public class WebhookVerifyRequest extends HttpRequest {
+ public WebhookVerifyRequest() {
+ super("/v1/notifications/verify-webhook-signature", "POST", HashMap.class);
+ this.header("Content-Type", "application/json");
+ }
+
+ public WebhookVerifyRequest authorization(String authorization) {
+ this.header("Authorization", "Bearer " + String.valueOf(authorization));
+ return this;
+ }
+
+ public WebhookVerifyRequest requestBody(HashMap webhookVerify) {
+ super.requestBody(webhookVerify);
+ return this;
+ }
+}
diff --git a/src/main/java/com/ai/da/controller/AccountController.java b/src/main/java/com/ai/da/controller/AccountController.java
index d9ed7803..ce1cd82f 100644
--- a/src/main/java/com/ai/da/controller/AccountController.java
+++ b/src/main/java/com/ai/da/controller/AccountController.java
@@ -2,13 +2,10 @@ package com.ai.da.controller;
import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.response.Response;
-import com.ai.da.common.security.jwt.JWTTokenHelper;
-import com.ai.da.mapper.entity.TrialOrder;
+import com.ai.da.mapper.primary.entity.TrialOrder;
import com.ai.da.model.dto.*;
-import com.ai.da.model.enums.Language;
import com.ai.da.model.vo.AccountLoginVO;
import com.ai.da.model.vo.AccountPreLoginVO;
-import com.ai.da.model.vo.QueryLibraryPageVO;
import com.ai.da.service.AccountService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
diff --git a/src/main/java/com/ai/da/controller/AliPayController.java b/src/main/java/com/ai/da/controller/AliPayController.java
new file mode 100644
index 00000000..b3a9c65b
--- /dev/null
+++ b/src/main/java/com/ai/da/controller/AliPayController.java
@@ -0,0 +1,113 @@
+package com.ai.da.controller;
+
+import com.ai.da.common.response.Response;
+import com.ai.da.service.AliPayService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@CrossOrigin
+@RestController
+@RequestMapping("/api/ali-pay")
+@Api(tags = "网站支付宝支付")
+@Slf4j
+public class AliPayController {
+
+ @Resource
+ private AliPayService aliPayService;
+
+ @ApiOperation("统一收单下单并支付页面接口的调用")
+ @PostMapping("/trade/page/pay/{amount}")
+ public Response tradePagePay(@PathVariable Integer amount, @RequestParam String returnUrl){
+ log.info("统一收单下单并支付页面接口的调用");
+ //支付宝开放平台接受 request 请求对象后
+ // 会为开发者生成一个html 形式的 form表单,包含自动提交的脚本
+ String formStr = aliPayService.tradeCreate(amount, returnUrl);
+ //我们将form表单字符串返回给前端程序,之后前端将会调用自动提交脚本,进行表单的提交
+ //此时,表单会自动提交到action属性所指向的支付宝开放平台中,从而为用户展示一个支付页面
+ return Response.success(formStr);
+ }
+
+ @ApiOperation("支付通知")
+ @PostMapping("/trade/notify")
+ public String tradeNotify(@RequestParam Map params){
+ return aliPayService.tradeNotify(params);
+ }
+
+ /**
+ * 用户取消订单
+ * @param orderNo
+ * @return
+ */
+ @ApiOperation("用户取消订单")
+ @PostMapping("/trade/close/{orderNo}")
+ public Response cancel(@PathVariable String orderNo){
+ log.info("取消订单");
+ aliPayService.cancelOrder(orderNo);
+ return Response.success("订单已取消");
+ }
+
+ /**
+ * 查询订单
+ * @param orderNo
+ * @return
+ */
+ @ApiOperation("查询订单:测试订单状态用")
+ @GetMapping("/trade/query/{orderNo}")
+ public Response queryOrder(@PathVariable String orderNo) {
+ log.info("查询订单");
+ String result = aliPayService.queryOrder(orderNo);
+ return Response.success(result);
+
+ }
+
+ /**
+ * 不在页面提供申请退款接口
+ * @param orderNo
+ * @param reason
+ * @return
+ */
+ @ApiOperation("申请退款")
+ @PostMapping("/trade/refund/{orderNo}/{reason}")
+ public Response refunds(@PathVariable String orderNo, @PathVariable String reason){
+ log.info("申请退款");
+ aliPayService.refund(orderNo, reason);
+ return Response.success();
+ }
+
+ /**
+ * 查询退款
+ * @param orderNo
+ * @return
+ * @throws Exception
+ */
+ @ApiOperation("查询退款:测试用")
+ @GetMapping("/trade/fastpay/refund/{orderNo}")
+ public Response queryRefund(@PathVariable String orderNo) {
+ log.info("查询退款");
+ String result = aliPayService.queryRefund(orderNo);
+ return Response.success(result);
+ }
+
+ /**
+ * 根据账单类型和日期获取账单url地址
+ *
+ * @param billDate
+ * @param type
+ * @return
+ */
+ @ApiOperation("获取账单url")
+ @GetMapping("/bill/downloadurl/query/{billDate}/{type}")
+ public Response queryTradeBill(
+ @PathVariable String billDate,
+ @PathVariable String type) {
+ log.info("获取账单url");
+ String downloadUrl = aliPayService.queryBill(billDate, type);
+ return Response.success(downloadUrl);
+ }
+
+}
diff --git a/src/main/java/com/ai/da/controller/AlipayHKController.java b/src/main/java/com/ai/da/controller/AlipayHKController.java
new file mode 100644
index 00000000..9b2fca11
--- /dev/null
+++ b/src/main/java/com/ai/da/controller/AlipayHKController.java
@@ -0,0 +1,22 @@
+package com.ai.da.controller;
+
+import com.ai.da.common.response.Response;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@CrossOrigin
+@RestController
+@RequestMapping("/api/ali-pay-hk")
+@Api(tags = "网站支付 香港支付宝")
+@Slf4j
+public class AlipayHKController {
+
+ public Response createOrder(){
+ return Response.success();
+ }
+
+
+}
diff --git a/src/main/java/com/ai/da/controller/ClassificationController.java b/src/main/java/com/ai/da/controller/ClassificationController.java
index cbe95c14..75c4e556 100644
--- a/src/main/java/com/ai/da/controller/ClassificationController.java
+++ b/src/main/java/com/ai/da/controller/ClassificationController.java
@@ -1,27 +1,19 @@
package com.ai.da.controller;
import com.ai.da.common.response.Response;
-import com.ai.da.mapper.entity.Workspace;
import com.ai.da.model.dto.ClassificationDTO;
-import com.ai.da.model.dto.WorkspaceDTO;
-import com.ai.da.model.enums.BizJson;
import com.ai.da.model.vo.ClassificationVO;
-import com.ai.da.model.vo.ModelsVO;
-import com.ai.da.model.vo.WorkspaceVO;
import com.ai.da.service.ClassificationService;
-import com.ai.da.service.WorkspaceService;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
-import java.io.FileNotFoundException;
import java.util.List;
/**
diff --git a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java
index bca619ce..4b4526bd 100644
--- a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java
+++ b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java
@@ -3,16 +3,19 @@ package com.ai.da.controller;
import com.ai.da.common.context.UserContext;
import com.ai.da.common.response.Response;
-import com.ai.da.mapper.DesignMapper;
-import com.ai.da.mapper.TrialOrderMapper;
-import com.ai.da.mapper.entity.TrialOrder;
+import com.ai.da.mapper.primary.DesignMapper;
+import com.ai.da.mapper.primary.TrialOrderMapper;
+import com.ai.da.mapper.primary.entity.TrialOrder;
import com.ai.da.model.dto.UserDesignStatisticDTO;
+import io.netty.util.internal.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
@Api(tags = "便利查询")
@@ -31,7 +34,7 @@ public class ConvenientInquiryController {
@GetMapping("/getTrial")
public Response> getTrial(){
Long accountId = UserContext.getUserHolder().getId();
- if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L)){
+ if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L)){
List trialOrders = trialOrderMapper.selectList(null);
return Response.success(trialOrders);
}else {
@@ -43,7 +46,13 @@ public class ConvenientInquiryController {
@GetMapping("/getDesignStatistic")
public Response> getDesignStatistic(@RequestParam String startTime,@RequestParam String endTime){
Long accountId = UserContext.getUserHolder().getId();
- if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L)){
+ if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L)){
+ if (StringUtil.isNullOrEmpty(startTime)) startTime = "2024-02-01 00:00:00";
+ if (StringUtil.isNullOrEmpty(endTime)){
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+ Date date = new Date();
+ endTime = simpleDateFormat.format(date);
+ }
List designStatistic = designMapper.getDesignStatistic(startTime, endTime);
return Response.success(designStatistic);
}else {
diff --git a/src/main/java/com/ai/da/controller/CreditsController.java b/src/main/java/com/ai/da/controller/CreditsController.java
new file mode 100644
index 00000000..ab02e57f
--- /dev/null
+++ b/src/main/java/com/ai/da/controller/CreditsController.java
@@ -0,0 +1,42 @@
+package com.ai.da.controller;
+
+import com.ai.da.common.context.UserContext;
+import com.ai.da.common.response.PageBaseResponse;
+import com.ai.da.common.response.Response;
+import com.ai.da.mapper.primary.entity.CreditsDetail;
+import com.ai.da.model.dto.QueryIncomeOrExpenditureDTO;
+import com.ai.da.service.CreditsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@CrossOrigin
+@RestController
+@RequestMapping("/api/credits")
+@Api(tags = "积分")
+@Slf4j
+public class CreditsController {
+
+ @Resource
+ private CreditsService creditsService;
+
+ @ApiOperation("获取当前积分")
+ @GetMapping("/getCredits")
+ public Response getCredits() {
+ String credits = creditsService.getCredits(UserContext.getUserHolder().getId());
+ return Response.success(credits);
+ }
+
+ @ApiOperation("获取积分详细")
+ @PostMapping("/getCreditsDetail")
+ public Response> getCreditsDetail(@Valid @RequestBody QueryIncomeOrExpenditureDTO queryPageByTimeDTO) {
+ PageBaseResponse credits = creditsService.queryCreditsDetailsPage(queryPageByTimeDTO);
+ return Response.success(credits);
+ }
+
+
+}
diff --git a/src/main/java/com/ai/da/controller/DesignController.java b/src/main/java/com/ai/da/controller/DesignController.java
index b36cf6f9..87fe11a6 100644
--- a/src/main/java/com/ai/da/controller/DesignController.java
+++ b/src/main/java/com/ai/da/controller/DesignController.java
@@ -30,6 +30,7 @@ public class DesignController {
@ApiOperation(value = "设计 Conllection")
@PostMapping("/designCollection")
+ @CrossOrigin
public Response designCollection(@Valid @RequestBody DesignCollectionDTO designDTO) {
return Response.success(designService.designCollection(designDTO));
}
diff --git a/src/main/java/com/ai/da/controller/GenerateController.java b/src/main/java/com/ai/da/controller/GenerateController.java
index c752fbc0..4e1566dd 100644
--- a/src/main/java/com/ai/da/controller/GenerateController.java
+++ b/src/main/java/com/ai/da/controller/GenerateController.java
@@ -3,10 +3,7 @@ package com.ai.da.controller;
import com.ai.da.common.response.Response;
import com.ai.da.model.dto.GenerateLikeDTO;
import com.ai.da.model.dto.GenerateThroughImageTextDTO;
-import com.ai.da.model.vo.GenerateCaptionVO;
-import com.ai.da.model.vo.GenerateCollectionVO;
-import com.ai.da.model.vo.GenerateLikeVO;
-import com.ai.da.model.vo.PrepareForGenerateVO;
+import com.ai.da.model.vo.*;
import com.ai.da.service.GenerateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -16,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
+import java.util.List;
/**
* @author XP
@@ -35,11 +33,12 @@ public class GenerateController {
return Response.success(generateService.generateCaption(sketchElementId));
}
- @ApiOperation("通过文字、图片生成图片")
+ /*@ApiOperation("通过文字、图片生成图片")
@PostMapping("/sketchAndPrint")
- public Response generateThroughImageText(@Valid @RequestBody GenerateThroughImageTextDTO generateThroughImageTextDTO) {
- return Response.success(generateService.generateThroughImageText(generateThroughImageTextDTO));
- }
+ public void generateThroughImageText(@Valid @RequestBody GenerateThroughImageTextDTO generateThroughImageTextDTO) {
+// return Response.success(generateService.generateThroughImageText(generateThroughImageTextDTO));
+ generateService.generateThroughImageText(generateThroughImageTextDTO);
+ }*/
@ApiOperation("喜欢生成的图片")
@PostMapping("/like")
@@ -63,16 +62,25 @@ public class GenerateController {
@ApiOperation(value = "取消继续生成")
@GetMapping("/stopWaiting")
public Response stopWaiting(@RequestParam("userId") Long userId,
- @RequestParam("uniqueId") String uniqueId,
+ @RequestParam("uniqueId") List uniqueId,
@RequestParam("timeZone") String timeZone) {
generateService.cancelGenerate(userId, uniqueId, timeZone);
return Response.success("stop waiting successfully");
}
- @ApiOperation(value = "获取生成结果")
+ /*@ApiOperation(value = "获取生成结果")
@GetMapping("/result")
public Response getGenerateResult(@RequestParam("uniqueId") String uniqueId) {
GenerateCollectionVO generateResult = generateService.getGenerateResult(uniqueId);
return Response.success(generateResult);
+ }*/
+
+ @ApiOperation(value = "获取生成结果")
+ @PostMapping("/result")
+ public Response> getGenerateResults(@Valid @RequestBody List taskIdList) {
+ List generateResult = generateService.getGenerateResultList(taskIdList);
+ return Response.success(generateResult);
}
+
+
}
diff --git a/src/main/java/com/ai/da/controller/LibraryController.java b/src/main/java/com/ai/da/controller/LibraryController.java
index fd4aa57c..9c3a6ebb 100644
--- a/src/main/java/com/ai/da/controller/LibraryController.java
+++ b/src/main/java/com/ai/da/controller/LibraryController.java
@@ -7,10 +7,9 @@ import com.ai.da.common.enums.LibraryLevel1TypeEnum;
import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.response.Response;
import com.ai.da.common.utils.*;
-import com.ai.da.mapper.entity.Library;
-import com.ai.da.mapper.entity.LibraryModelPoint;
+import com.ai.da.mapper.primary.entity.Library;
+import com.ai.da.mapper.primary.entity.LibraryModelPoint;
import com.ai.da.model.dto.*;
-import com.ai.da.model.enums.ModelType;
import com.ai.da.model.vo.*;
import com.ai.da.service.LibraryModelPointService;
import com.ai.da.service.LibraryService;
@@ -20,7 +19,6 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -30,7 +28,6 @@ import javax.validation.Valid;
import java.io.File;
import java.text.ParseException;
import java.util.Date;
-import java.util.List;
import java.util.Objects;
import java.util.UUID;
diff --git a/src/main/java/com/ai/da/controller/OrderInfoController.java b/src/main/java/com/ai/da/controller/OrderInfoController.java
new file mode 100644
index 00000000..3a9ce1d5
--- /dev/null
+++ b/src/main/java/com/ai/da/controller/OrderInfoController.java
@@ -0,0 +1,48 @@
+package com.ai.da.controller;
+
+import com.ai.da.common.enums.OrderStatusEnum;
+import com.ai.da.common.response.PageBaseResponse;
+import com.ai.da.common.response.Response;
+import com.ai.da.mapper.primary.entity.OrderInfo;
+import com.ai.da.model.dto.QueryPageByTimeDTO;
+import com.ai.da.service.OrderInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+@CrossOrigin //开放前端的跨域访问
+@Api(tags = "商品订单管理")
+@RestController
+@RequestMapping("/api/order-info")
+public class OrderInfoController {
+
+ @Resource
+ private OrderInfoService orderInfoService;
+
+ @ApiOperation("订单列表")
+ @PostMapping("/list")
+ public Response> list(@Valid @RequestBody QueryPageByTimeDTO queryPageByTimeDTO){
+ PageBaseResponse orderByAccountId = orderInfoService.getOrderByPage(queryPageByTimeDTO);
+// List list = orderInfoService.listOrderByCreateTimeDesc();
+ return Response.success(orderByAccountId);
+ }
+
+ /**
+ * 查询本地订单状态
+ * @param orderNo
+ * @return
+ */
+ @ApiOperation("查询本地订单状态")
+ @GetMapping("/query-order-status/{orderNo}")
+ public Response queryOrderStatus(@PathVariable String orderNo){
+ String orderStatus = orderInfoService.getOrderStatus(orderNo);
+ if(OrderStatusEnum.SUCCESS.getType().equals(orderStatus)){
+ return Response.success("支付成功"); //支付成功
+ }
+ return Response.success(101,"支付中......");
+ }
+
+}
diff --git a/src/main/java/com/ai/da/controller/PayPalCheckoutController.java b/src/main/java/com/ai/da/controller/PayPalCheckoutController.java
new file mode 100644
index 00000000..203da0e7
--- /dev/null
+++ b/src/main/java/com/ai/da/controller/PayPalCheckoutController.java
@@ -0,0 +1,72 @@
+package com.ai.da.controller;
+
+import com.ai.da.common.response.Response;
+import com.ai.da.service.PayPalCheckoutService;
+import com.paypal.http.HttpResponse;
+import com.paypal.http.exceptions.SerializeException;
+import com.paypal.orders.Order;
+import com.paypal.payments.Refund;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+
+@RestController
+@Api(tags = "PayPalCheckout接口")
+@RequestMapping("/api/paypal")
+public class PayPalCheckoutController {
+
+ @Resource
+ private PayPalCheckoutService payPalCheckoutService;
+
+ @ApiOperation(value = "创建订单")
+ @PostMapping(value = "/trade/{amount}")
+ public Response> createOrder(@PathVariable Integer amount, @RequestParam String returnUrl) throws SerializeException {
+ HashMap approvalUrl = payPalCheckoutService.createOrder(amount,returnUrl);
+ return Response.success(approvalUrl);
+ }
+
+ @ApiOperation(value = "ipn异步回调")
+ @PostMapping(value = "/ipn/back")
+ public Response callback(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ Boolean result = payPalCheckoutService.doPost(request, response);
+ if (result){
+ return Response.success(200,"success");
+ }else {
+ return Response.fail(500,"failure");
+ }
+ }
+
+ @ApiOperation(value = "查询指定订单")
+ @PostMapping(value = "/trade/query/{orderNo}")
+ public Response queryOrder(@PathVariable String orderNo) throws SerializeException {
+ Order s = payPalCheckoutService.queryOrder(orderNo);
+ return Response.success(s);
+ }
+
+ /** 不提供退款接口 */
+ @ApiOperation("申请退款")
+ @PostMapping("/trade/refund/{orderNo}/{reason}")
+ public Response> refund(@PathVariable String orderNo, @PathVariable String reason) throws IOException {
+ Boolean response = payPalCheckoutService.refundOrder(orderNo,reason);
+ if (response){
+ return Response.success();
+ }else {
+ return Response.fail("Request for refund failed.");
+ }
+ }
+
+ @ApiOperation("执行扣款")
+ @PostMapping("/trade/capture/{orderNo}")
+ public Response captureOrder(@PathVariable String orderNo) throws IOException {
+ Order response = payPalCheckoutService.captureOrder(orderNo);
+ return Response.success(response);
+ }
+}
+
diff --git a/src/main/java/com/ai/da/controller/ProductController.java b/src/main/java/com/ai/da/controller/ProductController.java
new file mode 100644
index 00000000..ac2e4be0
--- /dev/null
+++ b/src/main/java/com/ai/da/controller/ProductController.java
@@ -0,0 +1,42 @@
+package com.ai.da.controller;
+
+
+import com.ai.da.common.response.Response;
+import com.ai.da.mapper.primary.entity.Product;
+import com.ai.da.service.ProductService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+@CrossOrigin //开放前端的跨域访问
+@Api(tags = "商品管理")
+@RestController
+@RequestMapping("/api/product")
+public class ProductController {
+
+ @Resource
+ private ProductService productService;
+
+ @ApiOperation("测试接口")
+ @GetMapping("/test")
+ public Response test(){
+
+ return Response.success("now" + new Date());
+ }
+
+ @ApiOperation("商品列表")
+ @GetMapping("/list")
+ public Response> list(){
+
+ List list = productService.list();
+ return Response.success(list);
+ }
+
+}
diff --git a/src/main/java/com/ai/da/controller/PythonController.java b/src/main/java/com/ai/da/controller/PythonController.java
index da4a8d3f..895d311a 100644
--- a/src/main/java/com/ai/da/controller/PythonController.java
+++ b/src/main/java/com/ai/da/controller/PythonController.java
@@ -3,16 +3,18 @@ package com.ai.da.controller;
import com.ai.da.common.enums.CollectionLevel1TypeEnum;
import com.ai.da.common.response.Response;
import com.ai.da.common.utils.CopyUtil;
-import com.ai.da.mapper.entity.Library;
+import com.ai.da.mapper.primary.entity.Library;
import com.ai.da.model.dto.ChatFlushDTO;
import com.ai.da.model.dto.ChatRobotLibraryDTO;
import com.ai.da.model.dto.ChatSendDTO;
+import com.ai.da.model.dto.SuperResolutionDTO;
import com.ai.da.model.vo.ChatRobotVO;
import com.ai.da.model.vo.PythonLibraryVo;
import com.ai.da.model.vo.SysFileVO;
import com.ai.da.python.PythonService;
import com.ai.da.service.ChatRobotService;
import com.ai.da.service.LibraryService;
+import com.ai.da.service.SuperResolutionService;
import com.ai.da.service.SysFileService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -41,10 +43,12 @@ public class PythonController {
private SysFileService sysFileService;
@Resource
private LibraryService libraryService;
-
@Resource
private ChatRobotService chatRobotService;
+ @Resource
+ private SuperResolutionService superResolutionService;
+
@ApiOperation(value = "python服务保存图片到java服务")
@PostMapping("/saveGeneratePicture")
public Response upload(@RequestParam("file") MultipartFile file,
@@ -109,4 +113,10 @@ public class PythonController {
return Response.success(chatRobotService.chatBufferFlush(chatFlushDTO));
}
+ @ApiOperation(value = "超分辨率")
+ @PostMapping("/prepareForSR")
+ public Response> superResolution(@RequestBody List superResolutionDTO) {
+ return Response.success(superResolutionService.prepareForSR(superResolutionDTO));
+ }
+
}
diff --git a/src/main/java/com/ai/da/controller/SavedCollectionController.java b/src/main/java/com/ai/da/controller/SavedCollectionController.java
index 4373dc8b..f1672d97 100644
--- a/src/main/java/com/ai/da/controller/SavedCollectionController.java
+++ b/src/main/java/com/ai/da/controller/SavedCollectionController.java
@@ -1,15 +1,17 @@
package com.ai.da.controller;
+import cn.hutool.core.collection.CollectionUtil;
import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.context.UserContext;
import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.response.Response;
import com.ai.da.common.utils.CopyUtil;
import com.ai.da.common.utils.MinioUtil;
-import com.ai.da.mapper.TDesignPythonOutfitMapper;
-import com.ai.da.mapper.entity.Account;
-import com.ai.da.mapper.entity.TDesignPythonOutfit;
-import com.ai.da.mapper.entity.UserLikeGroup;
+import com.ai.da.mapper.primary.TDesignPythonOutfitMapper;
+import com.ai.da.mapper.primary.entity.Account;
+import com.ai.da.mapper.primary.entity.Library;
+import com.ai.da.mapper.primary.entity.TDesignPythonOutfit;
+import com.ai.da.mapper.primary.entity.UserLikeGroup;
import com.ai.da.model.dto.*;
import com.ai.da.model.vo.*;
import com.ai.da.service.*;
@@ -27,10 +29,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
@@ -49,6 +48,8 @@ public class SavedCollectionController {
private TDesignPythonOutfitMapper designPythonOutfitMapper;
@Resource
private MinioUtil minioUtil;
+ @Resource
+ private ClassificationService classificationService;
@ApiOperation(value = "History用户分页分组列表")
@PostMapping("/queryUserGroup")
@@ -67,7 +68,34 @@ public class SavedCollectionController {
if (Objects.nonNull(query.getEndDate())) {
queryWrapper.le("update_date", new Date(query.getEndDate()));
}
- queryWrapper.orderByDesc("id");
+ // 新增分类过滤
+ if (CollectionUtil.isNotEmpty(query.getClassificationIdList())) {
+ List historyIdList = new ArrayList<>();
+ if (query.getIntersection() == 0) {
+ for (Long classificationId : query.getClassificationIdList()) {
+ historyIdList.addAll(classificationService.getLibraryIdListByClassificationId(classificationId));
+ }
+ if (CollectionUtil.isNotEmpty(historyIdList)) {
+ queryWrapper.in("id", historyIdList);
+ }else {
+ return Response.success(PageBaseResponse.success(new Page<>()));
+ }
+ }else {
+ for (int i = 0; i < query.getClassificationIdList().size(); i++) {
+ List historyIdListByClassificationId = classificationService.getLibraryIdListByClassificationId(query.getClassificationIdList().get(i));
+ if (i == 0) {
+ historyIdList.addAll(historyIdListByClassificationId);
+ }else {
+ historyIdList.retainAll(historyIdListByClassificationId);
+ }
+ if (CollectionUtil.isEmpty(historyIdList)) {
+ return Response.success(PageBaseResponse.success(new Page<>()));
+ }
+ }
+ queryWrapper.in("id", historyIdList);
+ }
+ }
+ queryWrapper.orderByDesc("update_date");
IPage page = userLikeGroupService.getBaseMapper().selectPage(
new Page<>(query.getPage(), query.getSize()), queryWrapper);
if (CollectionUtils.isEmpty(page.getRecords())) {
diff --git a/src/main/java/com/ai/da/controller/TaskListController.java b/src/main/java/com/ai/da/controller/TaskListController.java
new file mode 100644
index 00000000..85485d50
--- /dev/null
+++ b/src/main/java/com/ai/da/controller/TaskListController.java
@@ -0,0 +1,40 @@
+package com.ai.da.controller;
+
+import com.ai.da.common.response.PageBaseResponse;
+import com.ai.da.common.response.Response;
+import com.ai.da.model.dto.QueryTaskHistoryDTO;
+import com.ai.da.model.dto.SuperResolutionDTO;
+import com.ai.da.model.dto.TaskDTO;
+import com.ai.da.model.vo.TaskVO;
+import com.ai.da.service.TaskListService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "任务列表模块")
+@Slf4j
+@RestController
+@RequestMapping("/api/tasks")
+public class TaskListController {
+
+ @Resource
+ private TaskListService taskListService;
+
+ @PostMapping("/getList")
+ @ApiOperation("获取未执行完的任务")
+ public Response>> getTaskList(@Valid @RequestBody List taskIdList) {
+ return Response.success(taskListService.getExecTask(taskIdList));
+ }
+
+ @PostMapping("/getAllTask")
+ @ApiOperation("获取所有任务")
+ public Response> getAllTask(@Valid @RequestBody QueryTaskHistoryDTO queryTaskHistoryDTO) {
+ return Response.success(taskListService.getAllTask(queryTaskHistoryDTO));
+ }
+
+}
diff --git a/src/main/java/com/ai/da/controller/WorkspaceController.java b/src/main/java/com/ai/da/controller/WorkspaceController.java
index 1de7008a..b0c089f0 100644
--- a/src/main/java/com/ai/da/controller/WorkspaceController.java
+++ b/src/main/java/com/ai/da/controller/WorkspaceController.java
@@ -1,9 +1,7 @@
package com.ai.da.controller;
import com.ai.da.common.response.Response;
-import com.ai.da.common.utils.MinioUtil;
-import com.ai.da.mapper.entity.Workspace;
-import com.ai.da.model.dto.ModelsDotDTO;
+import com.ai.da.mapper.primary.entity.Workspace;
import com.ai.da.model.dto.WorkspaceDTO;
import com.ai.da.model.enums.BizJson;
import com.ai.da.model.vo.ModelsVO;
@@ -19,9 +17,7 @@ import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.NoArgsConstructor;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
import java.io.FileNotFoundException;
import java.util.List;
diff --git a/src/main/java/com/ai/da/mapper/AccountLoginLogMapper.java b/src/main/java/com/ai/da/mapper/primary/AccountLoginLogMapper.java
similarity index 58%
rename from src/main/java/com/ai/da/mapper/AccountLoginLogMapper.java
rename to src/main/java/com/ai/da/mapper/primary/AccountLoginLogMapper.java
index 46d6e221..4d045456 100644
--- a/src/main/java/com/ai/da/mapper/AccountLoginLogMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/AccountLoginLogMapper.java
@@ -1,17 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Account;
-import com.ai.da.mapper.entity.AccountLoginLog;
-
-import java.util.List;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface AccountLoginLogMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.AccountLoginLog;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface AccountLoginLogMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/AccountMapper.java b/src/main/java/com/ai/da/mapper/primary/AccountMapper.java
similarity index 83%
rename from src/main/java/com/ai/da/mapper/AccountMapper.java
rename to src/main/java/com/ai/da/mapper/primary/AccountMapper.java
index dc8cb900..d9afae89 100644
--- a/src/main/java/com/ai/da/mapper/AccountMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/AccountMapper.java
@@ -1,32 +1,32 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Account;
-
-import java.util.List;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface AccountMapper extends CommonMapper {
-
- /**
- * 手机号批量查询
- *
- * @param phoneList
- * @return
- */
- List findByPhoneList(List phoneList);
-
- /**
- * 主键查询
- *
- * @param id
- * @return
- */
- Account findById(String id);
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.Account;
+
+import java.util.List;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface AccountMapper extends CommonMapper {
+
+ /**
+ * 手机号批量查询
+ *
+ * @param phoneList
+ * @return
+ */
+ List findByPhoneList(List phoneList);
+
+ /**
+ * 主键查询
+ *
+ * @param id
+ * @return
+ */
+ Account findById(String id);
+
+}
diff --git a/src/main/java/com/ai/da/mapper/ChatRobotMapper.java b/src/main/java/com/ai/da/mapper/primary/ChatRobotMapper.java
similarity index 68%
rename from src/main/java/com/ai/da/mapper/ChatRobotMapper.java
rename to src/main/java/com/ai/da/mapper/primary/ChatRobotMapper.java
index c404a90e..39b0690d 100644
--- a/src/main/java/com/ai/da/mapper/ChatRobotMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/ChatRobotMapper.java
@@ -1,9 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.ChatRobot;
-
-import java.util.List;
+import com.ai.da.mapper.primary.entity.ChatRobot;
/**
* Mapper 接口
diff --git a/src/main/java/com/ai/da/mapper/ClassificationMapper.java b/src/main/java/com/ai/da/mapper/primary/ClassificationMapper.java
similarity index 64%
rename from src/main/java/com/ai/da/mapper/ClassificationMapper.java
rename to src/main/java/com/ai/da/mapper/primary/ClassificationMapper.java
index fdc13893..16a692f7 100644
--- a/src/main/java/com/ai/da/mapper/ClassificationMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/ClassificationMapper.java
@@ -1,8 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.ChatRobot;
-import com.ai.da.mapper.entity.Classification;
+import com.ai.da.mapper.primary.entity.Classification;
/**
* Mapper 接口
diff --git a/src/main/java/com/ai/da/mapper/ClassificationRelLibraryMapper.java b/src/main/java/com/ai/da/mapper/primary/ClassificationRelLibraryMapper.java
similarity index 63%
rename from src/main/java/com/ai/da/mapper/ClassificationRelLibraryMapper.java
rename to src/main/java/com/ai/da/mapper/primary/ClassificationRelLibraryMapper.java
index f9094830..a778a40f 100644
--- a/src/main/java/com/ai/da/mapper/ClassificationRelLibraryMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/ClassificationRelLibraryMapper.java
@@ -1,8 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Classification;
-import com.ai.da.mapper.entity.ClassificationRelLibrary;
+import com.ai.da.mapper.primary.entity.ClassificationRelLibrary;
/**
* Mapper 接口
diff --git a/src/main/java/com/ai/da/mapper/CollectionElementMapper.java b/src/main/java/com/ai/da/mapper/primary/CollectionElementMapper.java
similarity index 64%
rename from src/main/java/com/ai/da/mapper/CollectionElementMapper.java
rename to src/main/java/com/ai/da/mapper/primary/CollectionElementMapper.java
index 0c8a0613..55a3188a 100644
--- a/src/main/java/com/ai/da/mapper/CollectionElementMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/CollectionElementMapper.java
@@ -1,16 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.CollectionElement;
-
-import java.util.List;
-
-/**
- * Mapper 接口
- *
- * @author yanglei
- * @since 2022-10-13
- */
-public interface CollectionElementMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.CollectionElement;
+
+/**
+ * Mapper 接口
+ *
+ * @author yanglei
+ * @since 2022-10-13
+ */
+public interface CollectionElementMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/CollectionMapper.java b/src/main/java/com/ai/da/mapper/primary/CollectionMapper.java
similarity index 66%
rename from src/main/java/com/ai/da/mapper/CollectionMapper.java
rename to src/main/java/com/ai/da/mapper/primary/CollectionMapper.java
index 582de4ef..b9a7bd1e 100644
--- a/src/main/java/com/ai/da/mapper/CollectionMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/CollectionMapper.java
@@ -1,18 +1,15 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Account;
-import com.ai.da.mapper.entity.Collection;
-
-import java.util.List;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface CollectionMapper extends CommonMapper {
- //返回插入数据后生成的主键
- Long insertCollection(Collection collection);
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.Collection;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface CollectionMapper extends CommonMapper {
+ //返回插入数据后生成的主键
+ Long insertCollection(Collection collection);
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/CollocationMapper.java b/src/main/java/com/ai/da/mapper/primary/CollocationMapper.java
new file mode 100644
index 00000000..7e9af210
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/CollocationMapper.java
@@ -0,0 +1,13 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.Collection;
+import com.ai.da.mapper.primary.entity.Collocation;
+import com.ai.da.python.vo.DesignPythonItem;
+
+import java.util.List;
+
+public interface CollocationMapper extends CommonMapper {
+
+ List getCollocationListBySketch(String apparel, String styleCategory);
+}
\ No newline at end of file
diff --git a/src/main/java/com/ai/da/mapper/ColorLoopUpTableMapper.java b/src/main/java/com/ai/da/mapper/primary/ColorLoopUpTableMapper.java
similarity index 70%
rename from src/main/java/com/ai/da/mapper/ColorLoopUpTableMapper.java
rename to src/main/java/com/ai/da/mapper/primary/ColorLoopUpTableMapper.java
index 9dcd8892..5accffbb 100644
--- a/src/main/java/com/ai/da/mapper/ColorLoopUpTableMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/ColorLoopUpTableMapper.java
@@ -1,14 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.ColorLookupTable;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-09-30
- */
-public interface ColorLoopUpTableMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.ColorLookupTable;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-09-30
+ */
+public interface ColorLoopUpTableMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/CreditsDetailMapper.java b/src/main/java/com/ai/da/mapper/primary/CreditsDetailMapper.java
new file mode 100644
index 00000000..1ee33d4e
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/CreditsDetailMapper.java
@@ -0,0 +1,7 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.mapper.primary.entity.CreditsDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface CreditsDetailMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/ai/da/mapper/DesignHistoryMapper.java b/src/main/java/com/ai/da/mapper/primary/DesignHistoryMapper.java
similarity index 61%
rename from src/main/java/com/ai/da/mapper/DesignHistoryMapper.java
rename to src/main/java/com/ai/da/mapper/primary/DesignHistoryMapper.java
index 65ad15c2..c850e88a 100644
--- a/src/main/java/com/ai/da/mapper/DesignHistoryMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/DesignHistoryMapper.java
@@ -1,15 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.AccountLoginLog;
-import com.ai.da.mapper.entity.DesignHistory;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface DesignHistoryMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.DesignHistory;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface DesignHistoryMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/DesignItemDetailMapper.java b/src/main/java/com/ai/da/mapper/primary/DesignItemDetailMapper.java
similarity index 62%
rename from src/main/java/com/ai/da/mapper/DesignItemDetailMapper.java
rename to src/main/java/com/ai/da/mapper/primary/DesignItemDetailMapper.java
index 6d299294..69add05d 100644
--- a/src/main/java/com/ai/da/mapper/DesignItemDetailMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/DesignItemDetailMapper.java
@@ -1,15 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.DesignItem;
-import com.ai.da.mapper.entity.DesignItemDetail;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface DesignItemDetailMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.DesignItemDetail;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface DesignItemDetailMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/DesignItemDetailPrintMapper.java b/src/main/java/com/ai/da/mapper/primary/DesignItemDetailPrintMapper.java
similarity index 61%
rename from src/main/java/com/ai/da/mapper/DesignItemDetailPrintMapper.java
rename to src/main/java/com/ai/da/mapper/primary/DesignItemDetailPrintMapper.java
index 7f522fb1..5a1bdbb5 100644
--- a/src/main/java/com/ai/da/mapper/DesignItemDetailPrintMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/DesignItemDetailPrintMapper.java
@@ -1,7 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.DesignItemDetailPrint;
+import com.ai.da.mapper.primary.entity.DesignItemDetailPrint;
public interface DesignItemDetailPrintMapper extends CommonMapper {
diff --git a/src/main/java/com/ai/da/mapper/DesignItemMapper.java b/src/main/java/com/ai/da/mapper/primary/DesignItemMapper.java
similarity index 67%
rename from src/main/java/com/ai/da/mapper/DesignItemMapper.java
rename to src/main/java/com/ai/da/mapper/primary/DesignItemMapper.java
index 26222874..cdede99b 100644
--- a/src/main/java/com/ai/da/mapper/DesignItemMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/DesignItemMapper.java
@@ -1,16 +1,15 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Design;
-import com.ai.da.mapper.entity.DesignItem;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface DesignItemMapper extends CommonMapper {
-
- Long insertDesignItem(DesignItem designItem);
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.DesignItem;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface DesignItemMapper extends CommonMapper {
+
+ Long insertDesignItem(DesignItem designItem);
+}
diff --git a/src/main/java/com/ai/da/mapper/DesignMapper.java b/src/main/java/com/ai/da/mapper/primary/DesignMapper.java
similarity index 78%
rename from src/main/java/com/ai/da/mapper/DesignMapper.java
rename to src/main/java/com/ai/da/mapper/primary/DesignMapper.java
index 3c7c3de9..e6b1aa58 100644
--- a/src/main/java/com/ai/da/mapper/DesignMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/DesignMapper.java
@@ -1,21 +1,22 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Design;
-import com.ai.da.model.dto.UserDesignStatisticDTO;
-
-import java.util.List;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface DesignMapper extends CommonMapper {
-
- //返回插入数据后生成的主键
- Long insertDesign(Design design);
-
- List getDesignStatistic(String startTime, String endTime);
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+//import com.ai.da.mapper.entity.Design;
+import com.ai.da.model.dto.UserDesignStatisticDTO;
+
+import java.util.List;
+import com.ai.da.mapper.primary.entity.Design;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface DesignMapper extends CommonMapper {
+
+ //返回插入数据后生成的主键
+ Long insertDesign(Design design);
+
+ List getDesignStatistic(String startTime, String endTime);
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/DressingMapper.java b/src/main/java/com/ai/da/mapper/primary/DressingMapper.java
new file mode 100644
index 00000000..ca0f5bf5
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/DressingMapper.java
@@ -0,0 +1,11 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.Dressing;
+
+import java.util.List;
+
+public interface DressingMapper extends CommonMapper {
+
+ List getOtherSketchCategoryNameList(Long id, String styleCategory);
+}
diff --git a/src/main/java/com/ai/da/mapper/GenerateCancelMapper.java b/src/main/java/com/ai/da/mapper/primary/GenerateCancelMapper.java
similarity index 60%
rename from src/main/java/com/ai/da/mapper/GenerateCancelMapper.java
rename to src/main/java/com/ai/da/mapper/primary/GenerateCancelMapper.java
index 3e24ea09..3a9cfee8 100644
--- a/src/main/java/com/ai/da/mapper/GenerateCancelMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/GenerateCancelMapper.java
@@ -1,7 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.GenerateCancel;
+import com.ai.da.mapper.primary.entity.GenerateCancel;
public interface GenerateCancelMapper extends CommonMapper {
}
diff --git a/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java b/src/main/java/com/ai/da/mapper/primary/GenerateDetailMapper.java
similarity index 83%
rename from src/main/java/com/ai/da/mapper/GenerateDetailMapper.java
rename to src/main/java/com/ai/da/mapper/primary/GenerateDetailMapper.java
index d4c0212d..6c0ed893 100644
--- a/src/main/java/com/ai/da/mapper/GenerateDetailMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/GenerateDetailMapper.java
@@ -1,7 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.GenerateDetail;
+import com.ai.da.mapper.primary.entity.GenerateDetail;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/com/ai/da/mapper/GenerateMapper.java b/src/main/java/com/ai/da/mapper/primary/GenerateMapper.java
similarity index 60%
rename from src/main/java/com/ai/da/mapper/GenerateMapper.java
rename to src/main/java/com/ai/da/mapper/primary/GenerateMapper.java
index 43436d81..9da22dbb 100644
--- a/src/main/java/com/ai/da/mapper/GenerateMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/GenerateMapper.java
@@ -1,7 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Generate;
+import com.ai.da.mapper.primary.entity.Generate;
public interface GenerateMapper extends CommonMapper {
}
diff --git a/src/main/java/com/ai/da/mapper/LibraryCopyMapper.java b/src/main/java/com/ai/da/mapper/primary/LibraryCopyMapper.java
similarity index 65%
rename from src/main/java/com/ai/da/mapper/LibraryCopyMapper.java
rename to src/main/java/com/ai/da/mapper/primary/LibraryCopyMapper.java
index 3cec4a2e..6d7954a4 100644
--- a/src/main/java/com/ai/da/mapper/LibraryCopyMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/LibraryCopyMapper.java
@@ -1,8 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Library;
-import com.ai.da.mapper.entity.LibraryCopy;
+import com.ai.da.mapper.primary.entity.LibraryCopy;
/**
* Mapper 接口
diff --git a/src/main/java/com/ai/da/mapper/LibraryMapper.java b/src/main/java/com/ai/da/mapper/primary/LibraryMapper.java
similarity index 62%
rename from src/main/java/com/ai/da/mapper/LibraryMapper.java
rename to src/main/java/com/ai/da/mapper/primary/LibraryMapper.java
index 6e438d74..c78aa467 100644
--- a/src/main/java/com/ai/da/mapper/LibraryMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/LibraryMapper.java
@@ -1,15 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Design;
-import com.ai.da.mapper.entity.Library;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface LibraryMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.Library;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface LibraryMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/LibraryModelPointCopyMapper.java b/src/main/java/com/ai/da/mapper/primary/LibraryModelPointCopyMapper.java
similarity index 63%
rename from src/main/java/com/ai/da/mapper/LibraryModelPointCopyMapper.java
rename to src/main/java/com/ai/da/mapper/primary/LibraryModelPointCopyMapper.java
index 05447f66..93767df6 100644
--- a/src/main/java/com/ai/da/mapper/LibraryModelPointCopyMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/LibraryModelPointCopyMapper.java
@@ -1,8 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.LibraryModelPoint;
-import com.ai.da.mapper.entity.LibraryModelPointCopy;
+import com.ai.da.mapper.primary.entity.LibraryModelPointCopy;
/**
* Mapper 接口
diff --git a/src/main/java/com/ai/da/mapper/LibraryModelPointMapper.java b/src/main/java/com/ai/da/mapper/primary/LibraryModelPointMapper.java
similarity index 62%
rename from src/main/java/com/ai/da/mapper/LibraryModelPointMapper.java
rename to src/main/java/com/ai/da/mapper/primary/LibraryModelPointMapper.java
index c1cfd1ba..ee79efad 100644
--- a/src/main/java/com/ai/da/mapper/LibraryModelPointMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/LibraryModelPointMapper.java
@@ -1,15 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.LibraryModelPoint;
-import com.ai.da.mapper.entity.SysFile;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-11-11
- */
-public interface LibraryModelPointMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.LibraryModelPoint;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-11-11
+ */
+public interface LibraryModelPointMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/OrderInfoMapper.java b/src/main/java/com/ai/da/mapper/primary/OrderInfoMapper.java
new file mode 100644
index 00000000..b9d74a0f
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/OrderInfoMapper.java
@@ -0,0 +1,8 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.mapper.primary.entity.OrderInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface OrderInfoMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/PanToneMapper.java b/src/main/java/com/ai/da/mapper/primary/PanToneMapper.java
similarity index 75%
rename from src/main/java/com/ai/da/mapper/PanToneMapper.java
rename to src/main/java/com/ai/da/mapper/primary/PanToneMapper.java
index a83be55a..81e47ed0 100644
--- a/src/main/java/com/ai/da/mapper/PanToneMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/PanToneMapper.java
@@ -1,20 +1,19 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.PanTone;
-import com.ai.da.model.dto.GetRgbByHsvBatchDTO;
-import io.swagger.v3.oas.annotations.Parameter;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface PanToneMapper extends CommonMapper {
-
- List getRgbByHsvBatch(@Param("rgbByHsvBatch") List rgbByHsvBatch);
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.PanTone;
+import com.ai.da.model.dto.GetRgbByHsvBatchDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface PanToneMapper extends CommonMapper {
+
+ List getRgbByHsvBatch(@Param("rgbByHsvBatch") List rgbByHsvBatch);
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/PaymentInfoMapper.java b/src/main/java/com/ai/da/mapper/primary/PaymentInfoMapper.java
new file mode 100644
index 00000000..27b147a4
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/PaymentInfoMapper.java
@@ -0,0 +1,7 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.mapper.primary.entity.PaymentInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface PaymentInfoMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/ProductMapper.java b/src/main/java/com/ai/da/mapper/primary/ProductMapper.java
new file mode 100644
index 00000000..69850d55
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/ProductMapper.java
@@ -0,0 +1,8 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.mapper.primary.entity.Product;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface ProductMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/PythonTAllInfoMapper.java b/src/main/java/com/ai/da/mapper/primary/PythonTAllInfoMapper.java
similarity index 56%
rename from src/main/java/com/ai/da/mapper/PythonTAllInfoMapper.java
rename to src/main/java/com/ai/da/mapper/primary/PythonTAllInfoMapper.java
index 9b4bbd14..b5e7a49c 100644
--- a/src/main/java/com/ai/da/mapper/PythonTAllInfoMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/PythonTAllInfoMapper.java
@@ -1,11 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.PythonTAllInfo;
-import org.apache.ibatis.annotations.Param;
-import org.springframework.data.domain.Pageable;
-
-import java.util.List;
+import com.ai.da.mapper.primary.entity.PythonTAllInfo;
/**
* (PythonTAllInfo)表数据库访问层
diff --git a/src/main/java/com/ai/da/mapper/primary/RefundInfoMapper.java b/src/main/java/com/ai/da/mapper/primary/RefundInfoMapper.java
new file mode 100644
index 00000000..d625e3ed
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/RefundInfoMapper.java
@@ -0,0 +1,9 @@
+package com.ai.da.mapper.primary;
+
+
+import com.ai.da.mapper.primary.entity.RefundInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface RefundInfoMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/SysFileMapper.java b/src/main/java/com/ai/da/mapper/primary/SysFileMapper.java
similarity index 62%
rename from src/main/java/com/ai/da/mapper/SysFileMapper.java
rename to src/main/java/com/ai/da/mapper/primary/SysFileMapper.java
index ab4d995d..94842a00 100644
--- a/src/main/java/com/ai/da/mapper/SysFileMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/SysFileMapper.java
@@ -1,15 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Design;
-import com.ai.da.mapper.entity.SysFile;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-10-6
- */
-public interface SysFileMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.SysFile;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-10-6
+ */
+public interface SysFileMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/TCollectionElementRelationMapper.java b/src/main/java/com/ai/da/mapper/primary/TCollectionElementRelationMapper.java
similarity index 76%
rename from src/main/java/com/ai/da/mapper/TCollectionElementRelationMapper.java
rename to src/main/java/com/ai/da/mapper/primary/TCollectionElementRelationMapper.java
index a09b17bf..508a7533 100644
--- a/src/main/java/com/ai/da/mapper/TCollectionElementRelationMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/TCollectionElementRelationMapper.java
@@ -1,7 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.TCollectionElementRelation;
+import com.ai.da.mapper.primary.entity.TCollectionElementRelation;
import org.apache.ibatis.annotations.Mapper;
/**
diff --git a/src/main/java/com/ai/da/mapper/TDesignPythonOutfitDetailMapper.java b/src/main/java/com/ai/da/mapper/primary/TDesignPythonOutfitDetailMapper.java
similarity index 86%
rename from src/main/java/com/ai/da/mapper/TDesignPythonOutfitDetailMapper.java
rename to src/main/java/com/ai/da/mapper/primary/TDesignPythonOutfitDetailMapper.java
index 68f42c82..ecdf8b45 100644
--- a/src/main/java/com/ai/da/mapper/TDesignPythonOutfitDetailMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/TDesignPythonOutfitDetailMapper.java
@@ -1,7 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.TDesignPythonOutfitDetail;
+import com.ai.da.mapper.primary.entity.TDesignPythonOutfitDetail;
import com.ai.da.model.vo.TDesignPythonOutfitDetailVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
diff --git a/src/main/java/com/ai/da/mapper/TDesignPythonOutfitMapper.java b/src/main/java/com/ai/da/mapper/primary/TDesignPythonOutfitMapper.java
similarity index 86%
rename from src/main/java/com/ai/da/mapper/TDesignPythonOutfitMapper.java
rename to src/main/java/com/ai/da/mapper/primary/TDesignPythonOutfitMapper.java
index 1423c794..c3284391 100644
--- a/src/main/java/com/ai/da/mapper/TDesignPythonOutfitMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/TDesignPythonOutfitMapper.java
@@ -1,8 +1,8 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.TDesignPythonOutfit;
+import com.ai.da.mapper.primary.entity.TDesignPythonOutfit;
import com.ai.da.model.vo.TDesignPythonOutfitVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
diff --git a/src/main/java/com/ai/da/mapper/primary/TaskListMapper.java b/src/main/java/com/ai/da/mapper/primary/TaskListMapper.java
new file mode 100644
index 00000000..cbda70e9
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/TaskListMapper.java
@@ -0,0 +1,7 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.mapper.primary.entity.TaskList;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface TaskListMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/ai/da/mapper/TrialOrderMapper.java b/src/main/java/com/ai/da/mapper/primary/TrialOrderMapper.java
similarity index 61%
rename from src/main/java/com/ai/da/mapper/TrialOrderMapper.java
rename to src/main/java/com/ai/da/mapper/primary/TrialOrderMapper.java
index 45a9a621..39def53f 100644
--- a/src/main/java/com/ai/da/mapper/TrialOrderMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/TrialOrderMapper.java
@@ -1,10 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Account;
-import com.ai.da.mapper.entity.TrialOrder;
-
-import java.util.List;
+import com.ai.da.mapper.primary.entity.TrialOrder;
/**
* Mapper 接口
diff --git a/src/main/java/com/ai/da/mapper/UserLikeGroupMapper.java b/src/main/java/com/ai/da/mapper/primary/UserLikeGroupMapper.java
similarity index 71%
rename from src/main/java/com/ai/da/mapper/UserLikeGroupMapper.java
rename to src/main/java/com/ai/da/mapper/primary/UserLikeGroupMapper.java
index df5f4629..4d71e0b2 100644
--- a/src/main/java/com/ai/da/mapper/UserLikeGroupMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/UserLikeGroupMapper.java
@@ -1,16 +1,15 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Design;
-import com.ai.da.mapper.entity.UserLikeGroup;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface UserLikeGroupMapper extends CommonMapper {
- //返回插入数据后生成的主键
- Long insertUserLikeGroup(UserLikeGroup userLikeGroup);
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.UserLikeGroup;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface UserLikeGroupMapper extends CommonMapper {
+ //返回插入数据后生成的主键
+ Long insertUserLikeGroup(UserLikeGroup userLikeGroup);
+}
diff --git a/src/main/java/com/ai/da/mapper/UserLikeMapper.java b/src/main/java/com/ai/da/mapper/primary/UserLikeMapper.java
similarity index 70%
rename from src/main/java/com/ai/da/mapper/UserLikeMapper.java
rename to src/main/java/com/ai/da/mapper/primary/UserLikeMapper.java
index 35ae30df..1d5e4761 100644
--- a/src/main/java/com/ai/da/mapper/UserLikeMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/UserLikeMapper.java
@@ -1,14 +1,14 @@
-package com.ai.da.mapper;
-
-import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.UserLike;
-
-/**
- * Mapper 接口
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-public interface UserLikeMapper extends CommonMapper {
-
-}
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.UserLike;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+public interface UserLikeMapper extends CommonMapper {
+
+}
diff --git a/src/main/java/com/ai/da/mapper/WorkspaceMapper.java b/src/main/java/com/ai/da/mapper/primary/WorkspaceMapper.java
similarity index 85%
rename from src/main/java/com/ai/da/mapper/WorkspaceMapper.java
rename to src/main/java/com/ai/da/mapper/primary/WorkspaceMapper.java
index e1525d4a..214e97c0 100644
--- a/src/main/java/com/ai/da/mapper/WorkspaceMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/WorkspaceMapper.java
@@ -1,7 +1,7 @@
-package com.ai.da.mapper;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
-import com.ai.da.mapper.entity.Workspace;
+import com.ai.da.mapper.primary.entity.Workspace;
import com.ai.da.model.vo.WorkspaceVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
diff --git a/src/main/java/com/ai/da/mapper/entity/Account.java b/src/main/java/com/ai/da/mapper/primary/entity/Account.java
similarity index 91%
rename from src/main/java/com/ai/da/mapper/entity/Account.java
rename to src/main/java/com/ai/da/mapper/primary/entity/Account.java
index 3dd607b6..ad574fe7 100644
--- a/src/main/java/com/ai/da/mapper/entity/Account.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Account.java
@@ -1,83 +1,89 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_account")
-public class Account implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * 邮箱
- */
- private String userEmail;
-
- /**
- * 用户名
- */
- private String userName;
-
- /**
- * 密码
- */
- private String userPassword;
-
- /**
- * 语言
- */
- private String language;
-
- /**
- * 城市
- */
- private String country;
-
- /**
- * 账户有效期开始时间
- */
- private Long validStartTime;
-
- /**
- * 账户有效期结束时间
- */
- private Long validEndTime;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-
- private Integer isTrial;
-
- private Integer isBeginner;
-
- private String browserIdentifiers;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_account")
+public class Account implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 邮箱
+ */
+ private String userEmail;
+
+ /**
+ * 用户名
+ */
+ private String userName;
+
+ /**
+ * 密码
+ */
+ private String userPassword;
+
+ /**
+ * 语言
+ */
+ private String language;
+
+ /**
+ * 城市
+ */
+ private String country;
+
+ /**
+ * 账户有效期开始时间
+ */
+ private Long validStartTime;
+
+ /**
+ * 账户有效期结束时间
+ */
+ private Long validEndTime;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+
+ private Integer isTrial;
+
+ private Integer isBeginner;
+
+ private String browserIdentifiers;
+
+ /**
+ * 积分
+ */
+ private BigDecimal credits;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/AccountLoginLog.java b/src/main/java/com/ai/da/mapper/primary/entity/AccountLoginLog.java
similarity index 91%
rename from src/main/java/com/ai/da/mapper/entity/AccountLoginLog.java
rename to src/main/java/com/ai/da/mapper/primary/entity/AccountLoginLog.java
index 9218813e..1eb5fb30 100644
--- a/src/main/java/com/ai/da/mapper/entity/AccountLoginLog.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/AccountLoginLog.java
@@ -1,53 +1,53 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 账户登入日志
- *
- * @author yl
- * @since 2022-09-03
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_account_login_log")
-public class AccountLoginLog implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * 账户id
- */
- private Long accountId;
-
- /**
- * ip
- */
- private String ip;
-
- /**
- * ip地址
- */
- private String ipAddr;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 账户登入日志
+ *
+ * @author yl
+ * @since 2022-09-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_account_login_log")
+public class AccountLoginLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 账户id
+ */
+ private Long accountId;
+
+ /**
+ * ip
+ */
+ private String ip;
+
+ /**
+ * ip地址
+ */
+ private String ipAddr;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/BaseEntity.java b/src/main/java/com/ai/da/mapper/primary/entity/BaseEntity.java
new file mode 100644
index 00000000..f78fb748
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/BaseEntity.java
@@ -0,0 +1,44 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 创建时间
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * 更新时间
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * 是否已删除
+ */
+// private Integer isDeleted;
+
+ /**
+ * 用户ID
+ */
+// private Long userId;
+
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/ChatRobot.java b/src/main/java/com/ai/da/mapper/primary/entity/ChatRobot.java
similarity index 94%
rename from src/main/java/com/ai/da/mapper/entity/ChatRobot.java
rename to src/main/java/com/ai/da/mapper/primary/entity/ChatRobot.java
index dd470187..31397ada 100644
--- a/src/main/java/com/ai/da/mapper/entity/ChatRobot.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/ChatRobot.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -11,7 +11,6 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
-import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/src/main/java/com/ai/da/mapper/entity/Classification.java b/src/main/java/com/ai/da/mapper/primary/entity/Classification.java
similarity index 95%
rename from src/main/java/com/ai/da/mapper/entity/Classification.java
rename to src/main/java/com/ai/da/mapper/primary/entity/Classification.java
index 65a8c238..b41a2b0f 100644
--- a/src/main/java/com/ai/da/mapper/entity/Classification.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Classification.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -10,7 +10,6 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
-import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/src/main/java/com/ai/da/mapper/entity/ClassificationRelLibrary.java b/src/main/java/com/ai/da/mapper/primary/entity/ClassificationRelLibrary.java
similarity index 96%
rename from src/main/java/com/ai/da/mapper/entity/ClassificationRelLibrary.java
rename to src/main/java/com/ai/da/mapper/primary/entity/ClassificationRelLibrary.java
index c8449830..41649ab3 100644
--- a/src/main/java/com/ai/da/mapper/entity/ClassificationRelLibrary.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/ClassificationRelLibrary.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/src/main/java/com/ai/da/mapper/entity/Collection.java b/src/main/java/com/ai/da/mapper/primary/entity/Collection.java
similarity index 86%
rename from src/main/java/com/ai/da/mapper/entity/Collection.java
rename to src/main/java/com/ai/da/mapper/primary/entity/Collection.java
index 1ff7cbb2..73f9a769 100644
--- a/src/main/java/com/ai/da/mapper/entity/Collection.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Collection.java
@@ -1,53 +1,52 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_collection")
-public class Collection implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * 用户ID
- */
- private Long accountId;
-
- /**
- * mood模板id
- */
- private String moodTemplateId;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_collection")
+public class Collection implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 用户ID
+ */
+ private Long accountId;
+
+ /**
+ * mood模板id
+ */
+ private String moodTemplateId;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/CollectionElement.java b/src/main/java/com/ai/da/mapper/primary/entity/CollectionElement.java
similarity index 92%
rename from src/main/java/com/ai/da/mapper/entity/CollectionElement.java
rename to src/main/java/com/ai/da/mapper/primary/entity/CollectionElement.java
index 320a8ed7..b15b9418 100644
--- a/src/main/java/com/ai/da/mapper/entity/CollectionElement.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/CollectionElement.java
@@ -1,87 +1,87 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_collection_element")
-public class CollectionElement implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * 用户ID
- */
- private Long accountId;
- /**
- * collectionId
- */
- private Long collectionId;
-
- private String type;
-
- /**
- * 一级类型
- */
- private String level1Type;
-
- /**
- * 二级类型
- */
- private String level2Type;
-
- /**
- * 元素名(如果是颜色board 存潘通id+潘通名字 形式 ""11_mds")
- */
- private String name;
-
- /**
- * 元素存放地址
- */
- private String url;
- /**
- * 是否pin 1pin 0 不pin
- */
- @TableField("is_pin")
- private Byte hasPin;
- /**
- * 颜色的rgb值 空格分割
- */
- private String colorRgb;
- /**
- * md5值
- */
- private String md5;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_collection_element")
+public class CollectionElement implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 用户ID
+ */
+ private Long accountId;
+ /**
+ * collectionId
+ */
+ private Long collectionId;
+
+ private String type;
+
+ /**
+ * 一级类型
+ */
+ private String level1Type;
+
+ /**
+ * 二级类型
+ */
+ private String level2Type;
+
+ /**
+ * 元素名(如果是颜色board 存潘通id+潘通名字 形式 ""11_mds")
+ */
+ private String name;
+
+ /**
+ * 元素存放地址
+ */
+ private String url;
+ /**
+ * 是否pin 1pin 0 不pin
+ */
+ @TableField("is_pin")
+ private Byte hasPin;
+ /**
+ * 颜色的rgb值 空格分割
+ */
+ private String colorRgb;
+ /**
+ * md5值
+ */
+ private String md5;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Collocation.java b/src/main/java/com/ai/da/mapper/primary/entity/Collocation.java
new file mode 100644
index 00000000..cbc6edba
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Collocation.java
@@ -0,0 +1,50 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("collocation")
+public class Collocation implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 用户ID
+ */
+ private String name;
+
+ /**
+ * mood模板id
+ */
+ private Integer isSystem;
+
+ private Long userId;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+
+ private Integer isDeleted;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/ColorLookupTable.java b/src/main/java/com/ai/da/mapper/primary/entity/ColorLookupTable.java
similarity index 75%
rename from src/main/java/com/ai/da/mapper/entity/ColorLookupTable.java
rename to src/main/java/com/ai/da/mapper/primary/entity/ColorLookupTable.java
index b26cec78..04515738 100644
--- a/src/main/java/com/ai/da/mapper/entity/ColorLookupTable.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/ColorLookupTable.java
@@ -1,35 +1,32 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-09-30
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("color_lookup_table")
-public class ColorLookupTable implements Serializable {
-
- private static final long serialVersionUID = 1L;
- /**
- * colorValue
- */
- private Integer colorValue;
-
- /**
- * color_index
- */
- private Integer colorIndex;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-09-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("color_lookup_table")
+public class ColorLookupTable implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * colorValue
+ */
+ private Integer colorValue;
+
+ /**
+ * color_index
+ */
+ private Integer colorIndex;
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/CreditsDetail.java b/src/main/java/com/ai/da/mapper/primary/entity/CreditsDetail.java
new file mode 100644
index 00000000..1422ba4c
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/CreditsDetail.java
@@ -0,0 +1,21 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("t_credits_detail")
+public class CreditsDetail extends BaseEntity {
+ /** 用户id */
+ private Long accountId;
+ /** 积分变更事件 */
+ private String changeEvent;
+ /** 变更积分 ( + 表示加,- 表示减) */
+ private String changedCredits;
+ /** 当前积分 */
+ private BigDecimal credits;
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/CustomerData.java b/src/main/java/com/ai/da/mapper/primary/entity/CustomerData.java
new file mode 100644
index 00000000..0056e030
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/CustomerData.java
@@ -0,0 +1,23 @@
+package com.ai.da.mapper.primary.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class CustomerData {
+ private String mbrCode;
+ private String mbrName;
+ private String mbrMobile;
+ private String mbrGroup;
+ private String mbrStatus;
+ private Date joinDate;
+ private String mbrIssue;
+ private int birthMonth;
+ private String mbrSex;
+ private double offBonus;
+ private double effBonus;
+ private double sumBonus;
+
+ private double lastMonth;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/Design.java b/src/main/java/com/ai/da/mapper/primary/entity/Design.java
similarity index 89%
rename from src/main/java/com/ai/da/mapper/entity/Design.java
rename to src/main/java/com/ai/da/mapper/primary/entity/Design.java
index 8c990b6f..f891ab78 100644
--- a/src/main/java/com/ai/da/mapper/entity/Design.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Design.java
@@ -1,73 +1,72 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_design")
-public class Design implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
- /**
- * 用户ID
- */
- private Long accountId;
- /**
- * collectionId
- */
- private Long collectionId;
- /**
- * 模特id
- */
- private Long templateId;
-
- private String modelType;
-
- /**
- * system scale值
- */
- private BigDecimal systemScale;
-
- /**
- * 控制生成类型的参数,两个选项:“overall”或“single”
- */
- private String singleOverall;
-
- /**
- * single模式下的类别选择参数 选项有outwear,dress,blouse,skirt,trousers
- */
- private String switchCategory;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_design")
+public class Design implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 用户ID
+ */
+ private Long accountId;
+ /**
+ * collectionId
+ */
+ private Long collectionId;
+ /**
+ * 模特id
+ */
+ private Long templateId;
+
+ private String modelType;
+
+ /**
+ * system scale值
+ */
+ private BigDecimal systemScale;
+
+ /**
+ * 控制生成类型的参数,两个选项:“overall”或“single”
+ */
+ private String singleOverall;
+
+ /**
+ * single模式下的类别选择参数 选项有outwear,dress,blouse,skirt,trousers
+ */
+ private String switchCategory;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/DesignHistory.java b/src/main/java/com/ai/da/mapper/primary/entity/DesignHistory.java
similarity index 91%
rename from src/main/java/com/ai/da/mapper/entity/DesignHistory.java
rename to src/main/java/com/ai/da/mapper/primary/entity/DesignHistory.java
index 87f11e7f..6d9af783 100644
--- a/src/main/java/com/ai/da/mapper/entity/DesignHistory.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/DesignHistory.java
@@ -1,55 +1,55 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_design_history")
-public class DesignHistory implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
- /**
- * 用户ID
- */
- private Long accountId;
-
- /**
- * collectionId
- */
- private Long collectionId;
-
- /**
- * md5值
- */
- private String md5;
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_design_history")
+public class DesignHistory implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 用户ID
+ */
+ private Long accountId;
+
+ /**
+ * collectionId
+ */
+ private Long collectionId;
+
+ /**
+ * md5值
+ */
+ private String md5;
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/DesignItem.java b/src/main/java/com/ai/da/mapper/primary/entity/DesignItem.java
similarity index 93%
rename from src/main/java/com/ai/da/mapper/entity/DesignItem.java
rename to src/main/java/com/ai/da/mapper/primary/entity/DesignItem.java
index 7a47111b..f6532eea 100644
--- a/src/main/java/com/ai/da/mapper/entity/DesignItem.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/DesignItem.java
@@ -1,75 +1,75 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_design_item")
-public class DesignItem implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
- /**
- * 用户ID
- */
- private Long accountId;
- /**
- * collectionId
- */
- private Long collectionId;
- /**
- * designId
- */
- private Long designId;
-
- /**
- * print scale值
- */
- private String printScale;
-
- /**
- * design后的用户文件地址(python 返回)
- */
- private String designUrl;
-
- /**
- * 二次(高级,基础design的图再次design)design后的用户文件地址(python 返回)
- */
- private String highDesignUrl;
- /**
- * 是否like 0 否 1是
- */
- @TableField("is_like")
- private Byte hasLike;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_design_item")
+public class DesignItem implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 用户ID
+ */
+ private Long accountId;
+ /**
+ * collectionId
+ */
+ private Long collectionId;
+ /**
+ * designId
+ */
+ private Long designId;
+
+ /**
+ * print scale值
+ */
+ private String printScale;
+
+ /**
+ * design后的用户文件地址(python 返回)
+ */
+ private String designUrl;
+
+ /**
+ * 二次(高级,基础design的图再次design)design后的用户文件地址(python 返回)
+ */
+ private String highDesignUrl;
+ /**
+ * 是否like 0 否 1是
+ */
+ @TableField("is_like")
+ private Byte hasLike;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/DesignItemDetail.java b/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetail.java
similarity index 93%
rename from src/main/java/com/ai/da/mapper/entity/DesignItemDetail.java
rename to src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetail.java
index f3a866b9..437a9264 100644
--- a/src/main/java/com/ai/da/mapper/entity/DesignItemDetail.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetail.java
@@ -1,106 +1,106 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_design_item_detail")
-public class DesignItemDetail implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
- /**
- * 用户ID
- */
- private Long accountId;
-
- /**
- * designId
- */
- private Long designId;
-
- /**
- * designItemId
- */
- private Long designItemId;
-
- /**
- * elemntId
- */
- private Long collectionElementId;
-
- /**
- * 生成item实际对应的类型 有:outwear,dress,blouse,skirt,trousers Shoes Hairstyle Earring Body
- */
- private String type;
-
- /**
- * 对应的图片的绝对路径
- */
- private String path;
-
- /**
- * 颜色 存 RGB值 中间空格分隔 比如 "58 58 169"
- */
- private String color;
-
- /**
- * 对应的print图片的绝对路径
- */
- private String printPath;
-
- /**
- * 对应的icon的绝对路径
- */
- private String iconPath;
-
- /**
- * 对应上游业务id
- */
- private Long businessId;
-
- /**
- * 存储print打点的的参数json对象
- */
- private String printJson;
-
- /**
- * item的优先级
- */
- private Integer priority;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-
- /**
- * 逻辑删除 1->删除 0->未删除 默认null
- */
- private Byte isDeleted;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_design_item_detail")
+public class DesignItemDetail implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 用户ID
+ */
+ private Long accountId;
+
+ /**
+ * designId
+ */
+ private Long designId;
+
+ /**
+ * designItemId
+ */
+ private Long designItemId;
+
+ /**
+ * elemntId
+ */
+ private Long collectionElementId;
+
+ /**
+ * 生成item实际对应的类型 有:outwear,dress,blouse,skirt,trousers Shoes Hairstyle Earring Body
+ */
+ private String type;
+
+ /**
+ * 对应的图片的绝对路径
+ */
+ private String path;
+
+ /**
+ * 颜色 存 RGB值 中间空格分隔 比如 "58 58 169"
+ */
+ private String color;
+
+ /**
+ * 对应的print图片的绝对路径
+ */
+ private String printPath;
+
+ /**
+ * 对应的icon的绝对路径
+ */
+ private String iconPath;
+
+ /**
+ * 对应上游业务id
+ */
+ private Long businessId;
+
+ /**
+ * 存储print打点的的参数json对象
+ */
+ private String printJson;
+
+ /**
+ * item的优先级
+ */
+ private Integer priority;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+
+ /**
+ * 逻辑删除 1->删除 0->未删除 默认null
+ */
+ private Byte isDeleted;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/DesignItemDetailPrint.java b/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetailPrint.java
similarity index 96%
rename from src/main/java/com/ai/da/mapper/entity/DesignItemDetailPrint.java
rename to src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetailPrint.java
index be009476..e6800e69 100644
--- a/src/main/java/com/ai/da/mapper/entity/DesignItemDetailPrint.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/DesignItemDetailPrint.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Dressing.java b/src/main/java/com/ai/da/mapper/primary/entity/Dressing.java
new file mode 100644
index 00000000..306d39bc
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Dressing.java
@@ -0,0 +1,30 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("dressing")
+public class Dressing implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ private String apparel;
+ private String styleCategory;
+ private String ageGroup;
+ private String position;
+ private Integer priority;
+
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/Generate.java b/src/main/java/com/ai/da/mapper/primary/entity/Generate.java
similarity index 87%
rename from src/main/java/com/ai/da/mapper/entity/Generate.java
rename to src/main/java/com/ai/da/mapper/primary/entity/Generate.java
index 9fad23fb..d58d72ec 100644
--- a/src/main/java/com/ai/da/mapper/entity/Generate.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Generate.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -37,10 +37,15 @@ public class Generate {
*/
private String level1Type;
+ /**
+ * 图片来源 collection | library
+ */
+ private String elementSource;
+
/**
* 关联collection element id
*/
- private Long collectionElementId;
+ private Long elementId;
/**
* caption的内容
diff --git a/src/main/java/com/ai/da/mapper/entity/GenerateCancel.java b/src/main/java/com/ai/da/mapper/primary/entity/GenerateCancel.java
similarity index 95%
rename from src/main/java/com/ai/da/mapper/entity/GenerateCancel.java
rename to src/main/java/com/ai/da/mapper/primary/entity/GenerateCancel.java
index 8726b9ed..efa0d7c9 100644
--- a/src/main/java/com/ai/da/mapper/entity/GenerateCancel.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/GenerateCancel.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java b/src/main/java/com/ai/da/mapper/primary/entity/GenerateDetail.java
similarity index 89%
rename from src/main/java/com/ai/da/mapper/entity/GenerateDetail.java
rename to src/main/java/com/ai/da/mapper/primary/entity/GenerateDetail.java
index cce89e29..6cf9f0b3 100644
--- a/src/main/java/com/ai/da/mapper/entity/GenerateDetail.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/GenerateDetail.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -8,6 +8,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
+import java.time.LocalDateTime;
import java.util.Date;
@Data
@@ -50,7 +51,7 @@ public class GenerateDetail {
/**
* 创建时间
*/
- private Date createDate;
+ private LocalDateTime createDate;
/**
* 更新时间
diff --git a/src/main/java/com/ai/da/mapper/entity/Library.java b/src/main/java/com/ai/da/mapper/primary/entity/Library.java
similarity index 89%
rename from src/main/java/com/ai/da/mapper/entity/Library.java
rename to src/main/java/com/ai/da/mapper/primary/entity/Library.java
index 5ed6f488..cc5250a4 100644
--- a/src/main/java/com/ai/da/mapper/entity/Library.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Library.java
@@ -1,84 +1,83 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_library")
-public class Library implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * 用户ID
- */
- private Long accountId;
-
- /**
- * 一级类型
- */
- private String level1Type;
-
- /**
- * 二级类型
- */
- private String level2Type;
-
- private String level3Type;
-
- /**
- * 元素名
- */
- private String name;
-
- /**
- * 元素存放地址
- */
- private String url;
- /**
- * md5值
- */
- private String md5;
- /**
- * 图片高度,目前只争对 models类型
- */
- private Integer high;
- /**
- * 图片宽度,目前只争对 models类型
- */
- private Integer width;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-
-// private Integer isCopy;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_library")
+public class Library implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 用户ID
+ */
+ private Long accountId;
+
+ /**
+ * 一级类型
+ */
+ private String level1Type;
+
+ /**
+ * 二级类型
+ */
+ private String level2Type;
+
+ private String level3Type;
+
+ /**
+ * 元素名
+ */
+ private String name;
+
+ /**
+ * 元素存放地址
+ */
+ private String url;
+ /**
+ * md5值
+ */
+ private String md5;
+ /**
+ * 图片高度,目前只争对 models类型
+ */
+ private Integer high;
+ /**
+ * 图片宽度,目前只争对 models类型
+ */
+ private Integer width;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+
+// private Integer isCopy;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/LibraryCopy.java b/src/main/java/com/ai/da/mapper/primary/entity/LibraryCopy.java
similarity index 95%
rename from src/main/java/com/ai/da/mapper/entity/LibraryCopy.java
rename to src/main/java/com/ai/da/mapper/primary/entity/LibraryCopy.java
index 99e5377f..42171cec 100644
--- a/src/main/java/com/ai/da/mapper/entity/LibraryCopy.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/LibraryCopy.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -45,7 +45,7 @@ public class LibraryCopy implements Serializable {
*/
private String level2Type;
-// private String level3Type;
+ private String level3Type;
/**
* 元素名
diff --git a/src/main/java/com/ai/da/mapper/entity/LibraryModelPoint.java b/src/main/java/com/ai/da/mapper/primary/entity/LibraryModelPoint.java
similarity index 92%
rename from src/main/java/com/ai/da/mapper/entity/LibraryModelPoint.java
rename to src/main/java/com/ai/da/mapper/primary/entity/LibraryModelPoint.java
index 01adf7b7..d3e1fbdf 100644
--- a/src/main/java/com/ai/da/mapper/entity/LibraryModelPoint.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/LibraryModelPoint.java
@@ -1,81 +1,81 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-11-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_library_model_point")
-public class LibraryModelPoint implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * modelType
- */
- private String modelType;
-
- /**
- * 关联的 library或sys Id
- */
- private Long relationId;
-
- /**
- * 左肩
- */
- private String shoulderLeft;
-
- /**
- * 右肩
- */
- private String shoulderRight;
-
- /**
- * 左腰
- */
- private String waistbandLeft;
-
- /**
- * 右腰
- */
- private String waistbandRight;
- /**
- * 左手
- */
- private String handLeft;
-
- /**
- * 右手
- */
- private String handRight;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-11-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_library_model_point")
+public class LibraryModelPoint implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * modelType
+ */
+ private String modelType;
+
+ /**
+ * 关联的 library或sys Id
+ */
+ private Long relationId;
+
+ /**
+ * 左肩
+ */
+ private String shoulderLeft;
+
+ /**
+ * 右肩
+ */
+ private String shoulderRight;
+
+ /**
+ * 左腰
+ */
+ private String waistbandLeft;
+
+ /**
+ * 右腰
+ */
+ private String waistbandRight;
+ /**
+ * 左手
+ */
+ private String handLeft;
+
+ /**
+ * 右手
+ */
+ private String handRight;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/LibraryModelPointCopy.java b/src/main/java/com/ai/da/mapper/primary/entity/LibraryModelPointCopy.java
similarity index 92%
rename from src/main/java/com/ai/da/mapper/entity/LibraryModelPointCopy.java
rename to src/main/java/com/ai/da/mapper/primary/entity/LibraryModelPointCopy.java
index 01cb6901..a14b5579 100644
--- a/src/main/java/com/ai/da/mapper/entity/LibraryModelPointCopy.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/LibraryModelPointCopy.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -30,6 +30,11 @@ public class LibraryModelPointCopy implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
+ /**
+ * modelType
+ */
+ private String modelType;
+
/**
* 关联的 library或sys Id
*/
diff --git a/src/main/java/com/ai/da/mapper/entity/ObjectItem.java b/src/main/java/com/ai/da/mapper/primary/entity/ObjectItem.java
similarity index 73%
rename from src/main/java/com/ai/da/mapper/entity/ObjectItem.java
rename to src/main/java/com/ai/da/mapper/primary/entity/ObjectItem.java
index 80d33e2d..631d6db1 100644
--- a/src/main/java/com/ai/da/mapper/entity/ObjectItem.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/ObjectItem.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import lombok.Data;
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/OrderInfo.java b/src/main/java/com/ai/da/mapper/primary/entity/OrderInfo.java
new file mode 100644
index 00000000..c3b0be10
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/OrderInfo.java
@@ -0,0 +1,25 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("t_order_info")
+public class OrderInfo extends BaseEntity{
+
+ private String title;//订单标题
+
+ private String orderNo;//商户订单编号
+
+ private Long accountId;//用户id
+
+ private Long productId;//支付产品id
+
+ private Integer totalFee;//订单金额(元)
+
+ private String codeUrl;//订单二维码连接
+
+ private String orderStatus;//订单状态
+
+ private String paymentType;//支付方式
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/PanTone.java b/src/main/java/com/ai/da/mapper/primary/entity/PanTone.java
similarity index 84%
rename from src/main/java/com/ai/da/mapper/entity/PanTone.java
rename to src/main/java/com/ai/da/mapper/primary/entity/PanTone.java
index dc14ae1a..bc854838 100644
--- a/src/main/java/com/ai/da/mapper/entity/PanTone.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/PanTone.java
@@ -1,72 +1,70 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("pantone")
-public class PanTone implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * pantone_index
- */
- @TableId("pantone_index")
- private Integer pantoneIndex;
-
- /**
- * name
- */
- private String name;
-
- /**
- * TCX
- */
- private String tcx;
-
- /**
- * R
- */
- private Integer r;
-
- /**
- * G
- */
- private Integer g;
-
- /**
- * B
- */
- private Integer b;
-
- /**
- * H
- */
- private Integer h;
-
- /**
- * S
- */
- private Integer s;
-
- /**
- * V
- */
- private Integer v;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pantone")
+public class PanTone implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * pantone_index
+ */
+ @TableId("pantone_index")
+ private Integer pantoneIndex;
+
+ /**
+ * name
+ */
+ private String name;
+
+ /**
+ * TCX
+ */
+ private String tcx;
+
+ /**
+ * R
+ */
+ private Integer r;
+
+ /**
+ * G
+ */
+ private Integer g;
+
+ /**
+ * B
+ */
+ private Integer b;
+
+ /**
+ * H
+ */
+ private Integer h;
+
+ /**
+ * S
+ */
+ private Integer s;
+
+ /**
+ * V
+ */
+ private Integer v;
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/PaymentInfo.java b/src/main/java/com/ai/da/mapper/primary/entity/PaymentInfo.java
new file mode 100644
index 00000000..8557aa83
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/PaymentInfo.java
@@ -0,0 +1,23 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("t_payment_info")
+public class PaymentInfo extends BaseEntity{
+
+ private String orderNo;//商品订单编号
+
+ private String transactionId;//支付系统交易编号
+
+ private String paymentType;//支付类型
+
+ private String tradeType;//交易类型
+
+ private String tradeState;//交易状态
+
+ private Integer payerTotal;//支付金额(分)
+
+ private String content;//通知参数
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Product.java b/src/main/java/com/ai/da/mapper/primary/entity/Product.java
new file mode 100644
index 00000000..ddea327e
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Product.java
@@ -0,0 +1,15 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("t_product")
+public class Product extends BaseEntity{
+
+ private String title; //商品名称
+
+ private Integer price; //价格(分)
+
+ private Integer credits; // 积分
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/PythonTAllInfo.java b/src/main/java/com/ai/da/mapper/primary/entity/PythonTAllInfo.java
similarity index 97%
rename from src/main/java/com/ai/da/mapper/entity/PythonTAllInfo.java
rename to src/main/java/com/ai/da/mapper/primary/entity/PythonTAllInfo.java
index ae16fdd8..40f89ff2 100644
--- a/src/main/java/com/ai/da/mapper/entity/PythonTAllInfo.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/PythonTAllInfo.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/RefundInfo.java b/src/main/java/com/ai/da/mapper/primary/entity/RefundInfo.java
new file mode 100644
index 00000000..19719a98
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/RefundInfo.java
@@ -0,0 +1,27 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("t_refund_info")
+public class RefundInfo extends BaseEntity{
+
+ private String orderNo;//商品订单编号
+
+ private String refundNo;//退款单编号
+
+ private String refundId;//支付系统退款单号(微信)
+
+ private Integer totalFee;//原订单金额(分)
+
+ private Integer refund;//退款金额(分)
+
+ private String reason;//退款原因
+
+ private String refundStatus;//退款单状态
+
+ private String contentReturn;//申请退款返回参数
+
+ private String contentNotify;//退款结果通知参数
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/Sketches.java b/src/main/java/com/ai/da/mapper/primary/entity/Sketches.java
similarity index 78%
rename from src/main/java/com/ai/da/mapper/entity/Sketches.java
rename to src/main/java/com/ai/da/mapper/primary/entity/Sketches.java
index a3fb57b4..a6bc9460 100644
--- a/src/main/java/com/ai/da/mapper/entity/Sketches.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Sketches.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import lombok.Data;
diff --git a/src/main/java/com/ai/da/mapper/entity/SketchesBoundingBox.java b/src/main/java/com/ai/da/mapper/primary/entity/SketchesBoundingBox.java
similarity index 75%
rename from src/main/java/com/ai/da/mapper/entity/SketchesBoundingBox.java
rename to src/main/java/com/ai/da/mapper/primary/entity/SketchesBoundingBox.java
index 24c5b1df..6c687e25 100644
--- a/src/main/java/com/ai/da/mapper/entity/SketchesBoundingBox.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/SketchesBoundingBox.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import lombok.Data;
diff --git a/src/main/java/com/ai/da/mapper/entity/SysFile.java b/src/main/java/com/ai/da/mapper/primary/entity/SysFile.java
similarity index 93%
rename from src/main/java/com/ai/da/mapper/entity/SysFile.java
rename to src/main/java/com/ai/da/mapper/primary/entity/SysFile.java
index f4977130..24466611 100644
--- a/src/main/java/com/ai/da/mapper/entity/SysFile.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/SysFile.java
@@ -1,81 +1,81 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Attendance
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_sys_file")
-public class SysFile implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * 一级类型 accessories icon Images
- */
- private String level1Type;
-
- /**
- * 二级类型 目前有outwear,dress,blouse,skirt,trousers Shoes Hairstyle Earring
- */
- private String level2Type;
-
- private String level3Type;
-
- /**
- * 名字
- */
- private String name;
-
- /**
- * md5值
- */
- private String md5;
-
- /**
- * 路径 绝对路径
- */
- private String url;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-
- public SysFile() {
- }
-
- public SysFile(String level1Type, String level2Type, String name, String md5, String url, Date createDate) {
- this.level1Type = level1Type;
- this.level2Type = level2Type;
- this.name = name;
- this.md5 = md5;
- this.url = url;
- this.createDate = createDate;
- }
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Attendance
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_sys_file")
+public class SysFile implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 一级类型 accessories icon Images
+ */
+ private String level1Type;
+
+ /**
+ * 二级类型 目前有outwear,dress,blouse,skirt,trousers Shoes Hairstyle Earring
+ */
+ private String level2Type;
+
+ private String level3Type;
+
+ /**
+ * 名字
+ */
+ private String name;
+
+ /**
+ * md5值
+ */
+ private String md5;
+
+ /**
+ * 路径 绝对路径
+ */
+ private String url;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+
+ public SysFile() {
+ }
+
+ public SysFile(String level1Type, String level2Type, String name, String md5, String url, Date createDate) {
+ this.level1Type = level1Type;
+ this.level2Type = level2Type;
+ this.name = name;
+ this.md5 = md5;
+ this.url = url;
+ this.createDate = createDate;
+ }
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/TCollectionElementRelation.java b/src/main/java/com/ai/da/mapper/primary/entity/TCollectionElementRelation.java
similarity index 94%
rename from src/main/java/com/ai/da/mapper/entity/TCollectionElementRelation.java
rename to src/main/java/com/ai/da/mapper/primary/entity/TCollectionElementRelation.java
index cb6dbbcd..dac90348 100644
--- a/src/main/java/com/ai/da/mapper/entity/TCollectionElementRelation.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/TCollectionElementRelation.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
@@ -7,7 +7,6 @@ import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
-import java.time.LocalDateTime;
import java.util.Date;
diff --git a/src/main/java/com/ai/da/mapper/entity/TDesignPythonOutfit.java b/src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfit.java
similarity index 96%
rename from src/main/java/com/ai/da/mapper/entity/TDesignPythonOutfit.java
rename to src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfit.java
index 8fe281a6..e08f19bc 100644
--- a/src/main/java/com/ai/da/mapper/entity/TDesignPythonOutfit.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfit.java
@@ -1,5 +1,5 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -8,7 +8,6 @@ import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
-import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/src/main/java/com/ai/da/mapper/entity/TDesignPythonOutfitDetail.java b/src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfitDetail.java
similarity index 97%
rename from src/main/java/com/ai/da/mapper/entity/TDesignPythonOutfitDetail.java
rename to src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfitDetail.java
index f49ea93e..3d69de8e 100644
--- a/src/main/java/com/ai/da/mapper/entity/TDesignPythonOutfitDetail.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/TDesignPythonOutfitDetail.java
@@ -1,5 +1,5 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -8,7 +8,6 @@ import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
-import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/TaskList.java b/src/main/java/com/ai/da/mapper/primary/entity/TaskList.java
new file mode 100644
index 00000000..81797448
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/TaskList.java
@@ -0,0 +1,27 @@
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName("t_task_list")
+public class TaskList extends BaseEntity{
+
+ private Long accountId;
+
+ private String taskType;
+
+ private String inputUrl;
+
+ private Integer scale;
+
+ /* 可选状态 : 成功:success 失败:fail */
+ private String status;
+
+ private String outputUrl;
+
+ private String taskId;
+
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/TransactionData.java b/src/main/java/com/ai/da/mapper/primary/entity/TransactionData.java
new file mode 100644
index 00000000..8209be65
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/TransactionData.java
@@ -0,0 +1,149 @@
+package com.ai.da.mapper.primary.entity;
+
+import lombok.Data;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+@Data
+public class TransactionData {
+ private String trxNo;
+ private Timestamp trxDate;
+ private String trxType;
+ private String trxStatus;
+ private double trxTotQty;
+ private String currCode;
+ private double exchRate;
+ private double discountPerc;
+ private double trxAccAmt;
+ private double trxBasAmt;
+ private double outstandAmt;
+ private double receiveAmt;
+ private double changeAmt;
+ private double trxTotBonus;
+ private String depositNo;
+ private double depositAmt;
+ private String depositStatus;
+ private String trxAmtDesc;
+ private String remark;
+ private String shCode;
+ private String whCodeFrom;
+ private String whCodeTo;
+ private String issuedBy;
+ private String clientCode;
+ private String clientName;
+ private String salesmanCode;
+ private String ctypeCode;
+ private Timestamp updatedOn;
+ private String docType;
+ private String refNo;
+ private String adjType;
+ private String refType;
+ private String orderNo;
+ private String recoverF;
+ private String recoverT;
+ private String requestBy;
+ private String error;
+ private Timestamp authorizedDate;
+ private String authorizedBy;
+ private String changeCurrCode;
+ private double chgRate;
+ private String cashier;
+ private String cashiNo;
+ private String salesmanCode2;
+ private String classId;
+ private double disAmt;
+ private String acStatus;
+ private String reprint;
+ private String alt1;
+ private String alt2;
+ private String alt3;
+ private String alt4;
+ private String alt5;
+ private Date altD1;
+ private Date altD2;
+ private Date altD3;
+ private Date altD4;
+ private Date altD5;
+ private String salesmanCode3;
+ private String contractNo;
+ private Timestamp expireDate;
+ private double depositNetAmt;
+ private String clientRestriction;
+ private String refStatus;
+ private double mbrDis;
+ private double pmtDiscount;
+ private double pmtAmount;
+ private String pmtNo;
+ private String refCode;
+ private String docApproved;
+ private String refractionNo;
+ private double ccpTot;
+ private double ccpRed;
+ private double ccpExpired;
+ private int printedTimes;
+ private String pickupShop;
+ private Date deliveryDate;
+ private String deliveryTime;
+ private String wsCode;
+ private String clCode;
+ private String clDesc;
+ private String ratio;
+ private String userMember;
+ private String hflag;
+ private String issueShop;
+ private String hoUpdBy;
+ private Timestamp hoUpdOn;
+ private double bonusExpired;
+ private double bonusRed;
+ private Timestamp confirmedOn;
+ private String confirmedBy;
+ private String docConfirmed;
+ private String brNo;
+ private double changeAmt2;
+ private Date salesDate;
+ private String mbrName;
+ private String canEntryDis;
+ private String reactiveClient;
+ private String reactiveMbr;
+ private String shUpdBy;
+ private Timestamp shUpdOn;
+ private double tax1;
+ private double tax2;
+ private double tax3;
+ private double tax4;
+ private double tax5;
+ private String altChar1;
+ private String altChar2;
+ private String altChar3;
+ private String altChar4;
+ private String altChar5;
+ private double altNum1;
+ private double altNum2;
+ private double altNum3;
+ private double altNum4;
+ private double altNum5;
+ private String newClient;
+ private String newMbr;
+ private double pmtExtraDiscount;
+ private double pmtExtraAmount;
+ private double manualDiscount;
+ private double manualAmount;
+ private double usermbrDiscount;
+ private double clientDiscount;
+ private String holdVoid;
+ private double payBasAmt;
+ private String payDesc;
+ private String payCode;
+ private String cardNo;
+ private String payCurr;
+ private double payCurrAmt;
+ private String onbehalfPaid;
+ private String onbehalfLoc;
+ private String oldCardNo;
+ private int trxYear;
+ private int trxMonth;
+
+ private double sumAmt;
+}
+
diff --git a/src/main/java/com/ai/da/mapper/entity/TrialOrder.java b/src/main/java/com/ai/da/mapper/primary/entity/TrialOrder.java
similarity index 93%
rename from src/main/java/com/ai/da/mapper/entity/TrialOrder.java
rename to src/main/java/com/ai/da/mapper/primary/entity/TrialOrder.java
index 72183c97..0e908b59 100644
--- a/src/main/java/com/ai/da/mapper/entity/TrialOrder.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/TrialOrder.java
@@ -1,4 +1,4 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -10,7 +10,7 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
-import java.util.Date;
+
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@@ -25,7 +25,7 @@ public class TrialOrder implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
- @ApiModelProperty("surname")
+ @ApiModelProperty("title")
private String title;
@ApiModelProperty("surname")
diff --git a/src/main/java/com/ai/da/mapper/entity/UserLike.java b/src/main/java/com/ai/da/mapper/primary/entity/UserLike.java
similarity index 92%
rename from src/main/java/com/ai/da/mapper/entity/UserLike.java
rename to src/main/java/com/ai/da/mapper/primary/entity/UserLike.java
index c35ed12f..61a4deee 100644
--- a/src/main/java/com/ai/da/mapper/entity/UserLike.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/UserLike.java
@@ -1,62 +1,62 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * UserLikeGroup
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_user_like")
-public class UserLike implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
- /**
- * 关联的用户收藏分组 ID
- */
- private Long userLikeGroupId;
- /**
- * 关联的design ID
- */
- private Long designId;
- /**
- * 关联的design_item ID
- */
- private Long designItemId;
- /**
- * 关联的design_python_outfit ID
- */
- private Long designOutfitId;
- /**
- * 图片地址
- */
- private String url;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * UserLikeGroup
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_user_like")
+public class UserLike implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 关联的用户收藏分组 ID
+ */
+ private Long userLikeGroupId;
+ /**
+ * 关联的design ID
+ */
+ private Long designId;
+ /**
+ * 关联的design_item ID
+ */
+ private Long designItemId;
+ /**
+ * 关联的design_python_outfit ID
+ */
+ private Long designOutfitId;
+ /**
+ * 图片地址
+ */
+ private String url;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/UserLikeGroup.java b/src/main/java/com/ai/da/mapper/primary/entity/UserLikeGroup.java
similarity index 92%
rename from src/main/java/com/ai/da/mapper/entity/UserLikeGroup.java
rename to src/main/java/com/ai/da/mapper/primary/entity/UserLikeGroup.java
index 496cf9ab..2aa8cc0e 100644
--- a/src/main/java/com/ai/da/mapper/entity/UserLikeGroup.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/UserLikeGroup.java
@@ -1,55 +1,55 @@
-package com.ai.da.mapper.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * UserLikeGroup
- *
- * @author easy-generator
- * @since 2022-06-13
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("t_user_like_group")
-public class UserLikeGroup implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
- /**
- * 用户ID
- */
- private Long accountId;
- /**
- * collectionId
- */
- private Long collectionId;
-
- /**
- * 用户收藏分组表
- */
- private String name;
-
- /**
- * 创建时间
- */
- private Date createDate;
-
- /**
- * 更新时间
- */
- private Date updateDate;
-}
+package com.ai.da.mapper.primary.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * UserLikeGroup
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_user_like_group")
+public class UserLikeGroup implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 用户ID
+ */
+ private Long accountId;
+ /**
+ * collectionId
+ */
+ private Long collectionId;
+
+ /**
+ * 用户收藏分组表
+ */
+ private String name;
+
+ /**
+ * 创建时间
+ */
+ private Date createDate;
+
+ /**
+ * 更新时间
+ */
+ private Date updateDate;
+}
diff --git a/src/main/java/com/ai/da/mapper/entity/Workspace.java b/src/main/java/com/ai/da/mapper/primary/entity/Workspace.java
similarity index 92%
rename from src/main/java/com/ai/da/mapper/entity/Workspace.java
rename to src/main/java/com/ai/da/mapper/primary/entity/Workspace.java
index 16e520a1..2fe6fe9e 100644
--- a/src/main/java/com/ai/da/mapper/entity/Workspace.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Workspace.java
@@ -1,17 +1,14 @@
-package com.ai.da.mapper.entity;
+package com.ai.da.mapper.primary.entity;
import com.baomidou.mybatisplus.annotation.*;
import java.time.LocalDateTime;
import java.io.Serializable;
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
-import org.springframework.format.annotation.DateTimeFormat;
/**
* 实体类
@@ -38,10 +35,15 @@ public class Workspace implements Serializable {
@ApiModelProperty(value = "工作空间名称")
private String workSpaceName;
/**
- * 用户ID
+ * 用户名
*/
@ApiModelProperty(value = "用户名")
private String userName;
+ /**
+ * 用户ID
+ */
+ @ApiModelProperty(value = "用户ID")
+ private Long accountId;
/**
* 性别
*/
diff --git a/src/main/java/com/ai/da/mapper/secondary/AttributeRetrievalMapper.java b/src/main/java/com/ai/da/mapper/secondary/AttributeRetrievalMapper.java
new file mode 100644
index 00000000..cd657a7e
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/secondary/AttributeRetrievalMapper.java
@@ -0,0 +1,25 @@
+package com.ai.da.mapper.secondary;
+
+import com.ai.da.mapper.secondary.entity.AttributeRetrieval;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Mapper 接口
+ *
+ * @author easy-generator
+ * @since 2022-06-13
+ */
+
+@Mapper
+public interface AttributeRetrievalMapper {
+
+
+ List getSystemSketchPool(@Param("attributeRetrievalAttrDict") AttributeRetrieval attributeRetrievalAttrDict, @Param("tableName") String tableName, @Param("poolNum") int poolNum);
+
+ AttributeRetrieval getSystemRandom(String tableName);
+
+ List getSystemSketchPoolBySameCategory(AttributeRetrieval attributeRetrievalAttrDict, String tableName);
+}
diff --git a/src/main/java/com/ai/da/mapper/secondary/entity/AttributeRecognitionJSON.java b/src/main/java/com/ai/da/mapper/secondary/entity/AttributeRecognitionJSON.java
new file mode 100644
index 00000000..a04f4e4b
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/secondary/entity/AttributeRecognitionJSON.java
@@ -0,0 +1,22 @@
+package com.ai.da.mapper.secondary.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AttributeRecognitionJSON {
+ private Long id;
+ private List imgName;
+ private List length;
+ private List sleeveLength;
+ private List sleeveShape;
+ private List sleeveShoulder;
+ private List neckline;
+ private List collar;
+ private List design;
+ private List silhouette;
+ private List type;
+ private List openingType;
+ private List subtype;
+}
diff --git a/src/main/java/com/ai/da/mapper/secondary/entity/AttributeRetrieval.java b/src/main/java/com/ai/da/mapper/secondary/entity/AttributeRetrieval.java
new file mode 100644
index 00000000..c8611586
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/secondary/entity/AttributeRetrieval.java
@@ -0,0 +1,24 @@
+package com.ai.da.mapper.secondary.entity;
+
+import lombok.Data;
+
+@Data
+public class AttributeRetrieval {
+ private Long id;
+ private String imgName;
+ private String length;
+ private String sleeveLength;
+ private String sleeveShape;
+ private String sleeveShoulder;
+ private String neckline;
+ private String collar;
+ private String design;
+ private String silhouette;
+ private String type;
+ private String openingType;
+ private String subtype;
+
+ private String sleeve;
+ private String sleeve1;
+ private String sleeve2;
+}
diff --git a/src/main/java/com/ai/da/model/dto/AccountTrialDTO.java b/src/main/java/com/ai/da/model/dto/AccountTrialDTO.java
index 49d59692..700426a2 100644
--- a/src/main/java/com/ai/da/model/dto/AccountTrialDTO.java
+++ b/src/main/java/com/ai/da/model/dto/AccountTrialDTO.java
@@ -1,8 +1,7 @@
package com.ai.da.model.dto;
-import com.ai.da.mapper.entity.TrialOrder;
+import com.ai.da.mapper.primary.entity.TrialOrder;
import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/ai/da/model/dto/AlipayHKParametersDTO.java b/src/main/java/com/ai/da/model/dto/AlipayHKParametersDTO.java
new file mode 100644
index 00000000..69d38a2e
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/AlipayHKParametersDTO.java
@@ -0,0 +1,18 @@
+package com.ai.da.model.dto;
+
+import lombok.*;
+
+import java.util.HashMap;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AlipayHKParametersDTO {
+
+ private String request_uuid;
+ private String request_time;
+ private String service;
+ private String merchant_id;
+ private HashMap parameters;
+
+}
diff --git a/src/main/java/com/ai/da/model/dto/AlipayHKRequestDTO.java b/src/main/java/com/ai/da/model/dto/AlipayHKRequestDTO.java
new file mode 100644
index 00000000..005fa9dd
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/AlipayHKRequestDTO.java
@@ -0,0 +1,24 @@
+package com.ai.da.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AlipayHKRequestDTO implements Serializable {
+
+ private String merchant_id;
+
+ private String nonce;
+
+ private String message;
+
+ private String tag;
+
+ private String cipher_suite;
+
+}
diff --git a/src/main/java/com/ai/da/model/dto/AlipayHKResponseDTO.java b/src/main/java/com/ai/da/model/dto/AlipayHKResponseDTO.java
new file mode 100644
index 00000000..a6bd9953
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/AlipayHKResponseDTO.java
@@ -0,0 +1,22 @@
+package com.ai.da.model.dto;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AlipayHKResponseDTO {
+
+ private boolean success;
+
+ private String reference_id;
+
+ private JSONObject result;
+
+ private String error;
+
+ private String error_code;
+}
diff --git a/src/main/java/com/ai/da/model/dto/ClassificationDTO.java b/src/main/java/com/ai/da/model/dto/ClassificationDTO.java
index 22abc61d..8a24260c 100644
--- a/src/main/java/com/ai/da/model/dto/ClassificationDTO.java
+++ b/src/main/java/com/ai/da/model/dto/ClassificationDTO.java
@@ -1,6 +1,6 @@
package com.ai.da.model.dto;
-import com.ai.da.mapper.entity.Classification;
+import com.ai.da.mapper.primary.entity.Classification;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/ai/da/model/dto/DesignSingleIncludeLayersDTO.java b/src/main/java/com/ai/da/model/dto/DesignSingleIncludeLayersDTO.java
index 76161990..b2b5828d 100644
--- a/src/main/java/com/ai/da/model/dto/DesignSingleIncludeLayersDTO.java
+++ b/src/main/java/com/ai/da/model/dto/DesignSingleIncludeLayersDTO.java
@@ -26,6 +26,9 @@ public class DesignSingleIncludeLayersDTO {
@ApiModelProperty("进度")
private String processId;
+ @ApiModelProperty("性别")
+ private String gender;
+
@NotBlank(message = "timeZone.cannot.be.empty")
@ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取")
private String timeZone;
diff --git a/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java b/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java
index a21cb699..099708e5 100644
--- a/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java
+++ b/src/main/java/com/ai/da/model/dto/DesignSingleItemDTO.java
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@@ -14,6 +15,14 @@ public class DesignSingleItemDTO {
@ApiModelProperty("切换图片对应的id")
private Long id;
+ @NotEmpty(message = "changed cannot be empty")
+ @ApiModelProperty("当前服装的id是否被添加随机数")
+ private Boolean changed;
+
+ @NotBlank(message = "designType cannot be empty")
+ @ApiModelProperty("当前图片来源于用户上传还是从library选择 Collection/Library")
+ private String designType;
+
@NotBlank(message = "type.cannot.be.empty")
@ApiModelProperty("生成item实际对应的类型 有:outwear,dress,blouse,skirt,trousers Shoes Hairstyle Earring")
private String type;
@@ -38,4 +47,10 @@ public class DesignSingleItemDTO {
@NotNull(message = "priority.cannot.be.empty")
@ApiModelProperty("图层优先级")
private Integer priority;
+
+// @ApiModelProperty("渐变 起始/目标 颜色")
+// private List> gradient;
+//
+// @ApiModelProperty("渐变角度")
+// private Float gradient_angle;
}
diff --git a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java
index 1adfdbef..602f1886 100644
--- a/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java
+++ b/src/main/java/com/ai/da/model/dto/GenerateThroughImageTextDTO.java
@@ -24,7 +24,6 @@ public class GenerateThroughImageTextDTO {
@ApiModelProperty("text image text-image")
String generateType;
- /** 暂时没有用上 */
@ApiModelProperty("图片是update,还是从library中选择")
String designType;
@@ -48,6 +47,7 @@ public class GenerateThroughImageTextDTO {
@ApiModelProperty("唯一id,用于保持消息唯一性")
String uniqueId;
+ @NotNull(message = "Please check if the required fields are empty.(isTestUser)")
@ApiModelProperty("是否是测试用户")
Boolean isTestUser;
}
diff --git a/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java b/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java
index 927fff70..c08a5f90 100644
--- a/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java
+++ b/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java
@@ -6,22 +6,32 @@ import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
-@AllArgsConstructor
+//@AllArgsConstructor
public class GenerateToPythonDTO {
-
- private Long user_id;
+ // 去掉
+// private Long user_id;
private String image_url;
private String category;
+ // 改为prompt
+// private String content;
+ private String prompt;
- private String content;
-
- private Integer mode;
-
- private String version;
-
+ private String mode;
+ // 去除
+// private String version;
+ // 去掉
private String gender;
-
+ // taskId的最后拼接用户id
private String tasks_id;
+
+ public GenerateToPythonDTO(String tasks_id, String prompt, String image_url, String mode, String category, String gender) {
+ this.image_url = image_url;
+ this.category = category;
+ this.prompt = prompt;
+ this.mode = mode;
+ this.tasks_id = tasks_id;
+ this.gender = gender;
+ }
}
diff --git a/src/main/java/com/ai/da/model/dto/QueryHistoryPageDTO.java b/src/main/java/com/ai/da/model/dto/QueryHistoryPageDTO.java
index 00163d18..22eefcf9 100644
--- a/src/main/java/com/ai/da/model/dto/QueryHistoryPageDTO.java
+++ b/src/main/java/com/ai/da/model/dto/QueryHistoryPageDTO.java
@@ -7,6 +7,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
+import java.util.List;
@Data
@ApiModel("History分页查询")
@@ -20,4 +21,9 @@ public class QueryHistoryPageDTO extends PageQueryBaseVo {
@ApiModelProperty("开始时间 时间戳")
private Long endDate;
+
+ private List classificationIdList;
+
+ @ApiModelProperty("1交集2并集")
+ private Integer intersection;
}
diff --git a/src/main/java/com/ai/da/model/dto/QueryIncomeOrExpenditureDTO.java b/src/main/java/com/ai/da/model/dto/QueryIncomeOrExpenditureDTO.java
new file mode 100644
index 00000000..748d6108
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/QueryIncomeOrExpenditureDTO.java
@@ -0,0 +1,13 @@
+package com.ai.da.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel("查积分的收支详情")
+public class QueryIncomeOrExpenditureDTO extends QueryPageByTimeDTO{
+
+ private Boolean isIncome;
+}
diff --git a/src/main/java/com/ai/da/model/dto/QueryPageByTimeDTO.java b/src/main/java/com/ai/da/model/dto/QueryPageByTimeDTO.java
new file mode 100644
index 00000000..c0c37a98
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/QueryPageByTimeDTO.java
@@ -0,0 +1,19 @@
+package com.ai.da.model.dto;
+
+import com.ai.da.model.vo.PageQueryBaseVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel("分页查询,限制时间区间")
+public class QueryPageByTimeDTO extends PageQueryBaseVo {
+
+ @ApiModelProperty("开始时间 yyyy-mm-dd hh:mm:ss 可以不要时分秒")
+ private String startTime;
+
+ @ApiModelProperty("结束时间 yyyy-mm-dd hh:mm:ss 可以不要时分秒")
+ private String endTime;
+}
diff --git a/src/main/java/com/ai/da/model/dto/QueryTaskHistoryDTO.java b/src/main/java/com/ai/da/model/dto/QueryTaskHistoryDTO.java
new file mode 100644
index 00000000..db8dbc69
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/QueryTaskHistoryDTO.java
@@ -0,0 +1,18 @@
+package com.ai.da.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotEmpty;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel("按分类分页查询历史任务")
+public class QueryTaskHistoryDTO extends QueryPageByTimeDTO {
+
+ @NotEmpty(message = "type cannot be empty")
+ @ApiModelProperty("可选类型 : SR")
+ private String type;
+}
diff --git a/src/main/java/com/ai/da/model/dto/SuperResolutionDTO.java b/src/main/java/com/ai/da/model/dto/SuperResolutionDTO.java
new file mode 100644
index 00000000..36b15ce6
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/SuperResolutionDTO.java
@@ -0,0 +1,25 @@
+package com.ai.da.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SuperResolutionDTO {
+
+ @NotBlank(message = "You have to select at least one image")
+ @ApiModelProperty("图片")
+ private String images;
+
+ @NotBlank(message = "You must choose the magnification")
+ @ApiModelProperty("放大倍数")
+ private Integer scale;
+
+ @ApiModelProperty("唯一id,用于保持消息唯一性")
+ private String uniqueId;
+}
diff --git a/src/main/java/com/ai/da/model/dto/TaskDTO.java b/src/main/java/com/ai/da/model/dto/TaskDTO.java
new file mode 100644
index 00000000..83b3c7fa
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/TaskDTO.java
@@ -0,0 +1,46 @@
+package com.ai.da.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TaskDTO {
+
+ private String taskId;
+
+ // 可选type : SR GENERATE
+ private String type;
+
+ // 输入的图片名
+ private String imageName;
+
+ private T inputParam;
+
+ private String outputImage;
+
+ // 任务状态,暂定状态:排队中、执行中、成功/失败
+ private String status;
+
+ // 当前任务的创建时间
+ private String createDate;
+
+ public TaskDTO(String taskId, String type, String imageName, T inputParam, String status, String createDate) {
+ this.taskId = taskId;
+ this.type = type;
+ this.imageName = imageName;
+ this.inputParam = inputParam;
+ this.status = status;
+ this.createDate = createDate;
+ }
+
+ public TaskDTO(String taskId, String type, T inputParam, String status, String createDate) {
+ this.taskId = taskId;
+ this.type = type;
+ this.inputParam = inputParam;
+ this.status = status;
+ this.createDate = createDate;
+ }
+}
diff --git a/src/main/java/com/ai/da/model/dto/UserDesignStatisticDTO.java b/src/main/java/com/ai/da/model/dto/UserDesignStatisticDTO.java
index 25bd7038..b0713077 100644
--- a/src/main/java/com/ai/da/model/dto/UserDesignStatisticDTO.java
+++ b/src/main/java/com/ai/da/model/dto/UserDesignStatisticDTO.java
@@ -7,11 +7,25 @@ public class UserDesignStatisticDTO {
private Long accountId;
- private Long useDesignTimes;
+ private Long designTimes;
private String userEmail;
private String userName;
private String isTrial;
+
+ private String trialOrderId;
+
+ private String title;
+
+ private String surname;
+
+ private String givenName;
+
+ private String country;
+
+ private String occupation;
+
+ private String createTime;
}
diff --git a/src/main/java/com/ai/da/model/dto/WebhookVerifyDTO.java b/src/main/java/com/ai/da/model/dto/WebhookVerifyDTO.java
new file mode 100644
index 00000000..4bcbc352
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/WebhookVerifyDTO.java
@@ -0,0 +1,35 @@
+package com.ai.da.model.dto;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WebhookVerifyDTO implements Serializable {
+
+ private String transmission_id;
+ private String transmission_time;
+ private String cert_url;
+ private String auth_algo;
+ private String transmission_sig;
+ private String webhook_id;
+ private Object webhook_event;
+
+}
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/ai/da/model/dto/WorkspaceDTO.java b/src/main/java/com/ai/da/model/dto/WorkspaceDTO.java
index 68c33673..4ffe191c 100644
--- a/src/main/java/com/ai/da/model/dto/WorkspaceDTO.java
+++ b/src/main/java/com/ai/da/model/dto/WorkspaceDTO.java
@@ -1,7 +1,6 @@
package com.ai.da.model.dto;
-import com.ai.da.mapper.entity.Workspace;
import com.ai.da.model.vo.PageQueryBaseVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/ai/da/model/vo/ChatRobotVO.java b/src/main/java/com/ai/da/model/vo/ChatRobotVO.java
index 9ef86aa7..05b2ee43 100644
--- a/src/main/java/com/ai/da/model/vo/ChatRobotVO.java
+++ b/src/main/java/com/ai/da/model/vo/ChatRobotVO.java
@@ -1,6 +1,6 @@
package com.ai.da.model.vo;
-import com.ai.da.mapper.entity.ChatRobot;
+import com.ai.da.mapper.primary.entity.ChatRobot;
import lombok.Data;
import java.util.List;
diff --git a/src/main/java/com/ai/da/model/vo/ClassificationVO.java b/src/main/java/com/ai/da/model/vo/ClassificationVO.java
index 88506041..1bb7062a 100644
--- a/src/main/java/com/ai/da/model/vo/ClassificationVO.java
+++ b/src/main/java/com/ai/da/model/vo/ClassificationVO.java
@@ -1,6 +1,6 @@
package com.ai.da.model.vo;
-import com.ai.da.mapper.entity.Classification;
+import com.ai.da.mapper.primary.entity.Classification;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java b/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java
index 70ca7b46..2b5c3667 100644
--- a/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java
+++ b/src/main/java/com/ai/da/model/vo/DesignItemClothesDetailVO.java
@@ -17,6 +17,12 @@ public class DesignItemClothesDetailVO {
@ApiModelProperty("对应的上游id")
private Long id;
+ @ApiModelProperty("该id末尾是否被加了随机数")
+ private Boolean changed;
+
+ @ApiModelProperty("该图片来源 Collection / Library")
+ private String designType;
+
@ApiModelProperty("对应的类型 有:Outwear,Dress,Blouse,Skirt,Trousers Shoes Hairstyle Earring Body")
private String type;
diff --git a/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java b/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java
index 94575022..54818442 100644
--- a/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java
+++ b/src/main/java/com/ai/da/model/vo/DesignSinglePrint.java
@@ -12,6 +12,9 @@ import java.util.List;
@ApiModel("design single 印花详情")
public class DesignSinglePrint {
+ @ApiModelProperty("印花是用户上传的还是从library中选的 collection/library")
+ private String designType;
+
@ApiModelProperty("印花url")
private String path;
diff --git a/src/main/java/com/ai/da/model/vo/GenerateResultVO.java b/src/main/java/com/ai/da/model/vo/GenerateResultVO.java
new file mode 100644
index 00000000..4a5f1453
--- /dev/null
+++ b/src/main/java/com/ai/da/model/vo/GenerateResultVO.java
@@ -0,0 +1,36 @@
+package com.ai.da.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@ApiModel("generate result 响应")
+@AllArgsConstructor
+@NoArgsConstructor
+public class GenerateResultVO {
+
+ private String taskId;
+
+ private Long id;
+
+ private String url;
+
+ private String status;
+
+ private String category;
+
+ public GenerateResultVO(String taskId, Long id, String url, String status) {
+ this.taskId = taskId;
+ this.id = id;
+ this.url = url;
+ this.status = status;
+ }
+
+ public GenerateResultVO(Long id, String url, String status) {
+ this.id = id;
+ this.url = url;
+ this.status = status;
+ }
+}
diff --git a/src/main/java/com/ai/da/model/vo/PrepareForGenerateVO.java b/src/main/java/com/ai/da/model/vo/PrepareForGenerateVO.java
index 438d94db..78c7260c 100644
--- a/src/main/java/com/ai/da/model/vo/PrepareForGenerateVO.java
+++ b/src/main/java/com/ai/da/model/vo/PrepareForGenerateVO.java
@@ -4,17 +4,19 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.util.List;
+
@Data
@ApiModel("prepare for generate响应vo")
public class PrepareForGenerateVO {
@ApiModelProperty("uniqueId")
- private String uniqueId;
+ private List uniqueId;
@ApiModelProperty("剩余使用次数")
private Integer leftUsageCount;
- public PrepareForGenerateVO(String uniqueId, Integer leftUsageCount) {
+ public PrepareForGenerateVO(List uniqueId, Integer leftUsageCount) {
this.uniqueId = uniqueId;
this.leftUsageCount = leftUsageCount;
}
diff --git a/src/main/java/com/ai/da/model/vo/QueryLibraryPageVO.java b/src/main/java/com/ai/da/model/vo/QueryLibraryPageVO.java
index eca67503..eaff197f 100644
--- a/src/main/java/com/ai/da/model/vo/QueryLibraryPageVO.java
+++ b/src/main/java/com/ai/da/model/vo/QueryLibraryPageVO.java
@@ -23,6 +23,9 @@ public class QueryLibraryPageVO {
@ApiModelProperty("二级类型")
private String level2Type;
+ @ApiModelProperty("三级类型")
+ private String level3Type;
+
@ApiModelProperty("design类型 用户design生成时候区别library和collection")
private String designType;
diff --git a/src/main/java/com/ai/da/model/vo/TDesignPythonOutfitDetailVO.java b/src/main/java/com/ai/da/model/vo/TDesignPythonOutfitDetailVO.java
index 028e7ba8..72c28642 100644
--- a/src/main/java/com/ai/da/model/vo/TDesignPythonOutfitDetailVO.java
+++ b/src/main/java/com/ai/da/model/vo/TDesignPythonOutfitDetailVO.java
@@ -1,7 +1,7 @@
package com.ai.da.model.vo;
-import com.ai.da.mapper.entity.TDesignPythonOutfitDetail;
+import com.ai.da.mapper.primary.entity.TDesignPythonOutfitDetail;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
diff --git a/src/main/java/com/ai/da/model/vo/TDesignPythonOutfitVO.java b/src/main/java/com/ai/da/model/vo/TDesignPythonOutfitVO.java
index 8afb8629..065d963b 100644
--- a/src/main/java/com/ai/da/model/vo/TDesignPythonOutfitVO.java
+++ b/src/main/java/com/ai/da/model/vo/TDesignPythonOutfitVO.java
@@ -2,7 +2,7 @@
package com.ai.da.model.vo;
-import com.ai.da.mapper.entity.TDesignPythonOutfit;
+import com.ai.da.mapper.primary.entity.TDesignPythonOutfit;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
diff --git a/src/main/java/com/ai/da/model/vo/TaskVO.java b/src/main/java/com/ai/da/model/vo/TaskVO.java
new file mode 100644
index 00000000..1c0a3f63
--- /dev/null
+++ b/src/main/java/com/ai/da/model/vo/TaskVO.java
@@ -0,0 +1,22 @@
+package com.ai.da.model.vo;
+
+import lombok.Data;
+
+@Data
+public class TaskVO {
+
+ // 图片名
+ private String imageName;
+
+ private String inputImage;
+
+ private String outputImage;
+
+ private String otherInput;
+
+ private String status;
+
+ private String taskId;
+
+ private String createDate;
+}
diff --git a/src/main/java/com/ai/da/model/vo/ValidateElementVO.java b/src/main/java/com/ai/da/model/vo/ValidateElementVO.java
index cceef691..563c4ab1 100644
--- a/src/main/java/com/ai/da/model/vo/ValidateElementVO.java
+++ b/src/main/java/com/ai/da/model/vo/ValidateElementVO.java
@@ -1,6 +1,6 @@
package com.ai.da.model.vo;
-import com.ai.da.mapper.entity.CollectionElement;
+import com.ai.da.mapper.primary.entity.CollectionElement;
import com.ai.da.model.dto.CollectionColorDTO;
import com.ai.da.python.vo.DesignPythonItemPrint;
import com.google.common.collect.Lists;
diff --git a/src/main/java/com/ai/da/model/vo/WorkspaceVO.java b/src/main/java/com/ai/da/model/vo/WorkspaceVO.java
index 209563f2..378014d9 100644
--- a/src/main/java/com/ai/da/model/vo/WorkspaceVO.java
+++ b/src/main/java/com/ai/da/model/vo/WorkspaceVO.java
@@ -2,12 +2,8 @@
package com.ai.da.model.vo;
import com.ai.da.common.response.PageBaseResponse;
-import com.ai.da.mapper.entity.Workspace;
+import com.ai.da.mapper.primary.entity.Workspace;
import com.ai.da.model.enums.BizJson;
-import com.ai.da.model.enums.FemalePosition;
-import com.ai.da.model.enums.Position;
-import com.ai.da.model.enums.Sex;
-import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java
index b4f8e847..eaa1c786 100644
--- a/src/main/java/com/ai/da/python/PythonService.java
+++ b/src/main/java/com/ai/da/python/PythonService.java
@@ -6,8 +6,15 @@ import com.ai.da.common.config.FileProperties;
import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.enums.*;
import com.ai.da.common.utils.*;
-import com.ai.da.mapper.entity.CollectionElement;
-import com.ai.da.mapper.entity.DesignHistory;
+import com.ai.da.mapper.primary.CollocationMapper;
+import com.ai.da.mapper.primary.DressingMapper;
+import com.ai.da.mapper.primary.entity.CollectionElement;
+import com.ai.da.mapper.primary.entity.Collocation;
+import com.ai.da.mapper.primary.entity.DesignHistory;
+import com.ai.da.mapper.primary.entity.Dressing;
+import com.ai.da.mapper.secondary.AttributeRetrievalMapper;
+import com.ai.da.mapper.secondary.entity.AttributeRetrieval;
+import com.ai.da.mapper.secondary.entity.AttributeRecognitionJSON;
import com.ai.da.model.dto.*;
import com.ai.da.model.enums.MalePosition;
import com.ai.da.model.enums.Sex;
@@ -21,6 +28,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
@@ -37,6 +45,7 @@ import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.net.HttpURLConnection;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -56,6 +65,8 @@ public class PythonService {
private String accessPythonIp;
@Value("${access.python.port:''}")
private String accessPythonPort;
+ @Value("${access.python.sr}")
+ private String srPythonPort;
@Resource
private PythonTAllInfoService pythonTAllInfoService;
@@ -208,50 +219,25 @@ public class PythonService {
public DesignPythonObjects covertDesignParam(BigDecimal systemScale, String singleOverall,
String switchCategory, ValidateElementVO elementVO, String processId) {
DesignPythonObjects designPythonObjects = new DesignPythonObjects();
- List objects = Lists.newArrayList();
+ List objects = new ArrayList<>();
designPythonObjects.setObjects(objects);
designPythonObjects.setProcess_id(processId);
+
long pinPrintNum = calculateDesignPinPrintNum(elementVO.getPrintBoardElements());
long noPinPrintNum = calculateDesignNoPinPrintNum(elementVO.getPrintBoardElements());
- //没有print的
long noPrintNum = 8 - pinPrintNum - noPinPrintNum;
elementVO.setNoPinPrintNum(noPinPrintNum);
- //系统比列
- BigDecimal sysRatio = systemScale;
- int pinPictureNum = calculatePinPictureNum(elementVO.getSketchBoardElements(), elementVO.getHasUseMd5List());
- int sysPictureNum = calculateSysPictureNum(sysRatio, pinPictureNum);
- int userPictureNum = calculateUserLibraryPictureNum(sysPictureNum, pinPictureNum);
- int noPinPictureNum = 8 - pinPictureNum - sysPictureNum - userPictureNum;
+ int[] sketchNumbers = new int[3];
for (int i = 0; i < 8; i++) {
- //sketch计算
- CurrentDesignPictureTypeEnum designPictureType =
- calculateCurrentDesignPictureType(pinPictureNum, sysPictureNum, userPictureNum, noPinPictureNum);
- if (Objects.isNull(designPictureType)) {
- break;
- }
- switch (designPictureType) {
- case PIN:
- pinPictureNum--;
- break;
- case USER_LIBRARY:
- userPictureNum--;
- break;
- case SYS_FILE:
- sysPictureNum--;
- break;
- case NO_PIN:
- noPinPictureNum--;
- break;
- default:
- }
- //print计算
- CurrentDesignPrintPictureTypeEnum designPrintPictureType =
- calculateCurrentDesignPintPictureType(pinPrintNum, noPinPrintNum, noPrintNum);
- if (Objects.isNull(designPrintPictureType)) {
- break;
- }
+ CurrentDesignPictureTypeEnum designPictureType = calculateCurrentDesignPictureTypeNew(elementVO, sketchNumbers, systemScale);
+ if (designPictureType == null) break;
+
+ CurrentDesignPrintPictureTypeEnum designPrintPictureType = calculateCurrentDesignPintPictureType(pinPrintNum, noPinPrintNum, noPrintNum);
+ if (designPrintPictureType == null) break;
+
+ updateSketchNumbers(designPictureType, sketchNumbers);
switch (designPrintPictureType) {
case PIN:
pinPrintNum--;
@@ -262,38 +248,121 @@ public class PythonService {
case NO:
noPrintNum--;
break;
- default:
}
- //确定本次designSingle是否print
+// updatePrintNumbers(designPrintPictureType, pinPrintNum, noPinPrintNum, noPrintNum);
+
DesignPythonItemPrint designPythonItemPrint = getRandomPrint(elementVO, designPrintPictureType);
elementVO.setDesignPythonItemPrint(designPythonItemPrint);
- //参数透传 确定本次designSingle如果需要print对应的种类
elementVO.setDesignPrintPictureTypeLayoutList(calculateCurrentDesignPintPictureTypeLayout(elementVO.getModelSex()));
- //designSingle具体参数组装
- DesignPythonObject pythonObject = new DesignPythonObject();
- pythonObject.setItems(coverToDesignPythonItem(elementVO, designPictureType));
- pythonObject.setBasic(coverToBasic(pythonObject.getItems().get(0),
- singleOverall, switchCategory, elementVO.getDesignLibraryModelPoint()));
+
+ DesignPythonObject pythonObject = createDesignPythonObject(elementVO, designPictureType, systemScale, singleOverall, switchCategory);
objects.add(pythonObject);
}
return designPythonObjects;
}
+ private void updateSketchNumbers(CurrentDesignPictureTypeEnum designPictureType, int[] sketchNumbers) {
+ switch (designPictureType) {
+ case PIN:
+ sketchNumbers[0] ++;
+ break;
+ case NO_PIN:
+ sketchNumbers[2] --;
+ break;
+ case SYS_FILE:
+ sketchNumbers[1] --;
+ break;
+ }
+ }
+
+ private void updatePrintNumbers(CurrentDesignPrintPictureTypeEnum designPrintPictureType, long pinPrintNum, long noPinPrintNum, long noPrintNum) {
+ switch (designPrintPictureType) {
+ case PIN:
+ pinPrintNum--;
+ break;
+ case NO_PIN:
+ noPinPrintNum--;
+ break;
+ case NO:
+ noPrintNum--;
+ break;
+ }
+ }
+
+ private DesignPythonObject createDesignPythonObject(ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType, BigDecimal systemScale, String singleOverall, String switchCategory) {
+ DesignPythonObject pythonObject = new DesignPythonObject();
+ pythonObject.setItems(coverToDesignPythonItemNew(elementVO, designPictureType, systemScale));
+ pythonObject.setBasic(coverToBasic(pythonObject.getItems().get(0), singleOverall, switchCategory, elementVO.getDesignLibraryModelPoint()));
+ return pythonObject;
+ }
+
+
+ private CurrentDesignPictureTypeEnum calculateCurrentDesignPictureTypeNew(ValidateElementVO elementVO, int[] sketchNumbers, BigDecimal systemScale) {
+ List pinData = getPinData(elementVO);
+ if (CollectionUtil.isNotEmpty(pinData)) {
+ return CurrentDesignPictureTypeEnum.PIN;
+ } else {
+ if (sketchNumbers[1] == 0 && sketchNumbers[2] == 0) {
+ sketchNumbers[1] = systemScale.multiply(BigDecimal.valueOf(8 - sketchNumbers[0])).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
+ sketchNumbers[2] = 8 - sketchNumbers[0] - sketchNumbers[1];
+ }
+ if (sketchNumbers[2] > 0 && sketchNumbers[1] > 0) {
+ Long l = RandomsUtil.randomSysFile(0l, 2l);
+ if (l == 0l) {
+ return CurrentDesignPictureTypeEnum.NO_PIN;
+ }else {
+ return CurrentDesignPictureTypeEnum.SYS_FILE;
+ }
+ }
+ if (sketchNumbers[2] > 0) {
+ return CurrentDesignPictureTypeEnum.NO_PIN;
+ }
+ return CurrentDesignPictureTypeEnum.SYS_FILE;
+ }
+ }
+
+ private int calculateNoPinSketchNum(int pinSketchNum, int sysSketchNum) {
+ return 8 - pinSketchNum - sysSketchNum;
+ }
+
+ private int calculateSysSketchNum(BigDecimal sysRatio, int pinSketchNum) {
+ // Calculate sysRatio * (8 - pinSketchNum)
+ BigDecimal result = sysRatio.multiply(BigDecimal.valueOf(8 - pinSketchNum));
+
+ // Round the result to the nearest integer using half-up rounding
+
+ return result.setScale(0, RoundingMode.HALF_UP).intValue();
+ }
+
+// private int calculatePinSketchNum(List sketchBoardElements, List hasUseMd5List) {
+// List pinData = getPinData(sketchBoardElements, hasUseMd5List);
+// if (CollectionUtil.isEmpty(pinData)) {
+// return 0;
+// }
+//// long topNum = sketchBoardElements.stream()
+//// .filter(skecth -> skecth.getHasPin() == 1
+//// && DesignPythonItem.OUTWEAR_DRESS_BLOUSE.contains(skecth.getLevel2Type())).count();
+//// long bottomNum = sketchBoardElements.stream()
+//// .filter(skecth -> skecth.getHasPin() == 1
+//// && DesignPythonItem.SKIRT_TROUSERS.contains(skecth.getLevel2Type())).count();
+//// int num = Arrays.asList(topNum, bottomNum).stream().max(Comparator.comparing(Long::valueOf)).get().intValue();
+// int num = pinData.size();
+// return Math.min(num, 8);
+// }
+
//计算当前的图片类型
- private CurrentDesignPictureTypeEnum calculateCurrentDesignPictureType(int pinPictureNum, int sysPictureNum, int userPictureNum, int noPinPictureNum) {
+ private CurrentDesignPictureTypeEnum calculateCurrentDesignPictureType(int pinSketchNum, int sysSketchNum, int noPinSketchNum) {
List codes = Lists.newArrayList();
- if (pinPictureNum > 0) {
+ if (pinSketchNum > 0) {
//pin默认优先选择 不参与计算 后续有调整再说
// codes.add(pinPictureNum);
return CurrentDesignPictureTypeEnum.PIN;
}
- if (sysPictureNum > 0) {
+ if (sysSketchNum > 0) {
codes.add(CurrentDesignPictureTypeEnum.SYS_FILE.getCode());
}
- if (userPictureNum > 0) {
- codes.add(CurrentDesignPictureTypeEnum.USER_LIBRARY.getCode());
- }
- if (noPinPictureNum > 0) {
+
+ if (noPinSketchNum > 0) {
codes.add(CurrentDesignPictureTypeEnum.NO_PIN.getCode());
}
List pictureTypeEnums = CurrentDesignPictureTypeEnum.ofList(codes);
@@ -331,23 +400,23 @@ public class PythonService {
}
//计算Pin图片张数
- private int calculatePinPictureNum(List sketchBoardElements, List hasUseMd5List) {
- List pinData = getPinData(sketchBoardElements, hasUseMd5List);
- if (CollectionUtil.isEmpty(pinData)) {
- return 0;
- }
- long topNum = sketchBoardElements.stream()
- .filter(skecth -> skecth.getHasPin() == 1
- && DesignPythonItem.OUTWEAR_DRESS_BLOUSE.contains(skecth.getLevel2Type())).count();
- long bottomNum = sketchBoardElements.stream()
- .filter(skecth -> skecth.getHasPin() == 1
- && DesignPythonItem.SKIRT_TROUSERS.contains(skecth.getLevel2Type())).count();
- int num = Arrays.asList(topNum, bottomNum).stream().max(Comparator.comparing(Long::valueOf)).get().intValue();
- if (num > 8) {
- return 8;
- }
- return num;
- }
+// private int calculatePinPictureNum(List sketchBoardElements, List hasUseMd5List) {
+// List pinData = getPinData(sketchBoardElements, hasUseMd5List);
+// if (CollectionUtil.isEmpty(pinData)) {
+// return 0;
+// }
+// long topNum = sketchBoardElements.stream()
+// .filter(skecth -> skecth.getHasPin() == 1
+// && DesignPythonItem.OUTWEAR_DRESS_BLOUSE.contains(skecth.getLevel2Type())).count();
+// long bottomNum = sketchBoardElements.stream()
+// .filter(skecth -> skecth.getHasPin() == 1
+// && DesignPythonItem.SKIRT_TROUSERS.contains(skecth.getLevel2Type())).count();
+// int num = Arrays.asList(topNum, bottomNum).stream().max(Comparator.comparing(Long::valueOf)).get().intValue();
+// if (num > 8) {
+// return 8;
+// }
+// return num;
+// }
//计算当前的Print图片类型
private CurrentDesignPrintPictureTypeEnum calculateCurrentDesignPintPictureType(long pinPrintNum, long noPinPrintNum, long noPrintNum) {
@@ -432,41 +501,522 @@ public class PythonService {
}
}
- private List coverToDesignPythonItem(ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType) {
- //Pin的数据
- List pinData = getPinData(elementVO.getSketchBoardElements(), elementVO.getHasUseMd5List());
- //计算填充PythonItemBlouse
- List items = Lists.newArrayList();
- if (elementVO.getModelSex().equals("Female")) {
- List blouseList = calculatePythonItemBlouse(pinData, elementVO, designPictureType);
- if (!CollectionUtils.isEmpty(blouseList)) {
- items.addAll(blouseList);
- }
- //计算填充PythonItemSkirt
- DesignPythonItem skirt = calculatePythonItemSkirt(pinData, elementVO, designPictureType);
- if (Objects.nonNull(skirt)) {
- items.add(skirt);
+// private List coverToDesignPythonItem(ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType) {
+// //Pin的数据
+// List pinData = getPinData(elementVO.getSketchBoardElements(), elementVO.getHasUseMd5List());
+// //计算填充PythonItemBlouse
+// List items = Lists.newArrayList();
+// if (elementVO.getModelSex().equals("Female")) {
+// List blouseList = calculatePythonItemBlouse(pinData, elementVO, designPictureType);
+// if (!CollectionUtils.isEmpty(blouseList)) {
+// items.addAll(blouseList);
+// }
+// //计算填充PythonItemSkirt
+// DesignPythonItem skirt = calculatePythonItemSkirt(pinData, elementVO, designPictureType);
+// if (Objects.nonNull(skirt)) {
+// items.add(skirt);
+// }
+// } else {
+// // 男装逻辑
+// DesignPythonItem top = calculatePythonItemTop(pinData, elementVO, designPictureType);
+// if (Objects.nonNull(top)) {
+// items.add(top);
+// }
+// DesignPythonItem bottom = calculatePythonItemBottom(pinData, elementVO, designPictureType);
+// if (Objects.nonNull(bottom)) {
+// items.add(bottom);
+// }
+// if (SingleOverallEnum.SINGLE.getRealName().equals(elementVO.getSingleOverall()) && elementVO.getSwitchCategory().equals("Outwear")) {
+// DesignPythonItem outwear = calculatePythonItemOutwear(pinData, elementVO, designPictureType);
+// if (Objects.nonNull(outwear)) {
+// items.add(outwear);
+// }
+// }
+// }
+// //计算填充Hairstyle Earring Shoes Body
+// items.addAll(calculatePythonItemHairstyleShoes(elementVO, elementVO.getDesignLibraryModelPoint()));
+// return items;
+// }
+
+ private List coverToDesignPythonItemNew(ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType, BigDecimal systemScale) {
+ List itemList = new ArrayList<>();
+ DesignPythonItem designPythonItem = calculatePythonItem(elementVO, designPictureType);
+ if (Objects.nonNull(designPythonItem)) {
+ itemList.add(designPythonItem);
+ if (elementVO.getSingleOverall().equals(SingleOverallEnum.OVERALL.getRealName())) {
+ List otherSketchCategoryList = getOtherSketchCategoryList(elementVO.getModelSex(), designPythonItem);
+ if (!otherSketchCategoryList.isEmpty()) {
+ JSONObject attributeRecognition = getAttributeRecognition(designPythonItem, designPythonItem.getType(), elementVO.getModelSex());
+ for (String styleCategory : otherSketchCategoryList) {
+ DesignPythonItem otherSketch = processAttributeRecognition(attributeRecognition, elementVO, designPictureType, styleCategory, systemScale);
+ itemList.add(otherSketch);
+ }
+ }
+ itemList.addAll(calculatePythonItemHairstyleShoes(elementVO, elementVO.getDesignLibraryModelPoint()));
}
+ }
+ return itemList;
+ }
+
+ private DesignPythonItem processAttributeRecognition(JSONObject attributeRecognition, ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType, String styleCategory, BigDecimal systemScale) {
+ switch (designPictureType) {
+ case PIN:
+ return processPinAttributeRecognition(attributeRecognition, elementVO, styleCategory, systemScale);
+ case NO_PIN:
+ case SYS_FILE:
+ return processNoPinOrSysFileAttributeRecognition(attributeRecognition, elementVO, styleCategory, systemScale);
+ default:
+ throw new BusinessException("unknown designPictureType");
+ }
+ }
+
+ private DesignPythonItem processPinAttributeRecognition(JSONObject attributeRecognition, ValidateElementVO elementVO, String styleCategory, BigDecimal systemScale) {
+ List collectPin = getFilteredCollectionElements(elementVO.getSketchBoardElements(), 1, styleCategory);
+ if (CollectionUtil.isNotEmpty(collectPin)) {
+ int randomNum = RandomsUtil.randomSysFile(collectPin.size());
+ elementVO.getHasUseMd5List().add(collectPin.get(randomNum).getMd5());
+ return coverSketchToDesignPythonItem(collectPin.get(randomNum).getId(), collectPin.get(randomNum), elementVO);
} else {
- // 男装逻辑
- DesignPythonItem top = calculatePythonItemTop(pinData, elementVO, designPictureType);
- if (Objects.nonNull(top)) {
- items.add(top);
- }
- DesignPythonItem bottom = calculatePythonItemBottom(pinData, elementVO, designPictureType);
- if (Objects.nonNull(bottom)) {
- items.add(bottom);
- }
- if (SingleOverallEnum.SINGLE.getRealName().equals(elementVO.getSingleOverall()) && elementVO.getSwitchCategory().equals("Outwear")) {
- DesignPythonItem outwear = calculatePythonItemOutwear(pinData, elementVO, designPictureType);
- if (Objects.nonNull(outwear)) {
- items.add(outwear);
+ List collectNoPin = getFilteredCollectionElements(elementVO.getSketchBoardElements(), 0, styleCategory);
+ return processNoPinOrSysFileAttributeRecognitionWithPool(collectNoPin, attributeRecognition, elementVO, styleCategory, systemScale);
+ }
+ }
+
+ private DesignPythonItem processNoPinOrSysFileAttributeRecognition(JSONObject attributeRecognition, ValidateElementVO elementVO, String styleCategory, BigDecimal systemScale) {
+ List collectNoPin = getFilteredCollectionElements(elementVO.getSketchBoardElements(), 0, styleCategory);
+ return processNoPinOrSysFileAttributeRecognitionWithPool(collectNoPin, attributeRecognition, elementVO, styleCategory, systemScale);
+ }
+
+ private DesignPythonItem processNoPinOrSysFileAttributeRecognitionWithPool(List collectionElements, JSONObject attributeRecognition, ValidateElementVO elementVO, String styleCategory, BigDecimal systemScale) {
+ int poolNum = 20;
+ if (CollectionUtil.isNotEmpty(collectionElements)) {
+ int collectionNoPinSize = collectionElements.size();
+ if (systemScale.compareTo(BigDecimal.ZERO) == 0) {
+ int randomNum = RandomsUtil.randomSysFile(collectionNoPinSize);
+ return coverSketchToDesignPythonItem(null, collectionElements.get(randomNum), elementVO);
+ } else if (systemScale.compareTo(BigDecimal.ONE) != 0) {
+ BigDecimal collectNoPinSize = BigDecimal.valueOf(collectionNoPinSize);
+ poolNum = collectNoPinSize.divide(systemScale, 0, RoundingMode.DOWN).intValue();
+ List list = getSystemSketchPool(attributeRecognition, styleCategory, elementVO.getModelSex(), poolNum);
+ collectionElements.addAll(list);
+ int randomNum = RandomsUtil.randomSysFile(collectionElements.size());
+ if (randomNum < collectionNoPinSize) {
+ return coverSketchToDesignPythonItem(collectionElements.get(randomNum).getId(), collectionElements.get(randomNum), elementVO);
+ } else {
+ return coverSketchToDesignPythonItem(null, collectionElements.get(randomNum), elementVO);
}
}
}
- //计算填充Hairstyle Earring Shoes Body
- items.addAll(calculatePythonItemHairstyleShoes(elementVO, elementVO.getDesignLibraryModelPoint()));
- return items;
+ List list = getSystemSketchPool(attributeRecognition, styleCategory, elementVO.getModelSex(), poolNum);
+ int randomNum = RandomsUtil.randomSysFile(list.size());
+ return coverSketchToDesignPythonItem(null, list.get(randomNum), elementVO);
+ }
+
+ private List getFilteredCollectionElements(List elements, int hasPin, String styleCategory) {
+ return CollectionUtil.isNotEmpty(elements) ? elements.stream().filter(o -> o.getHasPin() == hasPin && o.getLevel2Type().equals(styleCategory)).collect(Collectors.toList()) : null;
+ }
+
+ private DesignPythonItem processAttributeRecognitionBySameCategory(JSONObject attributeRecognition, ValidateElementVO elementVO, String styleCategory) {
+ List list = getSystemSketchPoolBySameCategory(attributeRecognition, styleCategory, elementVO.getModelSex());
+ int randomNum = RandomsUtil.randomSysFile(list.size());
+ return coverSketchToDesignPythonItem(null, list.get(randomNum), elementVO);
+ }
+
+ @Resource
+ private AttributeRetrievalMapper attributeRetrievalMapper;
+
+ private List getSystemSketchPool(JSONObject attributeRecognition, String styleCategory, String modelSex, int poolNum) {
+ /**
+ * female trousers->female_pants
+ * female blouse->female_top
+ * female skirt->female_skirt
+ * female outwear->female_outwear
+ * female dress->female_dress
+ */
+ JSONObject data = attributeRecognition.getJSONObject("data");
+ JSONObject attrDict = ((JSONObject) data.getJSONArray("list").get(0)).getJSONObject("attr_dict");
+ AttributeRecognitionJSON attrDictJSON = attrDict.toJavaObject(AttributeRecognitionJSON.class);
+ AttributeRetrieval attributeRetrievalAttrDict = toAttrDict(attrDictJSON);
+ String tableName;
+ tableName = getTableName(modelSex, styleCategory);
+ List attributeRetrievalList = attributeRetrievalMapper.getSystemSketchPool(attributeRetrievalAttrDict, tableName, poolNum);
+ if (CollectionUtil.isEmpty(attributeRetrievalList) || attributeRetrievalList.size() < poolNum) {
+ attributeRetrievalAttrDict.setDesign(null);
+ attributeRetrievalList = attributeRetrievalMapper.getSystemSketchPool(attributeRetrievalAttrDict, tableName, poolNum);
+ }
+ if (CollectionUtil.isEmpty(attributeRetrievalList) || attributeRetrievalList.size() < poolNum) {
+ attributeRetrievalAttrDict.setSilhouette(null);
+ attributeRetrievalList = attributeRetrievalMapper.getSystemSketchPool(attributeRetrievalAttrDict, tableName, poolNum);
+ }
+ return toColoectionElementList(attributeRetrievalList, styleCategory, modelSex);
+ }
+
+ private List getSystemSketchPoolBySameCategory(JSONObject attributeRecognition, String styleCategory, String modelSex) {
+ /**
+ * female trousers->female_pants
+ * female blouse->female_top
+ * female skirt->female_skirt
+ * female outwear->female_outwear
+ * female dress->female_dress
+ */
+ JSONObject data = attributeRecognition.getJSONObject("data");
+ JSONObject attrDict = ((JSONObject) data.getJSONArray("list").get(0)).getJSONObject("attr_dict");
+ AttributeRecognitionJSON attrDictJSON = attrDict.toJavaObject(AttributeRecognitionJSON.class);
+ AttributeRetrieval attributeRetrievalAttrDict = toAttrDict(attrDictJSON);
+ String tableName;
+ tableName = getTableName(modelSex, styleCategory);
+
+ // 存储非空字段的列表
+ List