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,6 +1,8 @@
package com.ruoyi.web.controller.cai.app; package com.ruoyi.web.controller.cai.app;
import com.ruoyi.cai.dto.app.dto.ImMessageDTO; import com.alibaba.fastjson.JSON;
import com.ruoyi.cai.dto.app.query.im.ImMessageDTO;
import com.ruoyi.cai.dto.app.query.im.SaveSendImImgReq;
import com.ruoyi.cai.dto.app.vo.ImResp; import com.ruoyi.cai.dto.app.vo.ImResp;
import com.ruoyi.cai.manager.ImService; import com.ruoyi.cai.manager.ImService;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
@@ -9,6 +11,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; 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.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -19,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping("/api/im") @RequestMapping("/api/im")
@Tag(name = "IM相关的接口") @Tag(name = "IM相关的接口")
@Slf4j
public class ImAppController { public class ImAppController {
@Autowired @Autowired
@@ -32,5 +36,15 @@ public class ImAppController {
return R.ok(resp); return R.ok(resp);
} }
@PostMapping("/send/saveSendImImg")
@Operation(summary = "更新发送的图片消息(只定义了接口,未实现逻辑,里面有点复杂)")
@Log(title = "更新发送的图片消息", businessType = BusinessType.OTHER, isSaveDb = false)
public R<ImResp> saveSendImImg(@Validated @RequestBody SaveSendImImgReq saveSendImImgReq){
log.error("更新发送的图片消息 = {}", JSON.toJSONString(saveSendImImgReq));
return R.ok();
}
} }

View File

@@ -13,6 +13,7 @@ import com.ruoyi.cai.dto.app.vo.index.UserGiftIndexVo;
import com.ruoyi.cai.dto.app.vo.setting.AppHomeConfig; import com.ruoyi.cai.dto.app.vo.setting.AppHomeConfig;
import com.ruoyi.cai.dto.app.vo.user.UserInfoVo; 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.UserListVo;
import com.ruoyi.cai.dto.app.vo.user.UserMinInfoVo;
import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.HomeManager; import com.ruoyi.cai.manager.HomeManager;
import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.manager.SystemConfigManager;
@@ -119,6 +120,14 @@ public class IndexController {
return R.ok(res); return R.ok(res);
} }
@GetMapping("/home/minInfo")
@Operation(summary = "获取指定用户基础信息(缩减版)")
@Log(title = "获取指定用户基础信息(缩减版)", businessType = BusinessType.OTHER, isSaveDb = false)
public R<UserMinInfoVo> minInfo(Long userId){
UserMinInfoVo res = userService.minInfo(userId);
return R.ok(res);
}
@GetMapping("/userGuard/page") @GetMapping("/userGuard/page")
@Operation(summary = "获取指定女神守护排行") @Operation(summary = "获取指定女神守护排行")

View File

@@ -2,8 +2,11 @@ package com.ruoyi.web.controller.cai.app;
import com.ruoyi.cai.chat.ChatManager; import com.ruoyi.cai.chat.ChatManager;
import com.ruoyi.cai.dto.app.query.CallReq; 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.CallResp;
import com.ruoyi.cai.dto.app.vo.chat.ChatTipResp;
import com.ruoyi.cai.dto.app.vo.chat.GetRoomResp; import com.ruoyi.cai.dto.app.vo.chat.GetRoomResp;
import com.ruoyi.cai.dto.app.vo.chat.VideoChargingResp;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
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;
@@ -39,4 +42,29 @@ public class RoomController {
GetRoomResp room = chatManager.getRoom(roomId); GetRoomResp room = chatManager.getRoom(roomId);
return R.ok(room); return R.ok(room);
} }
@GetMapping("/videoCharging")
@Operation(summary = "视频计费结果页")
@Log(title = "视频计费结果页", businessType = BusinessType.OTHER, isSaveDb = true)
public R<VideoChargingResp> videoCharging(@NotEmpty(message = "房间不存在") String roomId){
VideoChargingResp videoChargingResp = chatManager.videoCharging(roomId);
return R.ok(videoChargingResp);
}
@PostMapping("/videoScore")
@Operation(summary = "视频打分")
@Log(title = "视频打分", businessType = BusinessType.OTHER, isSaveDb = true)
public R<Void> videoScore(@RequestBody VideoScoreReq videoScoreReq){
chatManager.videoScore(videoScoreReq);
return R.ok();
}
@GetMapping("/chatTip")
@Operation(summary = "进入聊天界面提示语")
@Log(title = "进入聊天界面提示语", businessType = BusinessType.OTHER, isSaveDb = true)
public R<ChatTipResp> chatTip(){
ChatTipResp resp = new ChatTipResp();
resp.setTip("以色情为由加微信/索取礼物多为诈骗,请举报");
return R.ok(resp);
}
} }

