首页-国家列表-后台

This commit is contained in:
khalil
2025-07-23 20:13:28 +08:00
parent 1405c6d2b2
commit 3bb360fcfe
2 changed files with 251 additions and 0 deletions

View File

@@ -0,0 +1,171 @@
package com.accompany.admin.service.room;
import com.accompany.admin.vo.roomtab.RoomTabAdminVo;
import com.accompany.business.model.roomtab.RoomTab;
import com.accompany.business.model.roomtab.RoomTabMap;
import com.accompany.business.service.homeV2.HomeV2Service;
import com.accompany.business.service.homeV2.sort.HomeRoomSortService;
import com.accompany.business.service.roomtab.RoomTabMapService;
import com.accompany.business.service.roomtab.RoomTabService;
import com.accompany.business.vo.home.HomeRoomVo;
import com.accompany.business.vo.roomtab.RoomTabHomeVo;
import com.accompany.common.constant.Constant;
import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.exception.ServiceException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class RoomTabRegionAdminService {
@Autowired
private HomeV2Service homeV2Service;
@Autowired
private HomeRoomSortService sortService;
@Autowired
private RoomTabService roomTabService;
@Autowired
private RoomTabMapService roomTabMapService;
public List<RoomTabAdminVo> listRegionTab() {
return roomTabService.lambdaQuery()
.gt(RoomTab::getHomeRegionId, Constant.status.delete)
.eq(RoomTab::getStatus, Constant.status.valid)
.list()
.stream()
.map(roomTab -> {
RoomTabAdminVo vo = new RoomTabAdminVo();
BeanUtils.copyProperties(roomTab, vo);
return vo;
}).toList();
}
public List<RoomTabHomeVo> list(Integer tabId, Integer partitionId) {
RoomTab roomTab = roomTabService.lambdaQuery()
.eq(RoomTab::getId, tabId)
.eq(RoomTab::getStatus, Constant.status.valid)
.one();
if (null == roomTab) {
throw new AdminServiceException(BusiStatus.PARAMERROR);
}
List<HomeRoomVo> roomVoList = pageRoomTab(roomTab, partitionId);
if (CollectionUtils.isEmpty(roomVoList)){
return Collections.emptyList();
}
return decorator(roomTab, roomVoList);
}
private List<HomeRoomVo> pageRoomTab(RoomTab roomTab, Integer partitionId) {
Set<Long> roomUidSet = homeV2Service.getPartitionPoolSet(partitionId);
if (CollectionUtils.isEmpty(roomUidSet)){
return Collections.emptyList();
}
List<HomeRoomVo> homeRoomList = sortService.sort(roomUidSet, partitionId, roomTab);
return homeV2Service.decorator(homeRoomList, partitionId);
}
private List<RoomTabHomeVo> decorator(RoomTab roomTab, List<HomeRoomVo> roomVoList) {
List<Long> uidList = roomVoList.stream().map(HomeRoomVo::getUid).toList();
Map<Long, RoomTabMap> roomTabMapMap = roomTabMapService.lambdaQuery().in(RoomTabMap::getRoomUid, uidList)
.eq(RoomTabMap::getTabId, roomTab.getId()).list()
.stream().collect(Collectors.toMap(RoomTabMap::getRoomUid, roomTabMap->roomTabMap));
return roomVoList.stream().map(playRoomVo -> {
RoomTabHomeVo vo = new RoomTabHomeVo();
vo.setRoomUid(playRoomVo.getUid());
vo.setErbanNo(playRoomVo.getErbanNo());
vo.setRoomTitle(playRoomVo.getTitle());
vo.setAvatar(playRoomVo.getAvatar());
vo.setRoomDesc(playRoomVo.getRoomDesc());
vo.setRoomTag(playRoomVo.getRoomTag());
vo.setMicUserCount(playRoomVo.getMicUserCount());
vo.setOnlineNum(playRoomVo.getOnlineNum());
vo.setHotValue(playRoomVo.getHotValue());
vo.setHomeType(playRoomVo.getHomeRoomType());
vo.setHourTop(playRoomVo.getHourTop());
//vo.setIsHourTop1(playRoomVo.getIsHourTop1() > 0);
//vo.setIsWeekTop1(playRoomVo.getIsWeekTop1() > 0);
vo.setCrossPking(playRoomVo.getCrossPking());
vo.setRegionId(playRoomVo.getRegionId());
vo.setRegionFlag(playRoomVo.getRegionFlag());
RoomTabMap home = roomTabMapMap.get(playRoomVo.getUid());
if (null != home) {
vo.setId(home.getId());
vo.setIsShow(home.getIsHome());
vo.setIsTop(home.getIsTop());
vo.setSeq(home.getSeq());
vo.setTopStart(home.getTopStart());
vo.setTopEnd(home.getTopEnd());
vo.setCreateTime(home.getCreateTime());
vo.setUpdateTime(home.getUpdateTime());
}
return vo;
}).collect(Collectors.toList());
}
public void delete(Long id) {
roomTabMapService.removeById(id);
}
public RoomTabMap get(Long id) {
return roomTabMapService.getById(id);
}
public void save(Long id, Long roomUid, Integer tabId, Integer seq, Boolean isTop, String topStart, String topEnd, Boolean isShow) {
RoomTabMap dbEntity = new RoomTabMap();
if (null != id){
RoomTabMap roomTabMap = roomTabMapService.getById(id);
if (null == roomTabMap){
throw new AdminServiceException(BusiStatus.PARAMERROR);
}
BeanUtils.copyProperties(roomTabMap, dbEntity);
} {
dbEntity.setCreateTime(new Date());
}
dbEntity.setRoomUid(roomUid);
dbEntity.setTabId(tabId);
dbEntity.setSeq(seq);
dbEntity.setIsTop(isTop);
dbEntity.setIsHome(isShow);
if (!isTop) {
// 不置顶排序变为0置顶时间为空
dbEntity.setSeq(0);
dbEntity.setTopStart(null);
dbEntity.setTopEnd(null);
} else {
if (null == seq || seq < 1){
throw new AdminServiceException("置顶排序位置需要大于0");
}
dbEntity.setSeq(seq);
// 判断置顶时间
Date startDate = DateTimeUtil.convertStrToDate(topStart);
Date endDate = DateTimeUtil.convertStrToDate(topEnd);
if (startDate != null && endDate != null && endDate.getTime() > startDate.getTime()) {
dbEntity.setTopStart(startDate);
dbEntity.setTopEnd(endDate);
} else {
throw new ServiceException(BusiStatus.NO_TIME_SET_FOR_TOPPING);
}
}
dbEntity.setUpdateTime(new Date());
roomTabMapService.saveOrUpdate(dbEntity);
}
}

