diff --git a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-application/schisandra-cloud-storage-share-application-controller/src/main/java/com/schisandra/share/application/controller/SchisandraUserFavoritesController.java b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-application/schisandra-cloud-storage-share-application-controller/src/main/java/com/schisandra/share/application/controller/SchisandraUserFavoritesController.java index adbcd6f..6094eb2 100644 --- a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-application/schisandra-cloud-storage-share-application-controller/src/main/java/com/schisandra/share/application/controller/SchisandraUserFavoritesController.java +++ b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-application/schisandra-cloud-storage-share-application-controller/src/main/java/com/schisandra/share/application/controller/SchisandraUserFavoritesController.java @@ -2,10 +2,12 @@ package com.schisandra.share.application.controller; import com.alibaba.fastjson.JSON; import com.google.common.base.Preconditions; +import com.schisandra.share.application.convert.SchisandraShareDetailDTOConverter; import com.schisandra.share.application.convert.SchisandraUserFavoritesDTOConverter; import com.schisandra.share.application.dto.SchisandraUserFavoritesDTO; import com.schisandra.share.common.entity.Result; import com.schisandra.share.common.utils.CaffeineUtil; +import com.schisandra.share.domain.bo.SchisandraShareDetailBO; import com.schisandra.share.domain.bo.SchisandraUserFavoritesBO; import com.schisandra.share.domain.service.SchisandraUserFavoritesDomainService; import lombok.extern.slf4j.Slf4j; @@ -40,19 +42,19 @@ public class SchisandraUserFavoritesController { * @return */ @GetMapping("myfavor") - public Result myfavor(String userId) { + public Result myfavor(String userId) { try{ if (log.isInfoEnabled()) { log.info("SchisandraUserFavoritesController.myfavor.userId:{}", JSON.toJSONString(userId)); } Preconditions.checkNotNull(userId, "userId不能为空"); - List result= (List) caffeineUtil + List result= (List) caffeineUtil .caffeineBuild().getIfPresent("myfavor"+userId); if(result!=null){ - return Result.ok(result); + return Result.ok(SchisandraShareDetailDTOConverter.INSTANCE.convertBOToDTOList(result)); } result = schisandraUserFavoritesDomainService.returnMyFavor(userId); - return Result.ok(result); + return Result.ok(SchisandraShareDetailDTOConverter.INSTANCE.convertBOToDTOList(result)); } catch (Exception e) { log.error("SchisandraUserFavoritesController.myfavor.error:{}", e.getMessage(), e); return Result.fail("获取用户收藏表失败"); diff --git a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/SchisandraUserFavoritesDomainService.java b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/SchisandraUserFavoritesDomainService.java index a63c1e5..fda74a4 100644 --- a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/SchisandraUserFavoritesDomainService.java +++ b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/SchisandraUserFavoritesDomainService.java @@ -1,5 +1,6 @@ package com.schisandra.share.domain.service; +import com.schisandra.share.domain.bo.SchisandraShareDetailBO; import com.schisandra.share.domain.bo.SchisandraUserFavoritesBO; import java.util.List; @@ -27,6 +28,6 @@ public interface SchisandraUserFavoritesDomainService { */ Boolean delete(SchisandraUserFavoritesBO schisandraUserFavoritesBO); - List returnMyFavor(String userId); + List returnMyFavor(String userId); } diff --git a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/impl/SchisandraShareCommentReplyDomainServiceImpl.java b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/impl/SchisandraShareCommentReplyDomainServiceImpl.java index 1082ab5..a174425 100644 --- a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/impl/SchisandraShareCommentReplyDomainServiceImpl.java +++ b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/impl/SchisandraShareCommentReplyDomainServiceImpl.java @@ -1,5 +1,7 @@ package com.schisandra.share.domain.service.impl; +import com.jd.platform.async.executor.Async; +import com.jd.platform.async.worker.WorkResult; import com.jd.platform.async.wrapper.WorkerWrapper; import com.schisandra.share.common.enums.IsDeletedFlagEnum; import com.schisandra.share.domain.convert.SchisandraShareCommentReplyBOConverter; @@ -18,6 +20,11 @@ import org.springframework.util.Assert; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * 评论回复表 领域service实现了 @@ -90,16 +97,48 @@ public class SchisandraShareCommentReplyDomainServiceImpl implements SchisandraS public List listComment(String detailId, String userId) { List schisandraShareComments = schisandraShareCommentReplyService.listComment(detailId); List schisandraShareCommentBOS = SchisandraShareCommentReplyBOConverter.INSTANCE.convertEntityToBOList(schisandraShareComments); + List wrappers = new ArrayList<>(); schisandraShareCommentBOS.forEach(schisandraShareCommentReplyBO -> { - SchisandraUserLikesComment schisandraUserLikesComment = - schisandraUserLikesCommentService.queryByuserIdAndDetailId(schisandraShareCommentReplyBO.getId(), userId); - if(schisandraUserLikesComment!=null){ - schisandraShareCommentReplyBO.setIsLike(true); - } - AuthUserInfoEntity userInfo = userRpc.getUserInfo(schisandraShareCommentReplyBO.getUserId()); - schisandraShareCommentReplyBO.setNick(userInfo.getNickName()); - schisandraShareCommentReplyBO.setAvatar(userInfo.getAvatar()); + WorkerWrapper workerWrapper = new WorkerWrapper.Builder() + .worker((SchisandraShareCommentReplyBO object, Map allWrappers) -> { + SchisandraUserLikesComment schisandraUserLikesComment = + schisandraUserLikesCommentService.queryByuserIdAndDetailId(object.getId(), userId); + if(schisandraUserLikesComment!=null){ + object.setIsLike(true); + } + AuthUserInfoEntity userInfo = userRpc.getUserInfo(object.getUserId()); + object.setNick(userInfo.getNickName()); + object.setAvatar(userInfo.getAvatar()); + return "success"; + + }) + .param(schisandraShareCommentReplyBO) + .id(schisandraShareCommentReplyBO.getId()) + .callback((boolean success, SchisandraShareCommentReplyBO param, WorkResult workResult) -> + System.out.println("该线程"+Thread.currentThread().getName())) + .build(); + + wrappers.add(workerWrapper); + + +// +// SchisandraUserLikesComment schisandraUserLikesComment = +// schisandraUserLikesCommentService.queryByuserIdAndDetailId(schisandraShareCommentReplyBO.getId(), userId); +// if(schisandraUserLikesComment!=null){ +// schisandraShareCommentReplyBO.setIsLike(true); +// } +// AuthUserInfoEntity userInfo = userRpc.getUserInfo(schisandraShareCommentReplyBO.getUserId()); +// schisandraShareCommentReplyBO.setNick(userInfo.getNickName()); +// schisandraShareCommentReplyBO.setAvatar(userInfo.getAvatar()); }); + try { + Async.beginWork(3500L,new ThreadPoolExecutor(10, 100, 5L, + TimeUnit.SECONDS, new LinkedBlockingQueue()), wrappers); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } return schisandraShareCommentBOS; } diff --git a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/impl/SchisandraUserFavoritesDomainServiceImpl.java b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/impl/SchisandraUserFavoritesDomainServiceImpl.java index 64b5296..44389b8 100644 --- a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/impl/SchisandraUserFavoritesDomainServiceImpl.java +++ b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-domain/src/main/java/com/schisandra/share/domain/service/impl/SchisandraUserFavoritesDomainServiceImpl.java @@ -1,16 +1,21 @@ package com.schisandra.share.domain.service.impl; import com.schisandra.share.common.enums.IsDeletedFlagEnum; +import com.schisandra.share.domain.bo.SchisandraShareDetailBO; +import com.schisandra.share.domain.convert.SchisandraShareDetailBOConverter; import com.schisandra.share.domain.convert.SchisandraUserFavoritesBOConverter; import com.schisandra.share.domain.bo.SchisandraUserFavoritesBO; import com.schisandra.share.domain.service.SchisandraUserFavoritesDomainService; +import com.schisandra.share.infra.basic.entity.SchisandraShareDetail; import com.schisandra.share.infra.basic.entity.SchisandraUserFavorites; +import com.schisandra.share.infra.basic.service.SchisandraShareDetailService; import com.schisandra.share.infra.basic.service.SchisandraUserFavoritesService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; +import java.util.stream.Collectors; /** * 收藏表 领域service实现了 @@ -24,6 +29,8 @@ public class SchisandraUserFavoritesDomainServiceImpl implements SchisandraUserF @Resource private SchisandraUserFavoritesService schisandraUserFavoritesService; + @Resource + private SchisandraShareDetailService schisandraShareDetailService; @Override public Boolean add(SchisandraUserFavoritesBO schisandraUserFavoritesBO) { @@ -47,9 +54,10 @@ public class SchisandraUserFavoritesDomainServiceImpl implements SchisandraUserF } @Override - public List returnMyFavor(String userId){ - List schisandraUserFavoritesBOS = SchisandraUserFavoritesBOConverter.INSTANCE.convertEntityToBOList(schisandraUserFavoritesService.returnMyFavor(userId)); - return schisandraUserFavoritesBOS; + public List returnMyFavor(String userId){ + List schisandraUserFavoritesBOList = SchisandraUserFavoritesBOConverter.INSTANCE.convertEntityToBOList(schisandraUserFavoritesService.returnMyFavor(userId)); + List detailIds = schisandraUserFavoritesBOList.stream().map(SchisandraUserFavoritesBO::getDetailId).collect((Collectors.toList())); + List shareDetailList = schisandraShareDetailService.queryByIds(detailIds); + return SchisandraShareDetailBOConverter.INSTANCE.convertEntityToBOList(shareDetailList); } - } diff --git a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/basic/service/SchisandraShareDetailService.java b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/basic/service/SchisandraShareDetailService.java index 4e8347e..615fe95 100644 --- a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/basic/service/SchisandraShareDetailService.java +++ b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/basic/service/SchisandraShareDetailService.java @@ -71,4 +71,6 @@ public interface SchisandraShareDetailService { List queryByCircleId(String circleId); List queryByuserId(String userId); + + List queryByIds(List Ids); } diff --git a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/basic/service/impl/SchisandraShareDetailServiceImpl.java b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/basic/service/impl/SchisandraShareDetailServiceImpl.java index 24b20f9..e99e1d3 100644 --- a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/basic/service/impl/SchisandraShareDetailServiceImpl.java +++ b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/basic/service/impl/SchisandraShareDetailServiceImpl.java @@ -136,4 +136,9 @@ public class SchisandraShareDetailServiceImpl implements SchisandraShareDetailSe public List queryByuserId(String userId) { return this.schisandraShareDetailDao.selectListByCondition(SchisandraShareDetailTableDef.SCHISANDRA_SHARE_DETAIL.USER_ID.eq(userId)); } + + @Override + public List queryByIds(List ids) { + return this.schisandraShareDetailDao.selectListByIds(ids); + } } diff --git a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/entity/AuthUserAddressEntity.java b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/entity/AuthUserAddressEntity.java new file mode 100644 index 0000000..de884d6 --- /dev/null +++ b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/entity/AuthUserAddressEntity.java @@ -0,0 +1,79 @@ +package com.schisandra.share.infra.entity; + +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; + +@Data +public class AuthUserAddressEntity implements Serializable { + /** + * + */ + private String id; + + /** + * + */ + private String userId; + + /** + * + */ + private String ip; + + /** + * + */ + private String location; + + /** + * + */ + private String agent; + + /** + * + */ + private String extJson; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * + */ + private Integer isDeleted; + + /** + * + */ + private String browser; + + /** + * + */ + private String operatingSystem; + + /** + * + */ + private String browserVersion; +} diff --git a/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/rpc/AddressRpc.java b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/rpc/AddressRpc.java new file mode 100644 index 0000000..bc2c68e --- /dev/null +++ b/schisandra-cloud-storage-share/schisandra-cloud-storage-share-infra/src/main/java/com/schisandra/share/infra/rpc/AddressRpc.java @@ -0,0 +1,40 @@ +package com.schisandra.share.infra.rpc;; + +import com.schisandra.auth.api.SchisandraAuthFeignService; +import com.schisandra.auth.entity.Result; +import com.schisandra.auth.entity.SchisandraAuthAddressDTO; +import com.schisandra.share.infra.entity.AuthUserAddressEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.annotation.Resource; + + +/** + * @Classname UserRpc + * @BelongsProject: schisandra-cloud-storage + * @BelongsPackage: com.schisandra.share.infra.rpc + * @Author: landaiqing + * @CreateTime: 2024-07-15 09:48 + * @Description: TODO + * @Version: 1.0 + */ +@Component +public class AddressRpc { + @Resource + private SchisandraAuthFeignService schisandraAuthFeignService; + + public AuthUserAddressEntity getUserAddress(@RequestParam("userId") String userId){ + Result result = schisandraAuthFeignService.getUserAddress(userId); + AuthUserAddressEntity authUserAddressEntity = new AuthUserAddressEntity(); + if (!result.getSuccess()) { + return authUserAddressEntity; + } + SchisandraAuthAddressDTO data = result.getData(); + authUserAddressEntity.setId(data.getId()); + authUserAddressEntity.setUserId(data.getUserId()); + authUserAddressEntity.setLocation(data.getLocation()); + authUserAddressEntity.setBrowser(data.getBrowser()); + return authUserAddressEntity; + } +} \ No newline at end of file