123
This commit is contained in:
@@ -29,7 +29,6 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.management.ObjectName;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@@ -58,10 +57,8 @@ public class IndexController {
|
|||||||
@Log(title = "获取APP系统核心参数", businessType = BusinessType.OTHER, isSaveDb = false)
|
@Log(title = "获取APP系统核心参数", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
public R<AppHomeConfig> config(){
|
public R<AppHomeConfig> config(){
|
||||||
AppHomeConfig config = new AppHomeConfig();
|
AppHomeConfig appHomeConfig = homeManager.config();
|
||||||
config.setOssDomain(systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN));
|
return R.ok(appHomeConfig);
|
||||||
config.setOpenWithdraw(systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_WITHDRAW));
|
|
||||||
return R.ok(config);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.ruoyi.web.controller.cai.app;
|
package com.ruoyi.web.controller.cai.app;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.ruoyi.cai.domain.UserAlbum;
|
import com.ruoyi.cai.domain.UserAlbum;
|
||||||
import com.ruoyi.cai.dto.app.query.album.AlbumAddReq;
|
import com.ruoyi.cai.dto.app.query.album.AlbumAddReq;
|
||||||
import com.ruoyi.cai.dto.app.query.IdRes;
|
import com.ruoyi.cai.dto.app.query.IdRes;
|
||||||
@@ -8,15 +9,18 @@ import com.ruoyi.cai.dto.app.query.user.UserUpdateReq;
|
|||||||
import com.ruoyi.cai.dto.app.query.member.UpdateNoGreet;
|
import com.ruoyi.cai.dto.app.query.member.UpdateNoGreet;
|
||||||
import com.ruoyi.cai.dto.app.query.member.UpdateRankHideReq;
|
import com.ruoyi.cai.dto.app.query.member.UpdateRankHideReq;
|
||||||
import com.ruoyi.cai.dto.app.vo.CurrentUserInfoVo;
|
import com.ruoyi.cai.dto.app.vo.CurrentUserInfoVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserCallAppVo;
|
||||||
import com.ruoyi.cai.dto.app.vo.user.CurrentUserUpdateInfoVo;
|
import com.ruoyi.cai.dto.app.vo.user.CurrentUserUpdateInfoVo;
|
||||||
import com.ruoyi.cai.dto.app.vo.user.MemberInfoVo;
|
import com.ruoyi.cai.dto.app.vo.user.MemberInfoVo;
|
||||||
import com.ruoyi.cai.dto.app.vo.user.UserAlbumAuditVo;
|
import com.ruoyi.cai.dto.app.vo.user.UserAlbumAuditVo;
|
||||||
import com.ruoyi.cai.dto.app.vo.user.UserAvatarMinVo;
|
import com.ruoyi.cai.dto.app.vo.user.UserAvatarMinVo;
|
||||||
import com.ruoyi.cai.manager.CurrentUserManager;
|
import com.ruoyi.cai.manager.CurrentUserManager;
|
||||||
import com.ruoyi.cai.service.UserAlbumService;
|
import com.ruoyi.cai.service.UserAlbumService;
|
||||||
|
import com.ruoyi.cai.service.UserCallService;
|
||||||
import com.ruoyi.cai.service.UserMemberService;
|
import com.ruoyi.cai.service.UserMemberService;
|
||||||
import com.ruoyi.cai.service.UserOnlineService;
|
import com.ruoyi.cai.service.UserOnlineService;
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.helper.LoginHelper;
|
import com.ruoyi.common.helper.LoginHelper;
|
||||||
@@ -28,6 +32,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/user")
|
@RequestMapping("/api/user")
|
||||||
@Tag(name = "用户相关接口")
|
@Tag(name = "用户相关接口")
|
||||||
@@ -144,6 +150,17 @@ public class UserAppController {
|
|||||||
return R.ok(vo);
|
return R.ok(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserCallService userCallService;
|
||||||
|
|
||||||
|
@GetMapping("/callLog/page")
|
||||||
|
@Operation(summary = "通话记录查询-分页")
|
||||||
|
@Log(title = "通话记录查询", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||||
|
public R<List<UserCallAppVo>> callLog(PageQuery pageQuery,
|
||||||
|
@Parameter(description = "当前用户在通话中的类型 0=全部 1=主叫方 2=接收方") Integer type){
|
||||||
|
IPage<UserCallAppVo> page = userCallService.pageApp(pageQuery, type, LoginHelper.getUserId());
|
||||||
|
return R.ok(page.getRecords());
|
||||||
|
}
|
||||||
/*@PostMapping("/album/reset")
|
/*@PostMapping("/album/reset")
|
||||||
@Operation(summary = "重排序相册",hidden = true)
|
@Operation(summary = "重排序相册",hidden = true)
|
||||||
@Log(title = "重排序相册", businessType = BusinessType.OTHER, isSaveDb = false)
|
@Log(title = "重排序相册", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.ruoyi.test.business;
|
|||||||
|
|
||||||
import com.ruoyi.cai.domain.Gift;
|
import com.ruoyi.cai.domain.Gift;
|
||||||
import com.ruoyi.cai.domain.User;
|
import com.ruoyi.cai.domain.User;
|
||||||
import com.ruoyi.cai.mq.handle.dto.WindowRechargeDTO;
|
import com.ruoyi.cai.mq.handle.dto.WindowRechargeNotifyDTO;
|
||||||
import com.ruoyi.cai.notice.YunxinHttpService;
|
import com.ruoyi.cai.notice.YunxinHttpService;
|
||||||
import com.ruoyi.cai.notice.data.child.SendGiftWindowsAmountNoticeData;
|
import com.ruoyi.cai.notice.data.child.SendGiftWindowsAmountNoticeData;
|
||||||
import com.ruoyi.cai.service.GiftService;
|
import com.ruoyi.cai.service.GiftService;
|
||||||
@@ -169,7 +169,7 @@ public class NoticeTest {
|
|||||||
@Test
|
@Test
|
||||||
public void sendRechargeWindowsAmount(){
|
public void sendRechargeWindowsAmount(){
|
||||||
User followUser = userService.getById(10166L);
|
User followUser = userService.getById(10166L);
|
||||||
WindowRechargeDTO dto = new WindowRechargeDTO();
|
WindowRechargeNotifyDTO dto = new WindowRechargeNotifyDTO();
|
||||||
dto.setId(10166L);
|
dto.setId(10166L);
|
||||||
dto.setNickname(followUser.getNickname());
|
dto.setNickname(followUser.getNickname());
|
||||||
dto.setAvatar(followUser.getAvatar());
|
dto.setAvatar(followUser.getAvatar());
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package com.ruoyi.cai.dto.app.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserCallAppVo {
|
||||||
|
|
||||||
|
@Schema(description = "通话ID")
|
||||||
|
private Long id;
|
||||||
|
@Schema(description = "通话类型,标识当前用户是哪一方 1=主叫方 2=接收方")
|
||||||
|
private Integer type;
|
||||||
|
@Schema(description = "通话对方的用户类型(好像没撒用,这里返回的0=普通用户 1=内部用户)")
|
||||||
|
private Integer otherType;
|
||||||
|
@Schema(description = "通话状态 1=取消 2=拒绝 3=超时 4=已接通")
|
||||||
|
private Integer status;
|
||||||
|
@Schema(description = "通话状态文字")
|
||||||
|
private String statusText;
|
||||||
|
@Schema(description = "通话对方的用户ID")
|
||||||
|
private Long userId;
|
||||||
|
@Schema(description = "通话对方的用户蜜瓜号")
|
||||||
|
private String usercode;
|
||||||
|
@Schema(description = "通话对方的用户昵称")
|
||||||
|
private String nickname;
|
||||||
|
@Schema(description = "通话对方的用户头像")
|
||||||
|
private String avatar;
|
||||||
|
@Schema(description = "通话对方的用户性别")
|
||||||
|
private Integer gender;
|
||||||
|
@Schema(description = "通话对方的用户年龄")
|
||||||
|
private Long age;
|
||||||
|
@Schema(description = "通话对方的所在城市")
|
||||||
|
private String city;
|
||||||
|
@Schema(description = "通话对方的所属城市ID")
|
||||||
|
private Integer cityId;
|
||||||
|
@Schema(description = "开始通话时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
}
|
||||||
@@ -9,4 +9,8 @@ public class AppHomeConfig {
|
|||||||
private String ossDomain;
|
private String ossDomain;
|
||||||
@Schema(description = "是否开启提现")
|
@Schema(description = "是否开启提现")
|
||||||
private boolean openWithdraw = true;
|
private boolean openWithdraw = true;
|
||||||
|
@Schema(description = "系统通知IM ID")
|
||||||
|
private String sysId = "2";
|
||||||
|
@Schema(description = "客服IM ID")
|
||||||
|
private String servId = "4";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import com.ruoyi.cai.dto.commom.consumer.RechargeConsumerResp;
|
|||||||
import com.ruoyi.cai.dto.video.VideoSettleResp;
|
import com.ruoyi.cai.dto.video.VideoSettleResp;
|
||||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||||
import com.ruoyi.cai.mq.AmqpProducer;
|
import com.ruoyi.cai.mq.AmqpProducer;
|
||||||
import com.ruoyi.cai.mq.handle.dto.WindowGiftDTO;
|
import com.ruoyi.cai.mq.handle.dto.WindowGiftNotifyDTO;
|
||||||
import com.ruoyi.cai.mq.handle.dto.WindowRechargeDTO;
|
import com.ruoyi.cai.mq.handle.dto.WindowRechargeNotifyDTO;
|
||||||
import com.ruoyi.cai.notice.YunxinHttpService;
|
import com.ruoyi.cai.notice.YunxinHttpService;
|
||||||
import com.ruoyi.cai.pay.PayTypeEnum;
|
import com.ruoyi.cai.pay.PayTypeEnum;
|
||||||
import com.ruoyi.cai.rank.RankManager;
|
import com.ruoyi.cai.rank.RankManager;
|
||||||
@@ -97,7 +97,7 @@ public class ConsumerManager {
|
|||||||
User fromUser = userService.getById(resp.getFromUid());
|
User fromUser = userService.getById(resp.getFromUid());
|
||||||
Integer rankHide = fromUser.getRankHide();
|
Integer rankHide = fromUser.getRankHide();
|
||||||
if(rankHide == 0){
|
if(rankHide == 0){
|
||||||
WindowGiftDTO windowGift = new WindowGiftDTO();
|
WindowGiftNotifyDTO windowGift = new WindowGiftNotifyDTO();
|
||||||
windowGift.setFromId(resp.getFromUid());
|
windowGift.setFromId(resp.getFromUid());
|
||||||
windowGift.setToId(resp.getToUid());
|
windowGift.setToId(resp.getToUid());
|
||||||
windowGift.setGift(resp.getGift());
|
windowGift.setGift(resp.getGift());
|
||||||
@@ -146,7 +146,7 @@ public class ConsumerManager {
|
|||||||
if(resp.getRechargeCoin() > minPrice){
|
if(resp.getRechargeCoin() > minPrice){
|
||||||
Integer rankHide = resp.getUser().getRankHide();
|
Integer rankHide = resp.getUser().getRankHide();
|
||||||
if(rankHide == 0){
|
if(rankHide == 0){
|
||||||
WindowRechargeDTO windowRecharge = new WindowRechargeDTO();
|
WindowRechargeNotifyDTO windowRecharge = new WindowRechargeNotifyDTO();
|
||||||
windowRecharge.setId(resp.getUserId());
|
windowRecharge.setId(resp.getUserId());
|
||||||
windowRecharge.setNickname(resp.getUser().getNickname());
|
windowRecharge.setNickname(resp.getUser().getNickname());
|
||||||
windowRecharge.setAvatar(resp.getUser().getAvatar());
|
windowRecharge.setAvatar(resp.getUser().getAvatar());
|
||||||
|
|||||||
@@ -4,9 +4,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.ruoyi.cai.constant.RedisHttpConstant;
|
import com.ruoyi.cai.constant.RedisHttpConstant;
|
||||||
import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
|
import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
|
||||||
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.setting.AppHomeConfig;
|
||||||
|
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||||
import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum;
|
import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum;
|
||||||
|
import com.ruoyi.cai.mq.AmqpProducer;
|
||||||
|
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
|
||||||
import com.ruoyi.cai.service.AnchorService;
|
import com.ruoyi.cai.service.AnchorService;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
import com.ruoyi.common.helper.LoginHelper;
|
||||||
import org.redisson.api.RBucket;
|
import org.redisson.api.RBucket;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -98,4 +103,22 @@ public class HomeManager {
|
|||||||
int endIndex = Math.min(limit, vos.size());
|
int endIndex = Math.min(limit, vos.size());
|
||||||
return vos.subList(0, endIndex);
|
return vos.subList(0, endIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SystemConfigManager systemConfigManager;
|
||||||
|
@Autowired
|
||||||
|
private AmqpProducer amqpProducer;
|
||||||
|
|
||||||
|
public AppHomeConfig config() {
|
||||||
|
AppHomeConfig config = new AppHomeConfig();
|
||||||
|
config.setOssDomain(systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN));
|
||||||
|
config.setOpenWithdraw(systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_WITHDRAW));
|
||||||
|
Long userId = LoginHelper.getUserId();
|
||||||
|
if(userId != null){
|
||||||
|
LoginNotifyDTO loginUserDTO = new LoginNotifyDTO();
|
||||||
|
loginUserDTO.setUserId(userId);
|
||||||
|
amqpProducer.sendCommonMq(loginUserDTO);
|
||||||
|
}
|
||||||
|
return config;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.ruoyi.cai.mq.dto;
|
package com.ruoyi.cai.mq.dto;
|
||||||
|
|
||||||
public enum CommonConsumerEnum {
|
public enum CommonConsumerEnum {
|
||||||
RANK,WINDOW_GIFT,WINDOW_RECHARGE,
|
WINDOW_GIFT,WINDOW_RECHARGE,
|
||||||
SYS_PUSH
|
SYS_PUSH,RANK,LOGIN
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package com.ruoyi.cai.mq.handle;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||||
|
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
|
||||||
|
import com.ruoyi.cai.mq.handle.dto.RankNotifyDTO;
|
||||||
|
import com.ruoyi.cai.rank.RankManager;
|
||||||
|
import com.ruoyi.framework.OnlineUserTodayCache;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class LoginNotifyHandle implements IHandle {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OnlineUserTodayCache onlineUserTodayCache;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(String message) {
|
||||||
|
LoginNotifyDTO loginNotify = JSON.parseObject(message, LoginNotifyDTO.class);
|
||||||
|
boolean todayFirstLogin = onlineUserTodayCache.addOnlineUserId(loginNotify.getUserId());
|
||||||
|
// 上线通知
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommonConsumerEnum getType() {
|
||||||
|
return CommonConsumerEnum.LOGIN;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@ package com.ruoyi.cai.mq.handle;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||||
import com.ruoyi.cai.mq.handle.dto.RankDTO;
|
import com.ruoyi.cai.mq.handle.dto.RankNotifyDTO;
|
||||||
import com.ruoyi.cai.rank.RankManager;
|
import com.ruoyi.cai.rank.RankManager;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -10,13 +10,13 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class RankHandle implements IHandle {
|
public class RankNotifyHandle implements IHandle {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RankManager rankManager;
|
private RankManager rankManager;
|
||||||
@Override
|
@Override
|
||||||
public void run(String message) {
|
public void run(String message) {
|
||||||
RankDTO rank = JSON.parseObject(message, RankDTO.class);
|
RankNotifyDTO rank = JSON.parseObject(message, RankNotifyDTO.class);
|
||||||
rankManager.addRank(rank);
|
rankManager.addRank(rank);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@ package com.ruoyi.cai.mq.handle;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||||
import com.ruoyi.cai.mq.handle.dto.SysPushDTO;
|
import com.ruoyi.cai.mq.handle.dto.SysPushNotifyDTO;
|
||||||
import com.ruoyi.cai.service.SysPushService;
|
import com.ruoyi.cai.service.SysPushService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -10,14 +10,14 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class SysPushHandle implements IHandle{
|
public class SysPushNotifyHandle implements IHandle{
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysPushService sysPushService;
|
private SysPushService sysPushService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(String message) {
|
public void run(String message) {
|
||||||
try {
|
try {
|
||||||
SysPushDTO sysPush = JSON.parseObject(message, SysPushDTO.class);
|
SysPushNotifyDTO sysPush = JSON.parseObject(message, SysPushNotifyDTO.class);
|
||||||
sysPushService.doRun(sysPush.getSysPushId());
|
sysPushService.doRun(sysPush.getSysPushId());
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("处理推送消息失败!",e);
|
log.error("处理推送消息失败!",e);
|
||||||
@@ -5,12 +5,11 @@ import com.google.common.collect.Lists;
|
|||||||
import com.ruoyi.cai.domain.Gift;
|
import com.ruoyi.cai.domain.Gift;
|
||||||
import com.ruoyi.cai.domain.User;
|
import com.ruoyi.cai.domain.User;
|
||||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||||
import com.ruoyi.cai.mq.handle.dto.WindowGiftDTO;
|
import com.ruoyi.cai.mq.handle.dto.WindowGiftNotifyDTO;
|
||||||
import com.ruoyi.cai.notice.YunxinHttpService;
|
import com.ruoyi.cai.notice.YunxinHttpService;
|
||||||
import com.ruoyi.cai.notice.data.child.SendGiftWindowsAmountNoticeData;
|
import com.ruoyi.cai.notice.data.child.SendGiftWindowsAmountNoticeData;
|
||||||
import com.ruoyi.cai.service.UserService;
|
import com.ruoyi.cai.service.UserService;
|
||||||
import com.ruoyi.cai.util.CaiDateUtil;
|
import com.ruoyi.framework.OnlineUserTodayCache;
|
||||||
import com.ruoyi.framework.OnlineTodayCache;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -19,22 +18,22 @@ import java.util.List;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class WindowGiftHandle implements IHandle{
|
public class WindowGiftNotifyHandle implements IHandle{
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private YunxinHttpService yunxinHttpService;
|
private YunxinHttpService yunxinHttpService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private OnlineTodayCache onlineTodayCache;
|
private OnlineUserTodayCache onlineUserTodayCache;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(String message) {
|
public void run(String message) {
|
||||||
WindowGiftDTO windowGift = JSON.parseObject(message, WindowGiftDTO.class);
|
WindowGiftNotifyDTO windowGift = JSON.parseObject(message, WindowGiftNotifyDTO.class);
|
||||||
User fromUser = userService.getById(windowGift.getFromId());
|
User fromUser = userService.getById(windowGift.getFromId());
|
||||||
User toUser = userService.getById(windowGift.getToId());
|
User toUser = userService.getById(windowGift.getToId());
|
||||||
Gift gift = windowGift.getGift();
|
Gift gift = windowGift.getGift();
|
||||||
Set<Long> userIds = onlineTodayCache.getAllOnlineToday();
|
Set<Long> userIds = onlineUserTodayCache.getAllOnlineToday();
|
||||||
List<Long> userIdList = new ArrayList<>(userIds);
|
List<Long> userIdList = new ArrayList<>(userIds);
|
||||||
List<List<Long>> lists = Lists.partition(userIdList, 300);
|
List<List<Long>> lists = Lists.partition(userIdList, 300);
|
||||||
for (List<Long> list : lists) {
|
for (List<Long> list : lists) {
|
||||||
@@ -3,9 +3,9 @@ package com.ruoyi.cai.mq.handle;
|
|||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||||
import com.ruoyi.cai.mq.handle.dto.WindowRechargeDTO;
|
import com.ruoyi.cai.mq.handle.dto.WindowRechargeNotifyDTO;
|
||||||
import com.ruoyi.cai.notice.YunxinHttpService;
|
import com.ruoyi.cai.notice.YunxinHttpService;
|
||||||
import com.ruoyi.framework.OnlineTodayCache;
|
import com.ruoyi.framework.OnlineUserTodayCache;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -14,17 +14,17 @@ import java.util.List;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class WindowRechargeHandle implements IHandle{
|
public class WindowRechargeNotifyHandle implements IHandle{
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private YunxinHttpService yunxinHttpService;
|
private YunxinHttpService yunxinHttpService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private OnlineTodayCache onlineTodayCache;
|
private OnlineUserTodayCache onlineUserTodayCache;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(String message) {
|
public void run(String message) {
|
||||||
WindowRechargeDTO windowRecharge = JSON.parseObject(message, WindowRechargeDTO.class);
|
WindowRechargeNotifyDTO windowRecharge = JSON.parseObject(message, WindowRechargeNotifyDTO.class);
|
||||||
Set<Long> userIds = onlineTodayCache.getAllOnlineToday();
|
Set<Long> userIds = onlineUserTodayCache.getAllOnlineToday();
|
||||||
List<Long> userIdList = new ArrayList<>(userIds);
|
List<Long> userIdList = new ArrayList<>(userIds);
|
||||||
List<List<Long>> lists = Lists.partition(userIdList, 300);
|
List<List<Long>> lists = Lists.partition(userIdList, 300);
|
||||||
for (List<Long> list : lists) {
|
for (List<Long> list : lists) {
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.ruoyi.cai.mq.handle.dto;
|
||||||
|
|
||||||
|
import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
||||||
|
import com.ruoyi.cai.mq.dto.CommonDTO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class LoginNotifyDTO extends CommonDTO {
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
private LocalDateTime happenTime;
|
||||||
|
|
||||||
|
public LoginNotifyDTO() {
|
||||||
|
this.setType(CommonConsumerEnum.LOGIN);
|
||||||
|
this.happenTime = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ import lombok.Data;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class RankDTO extends CommonDTO {
|
public class RankNotifyDTO extends CommonDTO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1-魅力榜
|
* 1-魅力榜
|
||||||
@@ -20,7 +20,7 @@ public class RankDTO extends CommonDTO {
|
|||||||
private LocalDateTime happenTime;
|
private LocalDateTime happenTime;
|
||||||
private Long traceId;
|
private Long traceId;
|
||||||
|
|
||||||
public RankDTO() {
|
public RankNotifyDTO() {
|
||||||
this.setType(CommonConsumerEnum.RANK);
|
this.setType(CommonConsumerEnum.RANK);
|
||||||
this.happenTime = LocalDateTime.now();
|
this.happenTime = LocalDateTime.now();
|
||||||
}
|
}
|
||||||
@@ -5,10 +5,10 @@ import com.ruoyi.cai.mq.dto.CommonDTO;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class SysPushDTO extends CommonDTO {
|
public class SysPushNotifyDTO extends CommonDTO {
|
||||||
private Long sysPushId;
|
private Long sysPushId;
|
||||||
|
|
||||||
public SysPushDTO() {
|
public SysPushNotifyDTO() {
|
||||||
this.setType(CommonConsumerEnum.SYS_PUSH);
|
this.setType(CommonConsumerEnum.SYS_PUSH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,14 +8,14 @@ import lombok.Data;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class WindowGiftDTO extends CommonDTO {
|
public class WindowGiftNotifyDTO extends CommonDTO {
|
||||||
private Long fromId;
|
private Long fromId;
|
||||||
private Long toId;
|
private Long toId;
|
||||||
private Gift gift;
|
private Gift gift;
|
||||||
private Long giftNum;
|
private Long giftNum;
|
||||||
private LocalDateTime time;
|
private LocalDateTime time;
|
||||||
|
|
||||||
public WindowGiftDTO() {
|
public WindowGiftNotifyDTO() {
|
||||||
this.setType(CommonConsumerEnum.WINDOW_GIFT);
|
this.setType(CommonConsumerEnum.WINDOW_GIFT);
|
||||||
this.time = LocalDateTime.now();
|
this.time = LocalDateTime.now();
|
||||||
}
|
}
|
||||||
@@ -4,17 +4,16 @@ import com.ruoyi.cai.mq.dto.CommonConsumerEnum;
|
|||||||
import com.ruoyi.cai.mq.dto.CommonDTO;
|
import com.ruoyi.cai.mq.dto.CommonDTO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class WindowRechargeDTO extends CommonDTO {
|
public class WindowRechargeNotifyDTO extends CommonDTO {
|
||||||
private Long id;
|
private Long id;
|
||||||
private String nickname;
|
private String nickname;
|
||||||
private String avatar;
|
private String avatar;
|
||||||
private Long amount;
|
private Long amount;
|
||||||
private LocalDateTime time;
|
private LocalDateTime time;
|
||||||
public WindowRechargeDTO() {
|
public WindowRechargeNotifyDTO() {
|
||||||
this.setType(CommonConsumerEnum.WINDOW_RECHARGE);
|
this.setType(CommonConsumerEnum.WINDOW_RECHARGE);
|
||||||
this.time = LocalDateTime.now();
|
this.time = LocalDateTime.now();
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.ruoyi.cai.config.CaiProperties;
|
import com.ruoyi.cai.config.CaiProperties;
|
||||||
import com.ruoyi.cai.domain.Gift;
|
import com.ruoyi.cai.domain.Gift;
|
||||||
import com.ruoyi.cai.domain.User;
|
import com.ruoyi.cai.domain.User;
|
||||||
import com.ruoyi.cai.mq.handle.dto.WindowRechargeDTO;
|
import com.ruoyi.cai.mq.handle.dto.WindowRechargeNotifyDTO;
|
||||||
import com.ruoyi.cai.notice.data.NoticeR;
|
import com.ruoyi.cai.notice.data.NoticeR;
|
||||||
import com.ruoyi.cai.notice.data.WindowNoticeR;
|
import com.ruoyi.cai.notice.data.WindowNoticeR;
|
||||||
import com.ruoyi.cai.notice.data.child.*;
|
import com.ruoyi.cai.notice.data.child.*;
|
||||||
@@ -14,7 +14,6 @@ import com.ruoyi.cai.service.AccountService;
|
|||||||
import com.ruoyi.cai.service.UserService;
|
import com.ruoyi.cai.service.UserService;
|
||||||
import com.ruoyi.cai.util.CaiDateUtil;
|
import com.ruoyi.cai.util.CaiDateUtil;
|
||||||
import com.ruoyi.cai.util.CaiNumUtil;
|
import com.ruoyi.cai.util.CaiNumUtil;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
|
||||||
import com.ruoyi.yunxin.YunExecutor;
|
import com.ruoyi.yunxin.YunExecutor;
|
||||||
import com.ruoyi.yunxin.Yunxin;
|
import com.ruoyi.yunxin.Yunxin;
|
||||||
import com.ruoyi.yunxin.resp.SendMsgResp;
|
import com.ruoyi.yunxin.resp.SendMsgResp;
|
||||||
@@ -456,7 +455,7 @@ public class YunxinHttpService {
|
|||||||
/**
|
/**
|
||||||
* 发送充值飘窗提醒
|
* 发送充值飘窗提醒
|
||||||
*/
|
*/
|
||||||
public void sendRechargeWindowsAmount(List<Long> toIds, WindowRechargeDTO windowRecharge){
|
public void sendRechargeWindowsAmount(List<Long> toIds, WindowRechargeNotifyDTO windowRecharge){
|
||||||
SendRechargeWindowsAmountNoticeData data = new SendRechargeWindowsAmountNoticeData();
|
SendRechargeWindowsAmountNoticeData data = new SendRechargeWindowsAmountNoticeData();
|
||||||
data.setId(windowRecharge.getId());
|
data.setId(windowRecharge.getId());
|
||||||
data.setNickname(windowRecharge.getNickname());
|
data.setNickname(windowRecharge.getNickname());
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.ruoyi.cai.rank;
|
|||||||
|
|
||||||
import com.ruoyi.cai.constant.RedisHttpConstant;
|
import com.ruoyi.cai.constant.RedisHttpConstant;
|
||||||
import com.ruoyi.cai.mq.AmqpProducer;
|
import com.ruoyi.cai.mq.AmqpProducer;
|
||||||
import com.ruoyi.cai.mq.handle.dto.RankDTO;
|
import com.ruoyi.cai.mq.handle.dto.RankNotifyDTO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.redisson.api.RScoredSortedSet;
|
import org.redisson.api.RScoredSortedSet;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
@@ -81,7 +81,7 @@ public class RankManager {
|
|||||||
return String.format(LOVE_KEY_FORMAT,TOTAL,TOTAL);
|
return String.format(LOVE_KEY_FORMAT,TOTAL,TOTAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addRank(RankDTO dto){
|
public void addRank(RankNotifyDTO dto){
|
||||||
if(dto.getRankType() == null){
|
if(dto.getRankType() == null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -251,7 +251,7 @@ public class RankManager {
|
|||||||
|
|
||||||
public void sendLoveRankMq(Long userId,Long value,Long traceId){
|
public void sendLoveRankMq(Long userId,Long value,Long traceId){
|
||||||
try {
|
try {
|
||||||
RankDTO rank = new RankDTO();
|
RankNotifyDTO rank = new RankNotifyDTO();
|
||||||
rank.setUserId(userId);
|
rank.setUserId(userId);
|
||||||
rank.setPrice(value);
|
rank.setPrice(value);
|
||||||
rank.setTraceId(traceId);
|
rank.setTraceId(traceId);
|
||||||
@@ -264,7 +264,7 @@ public class RankManager {
|
|||||||
|
|
||||||
public void sendInviteRankMq(Long userId,Long value,Long traceId){
|
public void sendInviteRankMq(Long userId,Long value,Long traceId){
|
||||||
try {
|
try {
|
||||||
RankDTO rank = new RankDTO();
|
RankNotifyDTO rank = new RankNotifyDTO();
|
||||||
rank.setUserId(userId);
|
rank.setUserId(userId);
|
||||||
rank.setPrice(value);
|
rank.setPrice(value);
|
||||||
rank.setTraceId(traceId);
|
rank.setTraceId(traceId);
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package com.ruoyi.cai.service;
|
package com.ruoyi.cai.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.ruoyi.cai.domain.Anchor;
|
import com.ruoyi.cai.domain.Anchor;
|
||||||
import com.ruoyi.cai.domain.User;
|
import com.ruoyi.cai.domain.User;
|
||||||
import com.ruoyi.cai.domain.UserCall;
|
import com.ruoyi.cai.domain.UserCall;
|
||||||
import com.ruoyi.cai.dto.admin.vo.UserCallAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.UserCallAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserCallAppVo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,4 +22,5 @@ public interface UserCallService extends IService<UserCall> {
|
|||||||
|
|
||||||
Page<UserCallAdminVo> pageAdmin(PageQuery pageQuery, UserCallAdminVo bo);
|
Page<UserCallAdminVo> pageAdmin(PageQuery pageQuery, UserCallAdminVo bo);
|
||||||
|
|
||||||
|
IPage<UserCallAppVo> pageApp(PageQuery pageQuery, Integer type, Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import com.ruoyi.cai.mapper.SysPushMapper;
|
|||||||
import com.ruoyi.cai.mq.AmqpProducer;
|
import com.ruoyi.cai.mq.AmqpProducer;
|
||||||
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
|
||||||
import com.ruoyi.cai.mq.dto.CommonDelayDto;
|
import com.ruoyi.cai.mq.dto.CommonDelayDto;
|
||||||
import com.ruoyi.cai.mq.handle.dto.SysPushDTO;
|
import com.ruoyi.cai.mq.handle.dto.SysPushNotifyDTO;
|
||||||
import com.ruoyi.cai.notice.data.NoticeMsgR;
|
import com.ruoyi.cai.notice.data.NoticeMsgR;
|
||||||
import com.ruoyi.cai.notice.data.NoticeOnlyImageR;
|
import com.ruoyi.cai.notice.data.NoticeOnlyImageR;
|
||||||
import com.ruoyi.cai.notice.data.NoticeR;
|
import com.ruoyi.cai.notice.data.NoticeR;
|
||||||
@@ -46,7 +46,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -211,7 +210,7 @@ public class SysPushServiceImpl extends ServiceImpl<SysPushMapper, SysPush> impl
|
|||||||
if(!update){
|
if(!update){
|
||||||
throw new ServiceException("正在执行中,请稍等");
|
throw new ServiceException("正在执行中,请稍等");
|
||||||
}
|
}
|
||||||
SysPushDTO sysPush = new SysPushDTO();
|
SysPushNotifyDTO sysPush = new SysPushNotifyDTO();
|
||||||
sysPush.setSysPushId(id);
|
sysPush.setSysPushId(id);
|
||||||
amqpProducer.sendCommonMq(sysPush);
|
amqpProducer.sendCommonMq(sysPush);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,28 @@
|
|||||||
package com.ruoyi.cai.service.impl;
|
package com.ruoyi.cai.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.ruoyi.cai.domain.*;
|
import com.ruoyi.cai.domain.*;
|
||||||
import com.ruoyi.cai.dto.admin.vo.UserCallAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.UserCallAdminVo;
|
||||||
|
import com.ruoyi.cai.dto.app.vo.UserCallAppVo;
|
||||||
import com.ruoyi.cai.mapper.UserCallMapper;
|
import com.ruoyi.cai.mapper.UserCallMapper;
|
||||||
import com.ruoyi.cai.service.AccountService;
|
import com.ruoyi.cai.service.*;
|
||||||
import com.ruoyi.cai.service.UnionUserService;
|
import com.ruoyi.cai.util.IPageUtil;
|
||||||
import com.ruoyi.cai.service.UserCallService;
|
import com.ruoyi.cai.ws.constant.RoomStatusEnums;
|
||||||
import com.ruoyi.cai.service.UserInviteService;
|
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通话记录Service业务层处理
|
* 通话记录Service业务层处理
|
||||||
*
|
*
|
||||||
@@ -62,8 +70,85 @@ public class UserCallServiceImpl extends ServiceImpl<UserCallMapper, UserCall> i
|
|||||||
return userCall;
|
return userCall;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型 0 全部 1 主打者 2 被打者
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Page<UserCallAdminVo> pageAdmin(PageQuery pageQuery, UserCallAdminVo bo) {
|
public Page<UserCallAdminVo> pageAdmin(PageQuery pageQuery, UserCallAdminVo bo) {
|
||||||
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<UserCallAppVo> pageApp(PageQuery pageQuery, Integer type,Long userId) {
|
||||||
|
if(type == null){
|
||||||
|
type = 0;
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<UserCall> query = Wrappers.lambdaQuery(UserCall.class);
|
||||||
|
if(type == 1){
|
||||||
|
query.eq(UserCall::getFromUid,userId);
|
||||||
|
}else if(type == 2){
|
||||||
|
query.eq(UserCall::getToUid,userId);
|
||||||
|
}else {
|
||||||
|
query.and(i -> i.eq(UserCall::getFromUid,userId).or().eq(UserCall::getToUid,userId));
|
||||||
|
}
|
||||||
|
query.eq(UserCall::getDeleteFlag, 0);
|
||||||
|
query.orderByDesc(UserCall::getId);
|
||||||
|
Page<UserCall> page = this.page(pageQuery.build(), query);
|
||||||
|
List<UserCall> records = page.getRecords();
|
||||||
|
if(records.isEmpty()){
|
||||||
|
return IPageUtil.transIPageEmpty(page);
|
||||||
|
}
|
||||||
|
Set<Long> userIds = records.stream().flatMap(c -> Stream.of(c.getToUid(),c.getFromUid())).collect(Collectors.toSet());
|
||||||
|
List<User> users = userService.listByIds(userIds);
|
||||||
|
Map<Long, User> userMap = users.stream().collect(Collectors.toMap(User::getId, Function.identity()));
|
||||||
|
List<UserCallAppVo> result = new ArrayList<>();
|
||||||
|
for (UserCall record : records) {
|
||||||
|
UserCallAppVo vo = new UserCallAppVo();
|
||||||
|
vo.setId(record.getId());
|
||||||
|
Long toUid;
|
||||||
|
if(userId.equals(record.getFromUid())){ // 拨打方
|
||||||
|
vo.setType(1);
|
||||||
|
toUid = record.getToUid();
|
||||||
|
}else{
|
||||||
|
vo.setType(2);
|
||||||
|
toUid = record.getFromUid();
|
||||||
|
}
|
||||||
|
User user = userMap.get(toUid);
|
||||||
|
if(user != null){
|
||||||
|
vo.setOtherType(user.getType());
|
||||||
|
vo.setUserId(user.getId());
|
||||||
|
vo.setUsercode(user.getUsercode());
|
||||||
|
vo.setNickname(user.getNickname());
|
||||||
|
vo.setAvatar(user.getAvatar());
|
||||||
|
vo.setGender(user.getGender());
|
||||||
|
vo.setAge(user.getAge());
|
||||||
|
vo.setCity(user.getCity());
|
||||||
|
vo.setCityId(user.getCityId());
|
||||||
|
}
|
||||||
|
Integer status = record.getStatus();
|
||||||
|
if(status <= RoomStatusEnums.STATUS_CONNECT_CANCEL.getCode()){ // 4
|
||||||
|
vo.setStatus(1);
|
||||||
|
vo.setStatusText("取消");
|
||||||
|
}else if(status.equals(RoomStatusEnums.STATUS_REFUSE.getCode())){ // 6
|
||||||
|
vo.setStatus(2);
|
||||||
|
vo.setStatusText("拒绝");
|
||||||
|
}else if(status.equals(RoomStatusEnums.STATUS_TIMEOUT_CANCEL.getCode())){ // 5
|
||||||
|
vo.setStatus(3);
|
||||||
|
vo.setStatusText("超时");
|
||||||
|
}if(status > RoomStatusEnums.STATUS_REFUSE.getCode()){ // 6
|
||||||
|
vo.setStatus(4);
|
||||||
|
vo.setStatusText("已接通");
|
||||||
|
}
|
||||||
|
if(record.getBeginTime() != null){
|
||||||
|
vo.setCreateTime(record.getBeginTime());
|
||||||
|
}else{
|
||||||
|
vo.setCreateTime(record.getCreateTime());
|
||||||
|
}
|
||||||
|
result.add(vo);
|
||||||
|
}
|
||||||
|
return IPageUtil.transIPage(page,result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
29
ruoyi-cai/src/main/java/com/ruoyi/cai/util/IPageUtil.java
Normal file
29
ruoyi-cai/src/main/java/com/ruoyi/cai/util/IPageUtil.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package com.ruoyi.cai.util;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class IPageUtil {
|
||||||
|
public static <T,V> IPage<V> transIPage(IPage<T> page, List<V> records){
|
||||||
|
IPage<V> res = new Page<>();
|
||||||
|
res.setPages(page.getPages());
|
||||||
|
res.setRecords(records);
|
||||||
|
res.setTotal(page.getTotal());
|
||||||
|
res.setSize(page.getSize());
|
||||||
|
res.setCurrent(page.getCurrent());
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T,V> IPage<V> transIPageEmpty(IPage<T> page){
|
||||||
|
IPage<V> res = new Page<>();
|
||||||
|
res.setPages(page.getPages());
|
||||||
|
res.setRecords(Collections.emptyList());
|
||||||
|
res.setTotal(page.getTotal());
|
||||||
|
res.setSize(page.getSize());
|
||||||
|
res.setCurrent(page.getCurrent());
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,11 +9,10 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class OnlineTodayCache {
|
public class OnlineUserTodayCache {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedissonClient redissonClient;
|
private RedissonClient redissonClient;
|
||||||
@@ -23,10 +22,11 @@ public class OnlineTodayCache {
|
|||||||
return String.format(CacheConstants.ONLINE_TODAY_TOKEN_KEY,today);
|
return String.format(CacheConstants.ONLINE_TODAY_TOKEN_KEY,today);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addOnlineUserId(Long userId){
|
public boolean addOnlineUserId(Long userId){
|
||||||
RSet<Long> set = redissonClient.getSet(getKey());
|
RSet<Long> set = redissonClient.getSet(getKey());
|
||||||
set.add(userId);
|
boolean res = set.add(userId);
|
||||||
set.expire(Duration.ofDays(1));
|
set.expire(Duration.ofDays(1));
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Long> getAllOnlineToday(){
|
public Set<Long> getAllOnlineToday(){
|
||||||
@@ -13,7 +13,7 @@ import com.ruoyi.common.helper.LoginHelper;
|
|||||||
import com.ruoyi.common.utils.ServletUtils;
|
import com.ruoyi.common.utils.ServletUtils;
|
||||||
import com.ruoyi.common.utils.ip.AddressUtils;
|
import com.ruoyi.common.utils.ip.AddressUtils;
|
||||||
import com.ruoyi.common.utils.redis.RedisUtils;
|
import com.ruoyi.common.utils.redis.RedisUtils;
|
||||||
import com.ruoyi.framework.OnlineTodayCache;
|
import com.ruoyi.framework.OnlineUserTodayCache;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -31,7 +31,7 @@ import java.time.Duration;
|
|||||||
public class UserActionListener implements SaTokenListener {
|
public class UserActionListener implements SaTokenListener {
|
||||||
|
|
||||||
private final SaTokenConfig tokenConfig;
|
private final SaTokenConfig tokenConfig;
|
||||||
private final OnlineTodayCache onlineTodayCache;
|
private final OnlineUserTodayCache onlineUserTodayCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 每次登录时触发
|
* 每次登录时触发
|
||||||
@@ -78,7 +78,6 @@ public class UserActionListener implements SaTokenListener {
|
|||||||
} else {
|
} else {
|
||||||
RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto, Duration.ofSeconds(tokenConfig.getTimeout()));
|
RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto, Duration.ofSeconds(tokenConfig.getTimeout()));
|
||||||
}
|
}
|
||||||
onlineTodayCache.addOnlineUserId(user.getUserId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user