From 9ddaef39a9fc64f0c80152ea0cc6ca27be58bb19 Mon Sep 17 00:00:00 2001 From: aaron Date: Sat, 9 Dec 2023 17:04:54 +0800 Subject: [PATCH 1/2] feat(share) --- .../officialsite/common/base/Pagination.java | 29 ++++ .../officialsite/common/enums/CodeEnums.java | 8 +- .../common/exception/BizException.java | 7 + .../common/utils/HttpSessionUtils.java | 3 + .../sharing/constant/SharingLanguageEnum.java | 30 ++++ .../sharing/constant/SharingLockStatus.java | 17 ++ .../sharing/constant/SharingMeetingType.java | 32 ++++ .../SharingManagementController.java | 0 .../controller/SharingRewardController.java | 0 .../controller/UserSharingController.java | 18 +- .../sharing/dao/ISharingRepository.java | 25 +++ .../sharing/model/db/TbShare.java | 84 +++++++++ .../model/req/ClaimSharingRewardReq.java | 0 .../model/req/CreateSessionRoomReq.java | 0 .../sharing/model/req/CreateSharingReq.java | 0 .../model/req/GenerateSharingDataReq.java | 0 .../model/req/InitSharingRewardsReq.java | 0 .../model/req/PreCheckSharingRewardReq.java | 0 .../sharing/model/req/UpdateSharingReq.java} | 25 +-- .../sharing/model/resp/AllSharingResp.java | 8 + .../model/resp/ClaimSharingRewardResp.java | 0 .../model/resp/CreateMeetingRoomResp.java | 0 .../model/resp/GenerateSharingDataResp.java | 0 .../model/resp/PreCheckSharingRewardResp.java | 0 .../model/resp/PrepareSharingRewardsResp.java | 0 .../sharing/model/resp/QueryMeetingResp.java | 0 .../sharing/model/resp/SharingByUserResp.java | 8 + .../sharing/model/vo/SharingVo.java | 53 ++++++ .../sharing/service/IRewardService.java | 2 - .../service/ISharingManagementService.java | 0 .../sharing/service/IUserSharingService.java | 13 +- .../impl/DefaultRewardServiceImpl.java | 26 +++ .../DefaultSharingManagementServiceImpl.java | 38 +++++ .../impl/DefaultSharingServiceImpl.java | 159 ++++++++++++++++++ src/main/resources/application.yml | 4 +- .../sharing/dao/ISharingRepository.java | 19 --- .../sharing/model/pojo/SharingPojo.java | 27 --- .../sharing/model/req/UpdateSharingReq.java | 9 - .../sharing/model/resp/AllSharingResp.java | 13 -- .../sharing/model/resp/SharingByUserResp.java | 9 - .../impl/DefaultSharingServiceImpl.java | 104 ------------ 41 files changed, 548 insertions(+), 222 deletions(-) create mode 100644 src/main/java/com/dl/officialsite/sharing/constant/SharingLanguageEnum.java create mode 100644 src/main/java/com/dl/officialsite/sharing/constant/SharingLockStatus.java create mode 100644 src/main/java/com/dl/officialsite/sharing/constant/SharingMeetingType.java rename src/{test => main}/java/com/dl/officialsite/sharing/controller/SharingManagementController.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/controller/SharingRewardController.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/controller/UserSharingController.java (79%) create mode 100644 src/main/java/com/dl/officialsite/sharing/dao/ISharingRepository.java create mode 100644 src/main/java/com/dl/officialsite/sharing/model/db/TbShare.java rename src/{test => main}/java/com/dl/officialsite/sharing/model/req/ClaimSharingRewardReq.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/req/CreateSessionRoomReq.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/req/CreateSharingReq.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/req/GenerateSharingDataReq.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/req/InitSharingRewardsReq.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/req/PreCheckSharingRewardReq.java (100%) rename src/{test/java/com/dl/officialsite/sharing/model/db/SharingEntity.java => main/java/com/dl/officialsite/sharing/model/req/UpdateSharingReq.java} (64%) create mode 100644 src/main/java/com/dl/officialsite/sharing/model/resp/AllSharingResp.java rename src/{test => main}/java/com/dl/officialsite/sharing/model/resp/ClaimSharingRewardResp.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/resp/CreateMeetingRoomResp.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/resp/GenerateSharingDataResp.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/resp/PreCheckSharingRewardResp.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/resp/PrepareSharingRewardsResp.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/model/resp/QueryMeetingResp.java (100%) create mode 100644 src/main/java/com/dl/officialsite/sharing/model/resp/SharingByUserResp.java create mode 100644 src/main/java/com/dl/officialsite/sharing/model/vo/SharingVo.java rename src/{test => main}/java/com/dl/officialsite/sharing/service/IRewardService.java (88%) rename src/{test => main}/java/com/dl/officialsite/sharing/service/ISharingManagementService.java (100%) rename src/{test => main}/java/com/dl/officialsite/sharing/service/IUserSharingService.java (74%) create mode 100644 src/main/java/com/dl/officialsite/sharing/service/impl/DefaultRewardServiceImpl.java create mode 100644 src/main/java/com/dl/officialsite/sharing/service/impl/DefaultSharingManagementServiceImpl.java create mode 100644 src/main/java/com/dl/officialsite/sharing/service/impl/DefaultSharingServiceImpl.java delete mode 100644 src/test/java/com/dl/officialsite/sharing/dao/ISharingRepository.java delete mode 100644 src/test/java/com/dl/officialsite/sharing/model/pojo/SharingPojo.java delete mode 100644 src/test/java/com/dl/officialsite/sharing/model/req/UpdateSharingReq.java delete mode 100644 src/test/java/com/dl/officialsite/sharing/model/resp/AllSharingResp.java delete mode 100644 src/test/java/com/dl/officialsite/sharing/model/resp/SharingByUserResp.java delete mode 100644 src/test/java/com/dl/officialsite/sharing/service/impl/DefaultSharingServiceImpl.java diff --git a/src/main/java/com/dl/officialsite/common/base/Pagination.java b/src/main/java/com/dl/officialsite/common/base/Pagination.java index 19314355..8d852379 100644 --- a/src/main/java/com/dl/officialsite/common/base/Pagination.java +++ b/src/main/java/com/dl/officialsite/common/base/Pagination.java @@ -1,7 +1,36 @@ package com.dl.officialsite.common.base; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; @Data +@NoArgsConstructor +@AllArgsConstructor public class Pagination { + + /** + * 总数据条目 + */ + private int totalCount; + + /** + * 总共页数 + */ + private int totalPages; + + /** + * 当前页码 + */ + private int currentPage; + + /** + * 当前页面包含条目数 + */ + private int currentPageSize; + + /** + * 是否还有下一页 + */ + private boolean hasNext; } diff --git a/src/main/java/com/dl/officialsite/common/enums/CodeEnums.java b/src/main/java/com/dl/officialsite/common/enums/CodeEnums.java index f3affe0c..f4b2874e 100644 --- a/src/main/java/com/dl/officialsite/common/enums/CodeEnums.java +++ b/src/main/java/com/dl/officialsite/common/enums/CodeEnums.java @@ -19,7 +19,13 @@ public enum CodeEnums { TEAM_NOT_EXIST("1005", "team not exist"), LOGIN_IN("2001", "please login"), TEAM_ADMIN_NOT_EXIST("1006", "team admin not exist"), - MEMBER_ALREADY_REQUEST_TEAM("1007", "member already request team"); + MEMBER_ALREADY_REQUEST_TEAM("1007", "member already request team"), + + //Sharing + SHARING_NOT_FOUND("5001", "Sharing not found"), + SHARING_NOT_OWNER("5002", "You are no sharing user"), + + SHARING_LOCKED("5003", "Sharing locked, please contact admin to unlock"); private String code; diff --git a/src/main/java/com/dl/officialsite/common/exception/BizException.java b/src/main/java/com/dl/officialsite/common/exception/BizException.java index 15a0c985..4ab94c68 100644 --- a/src/main/java/com/dl/officialsite/common/exception/BizException.java +++ b/src/main/java/com/dl/officialsite/common/exception/BizException.java @@ -1,5 +1,6 @@ package com.dl.officialsite.common.exception; +import com.dl.officialsite.common.enums.CodeEnums; import lombok.Data; import lombok.EqualsAndHashCode; @@ -17,6 +18,12 @@ public class BizException extends RuntimeException{ private String msg; + public BizException(CodeEnums codeEnums){ + super(codeEnums.getMsg()); + this.code = codeEnums.getCode(); + this.msg = codeEnums.getMsg(); + } + public BizException(String code, String msg) { super(msg); this.code = code; diff --git a/src/main/java/com/dl/officialsite/common/utils/HttpSessionUtils.java b/src/main/java/com/dl/officialsite/common/utils/HttpSessionUtils.java index 4f08eefc..d0568860 100644 --- a/src/main/java/com/dl/officialsite/common/utils/HttpSessionUtils.java +++ b/src/main/java/com/dl/officialsite/common/utils/HttpSessionUtils.java @@ -41,6 +41,7 @@ public static SessionUserInfo getMember(HttpSession session){ return (SessionUserInfo)sessionObj; } + public static void requireLogin(HttpSession session) { SessionUserInfo sessionUserInfo = getMember(session); if (!isUserLogin(session)) { @@ -56,4 +57,6 @@ public static void clearLogin(HttpSession session) { session.removeAttribute(MEMBER_ATTRIBUTE_KEY); } + + } diff --git a/src/main/java/com/dl/officialsite/sharing/constant/SharingLanguageEnum.java b/src/main/java/com/dl/officialsite/sharing/constant/SharingLanguageEnum.java new file mode 100644 index 00000000..3d1a7ba3 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/constant/SharingLanguageEnum.java @@ -0,0 +1,30 @@ +package com.dl.officialsite.sharing.constant; + +import lombok.Getter; + +@Getter +public enum SharingLanguageEnum { + + CHINESE(0), + + ENGLISH(1), + + FRENCH(2), + + JAPANESE(3); + + private int code; + + SharingLanguageEnum(int code){ + this.code = code; + } + + public static SharingLanguageEnum codeOf(int languageCode) { + for(SharingLanguageEnum language: SharingLanguageEnum.values()){ + if(language.code == languageCode){ + return language; + } + } + throw new IllegalArgumentException("languageCode "+languageCode); + } +} diff --git a/src/main/java/com/dl/officialsite/sharing/constant/SharingLockStatus.java b/src/main/java/com/dl/officialsite/sharing/constant/SharingLockStatus.java new file mode 100644 index 00000000..89ff02f8 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/constant/SharingLockStatus.java @@ -0,0 +1,17 @@ +package com.dl.officialsite.sharing.constant; + +import lombok.Getter; + +@Getter +public enum SharingLockStatus { + + UNLOCKED(0), + + LOCKED(1); + + private int code; + + SharingLockStatus(int code){ + this.code = code; + } +} diff --git a/src/main/java/com/dl/officialsite/sharing/constant/SharingMeetingType.java b/src/main/java/com/dl/officialsite/sharing/constant/SharingMeetingType.java new file mode 100644 index 00000000..203de0e0 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/constant/SharingMeetingType.java @@ -0,0 +1,32 @@ +package com.dl.officialsite.sharing.constant; + +import lombok.Getter; + +@Getter +public enum SharingMeetingType { + + TENCENT(0), + + GOOGLE(1), + + ZOOM(2), + + TELEGRAM(3), + + DC(4); + + private int code; + + SharingMeetingType(int code){ + this.code = code; + } + + public static SharingMeetingType codeOf(int meetingType) { + for(SharingMeetingType m: SharingMeetingType.values()){ + if(m.code == meetingType){ + return m; + } + } + throw new IllegalArgumentException("meetingType "+meetingType); + } +} diff --git a/src/test/java/com/dl/officialsite/sharing/controller/SharingManagementController.java b/src/main/java/com/dl/officialsite/sharing/controller/SharingManagementController.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/controller/SharingManagementController.java rename to src/main/java/com/dl/officialsite/sharing/controller/SharingManagementController.java diff --git a/src/test/java/com/dl/officialsite/sharing/controller/SharingRewardController.java b/src/main/java/com/dl/officialsite/sharing/controller/SharingRewardController.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/controller/SharingRewardController.java rename to src/main/java/com/dl/officialsite/sharing/controller/SharingRewardController.java diff --git a/src/test/java/com/dl/officialsite/sharing/controller/UserSharingController.java b/src/main/java/com/dl/officialsite/sharing/controller/UserSharingController.java similarity index 79% rename from src/test/java/com/dl/officialsite/sharing/controller/UserSharingController.java rename to src/main/java/com/dl/officialsite/sharing/controller/UserSharingController.java index 66d55b1e..2d027805 100644 --- a/src/test/java/com/dl/officialsite/sharing/controller/UserSharingController.java +++ b/src/main/java/com/dl/officialsite/sharing/controller/UserSharingController.java @@ -1,16 +1,15 @@ package com.dl.officialsite.sharing.controller; import com.dl.officialsite.common.base.BaseResponse; -import com.dl.officialsite.sharing.model.pojo.SharingPojo; +import com.dl.officialsite.sharing.model.vo.SharingVo; import com.dl.officialsite.sharing.model.req.CreateSharingReq; import com.dl.officialsite.sharing.model.req.UpdateSharingReq; import com.dl.officialsite.sharing.model.resp.AllSharingResp; -import com.dl.officialsite.sharing.model.resp.ClaimSharingRewardResp; -import com.dl.officialsite.sharing.model.resp.PreCheckSharingRewardResp; import com.dl.officialsite.sharing.model.resp.SharingByUserResp; import com.dl.officialsite.sharing.service.IUserSharingService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.repository.query.Param; import org.springframework.web.bind.annotation.*; @RestController @@ -55,7 +54,8 @@ public BaseResponse deleteSharing(long shareId){ * 查看全部分享 * @return */ - public BaseResponse loadSharing(int pageNo, int pageSize){ + @GetMapping("all") + public BaseResponse loadSharing(@Param("pageNo") int pageNo, @Param("pageSize") int pageSize){ return BaseResponse.successWithData(this.userSharingService.loadSharing(pageNo, pageSize)); } @@ -64,16 +64,16 @@ public BaseResponse loadSharing(int pageNo, int pageSize){ * @param shareId * @return */ - public BaseResponse querySharing(long shareId){ + @GetMapping("{shareId}") + public BaseResponse querySharing(@PathVariable("shareId") long shareId){ return BaseResponse.successWithData(this.userSharingService.querySharing(shareId)); } /** * 查看用户的分享 - * @param uid - * @return */ - public BaseResponse loadSharingByUser(long uid) { - return BaseResponse.successWithData(this.userSharingService.loadSharingByUser(uid)); + @GetMapping("{memberId}") + public BaseResponse loadSharingByUser(@PathVariable("memberId") long memberId, @Param("pageNo") int pageNo, @Param("pageSize") int pageSize) { + return BaseResponse.successWithData(this.userSharingService.loadSharingByUser(memberId, pageNo, pageSize)); } } diff --git a/src/main/java/com/dl/officialsite/sharing/dao/ISharingRepository.java b/src/main/java/com/dl/officialsite/sharing/dao/ISharingRepository.java new file mode 100644 index 00000000..f72fc283 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/dao/ISharingRepository.java @@ -0,0 +1,25 @@ +package com.dl.officialsite.sharing.dao; + +import com.dl.officialsite.sharing.model.db.TbShare; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface ISharingRepository extends JpaRepository { + + @Query(value = "select * from tb_share limit :offset, :limit", nativeQuery = true) + List findAllSharesPaged(@Param("offset") int offset, @Param("limit") int limit); + + @Query(value = "select count(*) from tb_share", nativeQuery = true) + int loadAllCount(); + + @Query(value = "select * from tb_share where member_id = :memberId limit :offset, :limit", nativeQuery = true) + List findAllSharesByUidPaged(@Param("memberId") long memberId, @Param("offset") int offset, @Param("limit") int limit); + + @Query(value = "select count(*) from tb_share where member_id = :memberId", nativeQuery = true) + int loadCountByUid(@Param("memberId") long memberId); + + +} diff --git a/src/main/java/com/dl/officialsite/sharing/model/db/TbShare.java b/src/main/java/com/dl/officialsite/sharing/model/db/TbShare.java new file mode 100644 index 00000000..0c1d0f0e --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/model/db/TbShare.java @@ -0,0 +1,84 @@ +package com.dl.officialsite.sharing.model.db; + +import lombok.Data; + +import javax.persistence.*; + +@Data +@Entity +@Table(name = "tb_share", + uniqueConstraints={@UniqueConstraint(columnNames={"theme"})}, + indexes= { + @Index(columnList="member_id") +}) +public class TbShare { + + /** + * 分享Id + */ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + + /** + * 分享主题 + */ + private String theme; + + /** + * 分享日期 + */ + private String date; + + /** + * 分享时间(UTC+8) + */ + private String time; + + /** + * 分享语言 + */ + private int language; // 0 Chinese 1 English + + /** + * 分享人昵称 + */ + private String presenter; + + /** + * 分享所属组织 + */ + private String org; + + /** + * 分享人twitter + */ + private String twitter; + + /** + * 分享人 + */ + @Column(name = "member_id") + private long memberId; + + /** + * 文档连接 + */ + @Column(name = "sharing_doc") + private String sharingDoc; + + /** + * 标签类别 + */ + private String label; + + /** + * 锁定状态 + */ + @Column(name = "lock_status") + private int lockStatus; + + private int meetingType; + + private String meetingLink; +} diff --git a/src/test/java/com/dl/officialsite/sharing/model/req/ClaimSharingRewardReq.java b/src/main/java/com/dl/officialsite/sharing/model/req/ClaimSharingRewardReq.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/req/ClaimSharingRewardReq.java rename to src/main/java/com/dl/officialsite/sharing/model/req/ClaimSharingRewardReq.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/req/CreateSessionRoomReq.java b/src/main/java/com/dl/officialsite/sharing/model/req/CreateSessionRoomReq.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/req/CreateSessionRoomReq.java rename to src/main/java/com/dl/officialsite/sharing/model/req/CreateSessionRoomReq.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/req/CreateSharingReq.java b/src/main/java/com/dl/officialsite/sharing/model/req/CreateSharingReq.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/req/CreateSharingReq.java rename to src/main/java/com/dl/officialsite/sharing/model/req/CreateSharingReq.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/req/GenerateSharingDataReq.java b/src/main/java/com/dl/officialsite/sharing/model/req/GenerateSharingDataReq.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/req/GenerateSharingDataReq.java rename to src/main/java/com/dl/officialsite/sharing/model/req/GenerateSharingDataReq.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/req/InitSharingRewardsReq.java b/src/main/java/com/dl/officialsite/sharing/model/req/InitSharingRewardsReq.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/req/InitSharingRewardsReq.java rename to src/main/java/com/dl/officialsite/sharing/model/req/InitSharingRewardsReq.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/req/PreCheckSharingRewardReq.java b/src/main/java/com/dl/officialsite/sharing/model/req/PreCheckSharingRewardReq.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/req/PreCheckSharingRewardReq.java rename to src/main/java/com/dl/officialsite/sharing/model/req/PreCheckSharingRewardReq.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/db/SharingEntity.java b/src/main/java/com/dl/officialsite/sharing/model/req/UpdateSharingReq.java similarity index 64% rename from src/test/java/com/dl/officialsite/sharing/model/db/SharingEntity.java rename to src/main/java/com/dl/officialsite/sharing/model/req/UpdateSharingReq.java index 89ad3255..7c676a67 100644 --- a/src/test/java/com/dl/officialsite/sharing/model/db/SharingEntity.java +++ b/src/main/java/com/dl/officialsite/sharing/model/req/UpdateSharingReq.java @@ -1,21 +1,14 @@ -package com.dl.officialsite.sharing.model.db; +package com.dl.officialsite.sharing.model.req; import lombok.Data; -import javax.persistence.*; - @Data -@Entity -@Table(name = "tb_share") -public class SharingEntity { +public class UpdateSharingReq { /** - * 分享Id + * 分享id */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; - /** * 分享主题 */ @@ -51,24 +44,14 @@ public class SharingEntity { */ private String twitter; - /** - * 分享人 - */ - private String memberId; - /** * 文档连接 */ private String sharingDoc; + /** * 标签类别 */ - //defi zk underlying private String label; - - /** - * 奖励金额 - */ - private Integer reward; } diff --git a/src/main/java/com/dl/officialsite/sharing/model/resp/AllSharingResp.java b/src/main/java/com/dl/officialsite/sharing/model/resp/AllSharingResp.java new file mode 100644 index 00000000..67410267 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/model/resp/AllSharingResp.java @@ -0,0 +1,8 @@ +package com.dl.officialsite.sharing.model.resp; + +import com.dl.officialsite.common.base.PagedList; +import com.dl.officialsite.sharing.model.vo.SharingVo; + +public class AllSharingResp extends PagedList { + +} diff --git a/src/test/java/com/dl/officialsite/sharing/model/resp/ClaimSharingRewardResp.java b/src/main/java/com/dl/officialsite/sharing/model/resp/ClaimSharingRewardResp.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/resp/ClaimSharingRewardResp.java rename to src/main/java/com/dl/officialsite/sharing/model/resp/ClaimSharingRewardResp.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/resp/CreateMeetingRoomResp.java b/src/main/java/com/dl/officialsite/sharing/model/resp/CreateMeetingRoomResp.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/resp/CreateMeetingRoomResp.java rename to src/main/java/com/dl/officialsite/sharing/model/resp/CreateMeetingRoomResp.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/resp/GenerateSharingDataResp.java b/src/main/java/com/dl/officialsite/sharing/model/resp/GenerateSharingDataResp.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/resp/GenerateSharingDataResp.java rename to src/main/java/com/dl/officialsite/sharing/model/resp/GenerateSharingDataResp.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/resp/PreCheckSharingRewardResp.java b/src/main/java/com/dl/officialsite/sharing/model/resp/PreCheckSharingRewardResp.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/resp/PreCheckSharingRewardResp.java rename to src/main/java/com/dl/officialsite/sharing/model/resp/PreCheckSharingRewardResp.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/resp/PrepareSharingRewardsResp.java b/src/main/java/com/dl/officialsite/sharing/model/resp/PrepareSharingRewardsResp.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/resp/PrepareSharingRewardsResp.java rename to src/main/java/com/dl/officialsite/sharing/model/resp/PrepareSharingRewardsResp.java diff --git a/src/test/java/com/dl/officialsite/sharing/model/resp/QueryMeetingResp.java b/src/main/java/com/dl/officialsite/sharing/model/resp/QueryMeetingResp.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/model/resp/QueryMeetingResp.java rename to src/main/java/com/dl/officialsite/sharing/model/resp/QueryMeetingResp.java diff --git a/src/main/java/com/dl/officialsite/sharing/model/resp/SharingByUserResp.java b/src/main/java/com/dl/officialsite/sharing/model/resp/SharingByUserResp.java new file mode 100644 index 00000000..42684237 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/model/resp/SharingByUserResp.java @@ -0,0 +1,8 @@ +package com.dl.officialsite.sharing.model.resp; + +import com.dl.officialsite.common.base.PagedList; +import com.dl.officialsite.sharing.model.vo.SharingVo; +import lombok.Data; + +public class SharingByUserResp extends PagedList { +} diff --git a/src/main/java/com/dl/officialsite/sharing/model/vo/SharingVo.java b/src/main/java/com/dl/officialsite/sharing/model/vo/SharingVo.java new file mode 100644 index 00000000..9d222ae3 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/model/vo/SharingVo.java @@ -0,0 +1,53 @@ +package com.dl.officialsite.sharing.model.vo; + +import com.dl.officialsite.sharing.constant.SharingLanguageEnum; +import com.dl.officialsite.sharing.constant.SharingMeetingType; +import com.dl.officialsite.sharing.model.db.TbShare; +import lombok.Data; + +@Data +public class SharingVo { + + private Long id; + + private String theme; + + private String date; + + private String time; + + private String language; // 0 Chinese 1 English + + private String presenter; + + private String org; + + private String twitter; + + private String sharingDoc; + + private String label; + + private int locked; + + private String meetingType; + + private String meetingLink; + + public static SharingVo convert(TbShare entity) { + SharingVo vo = new SharingVo(); + vo.id = entity.getId(); + vo.theme = entity.getTheme(); + vo.date = entity.getDate(); + vo.time = entity.getTime(); + vo.language = SharingLanguageEnum.codeOf(entity.getLanguage()).name(); + vo.presenter = entity.getPresenter(); + vo.org = entity.getOrg(); + vo.twitter = entity.getTwitter(); + vo.sharingDoc = entity.getSharingDoc(); + vo.label = entity.getLabel(); + vo.locked = entity.getLockStatus(); + vo.meetingType = SharingMeetingType.codeOf(entity.getMeetingType()).name(); + return vo; + } +} diff --git a/src/test/java/com/dl/officialsite/sharing/service/IRewardService.java b/src/main/java/com/dl/officialsite/sharing/service/IRewardService.java similarity index 88% rename from src/test/java/com/dl/officialsite/sharing/service/IRewardService.java rename to src/main/java/com/dl/officialsite/sharing/service/IRewardService.java index 0da7d2d6..bd6c006a 100644 --- a/src/test/java/com/dl/officialsite/sharing/service/IRewardService.java +++ b/src/main/java/com/dl/officialsite/sharing/service/IRewardService.java @@ -1,11 +1,9 @@ package com.dl.officialsite.sharing.service; -import com.dl.officialsite.common.base.BaseResponse; import com.dl.officialsite.sharing.model.req.InitSharingRewardsReq; import com.dl.officialsite.sharing.model.resp.ClaimSharingRewardResp; import com.dl.officialsite.sharing.model.resp.PreCheckSharingRewardResp; import com.dl.officialsite.sharing.model.resp.PrepareSharingRewardsResp; -import org.springframework.web.bind.annotation.GetMapping; public interface IRewardService { diff --git a/src/test/java/com/dl/officialsite/sharing/service/ISharingManagementService.java b/src/main/java/com/dl/officialsite/sharing/service/ISharingManagementService.java similarity index 100% rename from src/test/java/com/dl/officialsite/sharing/service/ISharingManagementService.java rename to src/main/java/com/dl/officialsite/sharing/service/ISharingManagementService.java diff --git a/src/test/java/com/dl/officialsite/sharing/service/IUserSharingService.java b/src/main/java/com/dl/officialsite/sharing/service/IUserSharingService.java similarity index 74% rename from src/test/java/com/dl/officialsite/sharing/service/IUserSharingService.java rename to src/main/java/com/dl/officialsite/sharing/service/IUserSharingService.java index c1a1646b..de38d9ca 100644 --- a/src/test/java/com/dl/officialsite/sharing/service/IUserSharingService.java +++ b/src/main/java/com/dl/officialsite/sharing/service/IUserSharingService.java @@ -1,11 +1,9 @@ package com.dl.officialsite.sharing.service; -import com.dl.officialsite.sharing.model.pojo.SharingPojo; +import com.dl.officialsite.sharing.model.vo.SharingVo; import com.dl.officialsite.sharing.model.req.CreateSharingReq; import com.dl.officialsite.sharing.model.req.UpdateSharingReq; import com.dl.officialsite.sharing.model.resp.AllSharingResp; -import com.dl.officialsite.sharing.model.resp.ClaimSharingRewardResp; -import com.dl.officialsite.sharing.model.resp.PreCheckSharingRewardResp; import com.dl.officialsite.sharing.model.resp.SharingByUserResp; /** @@ -42,12 +40,15 @@ public interface IUserSharingService { * @param shareId * @return */ - SharingPojo querySharing(long shareId); + SharingVo querySharing(long shareId); + /** * 查看用户的分享 - * @param uid + * @param memberId + * @param pageNo 1开始 + * @param pageSize * @return */ - SharingByUserResp loadSharingByUser(long uid); + SharingByUserResp loadSharingByUser(long memberId, int pageNo, int pageSize); } diff --git a/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultRewardServiceImpl.java b/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultRewardServiceImpl.java new file mode 100644 index 00000000..ff8d5b91 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultRewardServiceImpl.java @@ -0,0 +1,26 @@ +package com.dl.officialsite.sharing.service.impl; + +import com.dl.officialsite.sharing.model.req.InitSharingRewardsReq; +import com.dl.officialsite.sharing.model.resp.ClaimSharingRewardResp; +import com.dl.officialsite.sharing.model.resp.PreCheckSharingRewardResp; +import com.dl.officialsite.sharing.model.resp.PrepareSharingRewardsResp; +import com.dl.officialsite.sharing.service.IRewardService; +import org.springframework.stereotype.Service; + +@Service +public class DefaultRewardServiceImpl implements IRewardService { + @Override + public PreCheckSharingRewardResp preCheckSharingReward(long sharingId) { + return null; + } + + @Override + public ClaimSharingRewardResp claimSharingReward(long sharingId) { + return null; + } + + @Override + public PrepareSharingRewardsResp prepareRewards(InitSharingRewardsReq req) { + return null; + } +} diff --git a/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultSharingManagementServiceImpl.java b/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultSharingManagementServiceImpl.java new file mode 100644 index 00000000..71c4a62b --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultSharingManagementServiceImpl.java @@ -0,0 +1,38 @@ +package com.dl.officialsite.sharing.service.impl; + +import com.dl.officialsite.sharing.model.req.CreateSessionRoomReq; +import com.dl.officialsite.sharing.model.req.GenerateSharingDataReq; +import com.dl.officialsite.sharing.model.resp.CreateMeetingRoomResp; +import com.dl.officialsite.sharing.model.resp.GenerateSharingDataResp; +import com.dl.officialsite.sharing.model.resp.QueryMeetingResp; +import com.dl.officialsite.sharing.service.ISharingManagementService; +import lombok.Data; +import org.springframework.stereotype.Service; + +@Service +public class DefaultSharingManagementServiceImpl implements ISharingManagementService { + @Override + public void lockSharing(long shareId) { + + } + + @Override + public void unlockSharing(long shareId) { + + } + + @Override + public CreateMeetingRoomResp createSessionRoom(CreateSessionRoomReq req) { + return null; + } + + @Override + public QueryMeetingResp queryMeeting(long shareId) { + return null; + } + + @Override + public GenerateSharingDataResp viewSharingData(GenerateSharingDataReq req) { + return null; + } +} diff --git a/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultSharingServiceImpl.java b/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultSharingServiceImpl.java new file mode 100644 index 00000000..5d052308 --- /dev/null +++ b/src/main/java/com/dl/officialsite/sharing/service/impl/DefaultSharingServiceImpl.java @@ -0,0 +1,159 @@ +package com.dl.officialsite.sharing.service.impl; + +import com.dl.officialsite.common.base.Pagination; +import com.dl.officialsite.common.enums.CodeEnums; +import com.dl.officialsite.common.exception.BizException; +import com.dl.officialsite.common.utils.HttpSessionUtils; +import com.dl.officialsite.login.model.SessionUserInfo; +import com.dl.officialsite.member.Member; +import com.dl.officialsite.member.MemberRepository; +import com.dl.officialsite.sharing.constant.SharingLockStatus; +import com.dl.officialsite.sharing.dao.ISharingRepository; +import com.dl.officialsite.sharing.model.db.TbShare; +import com.dl.officialsite.sharing.model.vo.SharingVo; +import com.dl.officialsite.sharing.model.req.CreateSharingReq; +import com.dl.officialsite.sharing.model.req.UpdateSharingReq; +import com.dl.officialsite.sharing.model.resp.AllSharingResp; +import com.dl.officialsite.sharing.model.resp.SharingByUserResp; +import com.dl.officialsite.sharing.service.IUserSharingService; +import com.google.common.base.Preconditions; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +@Service +@Slf4j +public class DefaultSharingServiceImpl implements IUserSharingService { + + @Autowired + private ISharingRepository sharingRepository; + + @Autowired + private MemberRepository memberRepository; + + @Autowired(required=true) + private HttpServletRequest request; + + @Override + public long createSharing(CreateSharingReq req) { + /** + * 登陆用户转member + */ + SessionUserInfo userInfo = HttpSessionUtils.getMember(request.getSession()); + Preconditions.checkState(userInfo != null, "User info not null"); + Optional memberOpt = this.memberRepository.findByAddress(userInfo.getAddress()); + Member member = memberOpt.get(); + + /** + * 创建资料 + */ + log.info("createSharing start, uid"); + TbShare entity = new TbShare(); + entity.setTheme(req.getTheme()); + entity.setDate(req.getDate()); + entity.setTime(req.getTime()); + entity.setPresenter(req.getPresenter()); + entity.setOrg(req.getOrg()); + entity.setTwitter(req.getTwitter()); + entity.setMemberId(member.getId().longValue()); + entity.setSharingDoc(req.getSharingDoc()); + entity.setLabel(req.getLabel()); + entity.setLockStatus(SharingLockStatus.UNLOCKED.getCode()); + this.sharingRepository.save(entity); + return entity.getId(); + } + + + @Override + public void updateSharing(UpdateSharingReq req) { + //Verify + Optional existed = this.sharingRepository.findById(req.getId()); + if(!existed.isPresent()){ + throw new BizException(CodeEnums.SHARING_NOT_FOUND); + } + TbShare sharing = existed.get(); + SessionUserInfo userInfo = HttpSessionUtils.getMember(request.getSession()); + Member member = this.memberRepository.findByAddress(userInfo.getAddress()).get(); + if(!Objects.equals(sharing.getMemberId(), member.getId())){ + throw new BizException(CodeEnums.SHARING_NOT_FOUND); + } + + if(sharing.getLockStatus() == SharingLockStatus.LOCKED.getCode()){ + throw new BizException(CodeEnums.SHARING_LOCKED); + } + //Update + sharing.setTheme(req.getTheme()); + sharing.setDate(req.getDate()); + sharing.setTime(req.getTime()); + sharing.setPresenter(req.getPresenter()); + sharing.setOrg(req.getOrg()); + sharing.setTwitter(req.getTwitter()); + sharing.setSharingDoc(req.getSharingDoc()); + sharing.setLabel(req.getLabel()); + + this.sharingRepository.save(sharing); + } + + @Override + public void deleteSharing(long shareId) { + //Verify + Optional existed = this.sharingRepository.findById(shareId); + if(!existed.isPresent()){ + throw new BizException(CodeEnums.SHARING_NOT_FOUND); + } + TbShare sharing = existed.get(); + SessionUserInfo userInfo = HttpSessionUtils.getMember(request.getSession()); + Member member = this.memberRepository.findByAddress(userInfo.getAddress()).get(); + if(!Objects.equals(sharing.getMemberId(), member.getId())){ + throw new BizException(CodeEnums.SHARING_NOT_FOUND); + } + + //Delete + this.sharingRepository.deleteById(shareId); + } + + + @Override + public AllSharingResp loadSharing(int pageNo, int pageSize) { + int offset = (pageNo - 1)*pageSize; + int totalCount = this.sharingRepository.loadAllCount(); + int totalPages = (totalCount + pageSize - 1) / pageSize; + List items = this.sharingRepository.findAllSharesPaged(offset, pageSize); + + AllSharingResp resp = new AllSharingResp(); + resp.setData(items.stream().map(i-> SharingVo.convert(i)).collect(Collectors.toList())); + resp.setPagination(new Pagination(totalCount, totalPages, pageNo, items.size(), pageNo < totalPages)); + + return resp; + } + + @Override + public SharingVo querySharing(long shareId) { + Optional sharingEntity = this.sharingRepository.findById(shareId); + if(!sharingEntity.isPresent()){ + throw new BizException(CodeEnums.SHARING_NOT_FOUND); + } + + return SharingVo.convert(sharingEntity.get()); + } + + @Override + public SharingByUserResp loadSharingByUser(long memberId, int pageNo, int pageSize) { + int offset = (pageNo - 1)*pageSize; + int totalCount = this.sharingRepository.loadCountByUid(memberId); + int totalPages =(totalCount + pageSize - 1) / pageSize; + List items = this.sharingRepository.findAllSharesByUidPaged(memberId, offset, pageSize); + + SharingByUserResp resp = new SharingByUserResp(); + resp.setData(items.stream().map(i-> SharingVo.convert(i)).collect(Collectors.toList())); + resp.setPagination(new Pagination(totalCount, totalPages, pageNo, items.size(), pageNo < totalPages)); + + return resp; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ac1d7c4a..4807edf9 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,8 +10,8 @@ spring: url: jdbc:mysql://127.0.0.1:3306/dl?allowPublicKeyRetrieval=true&useSSL=false #type: com.alibaba.druid.pool.DruidDataSource username: root - #password: 12345678 - password: {{SPRING_DATASOURCE_PASSWORD}} + password: 12345678 +# password: {{SPRING_DATASOURCE_PASSWORD}} maximum-pool-size: 20 jpa: diff --git a/src/test/java/com/dl/officialsite/sharing/dao/ISharingRepository.java b/src/test/java/com/dl/officialsite/sharing/dao/ISharingRepository.java deleted file mode 100644 index 4aac9d6b..00000000 --- a/src/test/java/com/dl/officialsite/sharing/dao/ISharingRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dl.officialsite.sharing.dao; - -import com.dl.officialsite.sharing.model.db.SharingEntity; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -import java.util.List; - -public interface ISharingRepository extends JpaRepository { - - @Query(value = "select member_id from team_member where team_id = :team_id", nativeQuery = true) - List findByTeamId(@Param("team_id")Long teamId); - - @Query(value = "select member_id from team_member where team_id = :team_id and status = :status", - nativeQuery = - true) - List findByTeamIdStatus(@Param("team_id")Long teamId, @Param("status")int status); -} diff --git a/src/test/java/com/dl/officialsite/sharing/model/pojo/SharingPojo.java b/src/test/java/com/dl/officialsite/sharing/model/pojo/SharingPojo.java deleted file mode 100644 index d4b14623..00000000 --- a/src/test/java/com/dl/officialsite/sharing/model/pojo/SharingPojo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dl.officialsite.sharing.model.pojo; - -public class SharingPojo { - - private Long id; - private String theme; - private String date; - private String time; - - private int Language; // 0 Chinese 1 English - private String presenter; - - private String Org; - - private String twitter; - - private String memberId; - - private String sharingDoc; - - //defi zk underlying - private String label; - - private Integer reward; - - -} diff --git a/src/test/java/com/dl/officialsite/sharing/model/req/UpdateSharingReq.java b/src/test/java/com/dl/officialsite/sharing/model/req/UpdateSharingReq.java deleted file mode 100644 index 87724744..00000000 --- a/src/test/java/com/dl/officialsite/sharing/model/req/UpdateSharingReq.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dl.officialsite.sharing.model.req; - -import lombok.Data; - -@Data -public class UpdateSharingReq { - - -} diff --git a/src/test/java/com/dl/officialsite/sharing/model/resp/AllSharingResp.java b/src/test/java/com/dl/officialsite/sharing/model/resp/AllSharingResp.java deleted file mode 100644 index 66fa56d0..00000000 --- a/src/test/java/com/dl/officialsite/sharing/model/resp/AllSharingResp.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.dl.officialsite.sharing.model.resp; - -import com.dl.officialsite.common.base.PagedList; -import com.dl.officialsite.common.base.Pagination; -import com.dl.officialsite.sharing.model.pojo.SharingPojo; -import lombok.Data; - -import java.util.List; - -@Data -public class AllSharingResp extends PagedList { - -} diff --git a/src/test/java/com/dl/officialsite/sharing/model/resp/SharingByUserResp.java b/src/test/java/com/dl/officialsite/sharing/model/resp/SharingByUserResp.java deleted file mode 100644 index 1f52fe41..00000000 --- a/src/test/java/com/dl/officialsite/sharing/model/resp/SharingByUserResp.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dl.officialsite.sharing.model.resp; - -import com.dl.officialsite.common.base.PagedList; -import com.dl.officialsite.sharing.model.pojo.SharingPojo; -import lombok.Data; - -@Data -public class SharingByUserResp extends PagedList { -} diff --git a/src/test/java/com/dl/officialsite/sharing/service/impl/DefaultSharingServiceImpl.java b/src/test/java/com/dl/officialsite/sharing/service/impl/DefaultSharingServiceImpl.java deleted file mode 100644 index d4649060..00000000 --- a/src/test/java/com/dl/officialsite/sharing/service/impl/DefaultSharingServiceImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.dl.officialsite.sharing.service.impl; - -import com.dl.officialsite.common.utils.HttpSessionUtils; -import com.dl.officialsite.member.Member; -import com.dl.officialsite.sharing.dao.ISharingRepository; -import com.dl.officialsite.sharing.model.db.SharingEntity; -import com.dl.officialsite.sharing.model.pojo.SharingPojo; -import com.dl.officialsite.sharing.model.req.CreateSharingReq; -import com.dl.officialsite.sharing.model.req.UpdateSharingReq; -import com.dl.officialsite.sharing.model.resp.AllSharingResp; -import com.dl.officialsite.sharing.model.resp.ClaimSharingRewardResp; -import com.dl.officialsite.sharing.model.resp.PreCheckSharingRewardResp; -import com.dl.officialsite.sharing.model.resp.SharingByUserResp; -import com.dl.officialsite.sharing.service.IUserSharingService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -@Slf4j -public class DefaultSharingServiceImpl implements IUserSharingService { - - @Autowired - private ISharingRepository repository; - -// @Override -// public long createSharing(CreateSharingReq req) { -// Member member = HttpSessionUtils.getMember(); -// log.info("createSharing start, uid"); -// SharingEntity entity = new SharingEntity(); -// entity.setTheme(req.getTheme()); -// entity.setDate(req.getDate()); -// entity.setTime(req.getTime()); -// entity.setPresenter(req.getPresenter()); -// entity.setOrg(req.getOrg()); -// entity.setTwitter(req.getTwitter()); -// entity.setMemberId(req.getMe); -// -//// /** -//// * 分享所属组织 -//// */ -//// private String Org; -//// -//// /** -//// * 分享人twitter -//// */ -//// private String twitter; -//// -//// /** -//// * 分享人 -//// */ -//// private String memberId; -//// -//// /** -//// * 文档连接 -//// */ -//// private String sharingDoc; -//// -//// /** -//// * 标签类别 -//// */ -//// //defi zk underlying -//// private String label; -//// -//// /** -//// * 奖励金额 -//// */ -//// private Integer reward; -// -// repository.save() -// -// } - - @Override - public long createSharing(CreateSharingReq req) { - return 0; - } - - @Override - public void updateSharing(UpdateSharingReq req) { - - } - - @Override - public void deleteSharing(long shareId) { - - } - - - @Override - public AllSharingResp loadSharing(int pageNo, int pageSize) { - return null; - } - - @Override - public SharingPojo querySharing(long shareId) { - return null; - } - - @Override - public SharingByUserResp loadSharingByUser(long uid) { - return null; - } -} From e36c7447ac1763ca80c9c2752137870b88cb8ad0 Mon Sep 17 00:00:00 2001 From: aaron Date: Sat, 9 Dec 2023 17:05:49 +0800 Subject: [PATCH 2/2] feat(share) --- src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4807edf9..9c6a60ed 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,8 +10,8 @@ spring: url: jdbc:mysql://127.0.0.1:3306/dl?allowPublicKeyRetrieval=true&useSSL=false #type: com.alibaba.druid.pool.DruidDataSource username: root - password: 12345678 -# password: {{SPRING_DATASOURCE_PASSWORD}} +# password: 12345678 + password: {{SPRING_DATASOURCE_PASSWORD}} maximum-pool-size: 20 jpa: