Merge branch 'release/3.0' into dev/dev
# Conflicts: # src/main/java/com/ai/da/common/constant/CommonConstant.java # src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java # src/main/java/com/ai/da/controller/PortfolioController.java # src/main/java/com/ai/da/model/dto/QueryPortfolioPageDTO.java # src/main/java/com/ai/da/service/PortfolioService.java # src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java # src/main/resources/messages_en.properties # src/main/resources/messages_zh.properties
This commit is contained in:
@@ -69,4 +69,6 @@ public class CommonConstant {
|
|||||||
// 激活更改邮箱 链接有效期 毫秒 3天
|
// 激活更改邮箱 链接有效期 毫秒 3天
|
||||||
public static final Long CHANGE_MAILBOX_LINK_VALIDITY = 259200000L;
|
public static final Long CHANGE_MAILBOX_LINK_VALIDITY = 259200000L;
|
||||||
|
|
||||||
|
public static final String RCA_WORKSHOP_TAG = "#RCAworkshop_2024";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ import com.ai.da.common.response.Response;
|
|||||||
import com.ai.da.mapper.primary.entity.Account;
|
import com.ai.da.mapper.primary.entity.Account;
|
||||||
import com.ai.da.model.dto.*;
|
import com.ai.da.model.dto.*;
|
||||||
import com.ai.da.model.vo.*;
|
import com.ai.da.model.vo.*;
|
||||||
|
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.service.PortfolioService;
|
import com.ai.da.service.PortfolioService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
@@ -28,7 +31,7 @@ public class PortfolioController {
|
|||||||
|
|
||||||
@ApiOperation(value = "发布作品集")
|
@ApiOperation(value = "发布作品集")
|
||||||
@PostMapping("/publish")
|
@PostMapping("/publish")
|
||||||
public Response<Boolean> preLogin(@RequestParam("file") MultipartFile canvas, @RequestParam("data") String data) {
|
public Response<Long> preLogin(@RequestParam("file") MultipartFile canvas, @RequestParam("data") String data) {
|
||||||
return Response.success(portfolioService.publish(canvas, data));
|
return Response.success(portfolioService.publish(canvas, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,4 +147,11 @@ public class PortfolioController {
|
|||||||
return Response.success(portfolioService.getFollowerList(getFollowListDTO));
|
return Response.success(portfolioService.getFollowerList(getFollowListDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @ApiOperation(value = "按标签名查询作品")
|
||||||
|
@GetMapping("/queryPortfolioByTag")
|
||||||
|
public Response<List<PortfolioVO>> queryPortfolioByTag(@RequestParam(value = "tagName", required = false) String tagName,
|
||||||
|
@RequestParam(value = "tagId", required = false) Long tagId) {
|
||||||
|
return Response.success(portfolioService.queryPortfolioByTag(tagName, tagId));
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|||||||
31
src/main/java/com/ai/da/controller/TagsController.java
Normal file
31
src/main/java/com/ai/da/controller/TagsController.java
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package com.ai.da.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.ai.da.common.response.Response;
|
||||||
|
import com.ai.da.mapper.primary.entity.Product;
|
||||||
|
import com.ai.da.mapper.primary.entity.Tags;
|
||||||
|
import com.ai.da.service.ProductService;
|
||||||
|
import com.ai.da.service.TagsService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@CrossOrigin //开放前端的跨域访问
|
||||||
|
@Api(tags = "标签管理")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/tags")
|
||||||
|
public class TagsController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TagsService tagsService;
|
||||||
|
|
||||||
|
@ApiOperation("获取标签")
|
||||||
|
@GetMapping("/getTags")
|
||||||
|
public Response<List<Tags>> getTags(@RequestParam("userInput") String userInput) {
|
||||||
|
return Response.success(tagsService.getTags(userInput));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,10 @@ package com.ai.da.mapper.primary;
|
|||||||
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||||
import com.ai.da.mapper.primary.entity.Portfolio;
|
import com.ai.da.mapper.primary.entity.Portfolio;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface PortfolioMapper extends CommonMapper<Portfolio> {
|
public interface PortfolioMapper extends CommonMapper<Portfolio> {
|
||||||
Portfolio getByIdAll(Long originalPortfolioId);
|
Portfolio getByIdAll(Long originalPortfolioId);
|
||||||
|
|
||||||
|
List<Portfolio> getByTag(Long accountId, String tagName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.ai.da.mapper.primary;
|
||||||
|
|
||||||
|
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.PortfolioTags;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
public interface PortfolioTagsMapper extends CommonMapper<PortfolioTags> {
|
||||||
|
|
||||||
|
void deleteByPortfolioId(Long portfolioId);
|
||||||
|
|
||||||
|
// portfolioId与tagId建立唯一约束, 如果组合 portfolio_id 和 tag_id 已经存在,插入操作会被忽略。
|
||||||
|
void insertIgnore(Long portfolioId, Long tagId, LocalDateTime time);
|
||||||
|
|
||||||
|
}
|
||||||
17
src/main/java/com/ai/da/mapper/primary/TagsMapper.java
Normal file
17
src/main/java/com/ai/da/mapper/primary/TagsMapper.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package com.ai.da.mapper.primary;
|
||||||
|
|
||||||
|
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.Tags;
|
||||||
|
import com.ai.da.model.dto.TagsDTO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
public interface TagsMapper extends CommonMapper<Tags> {
|
||||||
|
|
||||||
|
List<Map<String, String>> getMatchingTags(String userInput);
|
||||||
|
|
||||||
|
List<TagsDTO> getTagByPortfolioId(Long portfolioId);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.ai.da.mapper.primary.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("t_portfolio_tags")
|
||||||
|
@Data
|
||||||
|
public class PortfolioTags extends BaseEntity{
|
||||||
|
private Long portfolioId;
|
||||||
|
|
||||||
|
private Long tagId;
|
||||||
|
}
|
||||||
13
src/main/java/com/ai/da/mapper/primary/entity/Tags.java
Normal file
13
src/main/java/com/ai/da/mapper/primary/entity/Tags.java
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package com.ai.da.mapper.primary.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("t_tags")
|
||||||
|
@Data
|
||||||
|
public class Tags extends BaseEntity{
|
||||||
|
|
||||||
|
private String tagName;
|
||||||
|
}
|
||||||
@@ -2,11 +2,11 @@ package com.ai.da.model.dto;
|
|||||||
|
|
||||||
import com.ai.da.mapper.primary.entity.Portfolio;
|
import com.ai.da.mapper.primary.entity.Portfolio;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import java.util.List;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class PortfolioDTO extends Portfolio {
|
public class PortfolioDTO extends Portfolio {
|
||||||
private Long userLikeGroupId;
|
private Long userLikeGroupId;
|
||||||
|
|
||||||
|
private List<TagsDTO> tagsDTO;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,8 @@ package com.ai.da.model.dto;
|
|||||||
|
|
||||||
import com.ai.da.model.vo.PageQueryBaseVo;
|
import com.ai.da.model.vo.PageQueryBaseVo;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("作品集分页查询")
|
@ApiModel("作品集分页查询")
|
||||||
public class QueryPortfolioPageDTO extends PageQueryBaseVo {
|
public class QueryPortfolioPageDTO extends PageQueryBaseVo {
|
||||||
@@ -16,4 +13,6 @@ public class QueryPortfolioPageDTO extends PageQueryBaseVo {
|
|||||||
private Integer getLikePortfolio;
|
private Integer getLikePortfolio;
|
||||||
|
|
||||||
private Long accountId;
|
private Long accountId;
|
||||||
|
|
||||||
|
private Long tagId;
|
||||||
}
|
}
|
||||||
|
|||||||
6
src/main/java/com/ai/da/model/dto/TagsDTO.java
Normal file
6
src/main/java/com/ai/da/model/dto/TagsDTO.java
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.Tags;
|
||||||
|
|
||||||
|
public class TagsDTO extends Tags {
|
||||||
|
}
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.ai.da.model.vo;
|
package com.ai.da.model.vo;
|
||||||
|
|
||||||
|
import com.ai.da.model.dto.PortfolioDTO;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("用户choose详细-响应")
|
@ApiModel("用户choose详细-响应")
|
||||||
@@ -24,4 +23,7 @@ public class UserLikeChooseVO {
|
|||||||
private String sex;
|
private String sex;
|
||||||
|
|
||||||
private Integer beenPublished;
|
private Integer beenPublished;
|
||||||
|
|
||||||
|
// private Portfolio portfolio;
|
||||||
|
private PortfolioDTO portfolioDTO;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface PortfolioService extends IService<Portfolio> {
|
public interface PortfolioService extends IService<Portfolio> {
|
||||||
Boolean publish(MultipartFile canvas, String data);
|
Long publish(MultipartFile canvas, String data);
|
||||||
|
|
||||||
PortfolioVO update(PortfolioDTO portfolioDTO);
|
PortfolioVO update(PortfolioDTO portfolioDTO);
|
||||||
|
|
||||||
@@ -60,4 +60,6 @@ public interface PortfolioService extends IService<Portfolio> {
|
|||||||
Long getPortfolioCount(Long accountId);
|
Long getPortfolioCount(Long accountId);
|
||||||
|
|
||||||
List<Long> getFolloweeList(Long accountId);
|
List<Long> getFolloweeList(Long accountId);
|
||||||
|
|
||||||
|
// List<PortfolioVO> queryPortfolioByTag(String tagName, Long tagId);
|
||||||
}
|
}
|
||||||
|
|||||||
14
src/main/java/com/ai/da/service/TagsService.java
Normal file
14
src/main/java/com/ai/da/service/TagsService.java
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package com.ai.da.service;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.entity.Tags;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface TagsService extends IService<Tags> {
|
||||||
|
|
||||||
|
List<Tags> getTags(String tagPrefix);
|
||||||
|
|
||||||
|
Tags addTag(String tagName);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import com.ai.da.common.config.exception.BusinessException;
|
|||||||
import com.ai.da.common.constant.CommonConstant;
|
import com.ai.da.common.constant.CommonConstant;
|
||||||
import com.ai.da.common.context.UserContext;
|
import com.ai.da.common.context.UserContext;
|
||||||
import com.ai.da.common.response.PageBaseResponse;
|
import com.ai.da.common.response.PageBaseResponse;
|
||||||
|
import com.ai.da.common.response.ResultEnum;
|
||||||
import com.ai.da.common.utils.CopyUtil;
|
import com.ai.da.common.utils.CopyUtil;
|
||||||
import com.ai.da.common.utils.MinioUtil;
|
import com.ai.da.common.utils.MinioUtil;
|
||||||
import com.ai.da.common.utils.RedisUtil;
|
import com.ai.da.common.utils.RedisUtil;
|
||||||
@@ -115,19 +116,35 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
@Resource
|
@Resource
|
||||||
private UserFollowMapper userFollowMapper;
|
private UserFollowMapper userFollowMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PortfolioTagsMapper portfolioTagsMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TagsService tagsService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TagsMapper tagsMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean publish(MultipartFile file, String data) {
|
public Long publish(MultipartFile file, String data) {
|
||||||
|
Long resultPortfolioId = null;
|
||||||
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
|
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
|
||||||
PortfolioDTO portfolioDTO = JSONObject.parseObject(data, PortfolioDTO.class);
|
PortfolioDTO portfolioDTO = JSONObject.parseObject(data, PortfolioDTO.class);
|
||||||
QueryWrapper<Portfolio> existSameNameQw = new QueryWrapper<>();
|
QueryWrapper<Portfolio> existSameNameQw = new QueryWrapper<>();
|
||||||
|
existSameNameQw.lambda().ne(Portfolio::getId, portfolioDTO.getId());
|
||||||
existSameNameQw.lambda().eq(Portfolio::getPortfolioName, portfolioDTO.getPortfolioName());
|
existSameNameQw.lambda().eq(Portfolio::getPortfolioName, portfolioDTO.getPortfolioName());
|
||||||
existSameNameQw.lambda().eq(Portfolio::getAccountId, authPrincipalVo.getId());
|
existSameNameQw.lambda().eq(Portfolio::getAccountId, authPrincipalVo.getId());
|
||||||
List<Portfolio> portfoliosSameName = portfolioMapper.selectList(existSameNameQw);
|
List<Portfolio> portfoliosSameName = portfolioMapper.selectList(existSameNameQw);
|
||||||
if (!CollectionUtils.isEmpty(portfoliosSameName)) {
|
if (!CollectionUtils.isEmpty(portfoliosSameName)) {
|
||||||
throw new BusinessException("The title of the published work has been used.");
|
throw new BusinessException("The title of the published work has been used.");
|
||||||
}
|
}
|
||||||
|
// 判断用户是否参与#RCAworkshop_2024的活动
|
||||||
|
if (hasParticipatedRCAWorkshop(authPrincipalVo.getId(), portfolioDTO.getTagsDTO(), portfolioDTO.getId(), portfolioDTO.getUserLikeGroupId())){
|
||||||
|
throw new BusinessException("you.have.participated.in.the.event", ResultEnum.PROMPT.getCode());
|
||||||
|
}
|
||||||
if (file != null && file.getOriginalFilename() != null) {
|
if (file != null && file.getOriginalFilename() != null) {
|
||||||
|
Long portfolioId;
|
||||||
String upload = minioUtil.upload("aida-canvas", String.valueOf(authPrincipalVo.getId()), file);
|
String upload = minioUtil.upload("aida-canvas", String.valueOf(authPrincipalVo.getId()), file);
|
||||||
Canvas canvas = new Canvas();
|
Canvas canvas = new Canvas();
|
||||||
canvas.setUrl(upload);
|
canvas.setUrl(upload);
|
||||||
@@ -196,6 +213,8 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
} else {
|
} else {
|
||||||
portfolioMapper.insert(portfolio);
|
portfolioMapper.insert(portfolio);
|
||||||
}
|
}
|
||||||
|
resultPortfolioId = portfolio.getId();
|
||||||
|
portfolioId = portfolio.getId();
|
||||||
|
|
||||||
List<UserLike> userLikeList = userLikeService.getUserLikeList(portfolioDTO.getUserLikeGroupId());
|
List<UserLike> userLikeList = userLikeService.getUserLikeList(portfolioDTO.getUserLikeGroupId());
|
||||||
for (UserLike userLike : userLikeList) {
|
for (UserLike userLike : userLikeList) {
|
||||||
@@ -287,11 +306,22 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
} else {
|
} else {
|
||||||
portfolioMapper.insert(portfolio);
|
portfolioMapper.insert(portfolio);
|
||||||
}
|
}
|
||||||
|
resultPortfolioId = portfolio.getId();
|
||||||
|
portfolioId = portfolio.getId();
|
||||||
|
}
|
||||||
|
// id不为空 表示更新发布;为空,表示新发布
|
||||||
|
if (!Objects.isNull(portfolioDTO.getId())){
|
||||||
|
portfolioId = portfolioDTO.getId();
|
||||||
|
// 删除作品的所有与标签的关联关系
|
||||||
|
portfolioTagsMapper.deleteByPortfolioId(portfolioId);
|
||||||
|
}
|
||||||
|
// 记录作品添加的标签
|
||||||
|
if (!portfolioDTO.getTagsDTO().isEmpty()){
|
||||||
|
addTagsForPortfolio(portfolioDTO.getTagsDTO(), portfolioId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return resultPortfolioId;
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -520,7 +550,6 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
return PageBaseResponse.success(convert);
|
return PageBaseResponse.success(convert);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PortfolioVO detail(PortfolioDTO portfolioDTO) {
|
public PortfolioVO detail(PortfolioDTO portfolioDTO) {
|
||||||
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||||
@@ -988,6 +1017,9 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
throw new BusinessException("You do not have the permission to delete portfolio.");
|
throw new BusinessException("You do not have the permission to delete portfolio.");
|
||||||
}
|
}
|
||||||
portfolioMapper.deleteById(id);
|
portfolioMapper.deleteById(id);
|
||||||
|
|
||||||
|
// 删除作品与标签的关联记录
|
||||||
|
portfolioTagsMapper.deleteByPortfolioId(id);
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1087,6 +1119,89 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 验证该用户是否已参加活动
|
||||||
|
public Boolean hasParticipatedRCAWorkshop(Long accountId, List<TagsDTO> tags, Long portfolioId, Long userLikeGroupId) {
|
||||||
|
List<String> collect = tags.stream().map(Tags::getTagName).collect(Collectors.toList());
|
||||||
|
if (!collect.contains(CommonConstant.RCA_WORKSHOP_TAG)){
|
||||||
|
return false;
|
||||||
|
}else {
|
||||||
|
UserLikeGroup userLikeGroup = userLikeGroupService.getById(userLikeGroupId);
|
||||||
|
// 不是原创的作品不能参与活动
|
||||||
|
if (userLikeGroup.getOriginal().equals(0)){
|
||||||
|
throw new BusinessException("only.original.works.can.participate.in.the.event", ResultEnum.PROMPT.getCode());
|
||||||
|
}
|
||||||
|
List<Portfolio> byTag = baseMapper.getByTag(accountId, CommonConstant.RCA_WORKSHOP_TAG);
|
||||||
|
if (byTag.isEmpty()){
|
||||||
|
return false;
|
||||||
|
}else if (!Objects.isNull(portfolioId)){
|
||||||
|
boolean contains = byTag.stream().map(Portfolio::getId).collect(Collectors.toList()).contains(portfolioId);
|
||||||
|
return !contains;
|
||||||
|
}else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTagsForPortfolio(List<TagsDTO> tagsDTOS, Long portfolioId) {
|
||||||
|
// 遍历数组,添加到t_portfolio_tags表中,没有id的tag,添加到t_tags表中
|
||||||
|
tagsDTOS.forEach(tag -> {
|
||||||
|
Long tagId;
|
||||||
|
if (Objects.isNull(tag.getId())){
|
||||||
|
Tags tags = tagsService.addTag(tag.getTagName());
|
||||||
|
tagId = tags.getId();
|
||||||
|
}else {
|
||||||
|
tagId = tag.getId();
|
||||||
|
}
|
||||||
|
portfolioTagsMapper.insertIgnore(portfolioId, tagId, LocalDateTime.now());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public PageBaseResponse<PortfolioVO> queryPortfolioByTag(String tagName, Long tagId, Integer page, Integer size) {
|
||||||
|
long bestMatchTagId;
|
||||||
|
if (Objects.isNull(tagId)){
|
||||||
|
|
||||||
|
List<Map<String, String>> matchingTags = tagsMapper.getMatchingTags(tagName);
|
||||||
|
Map<String, String> tagMap = matchingTags.get(0);
|
||||||
|
bestMatchTagId = Long.parseLong(tagMap.get("id"));
|
||||||
|
}else {
|
||||||
|
bestMatchTagId = tagId;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryWrapper<PortfolioTags> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("tag_id", bestMatchTagId).select("portfolio_id");
|
||||||
|
|
||||||
|
List<PortfolioTags> portfolioTags = portfolioTagsMapper.selectList(queryWrapper);
|
||||||
|
List<Long> portfolioIdList = portfolioTags.stream().map(PortfolioTags::getPortfolioId).collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (!portfolioIdList.isEmpty()){
|
||||||
|
QueryWrapper<Portfolio> qw = new QueryWrapper<>();
|
||||||
|
qw.in("id", portfolioIdList);
|
||||||
|
Page<Portfolio> portfolioPage = baseMapper.selectPage(new Page<>(page, size), qw);
|
||||||
|
|
||||||
|
// 将 Portfolio 转换为 PortfolioVO 并进行相关处理
|
||||||
|
IPage<PortfolioVO> convert = portfolioPage.convert((Function<Portfolio, PortfolioVO>) portfolio -> {
|
||||||
|
if (portfolio != null) {
|
||||||
|
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()));
|
||||||
|
vo.setViewNums(redisUtil.getViewCount(vo.getId()));
|
||||||
|
Long accountId = vo.getAccountId();
|
||||||
|
vo.setUserName(accountMapper.selectById(accountId).getUserName());
|
||||||
|
if (vo.getOriginal() == 0) {
|
||||||
|
vo.setOriginalUserName(accountMapper.selectById(vo.getOriginalAccountId()).getUserName());
|
||||||
|
}
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
return PageBaseResponse.success(convert);
|
||||||
|
}else {
|
||||||
|
return PageBaseResponse.success(new Page<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void follow(Long followeeId) {
|
public void follow(Long followeeId) {
|
||||||
Long accountId = UserContext.getUserHolder().getId();
|
Long accountId = UserContext.getUserHolder().getId();
|
||||||
// 1、不能关注自己
|
// 1、不能关注自己
|
||||||
|
|||||||
45
src/main/java/com/ai/da/service/impl/TagsServiceImpl.java
Normal file
45
src/main/java/com/ai/da/service/impl/TagsServiceImpl.java
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
package com.ai.da.service.impl;
|
||||||
|
|
||||||
|
import com.ai.da.mapper.primary.TagsMapper;
|
||||||
|
import com.ai.da.mapper.primary.entity.Tags;
|
||||||
|
import com.ai.da.service.TagsService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class TagsServiceImpl extends ServiceImpl<TagsMapper, Tags> implements TagsService {
|
||||||
|
|
||||||
|
public List<Tags> getTags(String tagPrefix){
|
||||||
|
// 1、根据tag前缀,查询
|
||||||
|
QueryWrapper<Tags> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.likeRight("tag_name", tagPrefix);
|
||||||
|
|
||||||
|
// 需返回标签内容和id
|
||||||
|
return baseMapper.selectList(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Tags addTag(String tagName) {
|
||||||
|
// 1、判断有无该tag
|
||||||
|
QueryWrapper<Tags> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("tag_name", tagName);
|
||||||
|
Tags tags = baseMapper.selectOne(queryWrapper);
|
||||||
|
// 2、没有该数据时,插入新标签并返回标签id等
|
||||||
|
if (Objects.isNull(tags)){
|
||||||
|
tags = new Tags();
|
||||||
|
tags.setTagName(tagName);
|
||||||
|
tags.setCreateTime(LocalDateTime.now());
|
||||||
|
|
||||||
|
baseMapper.insert(tags);
|
||||||
|
}
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ import com.ai.da.common.enums.CreditsEventsEnum;
|
|||||||
import com.ai.da.common.utils.*;
|
import com.ai.da.common.utils.*;
|
||||||
import com.ai.da.mapper.primary.*;
|
import com.ai.da.mapper.primary.*;
|
||||||
import com.ai.da.mapper.primary.entity.*;
|
import com.ai.da.mapper.primary.entity.*;
|
||||||
|
import com.ai.da.model.dto.PortfolioDTO;
|
||||||
import com.ai.da.model.dto.ProductImageLikeDTO;
|
import com.ai.da.model.dto.ProductImageLikeDTO;
|
||||||
import com.ai.da.model.dto.ToProductImageDTO;
|
import com.ai.da.model.dto.ToProductImageDTO;
|
||||||
import com.ai.da.model.vo.*;
|
import com.ai.da.model.vo.*;
|
||||||
@@ -69,6 +70,8 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
private LibraryMapper libraryMapper;
|
private LibraryMapper libraryMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private PortfolioMapper portfolioMapper;
|
private PortfolioMapper portfolioMapper;
|
||||||
|
@Resource
|
||||||
|
private TagsMapper tagsMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteUserGroup(Long userGroupId) {
|
public void deleteUserGroup(Long userGroupId) {
|
||||||
@@ -155,10 +158,15 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
|||||||
QueryWrapper<Portfolio> qw = new QueryWrapper<>();
|
QueryWrapper<Portfolio> qw = new QueryWrapper<>();
|
||||||
qw.lambda().eq(Portfolio::getUserLikeGroupSourceId, userGroupId);
|
qw.lambda().eq(Portfolio::getUserLikeGroupSourceId, userGroupId);
|
||||||
List<Portfolio> portfolios = portfolioMapper.selectList(qw);
|
List<Portfolio> portfolios = portfolioMapper.selectList(qw);
|
||||||
|
// Portfolio portfolio = new Portfolio();
|
||||||
|
PortfolioDTO portfolioDTO = new PortfolioDTO();
|
||||||
if (CollectionUtil.isNotEmpty(portfolios)) {
|
if (CollectionUtil.isNotEmpty(portfolios)) {
|
||||||
|
// portfolio = portfolios.get(0);
|
||||||
|
portfolioDTO = CopyUtil.copyObject(portfolios.get(0), PortfolioDTO.class);
|
||||||
beenPublished = 1;
|
beenPublished = 1;
|
||||||
|
portfolioDTO.setTagsDTO(tagsMapper.getTagByPortfolioId(portfolioDTO.getId()));
|
||||||
}
|
}
|
||||||
return new UserLikeChooseVO(userGroupId, userLikeVOS, userLikeCollection, sex, beenPublished);
|
return new UserLikeChooseVO(userGroupId, userLikeVOS, userLikeCollection, sex, beenPublished, portfolioDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -9,4 +9,14 @@
|
|||||||
from portfolio
|
from portfolio
|
||||||
where id = #{originalPortfolioId}
|
where id = #{originalPortfolioId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getByTag" resultType="com.ai.da.mapper.primary.entity.Portfolio">
|
||||||
|
SELECT p.*
|
||||||
|
FROM portfolio p
|
||||||
|
JOIN t_portfolio_tags pt ON p.id = pt.portfolio_id
|
||||||
|
JOIN t_tags t ON pt.tag_id = t.id
|
||||||
|
WHERE p.account_id = #{accountId}
|
||||||
|
AND t.tag_name = #{tagName};
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
16
src/main/resources/mapper/primary/PortfolioTagsMapper.xml
Normal file
16
src/main/resources/mapper/primary/PortfolioTagsMapper.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.ai.da.mapper.primary.PortfolioTagsMapper">
|
||||||
|
|
||||||
|
<delete id="deleteByPortfolioId">
|
||||||
|
DELETE
|
||||||
|
FROM t_portfolio_tags
|
||||||
|
WHERE portfolio_id = #{portfolioId};
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<insert id="insertIgnore">
|
||||||
|
INSERT
|
||||||
|
IGNORE INTO t_portfolio_tags (portfolio_id, tag_id, create_time)
|
||||||
|
VALUES (#{portfolioId}, #{tagId}, #{time});
|
||||||
|
</insert>
|
||||||
|
</mapper>
|
||||||
20
src/main/resources/mapper/primary/TagsMapper.xml
Normal file
20
src/main/resources/mapper/primary/TagsMapper.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.ai.da.mapper.primary.TagsMapper">
|
||||||
|
|
||||||
|
<select id="getMatchingTags" resultType="java.util.List">
|
||||||
|
SELECT id, tag_name, MATCH(tag_name) AGAINST(#{userInput}) AS relevance
|
||||||
|
FROM t_tags
|
||||||
|
WHERE MATCH(tag_name) AGAINST(#{userInput})
|
||||||
|
ORDER BY relevance DESC;
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getTagByPortfolioId" resultType="com.ai.da.mapper.primary.entity.Tags">
|
||||||
|
SELECT t.*
|
||||||
|
FROM t_tags t
|
||||||
|
JOIN t_portfolio_tags pt ON t.id = pt.tag_id
|
||||||
|
WHERE pt.portfolio_id = #{portfolioId};
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@@ -145,6 +145,8 @@ subscription.success=Subscription Success
|
|||||||
unsubscribe.success=Unsubscribe Success
|
unsubscribe.success=Unsubscribe Success
|
||||||
you.have.not.followed.the.current.user=You have not followed the current user
|
you.have.not.followed.the.current.user=You have not followed the current user
|
||||||
remaining.modifications=Remaining modifications are 0
|
remaining.modifications=Remaining modifications are 0
|
||||||
|
you.have.participated.in.the.event=You have participated in the event.
|
||||||
|
only.original.works.can.participate.in.the.event=Sorry, only original works can participate in the event.
|
||||||
|
|
||||||
# 可能会报异常
|
# 可能会报异常
|
||||||
# Informative:
|
# Informative:
|
||||||
|
|||||||
@@ -140,6 +140,8 @@ subscription.success=关注成功
|
|||||||
unsubscribe.success=取消关注成功
|
unsubscribe.success=取消关注成功
|
||||||
you.have.not.followed.the.current.user=您还未关注当前用户
|
you.have.not.followed.the.current.user=您还未关注当前用户
|
||||||
remaining.modifications=剩余修改次数为0
|
remaining.modifications=剩余修改次数为0
|
||||||
|
you.have.participated.in.the.event=您已经参与活动。
|
||||||
|
only.original.works.can.participate.in.the.event=抱歉,只有原创作品能参与活动。
|
||||||
|
|
||||||
# 可能会报异常
|
# 可能会报异常
|
||||||
# Informative:
|
# Informative:
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,77 +0,0 @@
|
|||||||
{
|
|
||||||
"groups": [
|
|
||||||
{
|
|
||||||
"name": "file",
|
|
||||||
"type": "com.ai.da.common.config.FileProperties",
|
|
||||||
"sourceType": "com.ai.da.common.config.FileProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "file.linux",
|
|
||||||
"type": "com.ai.da.common.config.FileProperties$ElPath",
|
|
||||||
"sourceType": "com.ai.da.common.config.FileProperties",
|
|
||||||
"sourceMethod": "getLinux()"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "file.mac",
|
|
||||||
"type": "com.ai.da.common.config.FileProperties$ElPath",
|
|
||||||
"sourceType": "com.ai.da.common.config.FileProperties",
|
|
||||||
"sourceMethod": "getMac()"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "file.sys",
|
|
||||||
"type": "com.ai.da.common.config.FileProperties$ElPath",
|
|
||||||
"sourceType": "com.ai.da.common.config.FileProperties",
|
|
||||||
"sourceMethod": "getSys()"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "file.windows",
|
|
||||||
"type": "com.ai.da.common.config.FileProperties$ElPath",
|
|
||||||
"sourceType": "com.ai.da.common.config.FileProperties",
|
|
||||||
"sourceMethod": "getWindows()"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "spring.security",
|
|
||||||
"type": "com.ai.da.common.security.config.SecurityProperties",
|
|
||||||
"sourceType": "com.ai.da.common.security.config.SecurityProperties"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": [
|
|
||||||
{
|
|
||||||
"name": "file.linux-domain",
|
|
||||||
"type": "java.lang.String",
|
|
||||||
"sourceType": "com.ai.da.common.config.FileProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "spring.security.auth-api",
|
|
||||||
"type": "java.lang.String",
|
|
||||||
"sourceType": "com.ai.da.common.security.config.SecurityProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "spring.security.ignore-paths",
|
|
||||||
"type": "java.lang.String[]",
|
|
||||||
"sourceType": "com.ai.da.common.security.config.SecurityProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "spring.security.jwt-expiration",
|
|
||||||
"type": "java.lang.Long",
|
|
||||||
"sourceType": "com.ai.da.common.security.config.SecurityProperties",
|
|
||||||
"defaultValue": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "spring.security.jwt-secret",
|
|
||||||
"type": "java.lang.String",
|
|
||||||
"sourceType": "com.ai.da.common.security.config.SecurityProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "spring.security.jwt-token-header",
|
|
||||||
"type": "java.lang.String",
|
|
||||||
"sourceType": "com.ai.da.common.security.config.SecurityProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "spring.security.jwt-token-prefix",
|
|
||||||
"type": "java.lang.String",
|
|
||||||
"sourceType": "com.ai.da.common.security.config.SecurityProperties"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"hints": []
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
server.port=5566
|
|
||||||
|
|
||||||
#datasource
|
|
||||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
|
||||||
spring.datasource.url=jdbc:mysql://18.167.251.121:3306/aida?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
|
||||||
spring.datasource.username=root
|
|
||||||
spring.datasource.password=QWa998345
|
|
||||||
|
|
||||||
#security
|
|
||||||
spring.security.jwtSecret=JWTSECRET
|
|
||||||
spring.security.jwtTokenHeader=Authorization
|
|
||||||
spring.security.jwtTokenPrefix=Bearer-
|
|
||||||
## 24Сʱ
|
|
||||||
spring.security.jwtExpiration=8640000000
|
|
||||||
#spring security权限设置 认证了token还要认证权限 不然报错Full authentication is required to access this resource
|
|
||||||
spring.security.ignorePaths=/,/favicon.ico,/doc.html,/webjars/**,/swagger-resources,/v2/api-docs,\
|
|
||||||
/api/account/**,/api/element/**,/api/python/**,/api/design/**,/api/history/**,/api/library/**,/api/third/party/**
|
|
||||||
spring.security.authApi=/auth/login
|
|
||||||
|
|
||||||
|
|
||||||
rsa.private_key=MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A==
|
|
||||||
|
|
||||||
#mybatis
|
|
||||||
mybatis-plus.global-config.banner=false
|
|
||||||
mybatis-plus.mapper-locations=classpath:mapper/*Mapper.xml
|
|
||||||
#mybatis-plus.configuration.log-impl= org.apache.ibatis.logging.stdout.StdOutImpl
|
|
||||||
|
|
||||||
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
|
|
||||||
|
|
||||||
file.mac.path=~/file/
|
|
||||||
file.linux.path=/workspace/home/aida/file/
|
|
||||||
#linux服务器域名(预览和下载用)
|
|
||||||
file.linuxDomain=https://www.aida.com.hk/download/
|
|
||||||
file.windows.path=D:\\upload\\
|
|
||||||
spring.servlet.multipart.max-file-size = 5MB
|
|
||||||
spring.servlet.multipart.max-request-size= 5MB
|
|
||||||
#访问python服务的ip(对应环境)
|
|
||||||
access.python.ip=http://43.198.80.117
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
server.port=5567
|
|
||||||
|
|
||||||
#datasource
|
|
||||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
|
||||||
spring.datasource.url=jdbc:mysql://18.167.251.121:33006/aida?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
|
||||||
spring.datasource.username=root
|
|
||||||
spring.datasource.password=root
|
|
||||||
|
|
||||||
#security
|
|
||||||
spring.security.jwtSecret=JWTSECRET
|
|
||||||
spring.security.jwtTokenHeader=Authorization
|
|
||||||
spring.security.jwtTokenPrefix=Bearer-
|
|
||||||
## 24Сʱ
|
|
||||||
spring.security.jwtExpiration=8640000000
|
|
||||||
#spring security权限设置 认证了token还要认证权限 不然报错Full authentication is required to access this resource
|
|
||||||
spring.security.ignorePaths=/,/favicon.ico,/doc.html,/webjars/**,/swagger-resources,/v2/api-docs,\
|
|
||||||
/api/account/**,/api/element/**,/api/python/**,/api/design/**,/api/history/**,/api/library/**,/api/third/party/**
|
|
||||||
spring.security.authApi=/auth/login
|
|
||||||
|
|
||||||
|
|
||||||
rsa.private_key=MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A==
|
|
||||||
|
|
||||||
#mybatis
|
|
||||||
mybatis-plus.global-config.banner=false
|
|
||||||
mybatis-plus.mapper-locations=classpath:mapper/*Mapper.xml
|
|
||||||
#mybatis-plus.configuration.log-impl= org.apache.ibatis.logging.stdout.StdOutImpl
|
|
||||||
|
|
||||||
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
|
|
||||||
|
|
||||||
file.mac.path=~/file/
|
|
||||||
file.linux.path=/workspace/home/aida/file/
|
|
||||||
#linux服务器域名(预览和下载用)
|
|
||||||
file.linuxDomain=http://18.162.111.141:5568/download/
|
|
||||||
file.windows.path=D:\\upload\\
|
|
||||||
|
|
||||||
spring.servlet.multipart.max-file-size = 5MB
|
|
||||||
spring.servlet.multipart.max-request-size= 5MB
|
|
||||||
|
|
||||||
#访问python服务的ip(对应环境)
|
|
||||||
access.python.ip=http://18.167.251.121
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#<23><><EFBFBD><EFBFBD>application-test<73>ļ<EFBFBD>(<28><><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>)
|
|
||||||
#spring.profiles.active=test
|
|
||||||
|
|
||||||
#<23><><EFBFBD><EFBFBD>application-prod<6F>ļ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
||||||
spring.profiles.active=test
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user