TASK:aida;

This commit is contained in:
shahaibo
2024-06-17 09:34:48 +08:00
parent fc48d8931f
commit 18914bea7e
35 changed files with 454 additions and 46 deletions

View File

@@ -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() {

View File

@@ -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<Account> 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);

View File

@@ -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

View File

@@ -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 被执行......");

View File

@@ -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<Long> getLikedPortfolios(Long userId) {
Set<String> 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;
}
}

View File

@@ -451,6 +451,37 @@ public class SendEmailUtil {
}
public static Boolean designWorksRegister(String userEmail, String randomVerifyCode) {
try {
// 实例化一个认证对象入参需要传入腾讯云账户secretIdsecretKey,此处还需注意密钥对的保密
// 密钥可前往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");
}
}
}

View File

@@ -154,9 +154,17 @@ public class AccountController {
return Response.success(true);
}
@CrossOrigin
@ApiOperation(value = "广场用户注册")
@PostMapping("/designWorksRegister")
public Response<Boolean> designWorksRegister(@Valid @RequestBody AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO) {
return Response.success(accountService.designWorksRegister(accountDesignWorksRegisterDTO));
}
@CrossOrigin
@ApiOperation(value = "广场用户注册")
@PostMapping("/designWorksRegisterCode")
public Response<AccountLoginVO> designWorksRegisterCode(@Valid @RequestBody AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO) {
return Response.success(accountService.designWorksRegisterCode(accountDesignWorksRegisterDTO));
}
}

View File

@@ -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<Boolean> designWorksRegister(@Valid @RequestBody DesignWorksRegisterDTO designWorksRegisterDTO) {
return Response.success(portfolioService.designWorksRegister(designWorksRegisterDTO));
}
@ApiOperation(value = "喜欢")
@GetMapping("/like")
public Response<Boolean> like(@RequestParam("id") Long id) {
return Response.success(portfolioService.like(id));
}
@ApiOperation(value = "不喜欢")
@GetMapping("/unlike")
public Response<Boolean> unlike(@RequestParam("id") Long id) {
return Response.success(portfolioService.unlike(id));
}
@ApiOperation(value = "获取点赞数")
@GetMapping("/getLikeCount")
public Response<Long> getLikeCount(@RequestParam("id") Long id) {
return Response.success(portfolioService.getLikeCount(id));
}
@ApiOperation(value = "评论")
@PostMapping("/comment")
public Response<Boolean> comment(@Valid @RequestBody CommentDTO commentDTO) {
return Response.success(portfolioService.comment(commentDTO));
}
@ApiOperation(value = "评论列表")
@PostMapping("/commentPage")
public Response<PageBaseResponse<CommentVO>> commentPage(@Valid @RequestBody CommentPageDTO commentPageDTO) {
return Response.success(portfolioService.commentPage(commentPageDTO));
}
}

View File

@@ -188,6 +188,12 @@ public class SavedCollectionController {
return Response.success(userLikeGroupService.productImageLike(productImageLikeDTO));
}
@ApiOperation(value = "productImageUnLike")
@PostMapping("/productImageUnLike")
public Response<Boolean> productImageUnLike(@Valid @RequestBody ProductImageLikeDTO productImageLikeDTO) {
return Response.success(userLikeGroupService.productImageUnLike(productImageLikeDTO));
}
@ApiOperation(value = "获取生成结果")
@PostMapping("/toProductImageResult")
public Response<List<GenerateResultVO>> getToProductImageResult(@Valid @RequestBody List<String> taskIdList) {

View File

@@ -27,6 +27,6 @@ public interface AccountMapper extends CommonMapper<Account> {
* @param id
* @return
*/
Account findById(String id);
// Account findById(String id);
}

View File

@@ -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<Comment> {
}

View File

@@ -86,4 +86,6 @@ public class Account implements Serializable {
* 积分
*/
private BigDecimal credits;
private Integer SystemUser;
}

View File

@@ -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;
}

View File

@@ -5,4 +5,5 @@ import lombok.Data;
@Data
public class AccountDesignWorksRegisterDTO extends Account {
private String emailVerifyCode;
}

View File

@@ -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 {
}

View File

