|  |  |  | 
|---|
|  |  |  | package com.doumee.service.business.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.doumee.core.constants.Constants; | 
|---|
|  |  |  | import com.doumee.core.model.PageData; | 
|---|
|  |  |  | import com.doumee.core.model.PageWrap; | 
|---|
|  |  |  | import com.doumee.core.utils.Utils; | 
|---|
|  |  |  | import com.doumee.dao.business.RefundMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.model.Refund; | 
|---|
|  |  |  | import com.doumee.dao.business.join.RefundJoinMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.model.*; | 
|---|
|  |  |  | import com.doumee.dao.business.model.RefundPlatExportVO; | 
|---|
|  |  |  | import com.doumee.dao.business.vo.GoodsorderExportVO; | 
|---|
|  |  |  | import com.doumee.dao.system.model.SystemUser; | 
|---|
|  |  |  | import com.doumee.service.business.RefundService; | 
|---|
|  |  |  | 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.github.yulichang.wrapper.MPJLambdaWrapper; | 
|---|
|  |  |  | import org.apache.commons.lang3.StringUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.util.CollectionUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.sql.Ref; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Objects; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 退款信息表Service实现 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RefundMapper refundMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RefundJoinMapper refundJoinMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public String create(Refund refund) { | 
|---|
|  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public Refund findOne(Refund refund) { | 
|---|
|  |  |  | QueryWrapper<Refund> wrapper = new QueryWrapper<>(refund); | 
|---|
|  |  |  | return refundMapper.selectOne(wrapper); | 
|---|
|  |  |  | return refundMapper.selectOne(wrapper.last(" limit 1")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | QueryWrapper<Refund> wrapper = new QueryWrapper<>(refund); | 
|---|
|  |  |  | return refundMapper.selectList(wrapper); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public PageData<Refund> findPage(PageWrap<Refund> pageWrap) { | 
|---|
|  |  |  | IPage<Refund> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|---|
|  |  |  | QueryWrapper<Refund> queryWrapper = new QueryWrapper<>(); | 
|---|
|  |  |  | Utils.MP.blankToNull(pageWrap.getModel()); | 
|---|
|  |  |  | if (pageWrap.getModel().getId() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getId, pageWrap.getModel().getId()); | 
|---|
|  |  |  | public PageData<Refund>  findPlatPage(PageWrap<Refund> pageWrap) { | 
|---|
|  |  |  | pageWrap.getModel().setTypeList(new ArrayList<>()); | 
|---|
|  |  |  | //强制结算退款 和 结算后退款 | 
|---|
|  |  |  | pageWrap.getModel().getTypeList().add(Constants.REFUND_TYPE.PLAT_FORCE.getKey()); | 
|---|
|  |  |  | pageWrap.getModel().getTypeList().add(Constants.REFUND_TYPE.BACK.getKey()); | 
|---|
|  |  |  | pageWrap.getModel().setStatus(Constants.TWO); | 
|---|
|  |  |  | IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|---|
|  |  |  | MPJLambdaWrapper<Refund> queryWrapper = initQueryParamByModel(pageWrap.getModel()); | 
|---|
|  |  |  | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCreatorName()) | 
|---|
|  |  |  | ,SystemUser::getRealname | 
|---|
|  |  |  | ,pageWrap.getModel().getCreatorName()); | 
|---|
|  |  |  | IPage<Refund> refundIPage = refundJoinMapper.selectJoinPage(page, Refund.class, queryWrapper); | 
|---|
|  |  |  | if (!CollectionUtils.isEmpty(refundIPage.getRecords())){ | 
|---|
|  |  |  | refundIPage.getRecords().forEach(s->{ | 
|---|
|  |  |  | s.setMoney(Constants.translateMoney(s.getMoney())); | 
|---|
|  |  |  | s.setCanBalance(Constants.translateMoney(s.getCanBalance())); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getCreateDate() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().ge(Refund::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); | 
|---|
|  |  |  | queryWrapper.lambda().le(Refund::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getCreator() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getCreator, pageWrap.getModel().getCreator()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getEditDate() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().ge(Refund::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); | 
|---|
|  |  |  | queryWrapper.lambda().le(Refund::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getEditor() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getEditor, pageWrap.getModel().getEditor()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getIsdeleted() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getIsdeleted, pageWrap.getModel().getIsdeleted()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getInfo() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getInfo, pageWrap.getModel().getInfo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getCode() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getCode, pageWrap.getModel().getCode()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getMemberId() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getMemberId, pageWrap.getModel().getMemberId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getMoney() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getMoney, pageWrap.getModel().getMoney()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getStatus() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getStatus, pageWrap.getModel().getStatus()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getPreOrderid() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getPreOrderid, pageWrap.getModel().getPreOrderid()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getOnlineOrderid() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getOnlineOrderid, pageWrap.getModel().getOnlineOrderid()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getPayWay() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getPayWay, pageWrap.getModel().getPayWay()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getDoneDate() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().ge(Refund::getDoneDate, Utils.Date.getStart(pageWrap.getModel().getDoneDate())); | 
|---|
|  |  |  | queryWrapper.lambda().le(Refund::getDoneDate, Utils.Date.getEnd(pageWrap.getModel().getDoneDate())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getType() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getType, pageWrap.getModel().getType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getObjId() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getObjId, pageWrap.getModel().getObjId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (pageWrap.getModel().getReason() != null) { | 
|---|
|  |  |  | queryWrapper.lambda().eq(Refund::getReason, pageWrap.getModel().getReason()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for(PageWrap.SortData sortData: pageWrap.getSorts()) { | 
|---|
|  |  |  | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { | 
|---|
|  |  |  | queryWrapper.orderByDesc(sortData.getProperty()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | queryWrapper.orderByAsc(sortData.getProperty()); | 
|---|
|  |  |  | return PageData.from(refundIPage); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<RefundPlatExportVO>  findPlatExportPage( Refund pageWrap) { | 
|---|
|  |  |  | pageWrap.setTypeList(new ArrayList<>()); | 
|---|
|  |  |  | //强制结算退款 和 结算后退款 | 
|---|
|  |  |  | pageWrap.getTypeList().add(Constants.REFUND_TYPE.PLAT_FORCE.getKey()); | 
|---|
|  |  |  | pageWrap.getTypeList().add(Constants.REFUND_TYPE.BACK.getKey()); | 
|---|
|  |  |  | pageWrap.setStatus(Constants.TWO); | 
|---|
|  |  |  | MPJLambdaWrapper<Refund> queryWrapper = initQueryParamByModel(pageWrap); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<Refund> list = refundJoinMapper.selectJoinList(  Refund.class,queryWrapper); | 
|---|
|  |  |  | List<RefundPlatExportVO> result = new ArrayList<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(list!=null){ | 
|---|
|  |  |  | for(Refund order : list){ | 
|---|
|  |  |  | RefundPlatExportVO vo = new RefundPlatExportVO(); | 
|---|
|  |  |  | vo.setId(order.getId()); | 
|---|
|  |  |  | vo.setObjId(order.getObjId()); | 
|---|
|  |  |  | vo.setOpenid(order.getOpenid()); | 
|---|
|  |  |  | vo.setDoneDate(order.getDoneDate()); | 
|---|
|  |  |  | vo.setMoney(Constants.formatDecimalNum(order.getMoney()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); | 
|---|
|  |  |  | vo.setCanBanlance(Constants.formatDecimalNum(order.getCanBalance()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); | 
|---|
|  |  |  | vo.setOnlineOrderid(order.getOnlineOrderid()); | 
|---|
|  |  |  | vo.setPayOnlineOrderid(order.getPayOnlineOrderid()); | 
|---|
|  |  |  | vo.setCreatorName(order.getCreatorName()); | 
|---|
|  |  |  | vo.setReason(order.getReason()); | 
|---|
|  |  |  | result.add(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return PageData.from(refundMapper.selectPage(page, queryWrapper)); | 
|---|
|  |  |  | return  result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private MPJLambdaWrapper<Refund> initQueryParamByModel(Refund model) { | 
|---|
|  |  |  | MPJLambdaWrapper<Refund> queryWrapper = new MPJLambdaWrapper<>(); | 
|---|
|  |  |  | Utils.MP.blankToNull(model); | 
|---|
|  |  |  | //只查询支付成功的 | 
|---|
|  |  |  | queryWrapper.selectAll(Refund.class); | 
|---|
|  |  |  | queryWrapper.selectAs(SystemUser::getRealname, Refund::getCreatorName); | 
|---|
|  |  |  | queryWrapper.selectAs(Member::getOpenid, Refund::getOpenid); | 
|---|
|  |  |  | queryWrapper.leftJoin(Goodsorder.class, Goodsorder::getId  ,Refund::getObjId); | 
|---|
|  |  |  | queryWrapper.leftJoin(Member.class, Member::getId  ,Goodsorder::getMemberId); | 
|---|
|  |  |  | queryWrapper.leftJoin(SystemUser.class, SystemUser::getId  ,Refund::getCreator); | 
|---|
|  |  |  | //时间段筛选 | 
|---|
|  |  |  | if (Objects.nonNull(model.getStartDate())) { | 
|---|
|  |  |  | queryWrapper.ge(Refund::getDoneDate, Utils.Date.getStart(model.getStartDate())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (Objects.nonNull(model.getEndDate())) { | 
|---|
|  |  |  | queryWrapper.le(Refund::getDoneDate, Utils.Date.getEnd(model.getEndDate())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        queryWrapper.ge(model.getStartDate()!=null, Refund::getDoneDate, model.getStartDate()); | 
|---|
|  |  |  | //        queryWrapper.le(model.getEndDate()!=null, Refund::getDoneDate, model.getEndDate()); | 
|---|
|  |  |  | queryWrapper.eq(model.getCreator() !=null,Refund::getCreator,model.getCreator()); | 
|---|
|  |  |  | queryWrapper.eq(model.getStatus() !=null,Refund::getStatus,model.getStatus()); | 
|---|
|  |  |  | queryWrapper.in(model.getTypeList() !=null,Refund::getType,model.getTypeList()); | 
|---|
|  |  |  | queryWrapper.eq(model.getType() !=null,Refund::getType,model.getType()); | 
|---|
|  |  |  | queryWrapper.like(model.getPayOnlineOrderid() !=null,Goodsorder::getOnlineOrderid,model.getPayOnlineOrderid()); | 
|---|
|  |  |  | queryWrapper.like(model.getOnlineOrderid() !=null,Refund::getOnlineOrderid,model.getOnlineOrderid()); | 
|---|
|  |  |  | queryWrapper.like(model.getOpenid() !=null,Member::getOpenid,model.getOpenid()); | 
|---|
|  |  |  | queryWrapper.like(model.getCreatorName() !=null,SystemUser::getRealname,model.getCreatorName()); | 
|---|
|  |  |  | queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO); | 
|---|
|  |  |  | queryWrapper.orderByDesc(Refund::getDoneDate); | 
|---|
|  |  |  | return  queryWrapper; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public PageData<Refund> findPage(PageWrap<Refund> pageWrap) { | 
|---|
|  |  |  | IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|---|
|  |  |  | MPJLambdaWrapper<Refund> queryWrapper = initQueryParamByModel(pageWrap.getModel()); | 
|---|
|  |  |  | return PageData.from(refundJoinMapper.selectJoinPage(page, Refund.class,queryWrapper)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|