From 8a89c532584ea7befcc431e5151158f1d3f6d897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=AF=28004796=29?= Date: Mon, 25 Mar 2024 19:13:06 +0800 Subject: [PATCH] init --- .../ruoyi/common/exception/IErrorService.java | 7 ++ .../common/exception/ServiceException.java | 5 ++ .../controller/app/DynamicAppController.java | 39 +++++++-- .../xq/controller/app/HomeAppController.java | 1 + .../controller/app/InviteAppController.java | 13 +++ .../xq/controller/app/UserAppController.java | 18 +++++ .../java/com/ruoyi/xq/domain/DynamicStar.java | 42 ++++++++++ .../xq/dto/app/dynamic/DynamicListVo.java | 3 + .../xq/dto/app/dynamic/DynamicQuery.java | 28 ++++++- .../xq/dto/app/dynamic/DynamicStarReq.java | 12 +++ .../dto/app/dynamic/MyStarDynamicListVO.java | 26 ++++++ .../dto/app/dynamic/MyStarDynamicQuery.java | 11 +++ .../ruoyi/xq/dto/app/user/HomePageReq.java | 8 ++ .../xq/dto/app/user/vo/AccountInfoVO.java | 19 +++++ .../xq/dto/app/user/vo/CurrentUserInfoVo.java | 20 +++++ .../ruoyi/xq/dto/app/user/vo/HomeUserVo.java | 8 ++ .../java/com/ruoyi/xq/enums/ErrorEnum.java | 17 ++++ .../ruoyi/xq/manager/CurrentUserManager.java | 13 +++ .../ruoyi/xq/mapper/DynamicStarMapper.java | 20 +++++ .../ruoyi/xq/service/DynamicStarService.java | 25 ++++++ .../service/impl/DynamicStarServiceImpl.java | 81 +++++++++++++++++++ .../xq/service/impl/UserServiceImpl.java | 10 ++- .../resources/mapper/xq/DynamicMapper.xml | 27 ++++++- .../resources/mapper/xq/DynamicStarMapper.xml | 28 +++++++ .../main/resources/mapper/xq/UserMapper.xml | 2 +- 25 files changed, 468 insertions(+), 15 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/IErrorService.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/InviteAppController.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/domain/DynamicStar.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicStarReq.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyStarDynamicListVO.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyStarDynamicQuery.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/AccountInfoVO.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/enums/ErrorEnum.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/DynamicStarMapper.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicStarService.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicStarServiceImpl.java create mode 100644 ruoyi-xq/src/main/resources/mapper/xq/DynamicStarMapper.xml diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/IErrorService.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/IErrorService.java new file mode 100644 index 0000000..70eae76 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/IErrorService.java @@ -0,0 +1,7 @@ +package com.ruoyi.common.exception; + + +public interface IErrorService { + Integer getCode(); + String getText(); +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java index af2d982..e447500 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java @@ -40,6 +40,11 @@ public final class ServiceException extends RuntimeException { this.code = code; } + public ServiceException(IErrorService errorService) { + this.message = errorService.getText(); + this.code = errorService.getCode(); + } + public String getDetailMessage() { return detailMessage; } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/DynamicAppController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/DynamicAppController.java index ca06f68..35e8d33 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/DynamicAppController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/DynamicAppController.java @@ -7,25 +7,22 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.helper.LoginHelper; -import com.ruoyi.xq.domain.Dynamic; -import com.ruoyi.xq.dto.app.dynamic.AddDynamicReq; -import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; -import com.ruoyi.xq.dto.app.dynamic.DynamicQuery; +import com.ruoyi.xq.dto.app.dynamic.*; import com.ruoyi.xq.service.DynamicService; +import com.ruoyi.xq.service.DynamicStarService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.servlet.Registration; -import java.util.List; - @RestController @RequestMapping("/api/dynamic") @Tag(name = "动态相关接口") public class DynamicAppController { @Autowired private DynamicService dynamicService; + @Autowired + private DynamicStarService dynamicStarService; @PostMapping("/add") @Operation(summary = "新增动态") @@ -36,11 +33,39 @@ public class DynamicAppController { return R.ok(); } + @PostMapping("/star") + @Operation(summary = "点赞动态") + @Log(title = "点赞动态", businessType = BusinessType.OTHER, isSaveDb = false) + public R starDynamic(@RequestBody DynamicStarReq req){ + Long userId = LoginHelper.getUserId(); + if(req.getStar() == null){ + return R.fail(); + } + if(req.getStar() == 1){ + dynamicStarService.star(req.getDynamicId(),userId); + return R.ok(); + } + if(req.getStar() == 2){ + dynamicStarService.unStar(req.getDynamicId(),userId); + return R.ok(); + } + return R.fail(); + } + @GetMapping("/page") @Operation(summary = "动态列表-分页") @Log(title = "动态列表-分页", businessType = BusinessType.OTHER, isSaveDb = false) public R> page(PageQuery pageQuery, DynamicQuery dynamicQuery){ + dynamicQuery.initBirthdayByAge(); Page page = dynamicService.pageApp(pageQuery, dynamicQuery); return R.ok(PageModel.build(page)); } + + @GetMapping("/myStarDynamic") + @Operation(summary = "我收到的动态点赞-分页") + @Log(title = "我收到的动态点赞-分页", businessType = BusinessType.OTHER, isSaveDb = false) + public R> myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery){ + Page page = dynamicStarService.myStarDynamic(pageQuery, dynamicQuery); + return R.ok(PageModel.build(page)); + } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/HomeAppController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/HomeAppController.java index 81c1977..6bdea8e 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/HomeAppController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/HomeAppController.java @@ -36,6 +36,7 @@ public class HomeAppController { @Operation(summary = "首页查询用户-分页") @Log(title = "首页查询用户-分页", businessType = BusinessType.OTHER, isSaveDb = false) public R> userPage(@RequestBody HomePageReq homePageReq){ + homePageReq.initBirthdayByAge(); Page vo = userService.homePage(homePageReq); return R.ok(PageModel.build(vo)); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/InviteAppController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/InviteAppController.java new file mode 100644 index 0000000..2a27960 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/InviteAppController.java @@ -0,0 +1,13 @@ +package com.ruoyi.xq.controller.app; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/invite") +@Tag(name = "邀请推广接口") +public class InviteAppController { + + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/UserAppController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/UserAppController.java index 8d78895..80804a3 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/UserAppController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/UserAppController.java @@ -3,12 +3,16 @@ package com.ruoyi.xq.controller.app; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.xq.domain.UserExtend; import com.ruoyi.xq.dto.app.common.IdsReq; import com.ruoyi.xq.dto.app.user.*; +import com.ruoyi.xq.dto.app.user.vo.AccountInfoVO; import com.ruoyi.xq.dto.app.user.vo.CurrentUserFullInfoVo; import com.ruoyi.xq.dto.app.user.vo.CurrentUserInfoVo; import com.ruoyi.xq.dto.app.user.vo.UserAuthInfoVo; import com.ruoyi.xq.manager.CurrentUserManager; +import com.ruoyi.xq.service.UserExtendService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; @@ -24,6 +28,8 @@ import java.util.stream.Collectors; public class UserAppController { @Autowired private CurrentUserManager currentUserManager; + @Autowired + private UserExtendService userExtendService; @GetMapping("/user/query/homeInfo") @Operation(summary = "当前用户信息") @@ -33,6 +39,18 @@ public class UserAppController { return R.ok(vo); } + @GetMapping("/user/account/info") + @Operation(summary = "当前用户信息的账户余额情况") + @Log(title = "当前用户信息的账户余额情况", businessType = BusinessType.OTHER, isSaveDb = false) + public R accountInfo(){ + UserExtend userExtend = userExtendService.getByUserId(LoginHelper.getUserId()); + AccountInfoVO accountInfoVO = new AccountInfoVO(); + accountInfoVO.setUserId(userExtend.getUserId()); + accountInfoVO.setIncomeCoin(userExtend.getIncomeCoin()); + accountInfoVO.setWxTransNum(userExtend.getWxTransNum()); + return R.ok(accountInfoVO); + } + @GetMapping("/user/query/fullInfo") @Operation(summary = "当前用户的详细信息") @Log(title = "当前用户的详细信息", businessType = BusinessType.OTHER, isSaveDb = false) diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/DynamicStar.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/DynamicStar.java new file mode 100644 index 0000000..d1be6ea --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/DynamicStar.java @@ -0,0 +1,42 @@ +package com.ruoyi.xq.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 动态点赞对象 xq_dynamic_star + * + * @author 77 + * @date 2024-03-25 + */ +@Data +@TableName("xq_dynamic_star") +public class DynamicStar implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 点赞用户ID + */ + private Long starUserId; + /** + * 点赞用户号 + */ + private String starUsercode; + /** + * 动态ID + */ + private Long dynamicId; + private LocalDateTime createTime; + private LocalDateTime updateTime; + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicListVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicListVo.java index 265ba02..8053dd0 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicListVo.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicListVo.java @@ -46,6 +46,9 @@ public class DynamicListVo { @Schema(description = "内容") private String content; + @Schema(description = "点赞数") + private Long starNum; + @Schema(description = "图片列表") private List imageList; diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicQuery.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicQuery.java index 514f0f9..39b8c6a 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicQuery.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicQuery.java @@ -3,14 +3,38 @@ package com.ruoyi.xq.dto.app.dynamic; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.time.LocalDate; + @Data public class DynamicQuery { + @Schema(hidden = true) + private LocalDate birthdayBegin; + @Schema(hidden = true) + private LocalDate birthdayEnd; + @Schema(description = "性别 1-女 2-男") private Integer gender; - @Schema(description = "居住城市") - private String residenceCity; + @Schema(description = "年龄-开始") + private Integer ageBegin; + @Schema(description = "年龄-结束") + private Integer ageEnd; + + @Schema(description = "居住地") + private String residenceCode; + + @Schema(description = "1-最新发布 2-热门动态") + private Integer sortBy = 1; + + public void initBirthdayByAge(){ + if(this.ageBegin != null && this.ageBegin > 0){ + this.birthdayEnd = LocalDate.now().plusYears(-ageBegin); + } + if(this.ageEnd != null && this.ageEnd > 0){ + this.birthdayBegin= LocalDate.now().plusYears(-ageEnd); + } + } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicStarReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicStarReq.java new file mode 100644 index 0000000..fc79803 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/DynamicStarReq.java @@ -0,0 +1,12 @@ +package com.ruoyi.xq.dto.app.dynamic; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class DynamicStarReq { + @Schema(description = "动态ID") + private Long dynamicId; + @Schema(description = "1-点赞 2-取消点赞") + private Integer star; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyStarDynamicListVO.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyStarDynamicListVO.java new file mode 100644 index 0000000..45e7b7f --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyStarDynamicListVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.xq.dto.app.dynamic; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class MyStarDynamicListVO { + @Schema(description = "点赞用户ID") + private Long starUserId; + @Schema(description = "点赞用户编号") + private String starUsercode; + @Schema(description = "点赞用户昵称") + private String starNickname; + @Schema(description = "点赞用户头像") + private String starAvatar; + @Schema(description = "点赞动态ID") + private Long dynamicId; + @Schema(description = "图片列表") + private List imageList; + @Schema(description = "点赞时间") + private LocalDateTime createTime; + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyStarDynamicQuery.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyStarDynamicQuery.java new file mode 100644 index 0000000..f501ba8 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/dynamic/MyStarDynamicQuery.java @@ -0,0 +1,11 @@ +package com.ruoyi.xq.dto.app.dynamic; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.scheduling.annotation.Scheduled; + +@Data +public class MyStarDynamicQuery { + @Schema(description = "用户ID") + private Long userId; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/HomePageReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/HomePageReq.java index fae8474..d5dfc5f 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/HomePageReq.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/HomePageReq.java @@ -55,6 +55,14 @@ public class HomePageReq extends PageQuery { private Integer carStatus; @Schema(description = "户籍地") private String addressCode; + } + public void initBirthdayByAge(){ + if(this.ageBegin != null && this.ageBegin > 0){ + this.birthdayEnd = LocalDate.now().plusYears(-ageBegin); + } + if(this.ageEnd != null && this.ageEnd > 0){ + this.birthdayBegin= LocalDate.now().plusYears(-ageEnd); + } } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/AccountInfoVO.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/AccountInfoVO.java new file mode 100644 index 0000000..9d553b4 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/AccountInfoVO.java @@ -0,0 +1,19 @@ +package com.ruoyi.xq.dto.app.user.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class AccountInfoVO { + @Schema(description = "用户ID") + private Long userId; + @Schema(description = "收益的余额") + private BigDecimal incomeCoin; + /** + * 交换微信次数 + */ + @Schema(description = "交换微信次数") + private Integer wxTransNum; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserInfoVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserInfoVo.java index ecef121..082d80f 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserInfoVo.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/CurrentUserInfoVo.java @@ -4,7 +4,9 @@ import com.ruoyi.xq.dto.app.common.UserPicturesDTO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.math.BigDecimal; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; @Data @@ -71,6 +73,24 @@ public class CurrentUserInfoVo { @Schema(description = "最大认证数量") private Integer maxAuthNum = 8; + + @Schema(description = "是否开通VIP") + private Boolean openVip = false; + @Schema(description = "vip等级") + private Integer vipType; + @Schema(description = "vip到期时间") + private LocalDateTime vipTimeout; + + /** + * 收益的余额 + */ + @Schema(description = "收益的余额") + private BigDecimal incomeCoin; + /** + * 交换微信次数 + */ + @Schema(description = "交换微信次数") + private Integer wxTransNum; /** * 相册 */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/HomeUserVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/HomeUserVo.java index f57f709..29018cb 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/HomeUserVo.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/user/vo/HomeUserVo.java @@ -225,4 +225,12 @@ public class HomeUserVo { @Schema(description = "择偶条件-购车情况") private Integer filterCarStatus; + @Schema(description = "是否开通VIP") + private Boolean openVip = false; + /** + * @see com.ruoyi.xq.enums.vip.VipTypeEnum + */ + @Schema(description = "开通的VIP类型") + private Integer vipType; + } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/ErrorEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/ErrorEnum.java new file mode 100644 index 0000000..1e887cb --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/ErrorEnum.java @@ -0,0 +1,17 @@ +package com.ruoyi.xq.enums; + +import com.ruoyi.common.exception.IErrorService; +import lombok.Getter; + +@Getter +public enum ErrorEnum implements IErrorService { + VIP_AUTH(600100,"权限不足,需要开通VIP") + ; + private final Integer code; + private final String text; + + ErrorEnum(Integer code, String text) { + this.code = code; + this.text = text; + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java index aa03e17..9c4fbe0 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java @@ -51,6 +51,10 @@ public class CurrentUserManager { private SystemConfigManager systemConfigManager; @Autowired private AreaCodeService areaCodeService; + @Autowired + private UserVipService userVipService; + @Autowired + private UserExtendService userExtendService; public CurrentUserFullInfoVo currentFullInfo(){ @@ -108,6 +112,15 @@ public class CurrentUserManager { vo.setImToken(user.getImToken()); List userPictures = userPicturesService.listByUserIdAuditingAndSuccess(user.getId()); vo.setUserPicturesList(BeanConvertUtil.convertListTo(userPictures, UserPicturesDTO::new)); + UserVip userVip = userVipService.getByUserVipMaster(userId); + if(userVip != null){ + vo.setOpenVip(true); + vo.setVipType(userVip.getVipType()); + vo.setVipTimeout(userVip.getVipTimeout()); + } + UserExtend userExtend = userExtendService.getByUserId(userId); + vo.setIncomeCoin(userExtend.getIncomeCoin()); + vo.setWxTransNum(userExtend.getWxTransNum()); return vo; } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/DynamicStarMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/DynamicStarMapper.java new file mode 100644 index 0000000..bd7c73b --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/DynamicStarMapper.java @@ -0,0 +1,20 @@ +package com.ruoyi.xq.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.xq.domain.DynamicStar; +import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; +import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicListVO; +import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery; +import org.apache.ibatis.annotations.Param; + +/** + * 动态点赞Mapper接口 + * + * @author 77 + * @date 2024-03-25 + */ +public interface DynamicStarMapper extends BaseMapper { + + Page myStarDynamic(@Param("build") Page build, @Param("query") MyStarDynamicQuery query); +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicStarService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicStarService.java new file mode 100644 index 0000000..97afbb4 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/DynamicStarService.java @@ -0,0 +1,25 @@ +package com.ruoyi.xq.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.xq.domain.DynamicStar; +import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; +import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicListVO; +import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery; + +/** + * 动态点赞Service接口 + * + * @author 77 + * @date 2024-03-25 + */ +public interface DynamicStarService extends IService { + + void star(Long dynamicId,Long starUserId); + + void unStar(Long dynamicId, Long starUserId); + + Page myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery); + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicStarServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicStarServiceImpl.java new file mode 100644 index 0000000..3e79309 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/DynamicStarServiceImpl.java @@ -0,0 +1,81 @@ +package com.ruoyi.xq.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.xq.domain.DynamicImage; +import com.ruoyi.xq.domain.DynamicStar; +import com.ruoyi.xq.dto.app.dynamic.DynamicListVo; +import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicListVO; +import com.ruoyi.xq.dto.app.dynamic.MyStarDynamicQuery; +import com.ruoyi.xq.dto.common.user.MinUser; +import com.ruoyi.xq.mapper.DynamicStarMapper; +import com.ruoyi.xq.service.DynamicImageService; +import com.ruoyi.xq.service.DynamicStarService; +import com.ruoyi.xq.service.UserService; +import com.ruoyi.xq.util.AgeUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 动态点赞Service业务层处理 + * + * @author 77 + * @date 2024-03-25 + */ +@Service +public class DynamicStarServiceImpl extends ServiceImpl implements DynamicStarService { + @Autowired + private UserService userService; + @Autowired + private DynamicImageService dynamicImageService; + @Override + @Transactional(rollbackFor = Exception.class) + public void star(Long dynamicId, Long starUserId) { + MinUser user = userService.getMinUserById(starUserId); + if(user == null){ + return; + } + this.remove(Wrappers.lambdaQuery(DynamicStar.class).eq(DynamicStar::getDynamicId, dynamicId) + .eq(DynamicStar::getStarUserId, starUserId)); + DynamicStar dynamicStar = new DynamicStar(); + dynamicStar.setStarUserId(user.getId()); + dynamicStar.setStarUsercode(user.getUsercode()); + dynamicStar.setDynamicId(dynamicId); + this.save(dynamicStar); + } + + @Override + public void unStar(Long dynamicId, Long starUserId) { + this.remove(Wrappers.lambdaQuery(DynamicStar.class).eq(DynamicStar::getDynamicId, dynamicId) + .eq(DynamicStar::getStarUserId, starUserId)); + } + + @Override + public Page myStarDynamic(PageQuery pageQuery, MyStarDynamicQuery dynamicQuery) { + Page result = baseMapper.myStarDynamic(pageQuery.build(), dynamicQuery); + List records = result.getRecords(); + if(CollectionUtils.isEmpty(records)){ + return result; + } + List dynamicIds = records.stream().map(MyStarDynamicListVO::getDynamicId).collect(Collectors.toList()); + List list = dynamicImageService.list(Wrappers.lambdaQuery(DynamicImage.class).in(DynamicImage::getDynamicId, dynamicIds)); + Map> map = list.stream().collect(Collectors.groupingBy(DynamicImage::getDynamicId)); + for (MyStarDynamicListVO record : records) { + List images = map.get(record.getDynamicId()); + if(images == null){ + images = new ArrayList<>(); + } + record.setImageList(images.stream().map(DynamicImage::getUrl).collect(Collectors.toList())); + } + return result; + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java index 1d25615..6468977 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java @@ -21,6 +21,7 @@ import com.ruoyi.xq.dto.app.user.HomePageReq; import com.ruoyi.xq.dto.app.user.vo.HomeUserListVo; import com.ruoyi.xq.dto.app.user.vo.HomeUserVo; import com.ruoyi.xq.dto.common.user.MinUser; +import com.ruoyi.xq.enums.ErrorEnum; import com.ruoyi.xq.enums.common.SystemConfigEnum; import com.ruoyi.xq.enums.userinfo.UserGenderEnum; import com.ruoyi.xq.manager.SystemConfigManager; @@ -101,6 +102,11 @@ public class UserServiceImpl extends ServiceImpl implements Use BeanConvertUtil.copyProperties(user,result); List userPicturesList = userPicturesService.listByUserIdSuccess(userId); result.setUserPictureList(userPicturesList.stream().map(UserPictures::getPicture).collect(Collectors.toList())); + UserVip userVip = userVipService.getByUserVipMaster(user.getId()); + if(userVip != null){ + result.setOpenVip(true); + result.setVipType(userVip.getVipType()); + } return result; } @@ -187,11 +193,11 @@ public class UserServiceImpl extends ServiceImpl implements Use vipQuery.getCarStatus() != null || StringUtils.isNotEmpty(vipQuery.getAddressCode())){ Long userId = LoginHelper.getUserId(); if(userId == null){ - throw new ServiceException("开通VIP才能开通查询",600100); + throw new ServiceException(ErrorEnum.VIP_AUTH); } UserVip userVip = userVipService.getByUserVipMaster(userId); if(userVip == null){ - throw new ServiceException("开通VIP才能开通查询",600100); + throw new ServiceException(ErrorEnum.VIP_AUTH); } } } diff --git a/ruoyi-xq/src/main/resources/mapper/xq/DynamicMapper.xml b/ruoyi-xq/src/main/resources/mapper/xq/DynamicMapper.xml index f127371..01d9bec 100644 --- a/ruoyi-xq/src/main/resources/mapper/xq/DynamicMapper.xml +++ b/ruoyi-xq/src/main/resources/mapper/xq/DynamicMapper.xml @@ -22,17 +22,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + select + t3.id as star_user_id, t3.usercode as star_usercode, + t3.nickname as star_nickname, t3.avatar as star_avatar, + t1.dynamic_id, t1.create_time + from xq_dynamic_star t1 + join xq_dynamic t2 on t1.dynamic_id = t2.id + join xq_user t3 on t1.star_user_id = t3.id + where t2.audit_status = 2 and t2.user_id = #{query.userId} + order by t1.create_time desc + + + + diff --git a/ruoyi-xq/src/main/resources/mapper/xq/UserMapper.xml b/ruoyi-xq/src/main/resources/mapper/xq/UserMapper.xml index a33bc30..861909d 100644 --- a/ruoyi-xq/src/main/resources/mapper/xq/UserMapper.xml +++ b/ruoyi-xq/src/main/resources/mapper/xq/UserMapper.xml @@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and t1.education = #{params.education} - and t1.education like concat(#{params.residenceCode},'%') + and t1.residence_code like concat(#{params.residenceCode},'%')