package com.pz.system.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pz.common.exception.ServiceException; import com.pz.system.domain.bo.TotalOrderBo; import com.pz.system.mapper.BusinessMapper; import com.pz.system.mapper.TotalOrderMapper; import com.pz.system.service.ITotalOrderService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.pz.system.domain.bo.UserRefundBo; import com.pz.system.domain.vo.UserRefundVo; import com.pz.system.domain.UserRefund; import com.pz.system.mapper.UserRefundMapper; import com.pz.system.service.IUserRefundService; import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Collection; import java.util.Optional; /** * 用户退款Service业务层处理 * * @author ruoyi * @date 2023-09-12 */ @RequiredArgsConstructor @Service public class UserRefundServiceImpl implements IUserRefundService { private final UserRefundMapper baseMapper; private final TotalOrderMapper totalOrderMapper; private final BusinessMapper businessMapper; private final ITotalOrderService iTotalOrderServicer; /** * 查询用户退款 */ @Override public UserRefundVo queryById(Integer id) { return baseMapper.selectVoById(id); } /** * 查询用户退款列表 */ @Override public TableDataInfo<UserRefundVo> queryPageList(UserRefundBo bo, PageQuery pageQuery) { LambdaQueryWrapper<UserRefund> lqw = buildQueryWrapper(bo); Page<UserRefundVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Optional.ofNullable(result.getRecords()).ifPresent(userRefundVos -> { userRefundVos.forEach(userRefundVo -> { Optional.ofNullable(totalOrderMapper.selectVoById(userRefundVo.getOrderId())) .ifPresent(totalOrderVo -> { userRefundVo.setRemark(totalOrderVo.getRefundReason()); userRefundVo.setOrderSn(totalOrderVo.getOrderSn()); userRefundVo.setPayMoney(new BigDecimal(totalOrderVo.getPayMoney()).setScale(2, BigDecimal.ROUND_HALF_UP)); }); Optional.ofNullable(businessMapper.selectVoById(userRefundVo.getBusinessId())).ifPresent( businessVo -> { userRefundVo.setBname(businessVo.getName()); } ); }); }); return TableDataInfo.build(result); } /** * 查询用户退款列表 */ @Override public List<UserRefundVo> queryList(UserRefundBo bo) { LambdaQueryWrapper<UserRefund> lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper<UserRefund> buildQueryWrapper(UserRefundBo bo) { Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<UserRefund> lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getRefundNo()), UserRefund::getRefundNo, bo.getRefundNo()); lqw.eq(bo.getOrderId() != null, UserRefund::getOrderId, bo.getOrderId()); lqw.eq(bo.getBusinessId() != null, UserRefund::getBusinessId, bo.getBusinessId()); lqw.eq(bo.getSonOrderId() != null, UserRefund::getSonOrderId, bo.getSonOrderId()); lqw.eq(bo.getSonOrderStatus() != null, UserRefund::getSonOrderStatus, bo.getSonOrderStatus()); lqw.eq(StringUtils.isNotBlank(bo.getPhone()), UserRefund::getPhone, bo.getPhone()); lqw.eq(bo.getStatus() != null, UserRefund::getStatus, bo.getStatus()); return lqw; } /** * 新增用户退款 */ @Override public Boolean insertByBo(UserRefundBo bo) { UserRefund add = BeanUtil.toBean(bo, UserRefund.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } return flag; } /** * 修改用户退款 */ @Override public Boolean updateByBo(UserRefundBo bo) { UserRefund update = BeanUtil.toBean(bo, UserRefund.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(UserRefund entity) { //TODO 做一些数据校验,如唯一约束 } /** * 批量删除用户退款 */ @Override public Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid) { if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; } @Override public Boolean refund(UserRefundBo bo) { UserRefundVo userRefundVo = baseMapper.selectVoById(bo); if(userRefundVo.getStatus() != 0){ throw new ServiceException("已处理!"); } TotalOrderBo totalOrderBo = new TotalOrderBo(); totalOrderBo.setId(userRefundVo.getOrderId().longValue()); totalOrderBo.setIsPcRefund(1); totalOrderBo.setIsPcRefundStatus(bo.getStatus()); Boolean aBoolean = iTotalOrderServicer.refundOrder(totalOrderBo); if(aBoolean){ UserRefund refund = new UserRefund(); refund.setId(bo.getId()); refund.setStatus(bo.getStatus()); int i = baseMapper.updateById(refund); return i > 0; } return false; } }