This commit is contained in:
张良(004796)
2024-02-06 15:32:52 +08:00
parent ec83a538cc
commit c827dbc0aa
16 changed files with 247 additions and 9 deletions

View File

@@ -1,19 +1,23 @@
package com.ruoyi.cai.chat;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.domain.Account;
import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserCall;
import com.ruoyi.cai.dto.app.dto.GuardNum;
import com.ruoyi.cai.dto.app.query.CallReq;
import com.ruoyi.cai.dto.app.query.room.VideoScoreReq;
import com.ruoyi.cai.dto.app.vo.chat.CallResp;
import com.ruoyi.cai.dto.app.vo.chat.GetRoomResp;
import com.ruoyi.cai.dto.app.vo.chat.VideoChargingResp;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.ws.bean.Room;
import com.ruoyi.cai.ws.constant.RedisConstant;
import com.ruoyi.cai.ws.constant.RoomStatusEnums;
import com.ruoyi.cai.ws.dto.WsToken;
import com.ruoyi.cai.ws.manager.WebSocketManager;
import com.ruoyi.common.utils.MapGetUtil;
@@ -174,4 +178,57 @@ public class ChatManager {
return getRoomResp;
}
public void videoScore(VideoScoreReq req) {
Long userId = LoginHelper.getUserId();
UserCall userCall = userCallService.getById(req.getRoomId());
if(userCall == null){
throw new ServiceException("房间号不存在");
}
if(userCall.getStatus() > RoomStatusEnums.STATUS_SCORE.getCode()){
throw new ServiceException("当前通话已经完成,不可评论!");
}
if(userCall.getStatus() < RoomStatusEnums.STATUS_HANGUP.getCode()){
throw new ServiceException("当前未通话完成,不可以评论!");
}
if(userCall.getFromUid().equals(userId)){
userCallService.update(Wrappers.lambdaUpdate(UserCall.class)
.set(UserCall::getCallScore, req.getScore())
.set(UserCall::getStatus, RoomStatusEnums.STATUS_SCORE.getCode())
.eq(UserCall::getId, userCall.getId()));
}else if(userCall.getToUid().equals(userId)){
userCallService.update(Wrappers.lambdaUpdate(UserCall.class)
.set(UserCall::getUserScore, req.getScore())
.set(UserCall::getStatus, RoomStatusEnums.STATUS_SCORE.getCode())
.eq(UserCall::getId, userCall.getId()));
}
}
public VideoChargingResp videoCharging(String roomId) {
Long userId = LoginHelper.getUserId();
UserCall userCall = userCallService.getById(roomId);
if(userCall == null){
throw new ServiceException("房间号不存在");
}
if(!userCall.getFromUid().equals(userId) && !userCall.getToUid().equals(userId)){
throw new ServiceException("无权限操作");
}
User fromUser = userService.getById(userCall.getFromUid());
User toUser = userService.getById(userCall.getToUid());
VideoChargingResp resp = new VideoChargingResp();
resp.setRoomId(userCall.getId());
resp.setFromUid(fromUser.getId());
resp.setFromNickname(fromUser.getNickname());
resp.setFromAvatar(fromUser.getAvatar());
resp.setPrice(userCall.getCallPrice());
resp.setToUid(toUser.getId());
resp.setToNickname(toUser.getNickname());
resp.setToAvatar(toUser.getAvatar());
resp.setCallTime(userCall.getCallTime());
if(userCall.getFromUid().equals(userId)){
resp.setPayMoney(userCall.getCallAmount());
}else if(userCall.getToUid().equals(userId)){
resp.setIncomeMoney(userCall.getCallIncome());
}
return resp;
}
}

View File

@@ -1,4 +1,4 @@
package com.ruoyi.cai.dto.app.dto;
package com.ruoyi.cai.dto.app.query.im;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

View File

