diff --git a/pom.xml b/pom.xml
index e20e83e1..ff9df865 100644
--- a/pom.xml
+++ b/pom.xml
@@ -288,6 +288,28 @@
spring-boot-starter-websocket
+
+ com.google.auth
+ google-auth-library-oauth2-http
+ 1.8.0
+
+
+
+ com.google.api-client
+ google-api-client
+ 1.32.1
+
+
+ com.google.oauth-client
+ google-oauth-client
+ 1.32.1
+
+
+ com.google.http-client
+ google-http-client-jackson2
+ 1.41.5
+
+
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 a70bc51b..54dbf3a6 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
@@ -51,7 +51,7 @@ public class AuthenticationFilter extends OncePerRequestFilter {
"/api/python/flush","/api/account/healthy","/api/ali-pay/trade/notify","/api/paypal/ipn/back","/api/alipay-hk/trade/notify",
"/api/portfolio/page", "/api/portfolio/detail", "/api/portfolio/commentPage", "/api/portfolio/viewsIncrease",
"/api/account/designWorksRegister","/api/account/questionnaire","/api/stripe/trade/notify",
- "/notification","/api/account/activateNewEmail","/api/third/party/auth/google_callback"
+ "/notification","/api/account/activateNewEmail","/api/third/party/auth/google_callback","/api/third/party/parseGoogleCredential","/api/third/party/receiveDesignResults","/api/third/party/parseWeChatCode"
);
@Override
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 bf5bea69..f8b86a51 100644
--- a/src/main/java/com/ai/da/common/utils/MinioUtil.java
+++ b/src/main/java/com/ai/da/common/utils/MinioUtil.java
@@ -484,6 +484,57 @@ public class MinioUtil {
return null; // or throw an exception
}
}
+
+ /**
+ * 从 MinIO 下载对象到本地路径
+ *
+ * @param bucketName 存储桶名称
+ * @param objectName MinIO 上对象的名称
+ * @param localFilePath 本地文件路径
+ */
+ public void downloadMinioObjectToLocal(String bucketName, String objectName, String localFilePath) {
+ File localFile = new File(localFilePath);
+ File parentDir = localFile.getParentFile();
+ if (parentDir != null) {
+ parentDir.mkdirs(); // 创建文件夹,确保路径结构与 MinIO 一致
+ }
+
+ try (InputStream stream = minioClient.getObject(
+ GetObjectArgs.builder().bucket(bucketName).object(objectName).build());
+ FileOutputStream out = new FileOutputStream(localFile)) {
+
+ byte[] buffer = new byte[1024];
+ int bytesRead;
+ while ((bytesRead = stream.read(buffer)) != -1) {
+ out.write(buffer, 0, bytesRead);
+ }
+ log.info("Downloaded object {} to {}", objectName, localFilePath);
+ } catch (Exception e) {
+ log.error("Error while downloading object {}: {}", objectName, e.getMessage());
+ }
+ }
+
+ /**
+ * 从路径中提取存储桶名称
+ *
+ * @param path MinIO 路径
+ * @return 存储桶名称
+ */
+ public String getBucketNameFromPath(String path) {
+ int index = path.indexOf("/");
+ return path.substring(0, index); // 获取第一级路径作为 bucket 名称
+ }
+
+ /**
+ * 从路径中提取对象名称
+ *
+ * @param path MinIO 路径
+ * @return 对象名称
+ */
+ public String getObjectNameFromPath(String path) {
+ int index = path.indexOf("/");
+ return path.substring(index + 1); // 获取路径的其余部分作为对象名称
+ }
}
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 490b598f..9dd76934 100644
--- a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java
+++ b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java
@@ -395,20 +395,20 @@ public class SendEmailUtil {
// 根据邮件类型设置不同的主题和模板
String subject = "";
Template template = new Template();
- if (type == 1) {
- subject = "Upcoming System Upgrade for AiDA 3.0";
- template.setTemplateID(UPGRADE_NOTIFICATION_ID);
- } else {
- subject = "即将到来的AiDA 3.0系统升级";
- template.setTemplateID(UPGRADE_NOTIFICATION_ID_CHINESE);
- }
// if (type == 1) {
-// subject = "Successful System Upgrade and New Features in AiDA 3.1";
-// template.setTemplateID(UPGRADE_SUCCESS_NOTIFICATION_ID);
+// subject = "Upcoming System Upgrade for AiDA 3.0";
+// template.setTemplateID(UPGRADE_NOTIFICATION_ID);
// }else {
-// subject = "系统升级成功和AiDA 3.1新功能";
-// template.setTemplateID(UPGRADE_SUCCESS_NOTIFICATION_ID_CHINESE);
+// subject = "即将到来的AiDA 3.0系统升级";
+// template.setTemplateID(UPGRADE_NOTIFICATION_ID_CHINESE);
// }
+ if (type == 1) {
+ subject = "Successful System Upgrade and New Features in AiDA 3.1";
+ template.setTemplateID(UPGRADE_SUCCESS_NOTIFICATION_ID);
+ }else {
+ subject = "系统升级成功和AiDA 3.1新功能";
+ template.setTemplateID(UPGRADE_SUCCESS_NOTIFICATION_ID_CHINESE);
+ }
template.setTemplateData(buildAccountData(account));
req.setSubject(subject);
@@ -776,6 +776,47 @@ public class SendEmailUtil {
throw new BusinessException("failed.to.send.mail");
}
}
+ private final static Long SYSTEM_UPGRADE_CN_ID = 131743L;
+ private final static Long SYSTEM_UPGRADE_EN_ID = 131744L;
+ public static void temporaryUpgrade(Account account, String senderAddress, int type) {
+ 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();
+ if (StringUtils.isEmpty(senderAddress)) {
+ senderAddress = CODE_CREATE_SEND_ADDRESS;
+ }
+ req.setFromEmailAddress(senderAddress);
+ req.setDestination(new String[]{account.getUserEmail()});
+
+ // 根据邮件类型设置不同的主题和模板
+ String subject = "";
+ Template template = new Template();
+ if (type == 1) {
+ subject = "AiDA system upgrade completed";
+ template.setTemplateID(SYSTEM_UPGRADE_EN_ID);
+ }else {
+ subject = "AiDA系统升级完成";
+ template.setTemplateID(SYSTEM_UPGRADE_CN_ID);
+ }
+ template.setTemplateData(buildAccountData(account));
+
+ 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");
+ }
+ }
private final static Long CANCEL_MERCHANT_EN = 130720L;
private final static Long NEW_MERCHANT_EN = 130721L;
diff --git a/src/main/java/com/ai/da/controller/AccountController.java b/src/main/java/com/ai/da/controller/AccountController.java
index c73fcdaa..5ec9754a 100644
--- a/src/main/java/com/ai/da/controller/AccountController.java
+++ b/src/main/java/com/ai/da/controller/AccountController.java
@@ -3,6 +3,7 @@ package com.ai.da.controller;
import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.response.Response;
+import com.ai.da.mapper.primary.entity.Account;
import com.ai.da.mapper.primary.entity.TrialOrder;
import com.ai.da.model.dto.*;
import com.ai.da.model.vo.AccountLoginVO;
@@ -261,5 +262,66 @@ public class AccountController {
return Response.success(true);
}
+ @PostMapping("temporaryUpgrade")
+ @ApiOperation(value = "临时升级")
+ public Response temporaryUpgrade() {
+ accountService.temporaryUpgrade();
+ return Response.success(true);
+ }
+ @PostMapping("enterpriseLogin")
+ @ApiOperation(value = "企业登录")
+ public Response enterpriseLogin(@Valid @RequestBody AccountLoginDTO accountDTO) {
+ return Response.success(accountService.enterpriseLogin(accountDTO));
+ }
+
+ @PostMapping("schoolLogin")
+ @ApiOperation(value = "学校登录")
+ public Response schoolLogin(@Valid @RequestBody AccountLoginDTO accountDTO) {
+ return Response.success(accountService.schoolLogin(accountDTO));
+ }
+
+ @PostMapping("addOrUpdateSubAccount")
+ @ApiOperation(value = "子账号新增")
+ public Response addSubAccount(@Valid @RequestBody AddSubAccountDTO addSubAccountDTO) {
+ return Response.success(accountService.addSubAccount(addSubAccountDTO));
+ }
+
+ @PostMapping("deleteSubAccount")
+ @ApiOperation(value = "子账号删除")
+ public Response deleteSubAccount(@Valid @RequestBody AddSubAccountDTO addSubAccountDTO) {
+ return Response.success(accountService.deleteSubAccount(addSubAccountDTO));
+ }
+
+ @PostMapping("subAccountList")
+ @ApiOperation(value = "子账号查询")
+ public Response> subAccountList(@Valid @RequestBody SubAccountPageDTO subAccountPageDTO) {
+ return Response.success(accountService.subAccountList(subAccountPageDTO));
+ }
+
+ @GetMapping("accountDetail")
+ @ApiOperation(value = "账号详情")
+ public Response accountDetail(@RequestParam("id") Long id) {
+ return Response.success(accountService.accountDetail(id));
+ }
+
+ @PostMapping("getAccountDetail")
+ @ApiOperation(value = "获取账户信息")
+ public Response getAccountDetail() {
+ return Response.success(accountService.getAccountDetail());
+ }
+
+ @CrossOrigin
+ @GetMapping("/bindGoogle")
+ @ApiOperation(value = "绑定谷歌")
+ public Response bindGoogle(@RequestParam("credential") String credential) {
+ return Response.success(accountService.bindGoogle(credential));
+ }
+
+ @CrossOrigin
+ @GetMapping("/bindWeChat")
+ @ApiOperation(value = "绑定微信")
+ public Response bindWeChat(@RequestParam("code") String code) {
+ return Response.success(accountService.bindWeChat(code));
+ }
}
diff --git a/src/main/java/com/ai/da/controller/DesignController.java b/src/main/java/com/ai/da/controller/DesignController.java
index 2ea463c1..934bcecb 100644
--- a/src/main/java/com/ai/da/controller/DesignController.java
+++ b/src/main/java/com/ai/da/controller/DesignController.java
@@ -31,7 +31,7 @@ public class DesignController {
@ApiOperation(value = "设计 Conllection")
@PostMapping("/designCollection")
@CrossOrigin
- public Response designCollection(@Valid @RequestBody DesignCollectionDTO designDTO) {
+ public Response designCollection(@Valid @RequestBody DesignCollectionDTO designDTO) {
return Response.success(designService.designCollection(designDTO));
}
@@ -43,7 +43,7 @@ public class DesignController {
@ApiOperation(value = "重新设计 Collection")
@PostMapping("/reDesignCollection")
- public Response reDesignCollection(@Valid @RequestBody ReDesignCollectionDTO reDesignDTO) {
+ public Response reDesignCollection(@Valid @RequestBody ReDesignCollectionDTO reDesignDTO) {
return Response.success(designService.reDesignCollection(reDesignDTO));
}
@@ -83,4 +83,16 @@ public class DesignController {
return Response.success(designService.getModel(designItemIdList));
}
+ @ApiOperation(value = "获取design结果")
+ @GetMapping("/getDesignResult")
+ public Response getDesignResult(@RequestParam("requestId") String requestId, @RequestParam("objectSignList") List objectSignList){
+ return Response.success(designService.getDesignResult(requestId, objectSignList));
+ }
+
+ @ApiOperation(value = "云生成")
+ @PostMapping("/designCloud")
+ @CrossOrigin
+ public Response designCloud(@Valid @RequestBody DesignCollectionDTO designDTO) {
+ return Response.success(designService.designCloud(designDTO));
+ }
}
diff --git a/src/main/java/com/ai/da/controller/SavedCollectionController.java b/src/main/java/com/ai/da/controller/SavedCollectionController.java
index 29cbabac..bcd07da1 100644
--- a/src/main/java/com/ai/da/controller/SavedCollectionController.java
+++ b/src/main/java/com/ai/da/controller/SavedCollectionController.java
@@ -245,4 +245,16 @@ public class SavedCollectionController {
public Response likeHistoryRelSketch() {
return Response.success(userLikeGroupService.likeHistoryRelSketch());
}
+
+ @ApiOperation(value = "download")
+ @PostMapping("/download")
+ public Response download() {
+ return Response.success(userLikeGroupService.download());
+ }
+
+ @ApiOperation(value = "productImageInitialize")
+ @PostMapping("/productImageInitialize")
+ public Response productImageUpload(@Valid @RequestBody ProductImageInitializeDTO productImageInitializeDTO) {
+ return Response.success(userLikeGroupService.productImageInitialize(productImageInitializeDTO));
+ }
}
diff --git a/src/main/java/com/ai/da/controller/ThirdPartyController.java b/src/main/java/com/ai/da/controller/ThirdPartyController.java
index e077fa8c..c0ff893f 100644
--- a/src/main/java/com/ai/da/controller/ThirdPartyController.java
+++ b/src/main/java/com/ai/da/controller/ThirdPartyController.java
@@ -1,9 +1,13 @@
package com.ai.da.controller;
import com.ai.da.common.response.Response;
+import com.ai.da.mapper.primary.entity.GoogleUser;
import com.ai.da.model.dto.*;
import com.ai.da.model.vo.AccountLoginVO;
+import com.ai.da.model.vo.DesignCollectionVO;
import com.ai.da.service.AccountService;
+import com.ai.da.service.DesignService;
+import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -28,6 +32,9 @@ public class ThirdPartyController {
@Resource
private AccountService accountService;
+ @Resource
+ private DesignService designService;
+
/*@ApiOperation(value = "Add user information")
@PostMapping("/addUser")
public Response addUser(@Valid @RequestBody AccountAddDTO accountAddDTO) {
@@ -121,4 +128,22 @@ public class ThirdPartyController {
public Response googleCallback(@RequestParam("code") String code, HttpSession session) {
return Response.success(accountService.googleCallback(code, session));
}
+ @CrossOrigin
+ @GetMapping("/parseGoogleCredential")
+ public Response parseGoogleCredential(@RequestParam("credential") String credential) {
+ return Response.success(accountService.parseGoogleCredential(credential));
+ }
+
+ @CrossOrigin
+ @GetMapping("/parseWeChatCode")
+ public Response parseWeChatCode(@RequestParam("code") String code) {
+ return Response.success(accountService.parseWeChatCode(code));
+ }
+
+ @ApiOperation(value = "接收Design结果")
+ @PostMapping("/receiveDesignResults")
+ @CrossOrigin
+ public Response receiveDesignResults(@Valid @RequestBody JSONObject responseObject) {
+ return Response.success(designService.receiveDesignResults(responseObject));
+ }
}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/AccountExtendMapper.java b/src/main/java/com/ai/da/mapper/primary/AccountExtendMapper.java
similarity index 74%
rename from src/main/java/com/ai/da/mapper/primary/entity/AccountExtendMapper.java
rename to src/main/java/com/ai/da/mapper/primary/AccountExtendMapper.java
index 312fa810..687790e3 100644
--- a/src/main/java/com/ai/da/mapper/primary/entity/AccountExtendMapper.java
+++ b/src/main/java/com/ai/da/mapper/primary/AccountExtendMapper.java
@@ -1,6 +1,7 @@
-package com.ai.da.mapper.primary.entity;
+package com.ai.da.mapper.primary;
import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.AccountExtend;
import java.util.Date;
import java.util.List;
diff --git a/src/main/java/com/ai/da/mapper/primary/ProductImageAttributeMapper.java b/src/main/java/com/ai/da/mapper/primary/ProductImageAttributeMapper.java
new file mode 100644
index 00000000..65d0551a
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/ProductImageAttributeMapper.java
@@ -0,0 +1,7 @@
+package com.ai.da.mapper.primary;
+
+import com.ai.da.common.config.mybatis.plus.CommonMapper;
+import com.ai.da.mapper.primary.entity.ProductImageAttribute;
+
+public interface ProductImageAttributeMapper extends CommonMapper {
+}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Account.java b/src/main/java/com/ai/da/mapper/primary/entity/Account.java
index 60fcc9f0..dc4a93ae 100644
--- a/src/main/java/com/ai/da/mapper/primary/entity/Account.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/Account.java
@@ -97,6 +97,10 @@ public class Account implements Serializable {
* 2 : 月付用户
* 3 : 试用用户
* 4 : 参加活动获取30天有效期和6000个积分的用户
+ * 5 : 企业管理员账号
+ * 6 : 企业子账号
+ * 7 : 学校管理员
+ * 8 : 学校子账号
*/
private Integer systemUser;
@@ -105,6 +109,15 @@ public class Account implements Serializable {
*/
private String avatar;
- private Long invitationCode;
+ private String organizationName;
+ private Long parentId;
+
+ private Integer isAdmin;
+
+ private BigDecimal shareCredits;
+
+ private Integer subAccountNum;
+
+ private String invitationCode;
}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/AccountExtend.java b/src/main/java/com/ai/da/mapper/primary/entity/AccountExtend.java
index 5742f0ec..c5b612b1 100644
--- a/src/main/java/com/ai/da/mapper/primary/entity/AccountExtend.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/AccountExtend.java
@@ -1,5 +1,6 @@
package com.ai.da.mapper.primary.entity;
+import com.ai.da.common.response.PageResponse;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -26,5 +27,9 @@ public class AccountExtend implements Serializable {
private String authType;
+ private String headImgUrl;
+
+ private String name;
+
private String auth;
}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/GoogleUser.java b/src/main/java/com/ai/da/mapper/primary/entity/GoogleUser.java
index b15410e8..ba2e5139 100644
--- a/src/main/java/com/ai/da/mapper/primary/entity/GoogleUser.java
+++ b/src/main/java/com/ai/da/mapper/primary/entity/GoogleUser.java
@@ -4,7 +4,11 @@ import lombok.Data;
@Data
public class GoogleUser {
- private String id;
+ private String sub; // 用户唯一标识
private String email;
private String name;
+ private String picture;
+ private boolean emailVerified;
+ private String givenName;
+ private String familyName;
}
diff --git a/src/main/java/com/ai/da/mapper/primary/entity/ProductImageAttribute.java b/src/main/java/com/ai/da/mapper/primary/entity/ProductImageAttribute.java
new file mode 100644
index 00000000..129eb32b
--- /dev/null
+++ b/src/main/java/com/ai/da/mapper/primary/entity/ProductImageAttribute.java
@@ -0,0 +1,35 @@
+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;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("product_image_attribute")
+public class ProductImageAttribute implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ 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 style;
+}
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
index 84cc1b91..12ef2329 100644
--- a/src/main/java/com/ai/da/mapper/secondary/entity/AttributeRetrieval.java
+++ b/src/main/java/com/ai/da/mapper/secondary/entity/AttributeRetrieval.java
@@ -19,6 +19,4 @@ public class AttributeRetrieval {
private String subtype;
private String style;
-
- private Integer deprecated;
}
diff --git a/src/main/java/com/ai/da/model/dto/AccountLoginDTO.java b/src/main/java/com/ai/da/model/dto/AccountLoginDTO.java
index 2c1483c9..2f536ffb 100644
--- a/src/main/java/com/ai/da/model/dto/AccountLoginDTO.java
+++ b/src/main/java/com/ai/da/model/dto/AccountLoginDTO.java
@@ -32,4 +32,6 @@ public class AccountLoginDTO {
@ApiModelProperty("邮箱验证码")
private String emailVerifyCode;
+ private String organizationName;
+
}
diff --git a/src/main/java/com/ai/da/model/dto/AddSubAccountDTO.java b/src/main/java/com/ai/da/model/dto/AddSubAccountDTO.java
new file mode 100644
index 00000000..2f894789
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/AddSubAccountDTO.java
@@ -0,0 +1,12 @@
+package com.ai.da.model.dto;
+
+import com.ai.da.mapper.primary.entity.Account;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AddSubAccountDTO extends Account {
+
+ private List deleteIdList;
+}
diff --git a/src/main/java/com/ai/da/model/dto/DesignCollectionDTO.java b/src/main/java/com/ai/da/model/dto/DesignCollectionDTO.java
index 478483c4..91120a0b 100644
--- a/src/main/java/com/ai/da/model/dto/DesignCollectionDTO.java
+++ b/src/main/java/com/ai/da/model/dto/DesignCollectionDTO.java
@@ -63,4 +63,8 @@ public class DesignCollectionDTO {
private String moodboardPostion;
+ private List requestIdList;
+
+ private Integer designNum;
+
}
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 16fa7988..64c31bb7 100644
--- a/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java
+++ b/src/main/java/com/ai/da/model/dto/GenerateToPythonDTO.java
@@ -29,12 +29,15 @@ public class GenerateToPythonDTO {
private String svg;
- public GenerateToPythonDTO(String tasks_id, String prompt, String image_url, String mode, String category, String gender) {
+ private String version;
+
+ public GenerateToPythonDTO(String tasks_id, String prompt, String image_url, String mode, String category, String gender, String version) {
this.image_url = image_url;
this.category = category;
this.prompt = prompt;
this.mode = mode;
this.tasks_id = tasks_id;
this.gender = gender;
+ this.version = version;
}
}
diff --git a/src/main/java/com/ai/da/model/dto/ProductImageInitializeDTO.java b/src/main/java/com/ai/da/model/dto/ProductImageInitializeDTO.java
new file mode 100644
index 00000000..a3aace06
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/ProductImageInitializeDTO.java
@@ -0,0 +1,10 @@
+package com.ai.da.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProductImageInitializeDTO {
+ private List libraryIds;
+}
diff --git a/src/main/java/com/ai/da/model/dto/ReDesignCollectionDTO.java b/src/main/java/com/ai/da/model/dto/ReDesignCollectionDTO.java
index b72a690a..8c8bbe48 100644
--- a/src/main/java/com/ai/da/model/dto/ReDesignCollectionDTO.java
+++ b/src/main/java/com/ai/da/model/dto/ReDesignCollectionDTO.java
@@ -33,7 +33,7 @@ public class ReDesignCollectionDTO {
@ApiModelProperty("市场手稿板图片id 数组")
private List marketingSketchs;
- @NotNull(message = "colorBoards.cannot.be.empty")
+ @NotNull(message = "systemScale.cannot.be.empty")
@ApiModelProperty("系统取图比列")
private BigDecimal systemScale;
@@ -67,4 +67,8 @@ public class ReDesignCollectionDTO {
private String moodboardPosition;
private String moodTemplateId;
+
+ private List requestIdList;
+
+ private Integer designNum;
}
diff --git a/src/main/java/com/ai/da/model/dto/SubAccountPageDTO.java b/src/main/java/com/ai/da/model/dto/SubAccountPageDTO.java
new file mode 100644
index 00000000..f5dcc995
--- /dev/null
+++ b/src/main/java/com/ai/da/model/dto/SubAccountPageDTO.java
@@ -0,0 +1,9 @@
+package com.ai.da.model.dto;
+
+import com.ai.da.model.vo.PageQueryBaseVo;
+import lombok.Data;
+
+@Data
+public class SubAccountPageDTO extends PageQueryBaseVo {
+ private String userName;
+}
diff --git a/src/main/java/com/ai/da/model/vo/AccountLoginVO.java b/src/main/java/com/ai/da/model/vo/AccountLoginVO.java
index ab23b872..9a1f9b85 100644
--- a/src/main/java/com/ai/da/model/vo/AccountLoginVO.java
+++ b/src/main/java/com/ai/da/model/vo/AccountLoginVO.java
@@ -1,5 +1,6 @@
package com.ai.da.model.vo;
+import com.ai.da.mapper.primary.entity.AccountExtend;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
@@ -8,6 +9,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
+import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@@ -40,4 +42,6 @@ public class AccountLoginVO {
private Long followerCount;
+ private List accountExtendList;
+
}
diff --git a/src/main/java/com/ai/da/model/vo/DesignCollectionItemVO.java b/src/main/java/com/ai/da/model/vo/DesignCollectionItemVO.java
index dc15cd14..1c98e059 100644
--- a/src/main/java/com/ai/da/model/vo/DesignCollectionItemVO.java
+++ b/src/main/java/com/ai/da/model/vo/DesignCollectionItemVO.java
@@ -22,6 +22,8 @@ public class DesignCollectionItemVO {
@ApiModelProperty("t_design_python_outfit id")
private String designOutfitUrl;
+ private String objectSign;
+
public DesignCollectionItemVO() {
}
diff --git a/src/main/java/com/ai/da/model/vo/DesignCollectionVO.java b/src/main/java/com/ai/da/model/vo/DesignCollectionVO.java
index 8ad6e7a4..807f364c 100644
--- a/src/main/java/com/ai/da/model/vo/DesignCollectionVO.java
+++ b/src/main/java/com/ai/da/model/vo/DesignCollectionVO.java
@@ -23,6 +23,8 @@ public class DesignCollectionVO {
private String processId;
+ private List UnfinishedList;
+
public DesignCollectionVO() {
}
}
diff --git a/src/main/java/com/ai/da/model/vo/GoogleTokenResponse.java b/src/main/java/com/ai/da/model/vo/GoogleTokenResponse.java
index f742d3c0..71676761 100644
--- a/src/main/java/com/ai/da/model/vo/GoogleTokenResponse.java
+++ b/src/main/java/com/ai/da/model/vo/GoogleTokenResponse.java
@@ -6,5 +6,8 @@ import lombok.Data;
public class GoogleTokenResponse {
private String accessToken;
private String idToken;
+ private long expiresIn;
+ private String tokenType;
+ private String scope;
}
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 f2cb87a1..73912616 100644
--- a/src/main/java/com/ai/da/model/vo/ValidateElementVO.java
+++ b/src/main/java/com/ai/da/model/vo/ValidateElementVO.java
@@ -47,4 +47,8 @@ public class ValidateElementVO {
private String modelSex;
private String style;
+
+ private List requestIdList;
+
+ private Integer designNum;
}
diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java
index 08113d91..3032a498 100644
--- a/src/main/java/com/ai/da/python/PythonService.java
+++ b/src/main/java/com/ai/da/python/PythonService.java
@@ -230,13 +230,14 @@ public class PythonService {
designPythonObjects.setProcess_id(processId);
long pinPrintNum = calculateDesignPinPrintNum(elementVO.getPrintBoardElements());
- long noPinPrintNum = calculateDesignNoPinPrintNum(elementVO.getPrintBoardElements());
- long noPrintNum = 8 - pinPrintNum - noPinPrintNum;
+ long noPinPrintNum = calculateDesignNoPinPrintNum(elementVO.getPrintBoardElements(), elementVO.getDesignNum());
+ long noPrintNum = elementVO.getDesignNum() - pinPrintNum - noPinPrintNum;
elementVO.setNoPinPrintNum(noPinPrintNum);
int[] sketchNumbers = new int[3];
- for (int i = 0; i < 8; i++) {
+ int designNum = elementVO.getDesignNum();
+ for (int i = 0; i < designNum; i++) {
CurrentDesignPictureTypeEnum designPictureType = calculateCurrentDesignPictureTypeNew(elementVO, sketchNumbers, systemScale);
if (designPictureType == null) break;
@@ -261,7 +262,7 @@ public class PythonService {
elementVO.setDesignPythonItemPrint(designPythonItemPrint);
elementVO.setDesignPrintPictureTypeLayoutList(calculateCurrentDesignPintPictureTypeLayout(elementVO.getModelSex()));
- DesignPythonObject pythonObject = createDesignPythonObject(elementVO, designPictureType, systemScale, singleOverall, switchCategory);
+ DesignPythonObject pythonObject = createDesignPythonObject(elementVO, designPictureType, systemScale, singleOverall, switchCategory, i);
objects.add(pythonObject);
redisUtil.addProcessId(processId, i + 1);
}
@@ -296,22 +297,24 @@ public class PythonService {
}
}
- private DesignPythonObject createDesignPythonObject(ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType, BigDecimal systemScale, String singleOverall, String switchCategory) {
+ private DesignPythonObject createDesignPythonObject(ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType, BigDecimal systemScale, String singleOverall, String switchCategory, int i) {
DesignPythonObject pythonObject = new DesignPythonObject();
pythonObject.setItems(coverToDesignPythonItemNew(elementVO, designPictureType, systemScale));
pythonObject.setBasic(coverToBasic(pythonObject.getItems().get(0), singleOverall, switchCategory, elementVO.getDesignLibraryModelPoint()));
+ pythonObject.setObjectSign(elementVO.getRequestIdList().get(i));
return pythonObject;
}
private CurrentDesignPictureTypeEnum calculateCurrentDesignPictureTypeNew(ValidateElementVO elementVO, int[] sketchNumbers, BigDecimal systemScale) {
List pinData = getPinData(elementVO);
+ Integer designNum = elementVO.getDesignNum();
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];
+ sketchNumbers[1] = systemScale.multiply(BigDecimal.valueOf(designNum - sketchNumbers[0])).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
+ sketchNumbers[2] = designNum - sketchNumbers[0] - sketchNumbers[1];
}
if (sketchNumbers[2] > 0 && sketchNumbers[1] > 0) {
Long l = RandomsUtil.randomSysFile(0l, 2l);
@@ -491,7 +494,7 @@ public class PythonService {
}
//计算print 非Pin图片剩余张数
- private long calculateDesignNoPinPrintNum(List printBoardElements) {
+ private long calculateDesignNoPinPrintNum(List printBoardElements, Integer designNum) {
if (CollectionUtils.isEmpty(printBoardElements)) {
return 0;
}
@@ -500,10 +503,10 @@ public class PythonService {
return 0;
} else {
long pinNum = printBoardElements.stream().filter(f -> f.getHasPin() == 1).count();
- if (8 - pinNum < 4) {
- return RandomsUtil.randomSysFile(0L, 8 - pinNum + 1);
+ if (designNum - pinNum < designNum/2) {
+ return RandomsUtil.randomSysFile(0L, designNum - pinNum + 1);
} else {
- return RandomsUtil.randomSysFile(0L, 4L + 1);
+ return RandomsUtil.randomSysFile(0L, (long) (designNum/2 + 1));
}
}
}
@@ -553,7 +556,7 @@ public class PythonService {
if (elementVO.getSingleOverall().equals(SingleOverallEnum.OVERALL.getRealName())) {
List otherSketchCategoryList = getOtherSketchCategoryList(elementVO.getModelSex(), designPythonItem);
if (!otherSketchCategoryList.isEmpty()) {
- JSONObject attributeRecognition = getAttributeRecognition(designPythonItem, designPythonItem.getType(), elementVO.getModelSex());
+ JSONObject attributeRecognition = getAttributeRecognition(designPythonItem.getPath(), designPythonItem.getType(), elementVO.getModelSex());
for (String styleCategory : otherSketchCategoryList) {
DesignPythonItem otherSketch = processAttributeRecognition(attributeRecognition, elementVO, designPictureType, styleCategory, systemScale);
itemList.add(otherSketch);
@@ -790,7 +793,7 @@ public class PythonService {
return attributeRetrieval;
}
- public JSONObject getAttributeRecognition(DesignPythonItem designPythonItem, String styleCategory, String modelSex) {
+ public JSONObject getAttributeRecognition(String sketchImgUrl, String styleCategory, String modelSex) {
OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
@@ -801,7 +804,7 @@ public class PythonService {
JSONObject paramJSONObject = new JSONObject();
paramJSONObject.put("category", styleCategory);
paramJSONObject.put("colony", modelSex);
- paramJSONObject.put("sketch_img_url", designPythonItem.getPath());
+ paramJSONObject.put("sketch_img_url", sketchImgUrl);
JSONArray paramArray = new JSONArray();
paramArray.add(paramJSONObject);
String param = JSON.toJSONString(paramArray, SerializerFeature.DisableCircularReferenceDetect);
@@ -3003,6 +3006,58 @@ public class PythonService {
throw new BusinessException("design.interface.exception");
}
+ public JSONObject designStream(DesignPythonObjects designPythonObjects) {
+ // todo 限流校验
+// AccessLimitUtils.validate("design",5);
+ 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");
+ //关闭FastJson的引用检测 防止出现$ref 现象
+ String param = JSON.toJSONString(designPythonObjects, SerializerFeature.DisableCircularReferenceDetect);
+ log.info("design请求python 参数:####{}", param);
+ RequestBody body = RequestBody.create(mediaType, param);
+ Request request = new Request.Builder()
+ .url(accessPythonIp + ":" + accessPythonPort + "/api/design_v2")
+// .url(fastApiPythonAddress + "/api/design")
+// .url(accessPythonIp + ":10200/aifda/api/v1.0/generate")
+ .method("POST", body)
+ .addHeader("Authorization", "Basic YWlkbGFiOjEyMw==")
+ .addHeader("Content-Type", "application/json")
+ .build();
+ Response response;
+ String responseBody;
+ try {
+ response = client.newCall(request).execute();
+ } catch (IOException ioException) {
+ AccessLimitUtils.validateOut("design");
+ log.error("PythonService##design异常###{}", ExceptionUtil.getThrowableList(ioException));
+ throw new BusinessException("design.interface.exception");
+ }
+ //去除限流
+// AccessLimitUtils.validateOut("design");
+ if (response.isSuccessful()) {
+ try {
+ if (Objects.nonNull(response.body())) {
+ responseBody = response.body().string();
+ JSONObject responseObject = JSON.parseObject(responseBody);
+ log.info("PythonService##responseObject###{}", responseObject);
+ return responseObject;
+ }
+ throw new BusinessException("design.interface.exception");
+ } catch (IOException | JSONException e) {
+ log.error("PythonService##design异常###{}", e.getMessage());
+ throw new BusinessException("design.interface.exception");
+ }
+ }
+ log.error("PythonService##design异常response###{}", response);
+ //生成失败
+ throw new BusinessException("design.interface.exception");
+ }
+
/**
* 暂时未用
*/
@@ -3566,4 +3621,54 @@ public class PythonService {
//生成失败
throw new BusinessException("bright.interface.exception");
}
+
+ public JSONObject attributeRecognition(List pictureUrls,List ids, List category) {
+ //限流校验
+ AccessLimitUtils.validate("attributeRecognition", 20);
+ OkHttpClient client = new OkHttpClient().newBuilder()
+ .connectTimeout(30, TimeUnit.SECONDS)
+ .pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒)
+ .readTimeout(300, TimeUnit.SECONDS)//读取超时(单位:秒)
+ .writeTimeout(300, TimeUnit.SECONDS)//写入超时(单位:秒)
+ .build();
+ MediaType mediaType = MediaType.parse("application/json");
+ Map> content = Maps.newHashMap();
+ //识别图片路径数组
+ content.put("upload_img_path", pictureUrls);
+ //识别图片id数组
+ content.put("upload_img_id", ids);
+ content.put("upload_img_category", category);
+ RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(content));
+ Request request = new Request.Builder()
+ .url(accessPythonIp + ":9993/api/attribute")
+ .method("POST", body)
+ .addHeader("Authorization", "Basic YWlkbGFiOjEyMw==")
+ .addHeader("Content-Type", "application/json")
+ .build();
+ Response response = null;
+ String bodyStr = null;
+ try {
+ log.info("识别python对应的属性标签值请求入参content###{}", JSON.toJSONString(content));
+ response = client.newCall(request).execute();
+ bodyStr = response.body().string();
+ } catch (IOException ioException) {
+ log.error("PythonService###attributeRecognition异常##{}", ExceptionUtil.getThrowableList(ioException));
+ }
+ log.info("识别python对应的属性标签值结果###{}",bodyStr.trim());
+ //去除限流
+ AccessLimitUtils.validateOut("attributeRecognition");
+ if (Objects.isNull(response)) {
+ log.error("PythonService##attributeRecognition异常###{}", "response or body is empty!");
+ throw new BusinessException("attribute recognition exception!");
+ }
+ JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(response));
+ Boolean result = jsonObject.getBoolean("successful");
+ if (result) {
+ JSONObject attributeJSONObject = JSON.parseObject(bodyStr.trim());
+ return attributeJSONObject;
+ }
+ log.info("识别python对应的属性标签值异常###{}", jsonObject);
+ //生成失败
+ throw new BusinessException("Atribute recognition exception!");
+ }
}
diff --git a/src/main/java/com/ai/da/python/vo/DesignPythonObject.java b/src/main/java/com/ai/da/python/vo/DesignPythonObject.java
index aa6a11e2..12946423 100644
--- a/src/main/java/com/ai/da/python/vo/DesignPythonObject.java
+++ b/src/main/java/com/ai/da/python/vo/DesignPythonObject.java
@@ -15,4 +15,6 @@ public class DesignPythonObject {
* basic 选项
*/
DesignPythonBasic basic;
+
+ private String objectSign;
}
diff --git a/src/main/java/com/ai/da/python/vo/DesignPythonObjects.java b/src/main/java/com/ai/da/python/vo/DesignPythonObjects.java
index af5fa3be..1f61ee07 100644
--- a/src/main/java/com/ai/da/python/vo/DesignPythonObjects.java
+++ b/src/main/java/com/ai/da/python/vo/DesignPythonObjects.java
@@ -16,4 +16,6 @@ public class DesignPythonObjects {
* design新增的library
*/
List addLibrary;
+
+ private String requestId;
}
diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java
index bd9c99b4..2f2f6ff3 100644
--- a/src/main/java/com/ai/da/service/AccountService.java
+++ b/src/main/java/com/ai/da/service/AccountService.java
@@ -1,6 +1,8 @@
package com.ai.da.service;
+import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.mapper.primary.entity.Account;
+import com.ai.da.mapper.primary.entity.GoogleUser;
import com.ai.da.mapper.primary.entity.TrialOrder;
import com.ai.da.model.dto.*;
import com.ai.da.model.vo.AccountLoginVO;
@@ -186,4 +188,28 @@ public interface AccountService extends IService {
String googleCallback(String code, HttpSession session);
List getPaidCustomerEmail();
+
+ void temporaryUpgrade();
+
+ AccountLoginVO enterpriseLogin(AccountLoginDTO accountDTO);
+
+ AccountLoginVO schoolLogin(AccountLoginDTO accountDTO);
+
+ Boolean addSubAccount(AddSubAccountDTO addSubAccountDTO);
+
+ Boolean deleteSubAccount(AddSubAccountDTO addSubAccountDTO);
+
+ PageBaseResponse subAccountList(SubAccountPageDTO subAccountPageDTO);
+
+ Account accountDetail(Long id);
+
+ AccountLoginVO parseGoogleCredential(String credential);
+
+ AccountLoginVO parseWeChatCode(String code);
+
+ AccountLoginVO getAccountDetail();
+
+ Boolean bindGoogle(String credential);
+
+ Boolean bindWeChat(String code);
}
diff --git a/src/main/java/com/ai/da/service/DesignService.java b/src/main/java/com/ai/da/service/DesignService.java
index b346c8bf..d362d27b 100644
--- a/src/main/java/com/ai/da/service/DesignService.java
+++ b/src/main/java/com/ai/da/service/DesignService.java
@@ -7,6 +7,7 @@ import com.ai.da.model.vo.DesignCollectionVO;
import com.ai.da.model.vo.DesignItemDetailVO;
import com.ai.da.model.vo.DesignLikeVO;
import com.ai.da.python.vo.DesignPythonObjects;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import java.math.BigDecimal;
@@ -25,7 +26,7 @@ public interface DesignService extends IService {
* @param designDTO
* @return
*/
- DesignCollectionVO designCollection(DesignCollectionDTO designDTO);
+ String designCollection(DesignCollectionDTO designDTO);
/**
* redesign
@@ -33,7 +34,7 @@ public interface DesignService extends IService {
* @param reDesignDTO
* @return
*/
- DesignCollectionVO reDesignCollection(ReDesignCollectionDTO reDesignDTO);
+ String reDesignCollection(ReDesignCollectionDTO reDesignDTO);
/**
* redesign
@@ -99,4 +100,10 @@ public interface DesignService extends IService {
List getModel(List designItemIdList);
Long getCountByUserAndTime(String startTime, String endTime, List accountIds);
+
+ Boolean receiveDesignResults(JSONObject responseObject);
+
+ DesignCollectionVO getDesignResult(String requestId, List objectSignList);
+
+ String designCloud(DesignCollectionDTO designDTO);
}
diff --git a/src/main/java/com/ai/da/service/UserLikeGroupService.java b/src/main/java/com/ai/da/service/UserLikeGroupService.java
index 71edbc50..552e9fe3 100644
--- a/src/main/java/com/ai/da/service/UserLikeGroupService.java
+++ b/src/main/java/com/ai/da/service/UserLikeGroupService.java
@@ -4,6 +4,7 @@ import com.ai.da.mapper.primary.entity.CanvasElementUpload;
import com.ai.da.mapper.primary.entity.ToProductImageResult;
import com.ai.da.mapper.primary.entity.UserLikeGroup;
import com.ai.da.model.dto.ExportSaveDTO;
+import com.ai.da.model.dto.ProductImageInitializeDTO;
import com.ai.da.model.dto.ProductImageLikeDTO;
import com.ai.da.model.dto.ToProductImageDTO;
import com.ai.da.model.vo.*;
@@ -62,4 +63,8 @@ public interface UserLikeGroupService extends IService {
List getRelightResult(List taskIdList);
String likeHistoryRelSketch();
+
+ String download();
+
+ Boolean productImageInitialize(ProductImageInitializeDTO productImageInitializeDTO);
}
diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java
index 2d826c03..7fff9732 100644
--- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java
+++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java
@@ -7,9 +7,11 @@ import com.ai.da.common.context.UserContext;
import com.ai.da.common.enums.AuthenticationOperationTypeEnum;
import com.ai.da.common.enums.CreditsEventsEnum;
import com.ai.da.common.enums.LoginTypeEnum;
+import com.ai.da.common.response.PageBaseResponse;
import com.ai.da.common.response.ResultEnum;
import com.ai.da.common.security.jwt.JWTTokenHelper;
import com.ai.da.common.utils.*;
+import com.ai.da.mapper.primary.AccountExtendMapper;
import com.ai.da.mapper.primary.AccountMapper;
import com.ai.da.mapper.primary.QuestionnaireMapper;
import com.ai.da.mapper.primary.TrialOrderMapper;
@@ -20,11 +22,16 @@ import com.ai.da.model.enums.Language;
import com.ai.da.model.vo.*;
import com.ai.da.service.*;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
+import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.api.client.json.jackson2.JacksonFactory;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import io.netty.util.internal.StringUtil;
@@ -538,7 +545,12 @@ public class AccountServiceImpl extends ServiceImpl impl
// .like(TrialOrder::getUserName, accountTrialDTO.getUserName()));
List trialOrders = trialOrderMapper.selectList(trialOrderQueryWrapper);
if (CollectionUtil.isNotEmpty(trialOrders)) {
- throw new BusinessException("You have submitted a trial application, please wait for approval.");
+ TrialOrder trialOrder = trialOrders.get(0);
+ if (trialOrder.getStatus() == 1) {
+ throw new BusinessException("You have submitted a trial application, please wait for approval.");
+ }else {
+ throw new BusinessException("You have already been approved for a trial, please do not apply for the trial again");
+ }
}
// 先检测用户名和邮箱
QueryWrapper qw = new QueryWrapper<>();
@@ -1392,7 +1404,7 @@ public class AccountServiceImpl extends ServiceImpl impl
private static final String QUERY_MAXIMUM_USERID = "SELECT MAX(ID) AS max_id FROM pmr_users;";
- private static final String QUERY_NEW_USER_EMAIL = "SELECT user_email FROM pmr_users " +
+ private static final String QUERY_NEW_USER_EMAIL = "SELECT user_email, user_nicename FROM pmr_users " +
"WHERE ID > ? ";
@Value("${redis.key.maximumUserId}")
@@ -1404,7 +1416,8 @@ public class AccountServiceImpl extends ServiceImpl impl
@Override
@Transactional(rollbackFor = Exception.class)
public void registerUserToVisitor(){
- ArrayList newUserEmails = new ArrayList<>();
+ ArrayList