View File

@@ -1,19 +1,23 @@
package com.ruoyi.cai.chat; package com.ruoyi.cai.chat;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.domain.Account; import com.ruoyi.cai.domain.Account;
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.app.dto.GuardNum; import com.ruoyi.cai.dto.app.dto.GuardNum;
import com.ruoyi.cai.dto.app.query.CallReq; 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.CallResp;
import com.ruoyi.cai.dto.app.vo.chat.GetRoomResp; 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.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.IdManager; import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.service.*; import com.ruoyi.cai.service.*;
import com.ruoyi.cai.ws.bean.Room; import com.ruoyi.cai.ws.bean.Room;
import com.ruoyi.cai.ws.constant.RedisConstant; 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.dto.WsToken;
import com.ruoyi.cai.ws.manager.WebSocketManager; import com.ruoyi.cai.ws.manager.WebSocketManager;
import com.ruoyi.common.utils.MapGetUtil; import com.ruoyi.common.utils.MapGetUtil;
@@ -174,4 +178,57 @@ public class ChatManager {
return getRoomResp; 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; 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.Account;
import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserChatRecord; 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.dto.app.vo.ImResp;
import com.ruoyi.cai.enums.GenderEnum; import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.enums.ChatTypeEnum; 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.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserChatRecord; import com.ruoyi.cai.domain.UserChatRecord;
import com.ruoyi.cai.dto.app.dto.ImMessageDTO; import com.ruoyi.cai.dto.app.query.im.ImMessageDTO;
/** /**
* 聊天记录Service接口 * 聊天记录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.query.index.UserQuery;
import com.ruoyi.cai.dto.app.vo.user.UserInfoVo; 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.UserListVo;
import com.ruoyi.cai.dto.app.vo.user.UserMinInfoVo;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
/** /**
@@ -48,4 +49,6 @@ public interface UserService extends IService<User> {
void unBindInviteUser(Long userId); void unBindInviteUser(Long userId);
void bindInviteUser(Long userId, String inviteUsercode); 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserChatRecord; 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.mapper.UserChatRecordMapper;
import com.ruoyi.cai.service.UserChatRecordService; import com.ruoyi.cai.service.UserChatRecordService;
import lombok.RequiredArgsConstructor; 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.GreetQuery;
import com.ruoyi.cai.dto.app.query.index.UserMapperQuery; import com.ruoyi.cai.dto.app.query.index.UserMapperQuery;
import com.ruoyi.cai.dto.app.query.index.UserQuery; 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.*;
import com.ruoyi.cai.dto.app.vo.user.UserInfoVo;
import com.ruoyi.cai.dto.app.vo.user.UserListVo;
import com.ruoyi.cai.enums.GenderEnum; import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.mapper.UserMapper; import com.ruoyi.cai.mapper.UserMapper;
import com.ruoyi.cai.notice.YunxinHttpService; import com.ruoyi.cai.notice.YunxinHttpService;
@@ -377,4 +375,28 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
caiLoginManager.dealInviteId(user,false); 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; private final Integer code;