package com.doumee.service.business.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.doumee.core.constants.Constants;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.core.utils.Utils;
|
import com.doumee.dao.business.RevenueMapper;
|
import com.doumee.dao.business.model.Revenue;
|
import com.doumee.service.business.RevenueService;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* 收支记录Service实现
|
* @author rk
|
* @date 2026/04/10
|
*/
|
@Service
|
public class RevenueServiceImpl implements RevenueService {
|
|
@Autowired
|
private RevenueMapper revenueMapper;
|
|
@Override
|
public Integer create(Revenue revenue) {
|
revenueMapper.insert(revenue);
|
return revenue.getId();
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
revenueMapper.update(new UpdateWrapper<Revenue>().lambda()
|
.set(Revenue::getDeleted, Constants.ONE)
|
.eq(Revenue::getId, id));
|
}
|
|
@Override
|
public void delete(Revenue revenue) {
|
UpdateWrapper<Revenue> deleteWrapper = new UpdateWrapper<>(revenue);
|
revenueMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (ids == null || ids.isEmpty()) {
|
return;
|
}
|
revenueMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(Revenue revenue) {
|
revenueMapper.updateById(revenue);
|
}
|
|
@Override
|
public void updateByIdInBatch(List<Revenue> revenues) {
|
if (revenues == null || revenues.isEmpty()) {
|
return;
|
}
|
for (Revenue revenue : revenues) {
|
this.updateById(revenue);
|
}
|
}
|
|
@Override
|
public Revenue findById(Integer id) {
|
Revenue revenue = revenueMapper.selectById(id);
|
if (Objects.isNull(revenue)) {
|
throw new BusinessException(ResponseStatus.DATA_EMPTY);
|
}
|
return revenue;
|
}
|
|
@Override
|
public Revenue findOne(Revenue revenue) {
|
QueryWrapper<Revenue> wrapper = new QueryWrapper<>(revenue);
|
return revenueMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<Revenue> findList(Revenue revenue) {
|
QueryWrapper<Revenue> wrapper = new QueryWrapper<>(revenue);
|
return revenueMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<Revenue> findPage(PageWrap<Revenue> pageWrap) {
|
IPage<Revenue> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<Revenue> queryWrapper = new QueryWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
pageWrap.getModel().setDeleted(Constants.ZERO);
|
// 用户主键
|
if (pageWrap.getModel().getMemberId() != null) {
|
queryWrapper.lambda().eq(Revenue::getMemberId, pageWrap.getModel().getMemberId());
|
}
|
// 时间范围
|
if (pageWrap.getModel().getStartTime() != null) {
|
queryWrapper.lambda().ge(Revenue::getCreateTime, pageWrap.getModel().getStartTime());
|
}
|
if (pageWrap.getModel().getEndTime() != null) {
|
queryWrapper.lambda().le(Revenue::getCreateTime, pageWrap.getModel().getEndTime());
|
}
|
// 收支类型
|
if (pageWrap.getModel().getOptType() != null) {
|
queryWrapper.lambda().eq(Revenue::getOptType, pageWrap.getModel().getOptType());
|
}
|
// 订单号模糊查询
|
if (StringUtils.isNotBlank(pageWrap.getModel().getOrderNo())) {
|
queryWrapper.lambda().like(Revenue::getOrderNo, pageWrap.getModel().getOrderNo());
|
}
|
// 是否生效
|
if (pageWrap.getModel().getVaildStatus() != null) {
|
queryWrapper.lambda().eq(Revenue::getVaildStatus, pageWrap.getModel().getVaildStatus());
|
}
|
// 默认按创建时间倒序
|
queryWrapper.lambda().orderByDesc(Revenue::getCreateTime);
|
for (PageWrap.SortData sortData : pageWrap.getSorts()) {
|
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
|
queryWrapper.orderByDesc(sortData.getProperty());
|
} else {
|
queryWrapper.orderByAsc(sortData.getProperty());
|
}
|
}
|
PageData<Revenue> result = PageData.from(revenueMapper.selectPage(page, queryWrapper));
|
// 金额分转元
|
if (result != null && result.getRecords() != null) {
|
for (Revenue model : result.getRecords()) {
|
model.setAmountInfo(Constants.getFormatMoney(model.getAmount()));
|
}
|
}
|
return result;
|
}
|
|
@Override
|
public long count(Revenue revenue) {
|
QueryWrapper<Revenue> wrapper = new QueryWrapper<>(revenue);
|
return revenueMapper.selectCount(wrapper);
|
}
|
|
}
|