package com.panzhihua.service_community.service.impl;
|
|
import static java.util.Objects.isNull;
|
import static java.util.Objects.nonNull;
|
|
import java.util.Date;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.panzhihua.common.model.dtos.community.microCommercialStreet.McsInfoDTO;
|
import com.panzhihua.common.model.dtos.community.microCommercialStreet.PageMcsInformationDTO;
|
import com.panzhihua.common.model.dtos.community.microCommercialStreet.SetShelfForInfoDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.microCommercialStreet.McsInformationVO;
|
import com.panzhihua.common.model.vos.community.microCommercialStreet.McsMerchantVO;
|
import com.panzhihua.common.model.vos.community.microCommercialStreet.TopStatisticsVO;
|
import com.panzhihua.common.utlis.DateUtils;
|
import com.panzhihua.service_community.dao.McsGameDAO;
|
import com.panzhihua.service_community.dao.McsInformationDAO;
|
import com.panzhihua.service_community.dao.McsMerchantDAO;
|
import com.panzhihua.service_community.entity.McsInformation;
|
import com.panzhihua.service_community.entity.McsMerchant;
|
import com.panzhihua.service_community.service.McsInformationService;
|
|
/**
|
* (McsInformation)表服务实现类
|
*
|
* @author makejava
|
* @since 2021-12-28 14:37:10
|
*/
|
@Service("mcsInformationService")
|
public class McsInformationServiceImpl extends ServiceImpl<McsInformationDAO, McsInformation>
|
implements McsInformationService {
|
|
@Resource
|
private McsGameDAO mcsGameDAO;
|
@Resource
|
private McsMerchantDAO mcsMerchantDAO;
|
|
/**
|
* 分页查询戳戳资讯
|
* @param pageMcsInformationDTO
|
* @return
|
*/
|
@Override
|
public R pageMcsInfo(PageMcsInformationDTO pageMcsInformationDTO) {
|
Page page = new Page<>();
|
page.setSize(pageMcsInformationDTO.getPageSize());
|
page.setCurrent(pageMcsInformationDTO.getPageNum());
|
IPage<McsInformationVO> mcsInfos = this.baseMapper.pageMcsInfo(page, pageMcsInformationDTO);
|
return R.ok(mcsInfos);
|
}
|
|
/**
|
* 上架/下架戳戳资讯
|
* @param setShelfForInfoDTO
|
* @return
|
*/
|
@Override
|
public R setShelfForMcsInfo(SetShelfForInfoDTO setShelfForInfoDTO) {
|
McsInformation mcsInformation = this.baseMapper.selectById(setShelfForInfoDTO.getInfoId());
|
if (isNull(mcsInformation)) {
|
return R.fail("修改数据不存在");
|
}
|
Integer type = setShelfForInfoDTO.getType();
|
if (type.equals(1)) {
|
//上架
|
McsMerchant mcsMerchant = mcsMerchantDAO.selectById(mcsInformation.getMerchantId());
|
Integer publishLimit = mcsMerchant.getPublishLimit();
|
Integer publishCount = mcsGameDAO.selectPublishCount(mcsInformation.getMerchantId());
|
if (publishCount >= publishLimit) {
|
return R.fail("空闲戳戳点不足");
|
}
|
mcsInformation.setStatus(2);
|
} else if (type.equals(2)) {
|
//下架
|
mcsInformation.setStatus(3);
|
} else {
|
return R.fail("未知错误");
|
}
|
int num = this.baseMapper.updateById(mcsInformation);
|
if (num > 0) {
|
return R.ok();
|
}
|
return R.fail("修改失败,请重新尝试");
|
}
|
|
/**
|
* 删除戳戳资讯
|
* @param infoId
|
* @param userId
|
* @return
|
*/
|
@Override
|
public R deleteMcsInfo(Long infoId, Long userId) {
|
McsInformation mcsInformation = this.baseMapper.selectById(infoId);
|
if (isNull(mcsInformation)) {
|
return R.fail("修改数据不存在");
|
}
|
mcsInformation.setIsDel(true);
|
mcsInformation.setStatus(McsInformation.Status.yxj);
|
mcsInformation.setUpdatedBy(userId);
|
int num = this.baseMapper.updateById(mcsInformation);
|
if (num > 0) {
|
return R.ok();
|
}
|
return R.fail("删除失败,请重新尝试");
|
}
|
|
/**
|
* 戳戳资讯顶部统计数据
|
* @param userId
|
* @return
|
*/
|
@Override
|
public R getTopStatistics(Long userId) {
|
McsMerchant mcsMerchant = mcsMerchantDAO.selectOne(new QueryWrapper<McsMerchant>().lambda().eq(McsMerchant::getUserId, userId));
|
if (isNull(mcsMerchant)) {
|
return R.fail("未查询到商家信息");
|
}
|
TopStatisticsVO topStatisticsVO = new TopStatisticsVO();
|
topStatisticsVO.setExpireAt(mcsMerchant.getExpireAt());
|
if (nonNull(mcsMerchant.getExpireAt())) {
|
int surplusLitDays = DateUtils.retrieveRemainingDays(mcsMerchant.getExpireAt());
|
topStatisticsVO.setSurplusLitDays(surplusLitDays > 0 ? surplusLitDays : 0);
|
}
|
|
Integer publishLimit = mcsMerchant.getPublishLimit();
|
Integer publishCount = mcsGameDAO.selectPublishCount(mcsMerchant.getId());
|
Integer idleTotal = publishLimit - publishCount;
|
topStatisticsVO.setIdleTotal(idleTotal > 0 ? idleTotal : 0);
|
return R.ok(topStatisticsVO);
|
}
|
|
/**
|
* 新增戳戳资讯
|
* @param mcsInfoDTO
|
* @return
|
*/
|
@Override
|
public R addMcsInfo(McsInfoDTO mcsInfoDTO) {
|
Long userId = mcsInfoDTO.getCreatedBy();
|
McsMerchant mcsMerchant = mcsMerchantDAO.selectOne(new QueryWrapper<McsMerchant>().lambda().eq(McsMerchant::getUserId, userId));
|
if (isNull(mcsMerchant)) {
|
return R.fail("未查询到商家信息");
|
}
|
McsInformation mcsInformation = new McsInformation();
|
BeanUtils.copyProperties(mcsInfoDTO, mcsInformation);
|
mcsInformation.setMerchantId(mcsMerchant.getId());
|
mcsInformation.setStatus(McsInformation.Status.wfb);
|
int num = this.baseMapper.insert(mcsInformation);
|
if (num > 0) {
|
return R.ok();
|
}
|
return R.fail("新增失败,请重新尝试");
|
}
|
|
/**
|
* 编辑戳戳资讯
|
* @param mcsInfoDTO
|
* @return
|
*/
|
@Override
|
public R putMcsInfo(McsInfoDTO mcsInfoDTO) {
|
McsInformation mcsInformation = this.baseMapper.selectById(mcsInfoDTO.getId());
|
if (isNull(mcsInformation)) {
|
return R.fail("资源不存在");
|
}
|
BeanUtils.copyProperties(mcsInfoDTO, mcsInformation);
|
int num = this.baseMapper.updateById(mcsInformation);
|
if (num > 0) {
|
return R.ok();
|
}
|
return R.fail("编辑失败,请重新尝试");
|
}
|
|
/**
|
* 发布戳戳资讯
|
* @param infoId
|
* @param userId
|
* @return
|
*/
|
@Override
|
public R publishMcsInfo(Long infoId, Long userId) {
|
McsInformation mcsInformation = this.baseMapper.selectById(infoId);
|
if (isNull(mcsInformation)) {
|
return R.fail("资源不存在");
|
}
|
McsMerchant mcsMerchant = mcsMerchantDAO.selectById(mcsInformation.getMerchantId());
|
Integer publishLimit = mcsMerchant.getPublishLimit();
|
Integer publishCount = mcsGameDAO.selectPublishCount(mcsInformation.getMerchantId());
|
if (publishCount >= publishLimit) {
|
return R.fail("空闲戳戳点不足");
|
}
|
mcsInformation.setStatus(McsInformation.Status.yfb);
|
mcsInformation.setPublishAt(new Date());
|
int num = this.baseMapper.updateById(mcsInformation);
|
if (num > 0) {
|
return R.ok();
|
}
|
return R.fail("发布失败,请重新尝试");
|
}
|
|
/**
|
* h5分页查询戳戳资讯
|
* @param pageMcsInformationDTO
|
* @return
|
*/
|
@Override
|
public R pageH5McsInfo(PageMcsInformationDTO pageMcsInformationDTO) {
|
Page page = new Page<>();
|
page.setSize(pageMcsInformationDTO.getPageSize());
|
page.setCurrent(pageMcsInformationDTO.getPageNum());
|
IPage<McsInformationVO> mcsInfos = this.baseMapper.pageH5McsInfo(page, pageMcsInformationDTO);
|
return R.ok(mcsInfos);
|
}
|
|
/**
|
* 资讯详情
|
* @param infoId
|
* @return
|
*/
|
@Override
|
public R getMcsInfo(Long infoId) {
|
McsInformation mcsInformation = this.baseMapper.selectById(infoId);
|
if (isNull(mcsInformation)) {
|
return R.fail("资源不存在");
|
}
|
McsInformationVO mcsInformationVO = new McsInformationVO();
|
BeanUtils.copyProperties(mcsInformation, mcsInformationVO);
|
McsMerchant mcsMerchant = mcsMerchantDAO.selectById(mcsInformation.getMerchantId());
|
McsMerchantVO mcsMerchantVO = new McsMerchantVO();
|
if (nonNull(mcsMerchant)) {
|
mcsMerchantVO.setId(mcsMerchant.getId());
|
mcsMerchantVO.setName(mcsMerchant.getName());
|
mcsMerchantVO.setLogo(mcsMerchant.getLogo());
|
mcsMerchantVO.setIntroduction(mcsMerchant.getIntroduction());
|
mcsMerchantVO.setLat(mcsMerchant.getLat());
|
mcsMerchantVO.setLon(mcsMerchant.getLon());
|
mcsMerchantVO.setAddress(mcsMerchant.getAddress());
|
}
|
mcsInformationVO.setMerchantInfo(mcsMerchantVO);
|
return R.ok(mcsInformationVO);
|
}
|
}
|