@@ -0,0 +1,19 @@
package com.ruoyi.cai.dto.app.query.im;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class SaveSendImImgReq {
@Schema(description = "消息记录Id")
private Long recordId;
@Schema(description = "不知道是撒")
private String serverId;
@Schema(description = "不知道是撒")
private String messageId;
@Schema(description = "时间")
private String time;
@Schema(description = "图片地址")
private String imageUrl;
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.dto.app.query.room;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class VideoScoreReq {
@Schema(description = "房间号")
private Long roomId;
@Schema(description = "评分 1-5分")
private BigDecimal score;
}

View File

@@ -0,0 +1,8 @@
package com.ruoyi.cai.dto.app.vo.chat;
import lombok.Data;
@Data
public class ChatTipResp {
private String tip;
}

View File

@@ -0,0 +1,32 @@
package com.ruoyi.cai.dto.app.vo.chat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class VideoChargingResp {
@Schema(description = "房间号")
private Long roomId;
@Schema(description = "拨打方用户ID")
private Long fromUid;
@Schema(description = "拨打方用户昵称")
private String fromNickname;
@Schema(description = "拨打方用户头像")
private String fromAvatar;
@Schema(description = "通话单价")
private Long price;
@Schema(description = "接收方用户ID")
private Long toUid;
@Schema(description = "接收方用户昵称")
private String toNickname;
@Schema(description = "接收方用户头像")
private String toAvatar;
@Schema(description = "通话时长")
private Long callTime;
@Schema(description = "通话总价格")
private Long payMoney = 0L;
@Schema(description = "通话主播收益")
private Long incomeMoney = 0L;
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.cai.dto.app.vo.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class UserMinInfoVo {
@Schema(description = "用户ID")
private Long userId;
/**
* 是否是播主 0 否 1 是
*/
@Schema(description = "是否是播主 0 否 1 是")
private Integer isAnchor;
@Schema(description = "蜜瓜号")
private String usercode;
@Schema(description = "昵称")
private String nickname;
@Schema(description = "头像")
private String avatar;
@Schema(description = "城市")
private String city;
@Schema(description = "城市ID")
private Integer cityId;
@Schema(description = "年龄")
private Long age;
@Schema(description = "用户账户")
private UserAccountVo userAccount;
}

View File

@@ -3,7 +3,7 @@ package com.ruoyi.cai.manager;
import com.ruoyi.cai.domain.Account;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserChatRecord;
import com.ruoyi.cai.dto.app.dto.ImMessageDTO;
import com.ruoyi.cai.dto.app.query.im.ImMessageDTO;
import com.ruoyi.cai.dto.app.vo.ImResp;
import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.enums.ChatTypeEnum;

View File

@@ -3,7 +3,7 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserChatRecord;
import com.ruoyi.cai.dto.app.dto.ImMessageDTO;
import com.ruoyi.cai.dto.app.query.im.ImMessageDTO;
/**
* 聊天记录Service接口

View File

@@ -8,6 +8,7 @@ import com.ruoyi.cai.dto.app.query.index.GreetQuery;
import com.ruoyi.cai.dto.app.query.index.UserQuery;
import com.ruoyi.cai.dto.app.vo.user.UserInfoVo;
import com.ruoyi.cai.dto.app.vo.user.UserListVo;
import com.ruoyi.cai.dto.app.vo.user.UserMinInfoVo;
import com.ruoyi.common.core.domain.PageQuery;
/**
@@ -48,4 +49,6 @@ public interface UserService extends IService<User> {
void unBindInviteUser(Long userId);
void bindInviteUser(Long userId, String inviteUsercode);
UserMinInfoVo minInfo(Long userId);
}

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserChatRecord;
import com.ruoyi.cai.dto.app.dto.ImMessageDTO;
import com.ruoyi.cai.dto.app.query.im.ImMessageDTO;
import com.ruoyi.cai.mapper.UserChatRecordMapper;
import com.ruoyi.cai.service.UserChatRecordService;
import lombok.RequiredArgsConstructor;

View File

@@ -11,9 +11,7 @@ import com.ruoyi.cai.dto.admin.vo.UserAdminVo;
import com.ruoyi.cai.dto.app.query.index.GreetQuery;
import com.ruoyi.cai.dto.app.query.index.UserMapperQuery;
import com.ruoyi.cai.dto.app.query.index.UserQuery;
import com.ruoyi.cai.dto.app.vo.user.OnlineStatusVo;
import com.ruoyi.cai.dto.app.vo.user.UserInfoVo;
import com.ruoyi.cai.dto.app.vo.user.UserListVo;
import com.ruoyi.cai.dto.app.vo.user.*;
import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.mapper.UserMapper;
import com.ruoyi.cai.notice.YunxinHttpService;
@@ -377,4 +375,28 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
caiLoginManager.dealInviteId(user,false);
}
@Override
public UserMinInfoVo minInfo(Long userId) {
User user = this.getById(userId);
if(user == null){
return null;
}
UserMinInfoVo vo = new UserMinInfoVo();
vo.setUserId(userId);
vo.setIsAnchor(user.getIsAnchor());
vo.setUsercode(user.getUsercode());
vo.setNickname(user.getNickname());
vo.setAvatar(user.getAvatar());
vo.setAge(user.getAge());
vo.setCity(user.getCity());
vo.setCityId(user.getCityId());
Account account = accountService.getByUserId(userId);
UserAccountVo accountVo = new UserAccountVo();
accountVo.setUserId(account.getUserId());
accountVo.setCoin(account.getCoin());
accountVo.setIncomeCoin(account.getIncomeCoin());
vo.setUserAccount(accountVo);
return vo;
}
}

View File

@@ -40,7 +40,8 @@ public enum RoomStatusEnums {
/**
* 通话结束
*/
STATUS_HANGUP(8,"通话结束")
STATUS_HANGUP(8,"通话结束"),
STATUS_SCORE(9,"评分完成"),
;
private final Integer code;