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 6d9e54ae..16d3c19f 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/MQConfig.java @@ -12,16 +12,16 @@ public class MQConfig { // 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-prod"; + 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-prod"; + 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-prod"; + 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-prod"; + public static final String GENERATE_RESULT_QUEUE = "GenerateImage-dev"; public static final String TO_PRODUCT_IMAGE_RESULT_QUEUE = "ToProductImage-local"; public MQConfig() { 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 c91d889f..06294584 100644 --- a/src/main/java/com/ai/da/common/config/MyTaskScheduler.java +++ b/src/main/java/com/ai/da/common/config/MyTaskScheduler.java @@ -40,7 +40,7 @@ public class MyTaskScheduler { // 定时任务,每十五天执行一次 // @Scheduled(cron = "0 0 0 ? * MON") - @Scheduled(cron = "0 0 0 */15 * ?") +// @Scheduled(cron = "0 0 0 */15 * ?") public void checkExpiry() { // 检测正式用户是否快要过期 QueryWrapper qw = new QueryWrapper<>(); @@ -74,7 +74,7 @@ public class MyTaskScheduler { } } } - @Scheduled(cron = "0 0 8 * * ?") +// @Scheduled(cron = "0 0 8 * * ?") public void sendTrialOrderExcelToManagements() { // 获取前一天日期 LocalDate yesterday = LocalDate.now().minusDays(3); 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 24f96520..d11877e0 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 @@ -48,8 +48,9 @@ public class AuthenticationFilter extends OncePerRequestFilter { "/api/third/party/addUser","/api/third/party/addTrialUser", "/api/third/party/editUser", "/api/element/initDefaultSysFile", "/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/ali-pay/trade/notify","/api/paypal/ipn/back","/api/alipay-hk/trade/notify" + "/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/account/designWorksRegister" ); @Override diff --git a/src/main/java/com/ai/da/common/task/PaypalTask.java b/src/main/java/com/ai/da/common/task/PaypalTask.java index bc0e24dd..65d5b8a3 100644 --- a/src/main/java/com/ai/da/common/task/PaypalTask.java +++ b/src/main/java/com/ai/da/common/task/PaypalTask.java @@ -23,7 +23,7 @@ public class PaypalTask { @Resource private PayPalCheckoutService payPalCheckoutService; - @Scheduled(cron = "0/30 * * * * ?") +// @Scheduled(cron = "0/30 * * * * ?") public void orderConfirm() throws SerializeException { log.info("PayPal orderConfirm 被执行......"); 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 ef67de8f..82cf1fd8 100644 --- a/src/main/java/com/ai/da/common/utils/RedisUtil.java +++ b/src/main/java/com/ai/da/common/utils/RedisUtil.java @@ -7,10 +7,12 @@ import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Slf4j @Component @@ -164,4 +166,38 @@ public class RedisUtil { redisTemplate.delete(key); } + public final static String PORTFOLIO_LIKE_KEY = "portfolio:like:"; + + public void likePost(Long portfolioId, Long userId) { + redisTemplate.opsForSet().add(PORTFOLIO_LIKE_KEY + portfolioId, String.valueOf(userId)); + } + + public Long getLikeCount(Long portfolioId) { + String key = PORTFOLIO_LIKE_KEY + portfolioId; + return redisTemplate.opsForSet().size(key); + } + + public List getLikedPortfolios(Long userId) { + Set likedPortfolios = redisTemplate.keys(PORTFOLIO_LIKE_KEY + "*"); + + if (likedPortfolios == null || likedPortfolios.isEmpty()) { + return new ArrayList<>(); + } + + return likedPortfolios.stream() + .filter(key -> redisTemplate.opsForSet().isMember(key, userId.toString())) + .map(key -> Long.valueOf(key.replace(PORTFOLIO_LIKE_KEY, ""))) + .collect(Collectors.toList()); + } + + public void unLikePost(Long portfolioId, Long userId) { + redisTemplate.opsForSet().remove(PORTFOLIO_LIKE_KEY + portfolioId, userId.toString()); + } + + // 检查用户是否喜欢某个作品 + public boolean isPostLikedByUser(Long portfolioId, Long userId) { + String key = PORTFOLIO_LIKE_KEY + portfolioId; + Boolean isMember = redisTemplate.opsForSet().isMember(key, userId.toString()); + return isMember != null && isMember; + } } 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 f8f08e9f..1e7b4a1d 100644 --- a/src/main/java/com/ai/da/common/utils/SendEmailUtil.java +++ b/src/main/java/com/ai/da/common/utils/SendEmailUtil.java @@ -451,6 +451,37 @@ public class SendEmailUtil { } + public static Boolean designWorksRegister(String userEmail, String randomVerifyCode) { + try { + // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密 + // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取 + Credential cred = new Credential(SECRET_ID, SECRET_KEy); + // 实例化一个http选项,可选的,没有特殊需求可以跳过 + HttpProfile httpProfile = new HttpProfile(); + httpProfile.setEndpoint("ses.tencentcloudapi.com"); + // 实例化一个client选项,可选的,没有特殊需求可以跳过 + ClientProfile clientProfile = new ClientProfile(); + clientProfile.setHttpProfile(httpProfile); + // 实例化要请求产品的client对象,clientProfile是可选的 + SesClient client = new SesClient(cred, "ap-hongkong", clientProfile); + // 实例化一个请求对象,每个接口都会对应一个request对象 + SendEmailRequest req = new SendEmailRequest(); + req.setFromEmailAddress(SEND_ADDRESS); + req.setDestination(new String[]{userEmail}); + String subject = "注册"; + req.setSubject(subject); + req.setTemplate(contractTemplate(LOGIN_TEMPLATE_ID, randomVerifyCode, null)); + + // 返回的resp是一个SendEmailResponse的实例,与请求对象对应 + SendEmailResponse resp = client.SendEmail(req); + // 输出json格式的字符串回包 + log.info("短信发送结果res###{}", SendEmailResponse.toJsonString(resp)); + return Boolean.TRUE; + } catch (TencentCloudSDKException e) { + log.info("邮件发送失败###{}", e.toString()); + throw new BusinessException("failed.to.send.mail"); + } + } } diff --git a/src/main/java/com/ai/da/controller/AccountController.java b/src/main/java/com/ai/da/controller/AccountController.java index 58a58a29..48769e5c 100644 --- a/src/main/java/com/ai/da/controller/AccountController.java +++ b/src/main/java/com/ai/da/controller/AccountController.java @@ -154,9 +154,17 @@ public class AccountController { return Response.success(true); } + @CrossOrigin @ApiOperation(value = "广场用户注册") @PostMapping("/designWorksRegister") public Response designWorksRegister(@Valid @RequestBody AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO) { return Response.success(accountService.designWorksRegister(accountDesignWorksRegisterDTO)); } + + @CrossOrigin + @ApiOperation(value = "广场用户注册") + @PostMapping("/designWorksRegisterCode") + public Response designWorksRegisterCode(@Valid @RequestBody AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO) { + return Response.success(accountService.designWorksRegisterCode(accountDesignWorksRegisterDTO)); + } } diff --git a/src/main/java/com/ai/da/controller/PortfolioController.java b/src/main/java/com/ai/da/controller/PortfolioController.java index b8bd3193..4f8041b5 100644 --- a/src/main/java/com/ai/da/controller/PortfolioController.java +++ b/src/main/java/com/ai/da/controller/PortfolioController.java @@ -2,11 +2,11 @@ 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.DesignWorksRegisterDTO; -import com.ai.da.model.dto.PortfolioDTO; -import com.ai.da.model.dto.QueryPortfolioPageDTO; +import com.ai.da.model.dto.*; +import com.ai.da.model.vo.CommentVO; import com.ai.da.model.vo.PortfolioVO; import com.ai.da.model.vo.UserLikeChooseVO; +import com.ai.da.model.vo.UserLikeGroupVO; import com.ai.da.service.PortfolioService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -63,4 +63,34 @@ public class PortfolioController { public Response designWorksRegister(@Valid @RequestBody DesignWorksRegisterDTO designWorksRegisterDTO) { return Response.success(portfolioService.designWorksRegister(designWorksRegisterDTO)); } + + @ApiOperation(value = "喜欢") + @GetMapping("/like") + public Response like(@RequestParam("id") Long id) { + return Response.success(portfolioService.like(id)); + } + + @ApiOperation(value = "不喜欢") + @GetMapping("/unlike") + public Response unlike(@RequestParam("id") Long id) { + return Response.success(portfolioService.unlike(id)); + } + + @ApiOperation(value = "获取点赞数") + @GetMapping("/getLikeCount") + public Response getLikeCount(@RequestParam("id") Long id) { + return Response.success(portfolioService.getLikeCount(id)); + } + + @ApiOperation(value = "评论") + @PostMapping("/comment") + public Response comment(@Valid @RequestBody CommentDTO commentDTO) { + return Response.success(portfolioService.comment(commentDTO)); + } + + @ApiOperation(value = "评论列表") + @PostMapping("/commentPage") + public Response> commentPage(@Valid @RequestBody CommentPageDTO commentPageDTO) { + return Response.success(portfolioService.commentPage(commentPageDTO)); + } } diff --git a/src/main/java/com/ai/da/controller/SavedCollectionController.java b/src/main/java/com/ai/da/controller/SavedCollectionController.java index 5ce6303f..5b467720 100644 --- a/src/main/java/com/ai/da/controller/SavedCollectionController.java +++ b/src/main/java/com/ai/da/controller/SavedCollectionController.java @@ -188,6 +188,12 @@ public class SavedCollectionController { return Response.success(userLikeGroupService.productImageLike(productImageLikeDTO)); } + @ApiOperation(value = "productImageUnLike") + @PostMapping("/productImageUnLike") + public Response productImageUnLike(@Valid @RequestBody ProductImageLikeDTO productImageLikeDTO) { + return Response.success(userLikeGroupService.productImageUnLike(productImageLikeDTO)); + } + @ApiOperation(value = "获取生成结果") @PostMapping("/toProductImageResult") public Response> getToProductImageResult(@Valid @RequestBody List taskIdList) { diff --git a/src/main/java/com/ai/da/mapper/primary/AccountMapper.java b/src/main/java/com/ai/da/mapper/primary/AccountMapper.java index d9afae89..05fb735f 100644 --- a/src/main/java/com/ai/da/mapper/primary/AccountMapper.java +++ b/src/main/java/com/ai/da/mapper/primary/AccountMapper.java @@ -27,6 +27,6 @@ public interface AccountMapper extends CommonMapper { * @param id * @return */ - Account findById(String id); +// Account findById(String id); } diff --git a/src/main/java/com/ai/da/mapper/primary/CommentMapper.java b/src/main/java/com/ai/da/mapper/primary/CommentMapper.java new file mode 100644 index 00000000..57ec711f --- /dev/null +++ b/src/main/java/com/ai/da/mapper/primary/CommentMapper.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.Comment; + +public interface CommentMapper 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 ad574fe7..025f49ef 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 @@ -86,4 +86,6 @@ public class Account implements Serializable { * 积分 */ private BigDecimal credits; + + private Integer SystemUser; } diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Comment.java b/src/main/java/com/ai/da/mapper/primary/entity/Comment.java new file mode 100644 index 00000000..1d6e65d1 --- /dev/null +++ b/src/main/java/com/ai/da/mapper/primary/entity/Comment.java @@ -0,0 +1,38 @@ +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.time.LocalDateTime; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("comment") +public class Comment implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private Long portfolioId; + + private Long accountId; + + private String comment; + + // 一级父节点ID + private Long parentLevel1Id; + + // 二级父节点ID + private Long parentLevel2Id; + + private LocalDateTime createTime; + + private Integer isDeleted; +} diff --git a/src/main/java/com/ai/da/model/dto/AccountDesignWorksRegisterDTO.java b/src/main/java/com/ai/da/model/dto/AccountDesignWorksRegisterDTO.java index ab99249e..db2dac3b 100644 --- a/src/main/java/com/ai/da/model/dto/AccountDesignWorksRegisterDTO.java +++ b/src/main/java/com/ai/da/model/dto/AccountDesignWorksRegisterDTO.java @@ -5,4 +5,5 @@ import lombok.Data; @Data public class AccountDesignWorksRegisterDTO extends Account { + private String emailVerifyCode; } diff --git a/src/main/java/com/ai/da/model/dto/CommentDTO.java b/src/main/java/com/ai/da/model/dto/CommentDTO.java new file mode 100644 index 00000000..06dca97f --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/CommentDTO.java @@ -0,0 +1,8 @@ +package com.ai.da.model.dto; + +import com.ai.da.mapper.primary.entity.Comment; +import lombok.Data; + +@Data +public class CommentDTO extends Comment { +} diff --git a/src/main/java/com/ai/da/model/dto/CommentPageDTO.java b/src/main/java/com/ai/da/model/dto/CommentPageDTO.java new file mode 100644 index 00000000..c78e4852 --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/CommentPageDTO.java @@ -0,0 +1,9 @@ +package com.ai.da.model.dto; + +import com.ai.da.model.vo.PageQueryBaseVo; +import lombok.Data; + +@Data +public class CommentPageDTO extends PageQueryBaseVo { + private Long portfolioId; +} diff --git a/src/main/java/com/ai/da/model/dto/QueryPortfolioPageDTO.java b/src/main/java/com/ai/da/model/dto/QueryPortfolioPageDTO.java index 8694035b..8176ba00 100644 --- a/src/main/java/com/ai/da/model/dto/QueryPortfolioPageDTO.java +++ b/src/main/java/com/ai/da/model/dto/QueryPortfolioPageDTO.java @@ -11,4 +11,7 @@ import java.util.List; @ApiModel("作品集分页查询") public class QueryPortfolioPageDTO extends PageQueryBaseVo { + private Integer getMyPortfolio; + + private Integer getLikePortfolio; } diff --git a/src/main/java/com/ai/da/model/enums/DesignElementsEnum.java b/src/main/java/com/ai/da/model/enums/DesignElementsEnum.java index 5b2547a5..fb860781 100644 --- a/src/main/java/com/ai/da/model/enums/DesignElementsEnum.java +++ b/src/main/java/com/ai/da/model/enums/DesignElementsEnum.java @@ -45,7 +45,7 @@ public enum DesignElementsEnum implements IEnumDisplay { } public static DesignElementsEnum fromName(String name) { for (DesignElementsEnum designElement : DesignElementsEnum.values()) { - if (designElement.name().equals(name)) { + if (designElement.english.equals(name)) { return designElement; } } diff --git a/src/main/java/com/ai/da/model/enums/PrintboardLevel2TypeEnum.java b/src/main/java/com/ai/da/model/enums/PrintboardLevel2TypeEnum.java index 338a1f0b..2bffc94a 100644 --- a/src/main/java/com/ai/da/model/enums/PrintboardLevel2TypeEnum.java +++ b/src/main/java/com/ai/da/model/enums/PrintboardLevel2TypeEnum.java @@ -41,7 +41,7 @@ public enum PrintboardLevel2TypeEnum implements IEnumDisplay { // 根据名称获取枚举值 public static PrintboardLevel2TypeEnum fromName(String name) { for (PrintboardLevel2TypeEnum designElement : PrintboardLevel2TypeEnum.values()) { - if (designElement.name().equals(name)) { + if (designElement.english.equals(name)) { return designElement; } } 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 ff4c9690..15b28c89 100644 --- a/src/main/java/com/ai/da/model/vo/AccountLoginVO.java +++ b/src/main/java/com/ai/da/model/vo/AccountLoginVO.java @@ -32,4 +32,6 @@ public class AccountLoginVO { @ApiModelProperty("是否完成引导") private Integer isBeginner; + private Integer systemUser; + } diff --git a/src/main/java/com/ai/da/model/vo/CommentVO.java b/src/main/java/com/ai/da/model/vo/CommentVO.java new file mode 100644 index 00000000..dda6474f --- /dev/null +++ b/src/main/java/com/ai/da/model/vo/CommentVO.java @@ -0,0 +1,15 @@ +package com.ai.da.model.vo; + +import com.ai.da.mapper.primary.entity.Comment; +import lombok.Data; + +import java.util.List; + +@Data +public class CommentVO extends Comment { + private List childCommentVOList; + + private String userName; + + private String replyTo; +} diff --git a/src/main/java/com/ai/da/model/vo/PortfolioVO.java b/src/main/java/com/ai/da/model/vo/PortfolioVO.java index 96ed1d94..030e6d16 100644 --- a/src/main/java/com/ai/da/model/vo/PortfolioVO.java +++ b/src/main/java/com/ai/da/model/vo/PortfolioVO.java @@ -10,7 +10,8 @@ import java.util.List; @Data public class PortfolioVO extends Portfolio { private String canvasUrl; - + private Long likeNum; private List collectionElementList; private List designPythonOutfitList; + private Integer isLike; } diff --git a/src/main/java/com/ai/da/model/vo/UserLikeChooseVO.java b/src/main/java/com/ai/da/model/vo/UserLikeChooseVO.java index 91de0dce..69dc235e 100644 --- a/src/main/java/com/ai/da/model/vo/UserLikeChooseVO.java +++ b/src/main/java/com/ai/da/model/vo/UserLikeChooseVO.java @@ -22,4 +22,6 @@ public class UserLikeChooseVO { private UserLikeCollectionVO collection; private String sex; + + private Integer beenPublished; } diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index ac30940a..496275ce 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -132,4 +132,6 @@ public interface AccountService extends IService { void updateCredits(Long accountId, String value); Boolean designWorksRegister(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO); + + AccountLoginVO designWorksRegisterCode(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO); } diff --git a/src/main/java/com/ai/da/service/PortfolioService.java b/src/main/java/com/ai/da/service/PortfolioService.java index 582406c2..0714ae69 100644 --- a/src/main/java/com/ai/da/service/PortfolioService.java +++ b/src/main/java/com/ai/da/service/PortfolioService.java @@ -2,9 +2,8 @@ package com.ai.da.service; import com.ai.da.common.response.PageBaseResponse; import com.ai.da.mapper.primary.entity.Portfolio; -import com.ai.da.model.dto.DesignWorksRegisterDTO; -import com.ai.da.model.dto.PortfolioDTO; -import com.ai.da.model.dto.QueryPortfolioPageDTO; +import com.ai.da.model.dto.*; +import com.ai.da.model.vo.CommentVO; import com.ai.da.model.vo.PortfolioVO; import com.ai.da.model.vo.UserLikeChooseVO; import com.baomidou.mybatisplus.extension.service.IService; @@ -22,4 +21,14 @@ public interface PortfolioService extends IService { UserLikeChooseVO choose(PortfolioDTO portfolioDTO); Boolean designWorksRegister(DesignWorksRegisterDTO designWorksRegisterDTO); + + Boolean like(Long id); + + Boolean comment(CommentDTO commentDTO); + + PageBaseResponse commentPage(CommentPageDTO commentPageDTO); + + Boolean unlike(Long id); + + Long getLikeCount(Long id); } diff --git a/src/main/java/com/ai/da/service/UserLikeGroupService.java b/src/main/java/com/ai/da/service/UserLikeGroupService.java index a8316142..05837ef4 100644 --- a/src/main/java/com/ai/da/service/UserLikeGroupService.java +++ b/src/main/java/com/ai/da/service/UserLikeGroupService.java @@ -54,4 +54,6 @@ public interface UserLikeGroupService extends IService { CanvasElementUpload canvasElementUpload(MultipartFile file); List productImageLikeList(ToProductImageDTO toProductImageDTO); + + Boolean productImageUnLike(ProductImageLikeDTO productImageLikeDTO); } 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 d5702f71..6a6fb2f0 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -178,6 +178,7 @@ public class AccountServiceImpl extends ServiceImpl impl response.setToken(createAccountToken(account)); } response.setUserId(account.getId()); + response.setSystemUser(account.getSystemUser()); //判断是否常用ip 不是则发邮件提示 calculateExceptionIp(RequestInfoUtil.getIpAddress(request), account); return response; @@ -378,6 +379,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setValidEndTime(Long.valueOf(accountAddDTO.getValidEndTime())); account.setCreateDate(new Date()); account.setIsTrial(accountAddDTO.getIsTrial()); + account.setSystemUser(1); return accountMapper.insert(account) > 0; } @@ -539,6 +541,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setCreateDate(new Date()); account.setIsTrial(1); account.setIsBeginner(1); + account.setSystemUser(1); accountMapper.insert(account); } // 发送邮件提醒用户试用用户已创建 @@ -591,6 +594,7 @@ public class AccountServiceImpl extends ServiceImpl impl account.setCreateDate(new Date()); account.setIsTrial(1); account.setIsBeginner(1); + account.setSystemUser(1); accountMapper.insert(account); } // 发送邮件提醒用户试用用户已创建 @@ -668,6 +672,7 @@ public class AccountServiceImpl extends ServiceImpl impl newAccount.setLanguage(Language.ENGLISH.name()); // 插入新账户 + newAccount.setSystemUser(1); accountMapper.insert(newAccount); return Boolean.TRUE; @@ -826,6 +831,7 @@ public class AccountServiceImpl extends ServiceImpl impl newAccount.setLanguage(Language.ENGLISH.name()); // 插入新账户 + newAccount.setSystemUser(1); accountMapper.insert(newAccount); return "\n" + @@ -946,8 +952,48 @@ public class AccountServiceImpl extends ServiceImpl impl if (CollectionUtil.isNotEmpty(accountList)) { throw new BusinessException("The email has already been registered"); } + + String randomVerifyCode = RandomsUtil.generateVerifyCode(100000L, 999999L); + LocalCacheUtils.setVerifyCodeCache("DesignWorksRegister"+ "_" + accountDesignWorksRegisterDTO.getUserEmail(), randomVerifyCode); + + Boolean b = SendEmailUtil.designWorksRegister(accountDesignWorksRegisterDTO.getUserEmail(), randomVerifyCode); + if (!b) { + throw new BusinessException("failed.to.send.mail"); + } + return Boolean.TRUE; + } + + @Override + public AccountLoginVO designWorksRegisterCode(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO) { + + String verifyCode = LocalCacheUtils.getVerifyCodeCache("DesignWorksRegister"+ "_" + accountDesignWorksRegisterDTO.getUserEmail()); + if (StringUtils.isBlank(verifyCode)) { + throw new BusinessException("the.verification.code.has.expired", ResultEnum.PROMPT.getCode()); + } + if (!verifyCode.equals(accountDesignWorksRegisterDTO.getEmailVerifyCode())) { + throw new BusinessException("verification.code.error", ResultEnum.PROMPT.getCode()); + } Account account = CopyUtil.copyObject(accountDesignWorksRegisterDTO, Account.class); + account.setSystemUser(0); + if (StringUtils.isBlank(accountDesignWorksRegisterDTO.getLanguage())) { + account.setLanguage(Language.ENGLISH.name()); + } + account.setIsTrial(1); + account.setIsBeginner(1); + account.setCreateDate(new Date()); + account.setCredits(BigDecimal.valueOf(500)); accountMapper.insert(account); - return null; + AccountLoginVO response = CopyUtil.copyObject(account, AccountLoginVO.class); + response.setEmail(account.getUserEmail()); + String token = LocalCacheUtils.getTokenCache(String.valueOf(account.getId())); + if (StringUtils.isNotBlank(token)) { + //用户已登入 + response.setToken(token); + } else { + response.setToken(createAccountToken(account)); + } + response.setUserId(account.getId()); + response.setSystemUser(account.getSystemUser()); + return response; } } diff --git a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java index ac6f5d82..10b547c7 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java @@ -351,20 +351,20 @@ public class CollectionElementServiceImpl extends ServiceImpl colorBoards = elementVO.getColorBoards(); -// for (CollectionColorDTO colorBoard : colorBoards) { -// if (Objects.nonNull(colorBoard.getGradient())) { -// String colorImg = colorBoard.getGradient().getColorImg(); -// String[] parts = colorImg.split(","); -// String imageType = parts[0].split("/")[1].split(";")[0]; -// String base64Data = parts[1]; -// String gradientMinioUrl = minioUtil.uploadImageFromBase64(gradientBucketName, base64Data, imageType); -// colorBoard.setGradientMinioUrl(gradientMinioUrl); -// colorBoard.getGradient().setColorImg(null); -// colorBoard.setGradientString(JSON.toJSONString(colorBoard.getGradient())); -// } -// } -// elementVO.setColorBoards(colorBoards); + List colorBoards = elementVO.getColorBoards(); + for (CollectionColorDTO colorBoard : colorBoards) { + if (Objects.nonNull(colorBoard.getGradient())) { + String colorImg = colorBoard.getGradient().getColorImg(); + String[] parts = colorImg.split(","); + String imageType = parts[0].split("/")[1].split(";")[0]; + String base64Data = parts[1]; + String gradientMinioUrl = minioUtil.uploadImageFromBase64(gradientBucketName, base64Data, imageType); + colorBoard.setGradientMinioUrl(gradientMinioUrl); + colorBoard.getGradient().setColorImg(null); + colorBoard.setGradientString(JSON.toJSONString(colorBoard.getGradient())); + } + } + elementVO.setColorBoards(colorBoards); List usedElementIds = elementVO.getUsedElementIds(); List libraryCollectionElements = elementVO.getLibraryCollectionElements(); List generateCollectionElements = elementVO.getGenerateCollectionElements(); diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index 0d36ff5d..98efcc9d 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -22,6 +22,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.gson.Gson; import io.minio.errors.MinioException; diff --git a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java index 275f37e7..a6b0b3c8 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java @@ -116,7 +116,9 @@ public class LibraryServiceImpl extends ServiceImpl impl AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder(); // 分页数据 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("account_id", authPrincipalVo.getId()); + if (!query.getLevel1Type().equals(LibraryLevel1TypeEnum.DESIGN_ELEMENTS.getRealName())) { + queryWrapper.eq("account_id", authPrincipalVo.getId()); + } if (!StringUtils.isEmpty(query.getLevel1Type())) { LibraryLevel1TypeEnum level1TypeEnum = LibraryLevel1TypeEnum.uploadOf(query.getLevel1Type()); @@ -211,13 +213,20 @@ public class LibraryServiceImpl extends ServiceImpl impl if (finalMap != null && finalMap.containsKey(library.getId())) { libraryPageVO.setLibraryModelPoint(finalMap.get(library.getId())); } - if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.SKETCH_BOARD.getRealName()) - || libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.PRINT_BOARD.getRealName())) { + if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.SKETCH_BOARD.getRealName())) { if (!StringUtils.isEmpty(libraryPageVO.getLevel2Type())) { Position position = Position.getPosition(libraryPageVO.getLevel2Type()); libraryPageVO.setLevel2TypeEnum(new BizJson(position.getValue(), position.name(), BusinessException.getMessageFromResource(position.name()))); } } + if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.PRINT_BOARD.getRealName())) { + PrintboardLevel2TypeEnum printboardLevel2TypeEnum = PrintboardLevel2TypeEnum.fromName(libraryPageVO.getLevel2Type()); + libraryPageVO.setLevel2TypeEnum(new BizJson(printboardLevel2TypeEnum.getValue(), printboardLevel2TypeEnum.name(), BusinessException.getMessageFromResource(printboardLevel2TypeEnum.name()))); + } + if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.DESIGN_ELEMENTS.getRealName())) { + DesignElementsEnum designElementsEnum = DesignElementsEnum.fromName(libraryPageVO.getLevel2Type()); + libraryPageVO.setLevel2TypeEnum(new BizJson(designElementsEnum.getValue(), designElementsEnum.name(), BusinessException.getMessageFromResource(designElementsEnum.name()))); + } return libraryPageVO; }); return PageBaseResponse.success(convert); diff --git a/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java b/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java index f5a6da79..d3c91007 100644 --- a/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java @@ -5,11 +5,10 @@ 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.common.utils.RedisUtil; import com.ai.da.mapper.primary.*; import com.ai.da.mapper.primary.entity.*; -import com.ai.da.model.dto.DesignWorksRegisterDTO; -import com.ai.da.model.dto.PortfolioDTO; -import com.ai.da.model.dto.QueryPortfolioPageDTO; +import com.ai.da.model.dto.*; import com.ai.da.model.enums.Position; import com.ai.da.model.enums.Sex; import com.ai.da.model.vo.*; @@ -91,6 +90,9 @@ public class PortfolioServiceImpl extends ServiceImpl page(QueryPortfolioPageDTO query) { + AuthPrincipalVo userHolder = UserContext.getUserHolder(); QueryWrapper qw = new QueryWrapper<>(); + if (query.getGetMyPortfolio() == 1) { + qw.lambda().eq(Portfolio::getAccountId, userHolder.getId()); + } + if (query.getGetLikePortfolio() == 1) { + List likedPortfolioIdList = redisUtil.getLikedPortfolios(userHolder.getId()); + if (!CollectionUtils.isEmpty(likedPortfolioIdList)) { + qw.lambda().in(Portfolio::getId, likedPortfolioIdList); + } + } qw.lambda().orderByDesc(Portfolio::getUpdateDate); IPage page = portfolioMapper.selectPage(new Page<>(query.getPage(), query.getSize()),qw); IPage convert = page.convert((Function) portfolio -> { @@ -373,6 +387,7 @@ public class PortfolioServiceImpl extends ServiceImpl commentPage(CommentPageDTO commentPageDTO) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(Comment::getPortfolioId, commentPageDTO.getPortfolioId()); + qw.lambda().eq(Comment::getParentLevel1Id, 0L); + qw.lambda().orderByDesc(Comment::getCreateTime); + Page commentPage = commentMapper.selectPage(new Page<>(commentPageDTO.getPage(), commentPageDTO.getSize()), qw); + IPage convert = commentPage.convert(o -> { + CommentVO commentVO = CopyUtil.copyObject(o, CommentVO.class); + commentVO.setUserName(accountMapper.selectById(commentVO.getAccountId()).getUserName()); + List childList = getChildCommentVOList(commentVO.getId()); + if (!CollectionUtils.isEmpty(childList)) { + commentVO.setChildCommentVOList(childList); + } + return commentVO; + }); + return PageBaseResponse.success(convert); + } + + @Override + public Boolean unlike(Long id) { + AuthPrincipalVo userHolder = UserContext.getUserHolder(); + redisUtil.unLikePost(id, userHolder.getId()); + return Boolean.TRUE; + } + + @Override + public Long getLikeCount(Long id) { + return redisUtil.getLikeCount(id); + } + + private List getChildCommentVOList(Long id) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(Comment::getParentLevel1Id, id); + qw.lambda().orderByDesc(Comment::getCreateTime); + List comments = commentMapper.selectList(qw); + if (CollectionUtils.isEmpty(comments)) { + return new ArrayList<>(); + } + List resultList = new ArrayList<>(); + for (Comment comment : comments) { + CommentVO commentVO = CopyUtil.copyObject(comment, CommentVO.class); + commentVO.setUserName(accountMapper.selectById(commentVO.getAccountId()).getUserName()); + if (null != commentVO.getParentLevel2Id()) { + Comment comment1 = commentMapper.selectById(commentVO.getParentLevel2Id()); + commentVO.setReplyTo(accountMapper.selectById(comment1.getAccountId()).getUserName()); + } + resultList.add(commentVO); + } +// List commentVOS = CopyUtil.copyList(comments, CommentVO.class); +// for (CommentVO commentVO : commentVOS) { +// List childCommentVOList = getChildCommentVOList(commentVO.getId()); +// if (!CollectionUtils.isEmpty(childCommentVOList)) { +// commentVO.setChildCommentVOList(childCommentVOList); +// } +// } + return resultList; + } } diff --git a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java index a4d57bdd..b7bd7505 100644 --- a/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/UserLikeGroupServiceImpl.java @@ -73,6 +73,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); + qw.lambda().eq(Portfolio::getUserLikeGroupSourceId, userGroupId); + List portfolios = portfolioMapper.selectList(qw); + if (CollectionUtil.isNotEmpty(portfolios)) { + beenPublished = 1; + } + return new UserLikeChooseVO(userGroupId, userLikeVOS, userLikeCollection, sex, beenPublished); } @Override @@ -385,6 +394,17 @@ public class UserLikeGroupServiceImpl extends ServiceImpl toProductImageResultId = productImageLikeDTO.getToProductImageResultId(); + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().in(ToProductImageResult::getId, toProductImageResultId); + ToProductImageResult toProductImageResult = new ToProductImageResult(); + toProductImageResult.setIsLike(0); + toProductImageResultMapper.update(toProductImageResult, qw); + return Boolean.TRUE; + } + public static String convert(InputStream inputStream) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { return reader.lines().collect(Collectors.joining("\n")); diff --git a/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java b/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java index 2d9fea7f..da3f28e3 100644 --- a/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java @@ -140,7 +140,7 @@ public class WorkspaceServiceImpl extends ServiceImpl qwOld = new QueryWrapper<>(); qwOld.lambda().eq(Workspace::getAccountId, accountId); @@ -305,6 +306,19 @@ public class WorkspaceServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); + qw.lambda().eq(WorkspaceRelStyle::getWorkspaceId, vo.getId()); + List workspaceRelStyles = workspaceRelStyleMapper.selectList(qw); + if (!CollectionUtils.isEmpty(workspaceRelStyles)) { + Long styleId = workspaceRelStyles.get(0).getStyleId(); + Style style = styleMapper.selectById(styleId); + StyleEnum styleEnum = StyleEnum.fromName(style.getName()); + if (authPrincipalVo.getLanguage().equals(Language.ENGLISH.name())) { + vo.setStyleName(styleEnum.getEnglish()); + }else { + vo.setStyleName(styleEnum.getChinese()); + } + } return vo; } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 9755f3a0..2a531030 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -57,6 +57,8 @@ minio.bucketName.sysImage=aida-sys-image minio.bucketName.users=aida-users minio.bucketName.collectionElement=aida-collection-element minio.bucketName.gradient=aida-gradient +minio.bucketName.modifiedSketch=aida-modified-sketch +minio.bucketName.slogan=aida-slogan redirect_url=http://18.167.251.121:7788 spring.rabbitmq.host=18.167.251.121 @@ -65,8 +67,8 @@ spring.rabbitmq.username=rabbit spring.rabbitmq.password=123456 spring.rabbitmq.virtual-host=/ -spring.redis.host=172.31.11.32 -#spring.redis.host=18.167.251.121 +#spring.redis.host=172.31.11.32 +spring.redis.host=18.167.251.121 spring.redis.port=6379 spring.redis.database=1 spring.redis.password=Aidlab diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8550475d..974fee23 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,7 +2,7 @@ #spring.profiles.active=test #����application-prod�ļ�(��������) -spring.profiles.active=prod +#spring.profiles.active=prod #����application-dev�ļ�(��������) -#spring.profiles.active=dev +spring.profiles.active=dev