mongodb-用mysql代替roomPK

This commit is contained in:
2023-03-09 14:17:40 +08:00
parent 3cadccde2e
commit b453bd7258
11 changed files with 163 additions and 274 deletions

View File

@@ -1,10 +1,12 @@
package com.accompany.business.event.listener;
import cn.hutool.core.date.DateTime;
import com.accompany.business.event.RoomPKEvent;
import com.accompany.business.message.GiftMagicMessage;
import com.accompany.business.message.GiftMessage;
import com.accompany.business.mongodb.document.room.RoomPK;
import com.accompany.business.model.room.RoomPK;
import com.accompany.business.param.RoomPKTeam;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.service.common.JedisService;
import com.accompany.business.service.room.RoomPKJobLoadService;
import com.google.gson.Gson;
@@ -21,6 +23,7 @@ import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -87,19 +90,19 @@ public class RoomPKListener implements ApplicationListener<RoomPKEvent> {
/**
* PK业务处理
* @param roomPkStr
* @param messTime
* @param recvUid
* @param sendUid
* @param goldNum
*/
private void doPKBusiness(String roomPkStr,Long messTime,Long recvUid,Long sendUid,Long goldNum){
private void doPKBusiness(String roomPkStr, Long messTimestamp, Long recvUid, Long sendUid, Long goldNum){
if(BlankUtil.isBlank(roomPkStr)||ApplicationConstant.NULL_JSON_OBJECT.equalsIgnoreCase(roomPkStr)){
return;
}
Date messTime = DateTimeUtil.convertMsToDate(messTimestamp);
RoomPK roomPk = gson.fromJson(roomPkStr,RoomPK.class);
Long beginTime = roomPk.getBeginTime();
Long endTime = roomPk.getEndTime();
if(beginTime!=null&&endTime!=null&&messTime!=null&&messTime.compareTo(beginTime)>=0&&messTime.compareTo(endTime)<=0) {
Date beginTime = roomPk.getBeginTime();
Date endTime = roomPk.getEndTime();
if(beginTime!=null && endTime!=null && messTime!=null && messTime.compareTo(beginTime)>=0 && messTime.compareTo(endTime)<=0) {
//在PK时间段内,统计PK数据
calculatePKResult(roomPk,recvUid,sendUid,goldNum);
}

View File

@@ -1,6 +1,6 @@
package com.accompany.business.event.listener;
import com.accompany.business.mongodb.document.room.RoomPK;
import com.accompany.business.model.room.RoomPK;
import com.accompany.core.service.base.BaseService;
import com.accompany.business.service.room.RoomPKService;
import com.accompany.common.constant.Constant;
@@ -11,6 +11,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class RoomPKNotifyJob extends BaseService implements Job {

View File

@@ -0,0 +1,67 @@
package com.accompany.business.model.room;
import com.accompany.business.mybatis.typehandler.LuckySeaDrawItemListTypeHandler;
import com.accompany.business.param.RoomPKTeam;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
@TableName(value = "room_pk" , autoResultMap = true)
public class RoomPK implements Serializable {
/**
* PK主键
*/
@TableId
private String pkId;
/**
* PK的模式1:个人模式;2.团队模式)
*/
private Byte pkMode;
/**
* 投票类型(1.按礼物价值;2.按送礼物人数)
*/
private Byte voteMode;
/**
* 创建PK的房间
*/
private Long roomUid;
/**
* 创建PK的人
*/
private Long operUid;
/**
* PK持续时间(单位:s)
*/
private Long duration;
/**
* PK开始时间
*/
private Date beginTime;
/**
* PK结束时间(重新开始立即结束否则为beginTime+duration)
*/
private Date endTime;
/**
* PK创建时间
*/
private Date createTime;
/**
* PK状态(0:尚未开始1正在进行中2:已经结束)
*/
private Byte pkStatus;
/**
* 参与PK的队伍
*/
@TableField(value = "teams", typeHandler = LuckySeaDrawItemListTypeHandler.class)
private List<RoomPKTeam> teams;
/**
* PK结果
*/
private Byte result;
}

View File

@@ -1,161 +0,0 @@
package com.accompany.business.mongodb.document.room;
import com.accompany.business.param.RoomPKTeam;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.List;
/**
* @author yangming
* @date 2018-11-07
* @description 聊天室类型消息体
*
*/
@Document(collection = "room_pk")
public class RoomPK implements Serializable {
/**
* PK主键
*/
@Id
private String pkId;
/**
* PK的模式1:个人模式;2.团队模式)
*/
private Byte pkMode;
/**
* 投票类型(1.按礼物价值;2.按送礼物人数)
*/
private Byte voteMode;
/**
* 创建PK的房间
*/
private Long roomUid;
/**
* 创建PK的人
*/
private Long operUid;
/**
* PK持续时间(单位:s)
*/
private Long duration;
/**
* PK开始时间
*/
private Long beginTime;
/**
* PK结束时间(重新开始立即结束否则为beginTime+duration)
*/
private Long endTime;
/**
* PK创建时间
*/
@Indexed
private Long createTime;
/**
* PK状态(0:尚未开始1正在进行中2:已经结束)
*/
private Byte pkStatus;
/**
* 参与PK的队伍
*/
private List<RoomPKTeam> teams;
/**
* PK结果
*/
private Byte result;
public String getPkId() {
return pkId;
}
public void setPkId(String pkId) {
this.pkId = pkId;
}
public Byte getPkMode() {
return pkMode;
}
public void setPkMode(Byte pkMode) {
this.pkMode = pkMode;
}
public Byte getVoteMode() {
return voteMode;
}
public void setVoteMode(Byte voteMode) {
this.voteMode = voteMode;
}
public Long getRoomUid() {
return roomUid;
}
public void setRoomUid(Long roomUid) {
this.roomUid = roomUid;
}
public Long getOperUid() {
return operUid;
}
public void setOperUid(Long operUid) {
this.operUid = operUid;
}
public Long getDuration() {
return duration;
}
public void setDuration(Long duration) {
this.duration = duration;
}
public Long getBeginTime() {
return beginTime;
}
public void setBeginTime(Long beginTime) {
this.beginTime = beginTime;
}
public Long getEndTime() {
return endTime;
}
public void setEndTime(Long endTime) {
this.endTime = endTime;
}
public Long getCreateTime() {
return createTime;
}
public void setCreateTime(Long createTime) {
this.createTime = createTime;
}
public Byte getPkStatus() { return pkStatus; }
public void setPkStatus(Byte pkStatus) { this.pkStatus = pkStatus; }
public List<RoomPKTeam> getTeams() {
return teams;
}
public void setTeams(List<RoomPKTeam> teams) {
this.teams = teams;
}
public Byte getResult() {
return result;
}
public void setResult(Byte result) {
this.result = result;
}
}

View File

@@ -1,61 +0,0 @@
package com.accompany.business.mongodb.room;
import com.accompany.business.mongodb.document.room.RoomPK;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author yangming
* @date 2018-11-14
* @description mongodb
*/
@Component
public class RoomPKDAO {
private static transient final Logger logger = LoggerFactory.getLogger(RoomPKDAO.class);
@Autowired
private MongoTemplate mongoTemplate;
/**
* 插入(存在则不处理,不存在则插入)
* @param data
*/
public void insert(RoomPK data){
mongoTemplate.insert(data);
}
/**
* 保存(存在则更新,不存在则插入)
* @param data
*/
public void save(RoomPK data) {
mongoTemplate.save(data);
}
/**
* 根据ID查询
*/
public RoomPK findById(String pkId){ return mongoTemplate.findById(pkId,RoomPK.class);}
/**
* 根据查询条件查询
* @param query
*/
public List<RoomPK> findByQuery(Query query){
return mongoTemplate.find(query, RoomPK.class);
}
/**
* 根据查询条件查询记录数
* @param query
* @return
*/
public long count(Query query){
return mongoTemplate.count(query, RoomPK.class);
}
}

View File

@@ -0,0 +1,18 @@
package com.accompany.business.mybatis.typehandler;
import com.accompany.business.param.RoomPKTeam;
import com.accompany.core.mybatis.typehandler.ListTypeHandler;
import com.alibaba.fastjson.TypeReference;
import java.util.List;
/**
* Created by 恒仔 on 2023/3/5.
*/
public class RoomPkTeamListTypeHandler extends ListTypeHandler<RoomPKTeam> {
// 将ListTypeHandler<T>T为任意对象具体为特定的对象String
@Override
protected TypeReference<List<RoomPKTeam>> specificType() {
return new TypeReference<List<RoomPKTeam>>() {};
}
}

View File

@@ -0,0 +1,9 @@
package com.accompany.business.mybatismapper.room;
import com.accompany.business.model.room.RoomPK;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface RoomPkMapper extends BaseMapper<RoomPK> {
}

View File

@@ -1,7 +1,7 @@
package com.accompany.business.service.room;
import com.accompany.business.event.listener.RoomPKNotifyJob;
import com.accompany.business.mongodb.document.room.RoomPK;
import com.accompany.business.model.room.RoomPK;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -22,15 +22,15 @@ public class RoomPKJobLoadService {
public void loadRoomPKTaskJob(RoomPK roomPK){
try {
SimpleDateFormat format = new SimpleDateFormat(CRON_FORMAT);
Date date = new Date(roomPK.getEndTime());
Date now = new Date();
//已经结束的任务不处理
if (date.getTime() < System.currentTimeMillis()){
if (now.after(roomPK.getEndTime())){
return ;
}
TriggerKey triggerKey = TriggerKey.triggerKey(roomPK.getPkId());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
String taskCron = format.format(date);
String taskCron = format.format(roomPK.getEndTime());
if (trigger == null) {
JobDetail jobDetail = JobBuilder.newJob(RoomPKNotifyJob.class).withIdentity(roomPK.getPkId()).build();
jobDetail.getJobDataMap().put("roomPkNotifyJob", roomPK);
@@ -39,7 +39,7 @@ public class RoomPKJobLoadService {
scheduler.scheduleJob(jobDetail, trigger);
} else {
//已经创建了定时任务判断PK是否提前结束
if (date.getTime() <= System.currentTimeMillis()){
if (now.compareTo(roomPK.getEndTime()) >= 0){
//提前结束,禁用定时任务
scheduler.unscheduleJob(trigger.getKey());
}

View File

@@ -2,8 +2,8 @@ package com.accompany.business.service.room;
import com.accompany.business.event.RoomPKEvent;
import com.accompany.business.model.redis.RoomMic;
import com.accompany.business.mongodb.document.room.RoomPK;
import com.accompany.business.mongodb.room.RoomPKDAO;
import com.accompany.business.model.room.RoomPK;
import com.accompany.business.mybatismapper.room.RoomPkMapper;
import com.accompany.business.param.QueueMicroParam;
import com.accompany.business.param.RoomPKTeam;
import com.accompany.business.service.ErBanNetEaseService;
@@ -19,12 +19,15 @@ import com.accompany.common.constant.Constant;
import com.accompany.common.netease.neteaseacc.result.RoomRet;
import com.accompany.common.redis.RedisKey;
import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.common.utils.UUIDUitl;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.Room;
import com.accompany.core.model.Users;
import com.accompany.core.service.base.BaseService;
import com.accompany.core.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.util.concurrent.RateLimiter;
@@ -55,7 +58,7 @@ public class RoomPKService extends BaseService {
private RateLimiter roomQueueLimiter = RateLimiter.create(8);
@Autowired
private RoomPKDAO roomPkDAO;
private RoomPkMapper roomPkMapper;
@Autowired
private RoomService roomService;
@Autowired
@@ -75,7 +78,6 @@ public class RoomPKService extends BaseService {
*/
@Transactional(rollbackFor = Exception.class)
public RoomRet updateRoomPkInfo(Long roomUid, Long operUid, Boolean isOpenPk) throws Exception{
if(!roomQueueLimiter.tryAcquire(1, TimeUnit.SECONDS)){
throw new ServiceException(BusiStatus.SERVER_BUSY);
}
@@ -136,7 +138,7 @@ public class RoomPKService extends BaseService {
* @param duration
* @return
*/
public RoomPK createPkAct(Long roomUid, Long operUid, Byte PkMode, Byte voteMode, Long duration) throws Exception{
public RoomPK createPkAct(Long roomUid, Long operUid, Byte PkMode, Byte voteMode, Long duration) {
Integer second = forceFinish(roomUid);
RoomPK roomPk = new RoomPK();
roomPk.setPkId(UUIDUitl.get());
@@ -146,8 +148,8 @@ public class RoomPKService extends BaseService {
roomPk.setPkMode(PkMode);
roomPk.setVoteMode(voteMode);
roomPk.setDuration(duration);
roomPk.setCreateTime(System.currentTimeMillis());
roomPkDAO.save(roomPk);
roomPk.setCreateTime(new Date());
roomPkMapper.insert(roomPk);
this.sendChatRoomMsg(roomUid,Constant.DefineProtocol.CUSTOM_MESS_HEAD_ROOM_PK,second,roomPk);
return roomPk;
}
@@ -164,7 +166,7 @@ public class RoomPKService extends BaseService {
if(StringUtils.isNotBlank(roomPkStr)&&!ApplicationConstant.NULL_JSON_OBJECT.equalsIgnoreCase(roomPkStr)){
RoomPK roomInPk = gson.fromJson(roomPkStr,RoomPK.class);
//PK还没结束
Long endTime = System.currentTimeMillis();
Date endTime = new Date();
if(roomInPk.getEndTime().compareTo(endTime)> 0){
second = Constant.DefineProtocol.CUSTOM_MESS_SUB_ROOM_PK_RE_START;
roomInPk.setEndTime(endTime);
@@ -311,7 +313,7 @@ public class RoomPKService extends BaseService {
* @param userVos
* @return
*/
public RoomPKRecordVo beginPKAct(Long roomUid,String pkId,List<QueueUserVo> userVos) throws Exception{
public RoomPKRecordVo beginPKAct(Long roomUid, String pkId, List<QueueUserVo> userVos) {
if (userVos == null || userVos.size() <= 0) {
throw new ServiceException(BusiStatus.PK_USER_NOT_NULL);
@@ -329,7 +331,7 @@ public class RoomPKService extends BaseService {
throw new ServiceException(BusiStatus.PK_TEAM_ERROR);
}
RoomPK roomPk = roomPkDAO.findById(pkId);
RoomPK roomPk = roomPkMapper.selectById(pkId);
if (roomPk == null) {
throw new ServiceException(BusiStatus.PK_NOT_EXIST);
}
@@ -337,9 +339,10 @@ public class RoomPKService extends BaseService {
throw new ServiceException(BusiStatus.PK_HAS_EXIST);
}
roomPk.setPkStatus(Constant.RoomPKStatus.BEGINING);
roomPk.setBeginTime(System.currentTimeMillis());
Date now = new Date();
roomPk.setBeginTime(now);
//roomPk.getDuration()以秒为单位
roomPk.setEndTime(System.currentTimeMillis() + roomPk.getDuration() * 1000);
roomPk.setEndTime(DateTimeUtil.addSeconds(now, roomPk.getDuration().intValue()));
//保红蓝两队的信息
List<RoomPKTeam> roomPkTeams = saveRoomPkTeam(userVos);
roomPk.setTeams(roomPkTeams);
@@ -350,7 +353,7 @@ public class RoomPKService extends BaseService {
}catch (Exception e){
logger.error("publishRoomPKEvent roomPkBegin error",e);
}
roomPkDAO.save(roomPk);
roomPkMapper.updateById(roomPk);
RoomPKRecordVo pkRecordVo = buildRoomPKRecord(roomPk,false);
sendChatRoomMsg(roomUid,Constant.DefineProtocol.CUSTOM_MESS_HEAD_ROOM_PK,Constant.DefineProtocol.CUSTOM_MESS_SUB_ROOM_PK_MODE_START,pkRecordVo);
return pkRecordVo;
@@ -363,14 +366,14 @@ public class RoomPKService extends BaseService {
* @param endTime
* @throws Exception
*/
public void finishPkAct(Long roomUid,String pkId,Long endTime,Byte pkStatus){
public void finishPkAct(Long roomUid, String pkId, Date endTime, Byte pkStatus){
String lockVal = null;
try {
lockVal = jedisLockService.lock(RedisKey.lock_finish_pk.getKey(pkId),5000);
if(StringUtils.isEmpty(lockVal)){
throw new ServiceException(BusiStatus.SERVER_BUSY);
}
RoomPK roomPk = roomPkDAO.findById(pkId);
RoomPK roomPk = roomPkMapper.selectById(pkId);
if (roomPk == null) {
throw new ServiceException(BusiStatus.PK_NOT_EXIST);
}
@@ -382,7 +385,7 @@ public class RoomPKService extends BaseService {
RoomPKRecordVo recordVo = buildRoomPKRecord(roomPk, true);
//发送消息给服务端
sendChatRoomMsg(roomUid, Constant.DefineProtocol.CUSTOM_MESS_HEAD_ROOM_PK, Constant.DefineProtocol.CUSTOM_MESS_SUB_ROOM_PK_RESULT, recordVo);
roomPkDAO.save(roomPk);
roomPkMapper.updateById(roomPk);
//清理无用的redisKey
jedisService.hdel(RedisKey.room_pk_ing.getKey(), roomUid.toString());
cleanRedisKey(pkId);
@@ -397,7 +400,7 @@ public class RoomPKService extends BaseService {
* 统计PK数据礼物
* @param roomPk
*/
private RoomPK completeRoomPK(RoomPK roomPk, Long endTime) {
private RoomPK completeRoomPK(RoomPK roomPk, Date endTime) {
switch (roomPk.getVoteMode()) {
case Constant.RoomPKVoteType.GIFT:
roomPk = completeRoomPKAsGift(roomPk);
@@ -530,7 +533,7 @@ public class RoomPKService extends BaseService {
List<Long> blueTeamMem = Lists.newArrayList();
List<Long> redTeamMem = Lists.newArrayList();
for(QueueUserVo queueUserVo : userVos){
byte type = queueUserVo.getType().byteValue();
byte type = queueUserVo.getType();
switch (type){
case Constant.RoomPKTeamType.BULE_TEAM:
blueTeamMem.add(queueUserVo.getUid());
@@ -569,27 +572,27 @@ public class RoomPKService extends BaseService {
*/
public RoomPKRecordVo getPkInRoom(Long roomUid){
//查询最新一条的PK模式
Query query = new Query();
query.addCriteria(Criteria.where("roomUid").is(roomUid))
.with(Sort.by(Sort.Direction.DESC, "createTime"));
query.skip(0).limit(1);
List<RoomPK> list = roomPkDAO.findByQuery(query);
QueryWrapper<RoomPK> queryWrapper = Wrappers.query();
queryWrapper.lambda().eq(RoomPK::getRoomUid, roomUid).orderByDesc(RoomPK::getCreateTime);
queryWrapper.last("limit 1");
List<RoomPK> list = roomPkMapper.selectList(queryWrapper);
if(list==null||list.size()<=0){
return new RoomPKRecordVo();
}
Date now = new Date();
RoomPK roomPk = list.get(0);
//pk中,需要展示当前队伍的分数
if(roomPk.getPkStatus()==Constant.RoomPKStatus.BEGINING){
roomPk = completeRoomPK(roomPk,roomPk.getEndTime());
if(System.currentTimeMillis()>roomPk.getEndTime()){
if(now.after(roomPk.getEndTime())){
roomPk.setPkStatus(Constant.RoomPKStatus.FINISH);
roomPkDAO.save(roomPk);
roomPkMapper.updateById(roomPk);
}
}
RoomPKRecordVo roomPKRecordVo = buildRoomPKRecord(roomPk,true);
if(roomPk.getPkStatus()==Constant.RoomPKStatus.BEGINING
&&Constant.RoomPKVoteType.PERSON==roomPk.getVoteMode().byteValue()){
&&Constant.RoomPKVoteType.PERSON == roomPk.getVoteMode()){
roomPKRecordVo = setSendGiftUids(roomPKRecordVo);
}
return roomPKRecordVo;
@@ -603,16 +606,19 @@ public class RoomPKService extends BaseService {
* @return
*/
public RoomPKRecordPageVo getRoomPkRecord(Long roomUid, Integer page, Integer pageSize){
Integer start = (page - 1) * pageSize;
Query query = new Query();
int start = (page - 1) * pageSize;
List<Byte> pkStatus = Lists.newArrayList();
pkStatus.add(Constant.RoomPKStatus.FINISH);
pkStatus.add(Constant.RoomPKStatus.FORCE_FINISH);
query.addCriteria(Criteria.where("roomUid").is(roomUid).and("endTime").lt(System.currentTimeMillis()).and("pkStatus").in(pkStatus))
.with(Sort.by(Sort.Direction.DESC, "createTime"));
long count = roomPkDAO.count(query);
query.skip(start).limit(pageSize);
List<RoomPK> list = roomPkDAO.findByQuery(query);
Date now = new Date();
QueryWrapper<RoomPK> queryWrapper = Wrappers.query();
queryWrapper.lambda().eq(RoomPK::getRoomUid, roomUid).lt(RoomPK::getEndTime, now).in(RoomPK::getPkStatus, pkStatus)
.orderByDesc(RoomPK::getCreateTime);
long count = roomPkMapper.selectCount(queryWrapper);
queryWrapper.last("limit " + start + "," + pageSize);
List<RoomPK> list = roomPkMapper.selectList(queryWrapper);
return convertToRoomPkRecordPageVo(list,count);
}
@@ -814,21 +820,21 @@ public class RoomPKService extends BaseService {
* @return
*/
public RoomPKRecordVo getPKResult(String pkId) {
RoomPK roomPK = roomPkDAO.findById(pkId);
RoomPK roomPK = roomPkMapper.selectById(pkId);
if (roomPK == null) {
throw new ServiceException(BusiStatus.PK_NOT_EXIST);
}
Date now = new Date();
//如果发现PK已经过了结束时间但是还未结束
if(roomPK.getPkStatus()==Constant.RoomPKStatus.BEGINING&&
System.currentTimeMillis()>roomPK.getBeginTime()){
if(roomPK.getPkStatus() == Constant.RoomPKStatus.BEGINING
&& now.after(roomPK.getBeginTime())){
roomPK.setPkStatus(Constant.RoomPKStatus.FINISH);
roomPK = completeRoomPK(roomPK,roomPK.getEndTime());
roomPkDAO.save(roomPK);
roomPkMapper.updateById(roomPK);
//清理无用的redisKey
jedisService.hdel(RedisKey.room_pk_ing.getKey(),roomPK.getRoomUid().toString());
cleanRedisKey(pkId);
}
RoomPKRecordVo roomPKRecordVo = buildRoomPKRecord(roomPK,true);
return roomPKRecordVo;
return buildRoomPKRecord(roomPK,true);
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.accompany.business.mybatismapper.room.RoomPkMapper">
</mapper>

View File

@@ -1,7 +1,7 @@
package com.accompany.business.controller.room;
import com.accompany.business.model.room.RoomPK;
import com.accompany.core.exception.ServiceException;
import com.accompany.business.mongodb.document.room.RoomPK;
import com.accompany.business.service.room.RoomPKService;
import com.accompany.core.util.StringUtils;
import com.accompany.business.vo.room.PkMircoQueueVo;