View File

@@ -0,0 +1,80 @@
package com.accompany.admin.controller.room;
import com.accompany.admin.controller.BaseController;
import com.accompany.admin.service.room.RoomTabRegionAdminService;
import com.accompany.admin.vo.roomtab.RoomTabAdminVo;
import com.accompany.business.model.roomtab.RoomTabHome;
import com.accompany.business.model.roomtab.RoomTabMap;
import com.accompany.business.vo.roomtab.RoomTabHomeVo;
import com.accompany.common.result.BusiResult;
import com.accompany.common.status.BusiStatus;
import com.accompany.core.exception.AdminServiceException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "首页国家列表")
@RestController
@RequestMapping("/admin/roomTabRegion")
public class RoomTabRegionAdminController extends BaseController {
@Autowired
private RoomTabRegionAdminService service;
@ApiOperation(value = "获取国家")
@GetMapping("/listRegionTab")
public BusiResult<List<RoomTabAdminVo>> listRegionTab() {
List<RoomTabAdminVo> voList = service.listRegionTab();
return BusiResult.success(voList);
}
@ApiOperation(value = "获取国家列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "tabId", value = "标签id"),
@ApiImplicitParam(name = "partitionId", value = "分区id"),
})
@GetMapping("/list")
public BusiResult<List<RoomTabHomeVo>> list(Integer tabId, Integer partitionId) {
List<RoomTabHomeVo> voList = service.list(tabId, partitionId);
return BusiResult.success(voList);
}
@PostMapping("/delete")
public BusiResult<Void> deleteRoomTabHome(Long id) {
if (null == id) {
throw new AdminServiceException(BusiStatus.PARAMETERILLEGAL);
}
service.delete(id);
return BusiResult.success();
}
@GetMapping("/get")
public BusiResult<RoomTabMap> get(Long id) {
RoomTabMap roomTabMap = service.get(id);
return BusiResult.success(roomTabMap);
}
@PostMapping("/save")
public BusiResult<Void> save(Long id, Long roomUid, Integer tabId, Boolean isTop, Integer seq, String topStart, String topEnd, Boolean isShow) {
if (seq == null) {
seq = 99;
}
if (isTop == null) {
isTop = false;
}
if (isShow == null) {
isShow = false;
}
service.save(id, roomUid, tabId, seq, isTop, topStart, topEnd, isShow);
return BusiResult.success();
}
}