@@ -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;
}

View File

@@ -11,4 +11,7 @@ import java.util.List;
@ApiModel("作品集分页查询")
public class QueryPortfolioPageDTO extends PageQueryBaseVo {
private Integer getMyPortfolio;
private Integer getLikePortfolio;
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -32,4 +32,6 @@ public class AccountLoginVO {
@ApiModelProperty("是否完成引导")
private Integer isBeginner;
private Integer systemUser;
}

View File

@@ -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<CommentVO> childCommentVOList;
private String userName;
private String replyTo;
}

View File

@@ -10,7 +10,8 @@ import java.util.List;
@Data
public class PortfolioVO extends Portfolio {
private String canvasUrl;
private Long likeNum;
private List<CollectionElement> collectionElementList;
private List<TDesignPythonOutfit> designPythonOutfitList;
private Integer isLike;
}

View File

@@ -22,4 +22,6 @@ public class UserLikeChooseVO {
private UserLikeCollectionVO collection;
private String sex;
private Integer beenPublished;
}

View File

@@ -132,4 +132,6 @@ public interface AccountService extends IService<Account> {
void updateCredits(Long accountId, String value);
Boolean designWorksRegister(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO);
AccountLoginVO designWorksRegisterCode(AccountDesignWorksRegisterDTO accountDesignWorksRegisterDTO);
}

View File

@@ -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<Portfolio> {
UserLikeChooseVO choose(PortfolioDTO portfolioDTO);
Boolean designWorksRegister(DesignWorksRegisterDTO designWorksRegisterDTO);
Boolean like(Long id);
Boolean comment(CommentDTO commentDTO);
PageBaseResponse<CommentVO> commentPage(CommentPageDTO commentPageDTO);
Boolean unlike(Long id);
Long getLikeCount(Long id);
}

View File

@@ -54,4 +54,6 @@ public interface UserLikeGroupService extends IService<UserLikeGroup> {
CanvasElementUpload canvasElementUpload(MultipartFile file);
List<ToProductImageResult> productImageLikeList(ToProductImageDTO toProductImageDTO);
Boolean productImageUnLike(ProductImageLikeDTO productImageLikeDTO);
}

View File

@@ -178,6 +178,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> 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<AccountMapper, Account> 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<AccountMapper, Account> 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<AccountMapper, Account> 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<AccountMapper, Account> impl
newAccount.setLanguage(Language.ENGLISH.name());
// 插入新账户
newAccount.setSystemUser(1);
accountMapper.insert(newAccount);
return Boolean.TRUE;
@@ -826,6 +831,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
newAccount.setLanguage(Language.ENGLISH.name());
// 插入新账户
newAccount.setSystemUser(1);
accountMapper.insert(newAccount);
return "<!DOCTYPE html>\n" +
@@ -946,8 +952,48 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> 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;
}
}

View File

@@ -351,20 +351,20 @@ public class CollectionElementServiceImpl extends ServiceImpl<CollectionElementM
@Override
public ValidateElementVO validateElement(DesignCollectionDTO designDTO) {
ValidateElementVO elementVO = CopyUtil.copyObject(designDTO, ValidateElementVO.class);
// List<CollectionColorDTO> 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<CollectionColorDTO> 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<Long> usedElementIds = elementVO.getUsedElementIds();
List<CollectionElement> libraryCollectionElements = elementVO.getLibraryCollectionElements();
List<CollectionElement> generateCollectionElements = elementVO.getGenerateCollectionElements();

View File

@@ -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;

View File

@@ -116,7 +116,9 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
// 分页数据
QueryWrapper<Library> 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<LibraryMapper, Library> 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);

View File

@@ -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<PortfolioMapper, Portfolio
@Resource
private CanvasMapper canvasMapper;
@Resource
private AccountMapper accountMapper;
@Override
public Boolean publish(MultipartFile file, String data) {
PortfolioDTO portfolioDTO = JSONObject.parseObject(data, PortfolioDTO.class);
@@ -143,6 +145,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
portfolio.setIsDeleted(0);
portfolio.setUserLikeGroupSourceId(portfolioDTO.getUserLikeGroupId());
portfolio.setCanvasId(canvas.getId());
portfolio.setPortfolioDes(portfolioDTO.getPortfolioDes());
if (!CollectionUtils.isEmpty(portfolios)) {
portfolioMapper.updateById(portfolio);
}else {
@@ -235,6 +238,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
portfolio.setOpenSource(0);
portfolio.setUserLikeGroupSourceId(portfolioDTO.getUserLikeGroupId());
portfolio.setCanvasId(canvas.getId());
portfolio.setPortfolioDes(portfolioDTO.getPortfolioDes());
if (!CollectionUtils.isEmpty(portfolios)) {
portfolioMapper.updateById(portfolio);
}else {
@@ -365,7 +369,17 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
@Override
public PageBaseResponse<PortfolioVO> page(QueryPortfolioPageDTO query) {
AuthPrincipalVo userHolder = UserContext.getUserHolder();
QueryWrapper<Portfolio> qw = new QueryWrapper<>();
if (query.getGetMyPortfolio() == 1) {
qw.lambda().eq(Portfolio::getAccountId, userHolder.getId());
}
if (query.getGetLikePortfolio() == 1) {
List<Long> likedPortfolioIdList = redisUtil.getLikedPortfolios(userHolder.getId());
if (!CollectionUtils.isEmpty(likedPortfolioIdList)) {
qw.lambda().in(Portfolio::getId, likedPortfolioIdList);
}
}
qw.lambda().orderByDesc(Portfolio::getUpdateDate);
IPage<Portfolio> page = portfolioMapper.selectPage(new Page<>(query.getPage(), query.getSize()),qw);
IPage<PortfolioVO> convert = page.convert((Function<Portfolio, PortfolioVO>) portfolio -> {
@@ -373,6 +387,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
PortfolioVO vo = CopyUtil.copyObject(portfolio, PortfolioVO.class);
Canvas canvas = canvasMapper.selectById(vo.getCanvasId());
vo.setCanvasUrl(minioUtil.getPresignedUrl(canvas.getUrl(), 24 * 60));
vo.setLikeNum(redisUtil.getLikeCount(vo.getId()));
return vo;
}
return null;
@@ -382,6 +397,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
@Override
public PortfolioVO detail(PortfolioDTO portfolioDTO) {
AuthPrincipalVo userHolder = UserContext.getUserHolder();
Portfolio portfolio = portfolioMapper.selectById(portfolioDTO.getId());
PortfolioVO vo = CopyUtil.copyObject(portfolio, PortfolioVO.class);
if (vo.getOpenSource() == 1) {
@@ -404,6 +420,13 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
}
Canvas canvas = canvasMapper.selectById(vo.getCanvasId());
vo.setCanvasUrl(minioUtil.getPresignedUrl(canvas.getUrl(), 24 * 60));
vo.setLikeNum(redisUtil.getLikeCount(vo.getId()));
boolean postLikedByUser = redisUtil.isPostLikedByUser(portfolioDTO.getId(), userHolder.getId());
if (postLikedByUser) {
vo.setIsLike(1);
}else {
vo.setIsLike(0);
}
return vo;
}
@@ -522,4 +545,84 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
public Boolean designWorksRegister(DesignWorksRegisterDTO designWorksRegisterDTO) {
return null;
}
@Resource
private RedisUtil redisUtil;
@Override
public Boolean like(Long id) {
AuthPrincipalVo userHolder = UserContext.getUserHolder();
redisUtil.likePost(id, userHolder.getId());
return Boolean.TRUE;
}
@Resource
private CommentMapper commentMapper;
@Override
public Boolean comment(CommentDTO commentDTO) {
AuthPrincipalVo userHolder = UserContext.getUserHolder();
Comment comment = CopyUtil.copyObject(commentDTO, Comment.class);
comment.setCreateTime(LocalDateTime.now());
comment.setAccountId(userHolder.getId());
commentMapper.insert(comment);
return Boolean.TRUE;
}
@Override
public PageBaseResponse<CommentVO> commentPage(CommentPageDTO commentPageDTO) {
QueryWrapper<Comment> qw = new QueryWrapper<>();
qw.lambda().eq(Comment::getPortfolioId, commentPageDTO.getPortfolioId());
qw.lambda().eq(Comment::getParentLevel1Id, 0L);
qw.lambda().orderByDesc(Comment::getCreateTime);
Page<Comment> commentPage = commentMapper.selectPage(new Page<>(commentPageDTO.getPage(), commentPageDTO.getSize()), qw);
IPage<CommentVO> convert = commentPage.convert(o -> {
CommentVO commentVO = CopyUtil.copyObject(o, CommentVO.class);
commentVO.setUserName(accountMapper.selectById(commentVO.getAccountId()).getUserName());
List<CommentVO> 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<CommentVO> getChildCommentVOList(Long id) {
QueryWrapper<Comment> qw = new QueryWrapper<>();
qw.lambda().eq(Comment::getParentLevel1Id, id);
qw.lambda().orderByDesc(Comment::getCreateTime);
List<Comment> comments = commentMapper.selectList(qw);
if (CollectionUtils.isEmpty(comments)) {
return new ArrayList<>();
}
List<CommentVO> 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<CommentVO> commentVOS = CopyUtil.copyList(comments, CommentVO.class);
// for (CommentVO commentVO : commentVOS) {
// List<CommentVO> childCommentVOList = getChildCommentVOList(commentVO.getId());
// if (!CollectionUtils.isEmpty(childCommentVOList)) {
// commentVO.setChildCommentVOList(childCommentVOList);
// }
// }
return resultList;
}
}

View File

@@ -73,6 +73,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
private SysFileMapper sysFileMapper;
@Resource
private LibraryMapper libraryMapper;
@Resource
private PortfolioMapper portfolioMapper;
@Override
public void deleteUserGroup(Long userGroupId) {
@@ -154,7 +156,14 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
}
});
UserLikeCollectionVO userLikeCollection = collectionService.chooseCollection(group.getCollectionId());
return new UserLikeChooseVO(userGroupId, userLikeVOS, userLikeCollection, sex);
Integer beenPublished = 0;
QueryWrapper<Portfolio> qw = new QueryWrapper<>();
qw.lambda().eq(Portfolio::getUserLikeGroupSourceId, userGroupId);
List<Portfolio> 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<UserLikeGroupMapper, U
return toProductImageResults;
}
@Override
public Boolean productImageUnLike(ProductImageLikeDTO productImageLikeDTO) {
List<Long> toProductImageResultId = productImageLikeDTO.getToProductImageResultId();
QueryWrapper<ToProductImageResult> 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"));

View File

@@ -140,7 +140,7 @@ public class WorkspaceServiceImpl extends ServiceImpl<WorkspaceMapper, Workspace
}else {
WorkspaceRelStyle workspaceRelStyle = workspaceRelStyles.get(0);
if (!Objects.equals(workspaceRelStyle.getStyleId(), workspaceDTO.getStyleId())) {
workspaceRelStyle.setStyleId(workspaceRelStyle.getStyleId());
workspaceRelStyle.setStyleId(workspaceDTO.getStyleId());
workspaceRelStyleMapper.updateById(workspaceRelStyle);
}
}
@@ -276,6 +276,7 @@ public class WorkspaceServiceImpl extends ServiceImpl<WorkspaceMapper, Workspace
@Override
public WorkspaceVO getByIdNew(Long id) {
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
Long accountId = UserContext.getUserHolder().getId();
QueryWrapper<Workspace> qwOld = new QueryWrapper<>();
qwOld.lambda().eq(Workspace::getAccountId, accountId);
@@ -305,6 +306,19 @@ public class WorkspaceServiceImpl extends ServiceImpl<WorkspaceMapper, Workspace
Position position = Position.getPosition(vo.getPosition());
vo.setSexEnum(new BizJson(sex.getValue(), sex.name(), BusinessException.getMessageFromResource(sex.name())));
vo.setPositionEnum(new BizJson(position.getValue(), position.name(), BusinessException.getMessageFromResource(position.name())));
QueryWrapper<WorkspaceRelStyle> qw = new QueryWrapper<>();
qw.lambda().eq(WorkspaceRelStyle::getWorkspaceId, vo.getId());
List<WorkspaceRelStyle> 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;
}