package com.doumee.service.business.impl;
|
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.model.LoginUserInfo;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.core.utils.DateUtil;
|
import com.doumee.core.utils.RedisUtil;
|
import com.doumee.core.utils.Utils;
|
import com.doumee.core.wx.WxMiniUtilService;
|
import com.doumee.dao.admin.response.AftersaleListResponse;
|
import com.doumee.dao.business.AftersaleMapper;
|
import com.doumee.dao.business.FundMapper;
|
import com.doumee.dao.business.GoodsorderDetailMapper;
|
import com.doumee.dao.business.GoodsorderMapper;
|
import com.doumee.dao.business.join.AftersaleJoinMapper;
|
import com.doumee.dao.business.model.*;
|
import com.doumee.dao.web.dto.MultiFileDTO;
|
import com.doumee.dao.web.request.DealIntegralRequest;
|
import com.doumee.dao.web.request.goods.AftersaleCancelRequest;
|
import com.doumee.dao.web.request.goods.AftersaleCreateRequest;
|
import com.doumee.dao.web.request.goods.AftersalePostRequest;
|
import com.doumee.service.business.AftersaleService;
|
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.service.business.IntegralService;
|
import com.doumee.service.business.MultifileService;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.checkerframework.checker.units.qual.C;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 商品售后信息表Service实现
|
* @author 江蹄蹄
|
* @date 2023/04/03 17:54
|
*/
|
@Service
|
public class AftersaleServiceImpl implements AftersaleService {
|
@Autowired
|
private RedisTemplate<String, Object> redisTemplate;
|
@Autowired
|
SystemDictDataBiz systemDictDataBiz;
|
@Autowired
|
private AftersaleMapper aftersaleMapper;
|
@Autowired
|
private GoodsorderMapper goodsorderMapper;
|
@Autowired
|
private GoodsorderDetailMapper goodsorderDetailMapper;
|
@Autowired
|
private AftersaleJoinMapper aftersaleJoinMapper;
|
@Autowired
|
@Lazy
|
private MultifileService multifileService;
|
@Autowired
|
@Lazy
|
private IntegralService integralService;
|
|
@Autowired
|
private FundMapper fundMapper;
|
|
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public Integer create(AftersaleCreateRequest model) {
|
//校验请求参数
|
GoodsorderDetail detail = isParamValid(model);
|
|
Date date = new Date();
|
Aftersale aftersale = new Aftersale();
|
aftersale.setType(model.getType());
|
aftersale.setContent(model.getContent());
|
aftersale.setDetailId(model.getDetailId());
|
aftersale.setIsdeleted(Constants.ZERO);
|
aftersale.setCreateDate(date);
|
aftersale.setOrderId(detail.getOrderId());
|
aftersale.setStatus(Constants.AftersaleStatus.APPLY_ING.getKey());
|
aftersale.setInfo(model.getInfo());
|
aftersale.setMoney(model.getMoney());
|
|
|
//平台收货地址信息,字典 配置
|
aftersale.setShopAddrInfo(systemDictDataBiz.queryByCode(Constants.PLAT_ADDR,Constants.ADDR_INFO).getCode());
|
aftersale.setShopAddrName(systemDictDataBiz.queryByCode(Constants.PLAT_ADDR,Constants.ADDR_NAME).getCode());
|
aftersale.setShopAddrPhone(systemDictDataBiz.queryByCode(Constants.PLAT_ADDR,Constants.ADDR_PHONE).getCode());
|
//插入数据
|
aftersale.setCode(getNextInCode());
|
aftersaleMapper.insert(aftersale);
|
//处理附件信息
|
dealMultifiles(model.getApplyFileList(),aftersale,Constants.MultiFile.AFTERSALE_APPLY.getKey(),date);
|
|
return aftersale.getId();
|
}
|
|
private GoodsorderDetail isParamValid(AftersaleCreateRequest model) {
|
if(model.getDetailId() == null
|
||model.getMemberId() == null
|
||StringUtils.isBlank(model.getContent())
|
||model.getType() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
if(Constants.equalsInteger(model.getType(),Constants.AftersaleType.TK.getKey())){
|
if(Constants.formatBigdecimal(model.getMoney()).compareTo(new BigDecimal(0)) !=1 ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"退款金额必须大于0哦");
|
}
|
}else if(Constants.equalsInteger(model.getType(),Constants.AftersaleType.THTK.getKey())){
|
if(Constants.formatBigdecimal(model.getMoney()).compareTo(new BigDecimal(0)) !=1 ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"退款金额必须大于哦");
|
}
|
}else if(Constants.equalsInteger(model.getType(),Constants.AftersaleType.HH.getKey())){
|
}else{
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
|
//查询订单明细信息
|
GoodsorderDetail detail = goodsorderDetailMapper.selectById(model.getDetailId());
|
if(detail == null || Constants.equalsInteger(detail.getIsdeleted(), Constants.ONE) ) {
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后订单信息不存在,请返回刷新重试!");
|
}
|
//查询订单信息
|
Goodsorder goodsorder = goodsorderMapper.selectById(detail.getOrderId());
|
if(goodsorder == null || Constants.equalsInteger(goodsorder.getIsdeleted(), Constants.ONE) || !Constants.equalsInteger(goodsorder.getType(), Constants.OrderType.ADMINPLAT.getKey())
|
||!Constants.equalsInteger(goodsorder.getMemberId(),model.getMemberId())) {
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后订单记录不存在,请返回刷新重试!");
|
}
|
//只有已发货和订单交易完成,才能进行售后
|
if(!Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.DONE.getKey()) &&!Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey())){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该订单记录当前不支持售后哦!");
|
}
|
if(Constants.equalsInteger(model.getType(),Constants.AftersaleType.TK.getKey())
|
||Constants.equalsInteger(model.getType(),Constants.AftersaleType.THTK.getKey())){
|
//如果有退款,计算退款金额是否合法
|
|
//检查退款金额是否合法
|
isBackMoneyValid(model.getMoney(),detail.getPrice(),detail.getGoodsNum(),goodsorder.getPrice(),goodsorder.getIntegral(),goodsorder.getCouponPrice());
|
}
|
|
QueryWrapper<Aftersale> param = new QueryWrapper<>();
|
param.lambda().notIn(Aftersale::getStatus,Constants.AftersaleStatus.CANCEL.getKey(),Constants.AftersaleStatus.SHOP_REFUSE.getKey());
|
param.lambda().eq(Aftersale::getIsdeleted,Constants.ZERO) ;
|
param.lambda().eq(Aftersale::getOrderId,goodsorder.getId()) ;
|
param.lambda().eq(Aftersale::getDetailId,detail.getId());
|
if(aftersaleMapper.selectCount(param) >0){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该订单已在售后处理中,不能重复申请!");
|
}
|
|
return detail;
|
}
|
|
private void dealMultifiles(List<MultiFileDTO> fileList, Aftersale aftersale, int key,Date date) {
|
if(fileList !=null && fileList.size()>0){
|
int num =0;
|
for(MultiFileDTO f : fileList){
|
if(StringUtils.isBlank(f.getFileurl())){
|
continue;
|
}
|
Multifile file = new Multifile();
|
file.setObjType(key);
|
file.setIsdeleted(Constants.ZERO);
|
file.setFileurl(f.getFileurl());
|
file.setType(Constants.ZERO);
|
file.setObjId(aftersale.getId());
|
file.setName(f.getName());
|
file.setCreateDate(date);
|
file.setSortnum(num);
|
multifileService.create(file);
|
num++;
|
}
|
}
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
aftersaleMapper.deleteById(id);
|
}
|
|
@Override
|
public void delete(Aftersale aftersale) {
|
UpdateWrapper<Aftersale> deleteWrapper = new UpdateWrapper<>(aftersale);
|
aftersaleMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
aftersaleMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(Aftersale aftersale) {
|
aftersaleMapper.updateById(aftersale);
|
}
|
|
/**
|
* 退款-待处理操作
|
* @param aftersale
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void tkDealBack(Aftersale aftersale,Integer optUserId){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(aftersale.getId() == null || aftersale.getStatus() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
Aftersale model = findJoinById(aftersale.getId(),false);
|
aftersale.setMemberId(model.getMemberId());
|
if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后记录不存在,请返回刷新重试!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleStatus.APPLY_ING.getKey(),model.getStatus())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该售后记录状态已流转,不支持当前操作,请刷新页面查看!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleType.TK.getKey(),model.getType())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非退款售后服务,不支持当前操作,请刷新页面查看!");
|
}
|
Date date = new Date();
|
Aftersale updateModel = new Aftersale();
|
updateModel.setId(model.getId());
|
updateModel.setEditor(user.getId());
|
updateModel.setDealDate(date);
|
updateModel.setEditDate(date);
|
updateModel.setDealInfo(aftersale.getDealInfo());
|
updateModel.setDealUser(user.getId());
|
if(Constants.equalsInteger(Constants.AftersaleStatus.REFUND.getKey(),aftersale.getStatus())){
|
//如果是同意退款,状态为已退款
|
if(Constants.formatBigdecimal(aftersale.getActMoney()).compareTo(new BigDecimal(0)) != 1){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,退款金额不正确!");
|
}
|
//退款金额
|
BigDecimal actmoney = aftersale.getActMoney();
|
//退现金,默认全现金退
|
BigDecimal wxMoney = Constants.formatBigdecimal(aftersale.getDetailMoney());
|
//退余额
|
BigDecimal integral = Constants.formatBigdecimal( aftersale.getDetailIntegral());
|
if(actmoney.compareTo(wxMoney.add(integral)) >0 ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该订单可退款金额上限为【"+(wxMoney.add(integral)).doubleValue()+"元】");
|
}
|
|
//检查退款金额是否合法
|
/*
|
isBackMoneyValid(actmoney,model.getDetailPrice(),model.getGoodsNum(),model.getOrderPrice(),model.getOrderIntegral(),model.getOrderCouponPrice());
|
//查询订单信息,计算退现金多少、退余额多少
|
//退现金,默认全现金退
|
BigDecimal wxMoney = aftersale.getActMoney();
|
//退余额
|
BigDecimal integral = new BigDecimal(0);
|
if(Constants.formatBigdecimal(model.getOrderIntegral()).compareTo(new BigDecimal(0)) >0){
|
//如果使用了余额支付,折算优惠价格,计算实际退现金和余额的部分
|
//订单总金额
|
BigDecimal total = model.getOrderIntegral().add(Constants.formatBigdecimal(model.getOrderPrice())).add(Constants.formatBigdecimal(model.getOrderCouponPrice()));
|
BigDecimal rate = Constants.formatBigdecimal(model.getDetailPrice() )//商品单价
|
.multiply(new BigDecimal(Constants.formatIntegerNum(model.getGoodsNum())))//商品数量
|
.divide(total,4,BigDecimal.ROUND_HALF_UP);
|
//可退现金金额
|
BigDecimal canWxMoney = Constants.formatBigdecimal(model.getOrderPrice()).multiply(rate);
|
if(canWxMoney.compareTo(actmoney) <0){
|
//按比例退款的金额
|
wxMoney = canWxMoney;
|
}
|
integral =actmoney.subtract(wxMoney);
|
}*/
|
if(wxMoney.compareTo(new BigDecimal(0)) >0){
|
//进行微信现金退款
|
String backOrder = WxMiniUtilService.wxRefund(model.getOrderCode()+"" ,model.getOrderPrice(),wxMoney);
|
updateModel.setDrawbackNo(backOrder);
|
|
//添加平台收支明细
|
updateFund(backOrder,model.getOrderId(),model.getMemberId(),wxMoney,optUserId,model.getOrderCode());
|
}
|
if(integral.compareTo(new BigDecimal(0)) >0){
|
//进行余额退款
|
updateModel.setIntegral(integral);
|
//更新用户余额数量
|
updateMemberInteger(aftersale,integral);
|
}
|
updateModel.setStatus(Constants.AftersaleStatus.REFUND.getKey());
|
updateModel.setDrawbackDate(date);
|
updateModel.setDrawbackInfo(aftersale.getDrawbackInfo());
|
updateModel.setDrawbackUser(user.getId());
|
updateModel.setActMoney(aftersale.getActMoney());
|
|
}else if(Constants.equalsInteger(Constants.AftersaleStatus.SHOP_REFUSE.getKey(),aftersale.getStatus())){
|
//如果是不同意退款
|
updateModel.setStatus(Constants.AftersaleStatus.SHOP_REFUSE.getKey());
|
}else{
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
aftersaleMapper.updateById(updateModel);
|
}
|
|
private void updateMemberInteger(Aftersale aftersale, BigDecimal integral) {
|
DealIntegralRequest param = new DealIntegralRequest();
|
param.setMemberId(aftersale.getMemberId());
|
param.setObjId(aftersale.getId());
|
param.setDealType(Constants.ZERO);
|
param.setIntegralNum(integral);
|
param.setIntegralObjType(Constants.IntegralObjType.AFTERSALE_BACK);
|
integralService.dealIntegral(param);
|
}
|
|
private void isBackMoneyValid(BigDecimal actmoney, BigDecimal perPrice, Integer goodsNum, BigDecimal orderPrice,BigDecimal orderIntegral, BigDecimal orderCouponPrice) {
|
BigDecimal detailPrice = Constants.formatBigdecimal(perPrice).multiply(new BigDecimal(goodsNum));
|
if(Constants.formatBigdecimal(orderCouponPrice).compareTo(new BigDecimal(0)) >0){
|
//如果存在优惠券数据,折算优惠价格,计算实际支付(可退款)价格
|
BigDecimal total =orderCouponPrice.add(Constants.formatBigdecimal(orderPrice)).add(Constants.formatBigdecimal(orderIntegral));
|
BigDecimal rate = orderCouponPrice.divide(total,4,BigDecimal.ROUND_HALF_UP);
|
detailPrice =detailPrice.subtract(detailPrice.multiply(rate));
|
}
|
|
if(actmoney.compareTo(detailPrice) >0 ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该订单可退款金额上限为【"+detailPrice.doubleValue()+"元】");
|
}
|
}
|
|
public void updateFund(String refundCode,Integer orderId,Integer memberId,BigDecimal actmoney,Integer optUserId,Long orderCode){
|
Fund fund = new Fund();
|
fund.setOrderCode(refundCode);
|
fund.setCreator(optUserId);
|
fund.setCreateDate(new Date());
|
fund.setIsdeleted(Constants.ZERO);
|
fund.setRemark(orderCode+"");
|
fund.setMemberId(memberId);
|
fund.setTitle("后端售后退款");
|
fund.setContent("后端售后退款");
|
fund.setObjId(orderId);
|
fund.setObjType(Constants.ONE);
|
fund.setType(Constants.ONE);
|
fund.setNum(actmoney);
|
fundMapper.insert(fund);
|
}
|
|
/**
|
* 退货退款-退款操作
|
* @param aftersale
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void thtkDrawback(Aftersale aftersale,Integer optUserId){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(aftersale.getId() == null ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
//状态为已退款
|
if(Constants.formatBigdecimal(aftersale.getActMoney()).compareTo(new BigDecimal(0)) != 1){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,退款金额不正确!");
|
}
|
//查询售后详情
|
Aftersale model = findJoinById(aftersale.getId(),false);
|
aftersale.setMemberId(model.getMemberId());
|
if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后记录不存在,请返回刷新重试!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleStatus.SENDED.getKey(),model.getStatus())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该售后记录状态已流转,不支持当前操作,请刷新页面查看!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleType.THTK.getKey(),model.getType())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非退货退款售后服务,不支持当前操作,请刷新页面查看!");
|
}
|
Date date = new Date();
|
Aftersale updateModel = new Aftersale();
|
updateModel.setId(model.getId());
|
updateModel.setEditor(user.getId());
|
updateModel.setEditDate(date);
|
|
//如果是同意退款,状态为已退款
|
if(Constants.formatBigdecimal(aftersale.getActMoney()).compareTo(new BigDecimal(0)) != 1){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,退款金额不正确!");
|
}
|
//退款金额
|
BigDecimal actmoney = aftersale.getActMoney();
|
//-----------------------------新逻辑-----------start-------------
|
//退现金,默认全现金退
|
BigDecimal wxMoney = Constants.formatBigdecimal(aftersale.getDetailMoney());
|
//退余额
|
BigDecimal integral = Constants.formatBigdecimal( aftersale.getDetailIntegral());
|
if(actmoney.compareTo(wxMoney.add(integral)) >0 ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该订单可退款金额上限为【"+(wxMoney.add(integral)).doubleValue()+"元】");
|
}
|
//-----------------------------新逻辑----------------end--------
|
//检查退款金额是否合法
|
/*isBackMoneyValid(actmoney,model.getDetailPrice(),model.getGoodsNum(),model.getOrderPrice(),model.getOrderIntegral(),model.getOrderCouponPrice());
|
//查询订单信息,计算退现金多少、退余额多少
|
//退现金,默认全现金退
|
BigDecimal wxMoney = aftersale.getActMoney();
|
//退余额
|
BigDecimal integral = new BigDecimal(0);
|
if(Constants.formatBigdecimal(model.getOrderIntegral()).compareTo(new BigDecimal(0)) >0){
|
//如果使用了余额支付,折算优惠价格,计算实际退现金和余额的部分
|
//订单总金额
|
BigDecimal total = model.getOrderIntegral().add(Constants.formatBigdecimal(model.getOrderPrice())).add(Constants.formatBigdecimal(model.getOrderCouponPrice()));
|
BigDecimal rate = Constants.formatBigdecimal(model.getDetailPrice() )//商品单价
|
.multiply(new BigDecimal(Constants.formatIntegerNum(model.getGoodsNum())))//商品数量
|
.divide(total,4,BigDecimal.ROUND_HALF_UP);
|
//可退现金金额
|
BigDecimal canWxMoney = Constants.formatBigdecimal(model.getOrderPrice()).multiply(rate);
|
if(canWxMoney.compareTo(actmoney) <0){
|
//按比列退款的金额
|
wxMoney = canWxMoney;
|
}
|
integral =actmoney.subtract(wxMoney);
|
}*/
|
if(wxMoney.compareTo(new BigDecimal(0)) >0){
|
//进行微信现金退款
|
String backOrder = WxMiniUtilService.wxRefund(model.getOrderCode()+"" ,model.getOrderPrice(),wxMoney);
|
updateModel.setDrawbackNo(backOrder);
|
|
//添加平台收支明细
|
updateFund(backOrder,model.getOrderId(),model.getMemberId(),wxMoney,optUserId,model.getOrderCode());
|
}
|
if(integral.compareTo(new BigDecimal(0)) >0){
|
//进行余额退款
|
updateModel.setIntegral(integral);
|
//更新用户余额数量
|
updateMemberInteger(aftersale,integral);
|
}
|
//商家已退款 自动表示订单已完成
|
updateModel.setStatus(Constants.AftersaleStatus.DONE.getKey());
|
updateModel.setDrawbackDate(date);
|
updateModel.setDrawbackInfo(aftersale.getDrawbackInfo());
|
updateModel.setDrawbackUser(user.getId());
|
updateModel.setActMoney(aftersale.getActMoney());
|
|
aftersaleMapper.updateById(updateModel);
|
}
|
/**
|
* 退货退款-同意或拒绝退货
|
* @param aftersale
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void thtkDealApply(Aftersale aftersale){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(aftersale.getId() == null || aftersale.getStatus() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
Aftersale model = findJoinById(aftersale.getId(),false);
|
if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后记录不存在,请返回刷新重试!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleStatus.APPLY_ING.getKey(),model.getStatus())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该售后记录状态已流转,不支持当前操作,请刷新页面查看!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleType.THTK.getKey(),model.getType())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非退货退款售后服务,不支持当前操作,请刷新页面查看!");
|
}
|
Date date = new Date();
|
Aftersale updateModel = new Aftersale();
|
updateModel.setId(model.getId());
|
updateModel.setEditor(user.getId());
|
updateModel.setEditDate(date);
|
updateModel.setStatus(aftersale.getStatus());
|
updateModel.setDealUser(user.getId());
|
updateModel.setDealDate(date);
|
updateModel.setDealInfo(aftersale.getDealInfo());
|
if( !Constants.equalsInteger(aftersale.getStatus(),Constants.AftersaleStatus.WAIT_SEND.getKey())
|
&&!Constants.equalsInteger(aftersale.getStatus(),Constants.AftersaleStatus.SHOP_REFUSE.getKey()) ){
|
//只能同意或者不同退货
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
aftersaleMapper.updateById(updateModel);
|
}
|
/**
|
* 退货退款-取消操作
|
* @param aftersale
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void thtkShopCancel(Aftersale aftersale){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(aftersale.getId() == null ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
Aftersale model = findJoinById(aftersale.getId(),false);
|
if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后记录不存在,请返回刷新重试!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleStatus.WAIT_SEND.getKey(),model.getStatus())
|
&& !Constants.equalsInteger(Constants.AftersaleStatus.APPLY_ING.getKey(),model.getStatus())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该售后记录状态已流转,不支持当前操作,请刷新页面查看!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleType.THTK.getKey(),model.getType())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非退货退款售后服务,不支持当前操作,请刷新页面查看!");
|
}
|
Date date = new Date();
|
Aftersale updateModel = new Aftersale();
|
updateModel.setId(model.getId());
|
updateModel.setEditor(user.getId());
|
updateModel.setEditDate(date);
|
updateModel.setStatus(Constants.AftersaleStatus.CANCEL.getKey());
|
updateModel.setCancelType(Constants.ONE);
|
updateModel.setCancelUser(user.getId());
|
updateModel.setCancelDate(date);
|
updateModel.setCancelInfo(aftersale.getCancelInfo());
|
|
aftersaleMapper.updateById(updateModel);
|
}
|
/**
|
* 用户自行-取消操作
|
* @param aftersale
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void memberCancel(AftersaleCancelRequest aftersale){
|
if(aftersale.getId() == null ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
Aftersale model = findJoinById(aftersale.getId(),false);
|
if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)
|
|| !Constants.equalsInteger(model.getMemberId(),aftersale.getMemberId())){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后记录不存在,请返回刷新重试!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleStatus.WAIT_SEND.getKey(),model.getStatus())
|
&& !Constants.equalsInteger(Constants.AftersaleStatus.APPLY_ING.getKey(),model.getStatus())){
|
// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该售后记录状态已流转,不支持当前操作,请刷新页面查看!");
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前售后订单状态已流转,操作失败,请刷新重试");
|
}
|
Date date = new Date();
|
Aftersale updateModel = new Aftersale();
|
updateModel.setId(model.getId());
|
updateModel.setEditDate(date);
|
updateModel.setStatus(Constants.AftersaleStatus.CANCEL.getKey());
|
updateModel.setCancelType(Constants.ZERO);
|
updateModel.setCancelUser(aftersale.getMemberId());
|
updateModel.setCancelDate(date);
|
updateModel.setCancelInfo("用户取消");
|
|
aftersaleMapper.updateById(updateModel);
|
}
|
/**
|
* 用户邮寄
|
* @param aftersale
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void memberPost(AftersalePostRequest aftersale){
|
if(aftersale.getId() == null
|
||StringUtils.isBlank(aftersale.getBackKd())
|
||StringUtils.isBlank(aftersale.getBackKdName())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
Aftersale model = findJoinById(aftersale.getId(),false);
|
if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)
|
|| !Constants.equalsInteger(model.getMemberId(),aftersale.getMemberId())){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后记录不存在,请返回刷新重试!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleStatus.WAIT_SEND.getKey(),model.getStatus())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该售后记录状态已流转,不支持当前操作,请刷新页面查看!");
|
}
|
|
Date date = new Date();
|
Aftersale updateModel = new Aftersale();
|
updateModel.setId(model.getId());
|
updateModel.setEditDate(date);
|
updateModel.setStatus(Constants.AftersaleStatus.SENDED.getKey());
|
updateModel.setKdDate(date);
|
updateModel.setBackKdName(aftersale.getBackKdName());
|
updateModel.setBackKd(aftersale.getBackKd());
|
updateModel.setBackKdPhone(aftersale.getBackKdPhone());
|
updateModel.setKdInfo(aftersale.getKdInfo());
|
//处理附件信息
|
dealMultifiles(aftersale.getKdFileList(),updateModel,Constants.MultiFile.AFTERSALE_KD.getKey(),date);
|
|
aftersaleMapper.updateById(updateModel);
|
}
|
/**
|
* 换货-同意或拒绝换货
|
* @param aftersale
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void hhDealApply(Aftersale aftersale){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(aftersale.getId() == null || aftersale.getStatus() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
Aftersale model = findJoinById(aftersale.getId(),false);
|
if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后记录不存在,请返回刷新重试!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleStatus.APPLY_ING.getKey(),model.getStatus())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该售后记录状态已流转,不支持当前操作,请刷新页面查看!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleType.HH.getKey(),model.getType())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非换货售后服务,不支持当前操作,请刷新页面查看!");
|
}
|
Date date = new Date();
|
Aftersale updateModel = new Aftersale();
|
updateModel.setId(model.getId());
|
updateModel.setEditor(user.getId());
|
updateModel.setEditDate(date);
|
updateModel.setStatus(aftersale.getStatus());
|
updateModel.setDealUser(user.getId());
|
updateModel.setDealDate(date);
|
updateModel.setDealInfo(aftersale.getDealInfo());
|
if( !Constants.equalsInteger(aftersale.getStatus(),Constants.AftersaleStatus.WAIT_SEND.getKey())
|
&&!Constants.equalsInteger(aftersale.getStatus(),Constants.AftersaleStatus.SHOP_REFUSE.getKey()) ){
|
//只能同意或者不同退货
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
aftersaleMapper.updateById(updateModel);
|
}
|
/**
|
* 换货-平台发货
|
* @param aftersale
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void hhShopSend(Aftersale aftersale){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(aftersale.getId() == null
|
||StringUtils.isBlank(aftersale.getShopBackKd())
|
||StringUtils.isBlank(aftersale.getShopBackKdName())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
Aftersale model = findJoinById(aftersale.getId(),false);
|
if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该售后记录不存在,请返回刷新重试!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleStatus.SENDED.getKey(),model.getStatus())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该售后记录状态已流转,不支持当前操作,请刷新页面查看!");
|
}
|
if(!Constants.equalsInteger(Constants.AftersaleType.HH.getKey(),model.getType())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非换货售后服务,不支持当前操作,请刷新页面查看!");
|
}
|
Date date = new Date();
|
Aftersale updateModel = new Aftersale();
|
updateModel.setId(model.getId());
|
updateModel.setEditor(user.getId());
|
updateModel.setEditDate(date);
|
//平台已发货
|
updateModel.setStatus(Constants.AftersaleStatus.SHOP_SENDED.getKey());
|
updateModel.setShopKdUser(user.getId());
|
updateModel.setShopKdDate(date);
|
updateModel.setShopBackKd(aftersale.getShopBackKd());
|
updateModel.setShopBackKdName(aftersale.getShopBackKdName());
|
|
aftersaleMapper.updateById(updateModel);
|
}
|
public static boolean ISAUTO_RUNNING = false;
|
/**
|
* 超过7天发货,自动完成
|
*/
|
@Override
|
public void autoDone(){
|
if(ISAUTO_RUNNING){
|
return;
|
}
|
ISAUTO_RUNNING =true;
|
try {
|
UpdateWrapper<Aftersale> param = new UpdateWrapper<>();
|
param.lambda().eq(true,Aftersale::getIsdeleted,Constants.ZERO) ;
|
param.lambda().eq(true,Aftersale::getStatus,Constants.AftersaleStatus.SHOP_SENDED.getKey()) ;
|
param.apply(true, "TO_DAYS(NOW())>=TO_DAYS(create_date)+7");
|
param.lambda().set(true,Aftersale::getStatus,Constants.AftersaleStatus.DONE.getKey());
|
param.lambda().set(true,Aftersale::getDoneDate,new Date());
|
param.lambda().set(true,Aftersale::getDoneInfo,"平台发货,超出7天系统自动完成收货");
|
aftersaleMapper.update(null,param);
|
}catch (Exception e){
|
e.printStackTrace();
|
}finally {
|
ISAUTO_RUNNING = false;
|
}
|
|
}
|
|
@Override
|
public void updateByIdInBatch(List<Aftersale> aftersales) {
|
if (CollectionUtils.isEmpty(aftersales)) {
|
return;
|
}
|
for (Aftersale aftersale: aftersales) {
|
this.updateById(aftersale);
|
}
|
}
|
|
@Override
|
public Aftersale findById(Integer id) {
|
return aftersaleMapper.selectById(id);
|
}
|
|
@Override
|
public Aftersale findOne(Aftersale aftersale) {
|
QueryWrapper<Aftersale> wrapper = new QueryWrapper<>(aftersale);
|
return aftersaleMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<Aftersale> findList(Aftersale aftersale) {
|
QueryWrapper<Aftersale> wrapper = new QueryWrapper<>(aftersale);
|
return aftersaleMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<Aftersale> findPage(PageWrap<Aftersale> pageWrap) {
|
IPage<Aftersale> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<Aftersale> queryWrapper = new QueryWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
if (pageWrap.getModel().getId() != null) {
|
queryWrapper.lambda().eq(Aftersale::getId, pageWrap.getModel().getId());
|
}
|
if (pageWrap.getModel().getCreator() != null) {
|
queryWrapper.lambda().eq(Aftersale::getCreator, pageWrap.getModel().getCreator());
|
}
|
if (pageWrap.getModel().getCreateDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
|
queryWrapper.lambda().le(Aftersale::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
|
}
|
if (pageWrap.getModel().getEditor() != null) {
|
queryWrapper.lambda().eq(Aftersale::getEditor, pageWrap.getModel().getEditor());
|
}
|
if (pageWrap.getModel().getEditDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
|
queryWrapper.lambda().le(Aftersale::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
|
}
|
if (pageWrap.getModel().getIsdeleted() != null) {
|
queryWrapper.lambda().eq(Aftersale::getIsdeleted, pageWrap.getModel().getIsdeleted());
|
}
|
if (pageWrap.getModel().getRemark() != null) {
|
queryWrapper.lambda().eq(Aftersale::getRemark, pageWrap.getModel().getRemark());
|
}
|
if (pageWrap.getModel().getOrderId() != null) {
|
queryWrapper.lambda().eq(Aftersale::getOrderId, pageWrap.getModel().getOrderId());
|
}
|
if (pageWrap.getModel().getDetailId() != null) {
|
queryWrapper.lambda().eq(Aftersale::getDetailId, pageWrap.getModel().getDetailId());
|
}
|
if (pageWrap.getModel().getType() != null) {
|
queryWrapper.lambda().eq(Aftersale::getType, pageWrap.getModel().getType());
|
}
|
if (pageWrap.getModel().getContent() != null) {
|
queryWrapper.lambda().eq(Aftersale::getContent, pageWrap.getModel().getContent());
|
}
|
if (pageWrap.getModel().getCoupon() != null) {
|
queryWrapper.lambda().eq(Aftersale::getCoupon, pageWrap.getModel().getCoupon());
|
}
|
if (pageWrap.getModel().getMoney() != null) {
|
queryWrapper.lambda().eq(Aftersale::getMoney, pageWrap.getModel().getMoney());
|
}
|
if (pageWrap.getModel().getInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getInfo, pageWrap.getModel().getInfo());
|
}
|
if (pageWrap.getModel().getBackType() != null) {
|
queryWrapper.lambda().eq(Aftersale::getBackType, pageWrap.getModel().getBackType());
|
}
|
if (pageWrap.getModel().getBackKd() != null) {
|
queryWrapper.lambda().eq(Aftersale::getBackKd, pageWrap.getModel().getBackKd());
|
}
|
if (pageWrap.getModel().getBackKdName() != null) {
|
queryWrapper.lambda().eq(Aftersale::getBackKdName, pageWrap.getModel().getBackKdName());
|
}
|
if (pageWrap.getModel().getBackKdPhone() != null) {
|
queryWrapper.lambda().eq(Aftersale::getBackKdPhone, pageWrap.getModel().getBackKdPhone());
|
}
|
if (pageWrap.getModel().getShopAddrName() != null) {
|
queryWrapper.lambda().eq(Aftersale::getShopAddrName, pageWrap.getModel().getShopAddrName());
|
}
|
if (pageWrap.getModel().getShopAddrPhone() != null) {
|
queryWrapper.lambda().eq(Aftersale::getShopAddrPhone, pageWrap.getModel().getShopAddrPhone());
|
}
|
if (pageWrap.getModel().getShopAddrInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getShopAddrInfo, pageWrap.getModel().getShopAddrInfo());
|
}
|
if (pageWrap.getModel().getAddrName() != null) {
|
queryWrapper.lambda().eq(Aftersale::getAddrName, pageWrap.getModel().getAddrName());
|
}
|
if (pageWrap.getModel().getAddrPhone() != null) {
|
queryWrapper.lambda().eq(Aftersale::getAddrPhone, pageWrap.getModel().getAddrPhone());
|
}
|
if (pageWrap.getModel().getAddrInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getAddrInfo, pageWrap.getModel().getAddrInfo());
|
}
|
if (pageWrap.getModel().getStatus() != null) {
|
queryWrapper.lambda().eq(Aftersale::getStatus, pageWrap.getModel().getStatus());
|
}
|
if (pageWrap.getModel().getDrawbackDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getDrawbackDate, Utils.Date.getStart(pageWrap.getModel().getDrawbackDate()));
|
queryWrapper.lambda().le(Aftersale::getDrawbackDate, Utils.Date.getEnd(pageWrap.getModel().getDrawbackDate()));
|
}
|
if (pageWrap.getModel().getDrawbackNo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getDrawbackNo, pageWrap.getModel().getDrawbackNo());
|
}
|
if (pageWrap.getModel().getDrawbackInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getDrawbackInfo, pageWrap.getModel().getDrawbackInfo());
|
}
|
if (pageWrap.getModel().getKdDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getKdDate, Utils.Date.getStart(pageWrap.getModel().getKdDate()));
|
queryWrapper.lambda().le(Aftersale::getKdDate, Utils.Date.getEnd(pageWrap.getModel().getKdDate()));
|
}
|
if (pageWrap.getModel().getKdInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getKdInfo, pageWrap.getModel().getKdInfo());
|
}
|
if (pageWrap.getModel().getDealDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getDealDate, Utils.Date.getStart(pageWrap.getModel().getDealDate()));
|
queryWrapper.lambda().le(Aftersale::getDealDate, Utils.Date.getEnd(pageWrap.getModel().getDealDate()));
|
}
|
if (pageWrap.getModel().getDealInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getDealInfo, pageWrap.getModel().getDealInfo());
|
}
|
if (pageWrap.getModel().getShopKdDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getShopKdDate, Utils.Date.getStart(pageWrap.getModel().getShopKdDate()));
|
queryWrapper.lambda().le(Aftersale::getShopKdDate, Utils.Date.getEnd(pageWrap.getModel().getShopKdDate()));
|
}
|
if (pageWrap.getModel().getShopKdInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getShopKdInfo, pageWrap.getModel().getShopKdInfo());
|
}
|
if (pageWrap.getModel().getDoneDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getDoneDate, Utils.Date.getStart(pageWrap.getModel().getDoneDate()));
|
queryWrapper.lambda().le(Aftersale::getDoneDate, Utils.Date.getEnd(pageWrap.getModel().getDoneDate()));
|
}
|
if (pageWrap.getModel().getDoneInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getDoneInfo, pageWrap.getModel().getDoneInfo());
|
}
|
if (pageWrap.getModel().getRefuseDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getRefuseDate, Utils.Date.getStart(pageWrap.getModel().getRefuseDate()));
|
queryWrapper.lambda().le(Aftersale::getRefuseDate, Utils.Date.getEnd(pageWrap.getModel().getRefuseDate()));
|
}
|
if (pageWrap.getModel().getRefuseInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getRefuseInfo, pageWrap.getModel().getRefuseInfo());
|
}
|
if (pageWrap.getModel().getCancelDate() != null) {
|
queryWrapper.lambda().ge(Aftersale::getCancelDate, Utils.Date.getStart(pageWrap.getModel().getCancelDate()));
|
queryWrapper.lambda().le(Aftersale::getCancelDate, Utils.Date.getEnd(pageWrap.getModel().getCancelDate()));
|
}
|
if (pageWrap.getModel().getCancelInfo() != null) {
|
queryWrapper.lambda().eq(Aftersale::getCancelInfo, pageWrap.getModel().getCancelInfo());
|
}
|
if (pageWrap.getModel().getCancelType() != null) {
|
queryWrapper.lambda().eq(Aftersale::getCancelType, pageWrap.getModel().getCancelType());
|
}
|
if (pageWrap.getModel().getCode() != null) {
|
queryWrapper.lambda().eq(Aftersale::getCode, pageWrap.getModel().getCode());
|
}
|
for(PageWrap.SortData sortData: pageWrap.getSorts()) {
|
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
|
queryWrapper.orderByDesc(sortData.getProperty());
|
} else {
|
queryWrapper.orderByAsc(sortData.getProperty());
|
}
|
}
|
return PageData.from(aftersaleMapper.selectPage(page, queryWrapper));
|
}
|
|
/**
|
* 后台分页查询接口
|
* @param pageWrap
|
* @return
|
*/
|
@Override
|
public PageData<AftersaleListResponse> findJoinPage(PageWrap<Aftersale> pageWrap) {
|
IPage<Aftersale> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Aftersale> queryWrapper = new MPJLambdaWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
queryWrapper.selectAll(Aftersale.class);
|
//订单明细商品sku信息
|
queryWrapper.selectAs(GoodsorderDetail::getImgurl,Aftersale::getImgurl);
|
queryWrapper.selectAs(GoodsorderDetail::getSkuName,Aftersale::getSkuName);
|
queryWrapper.selectAs(GoodsorderDetail::getGoodsNum,Aftersale::getGoodsNum);
|
queryWrapper.selectAs(GoodsorderDetail::getName,Aftersale::getGoodsName);
|
queryWrapper.selectAs(GoodsorderDetail::getPrice,Aftersale::getDetailPrice);
|
|
//订单编号
|
queryWrapper.selectAs(Goodsorder::getCode,Aftersale::getOrderCode);
|
queryWrapper.selectAs(Goodsorder::getMemberId,Aftersale::getMemberId);
|
//收件人信息
|
queryWrapper.selectAs(Goodsorder::getLinkname,Aftersale::getMemberName);
|
queryWrapper.selectAs(Goodsorder::getLinkphone,Aftersale::getMemberPhone);
|
queryWrapper.selectAs(Goodsorder::getLinkaddr,Aftersale::getAddrInfo);
|
|
queryWrapper.selectAs(Goodsorder::getCode,Aftersale::getOrderCode);
|
queryWrapper.selectAs(GoodsorderDetail::getPrice,Aftersale::getDetailPrice);
|
queryWrapper.selectAs(Goods::getImgurl,Aftersale::getGoodsImgurl);
|
|
queryWrapper.leftJoin(GoodsorderDetail.class,GoodsorderDetail::getId,Aftersale::getDetailId);
|
queryWrapper.leftJoin(Goodsorder.class,Goodsorder::getId,Aftersale::getOrderId);
|
queryWrapper.leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId);
|
queryWrapper.leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId);
|
|
//售后单状态查询
|
queryWrapper.eq(pageWrap.getModel().getStatus() !=null,Aftersale::getStatus,pageWrap.getModel().getStatus());
|
//查询指定用户的
|
queryWrapper.eq(pageWrap.getModel().getMemberId() !=null,Goodsorder::getMemberId,pageWrap.getModel().getMemberId());
|
//售后单号查询
|
queryWrapper.eq(pageWrap.getModel().getCode() !=null,Aftersale::getCode, pageWrap.getModel().getCode());
|
//收货人昵称或手机号
|
queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), wrapper -> wrapper.like(Goodsorder::getLinkphone,pageWrap.getModel().getMemberName()).or().like(Goodsorder::getLinkname,pageWrap.getModel().getMemberName()));
|
//售后单开始时间
|
queryWrapper.ge(pageWrap.getModel().getStartDate() !=null,Aftersale::getCreateDate, pageWrap.getModel().getStartDate());
|
//售后单截止时间
|
queryWrapper.le(pageWrap.getModel().getEndDate() !=null,Aftersale::getCreateDate, pageWrap.getModel().getEndDate());
|
|
queryWrapper.eq(Aftersale::getIsdeleted,Constants.ZERO);
|
queryWrapper.orderByDesc(Aftersale::getCreateDate);
|
IPage<Aftersale> list = aftersaleJoinMapper.selectJoinPage(page, Aftersale.class, queryWrapper);
|
PageData<AftersaleListResponse> result = new PageData<>(list.getCurrent(), list.getSize());
|
result.setTotal(list.getTotal());
|
result.setRecords(new ArrayList<>());
|
if(list.getRecords()!=null){
|
String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
|
list.getRecords().stream().forEach(item -> {
|
AftersaleListResponse model = new AftersaleListResponse();
|
BeanUtils.copyProperties(item,model);
|
model.setPrice(item.getDetailPrice());
|
model.setStatusStr(Constants.AftersaleStatus.getName(model.getStatus()));
|
model.setTypeStr(Constants.AftersaleType.getName(model.getType()));
|
if(StringUtils.isNotBlank(model.getImgurl())){
|
//商品sku完整图片地址
|
model.setImgurl(path + model.getImgurl());
|
}else{
|
model.setImgurl(path + model.getGoodsImgurl());
|
}
|
result.getRecords().add(model);
|
});
|
}
|
return result;
|
}
|
/**
|
* 查询详情接口
|
* @param id
|
* @return
|
*/
|
@Override
|
public Aftersale findJoinById(Integer id,boolean detail) {
|
MPJLambdaWrapper<Aftersale> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.selectAll(Aftersale.class);
|
//订单明细商品sku信息
|
queryWrapper.selectAs(GoodsorderDetail::getImgurl,Aftersale::getImgurl);
|
queryWrapper.selectAs(GoodsorderDetail::getSkuName,Aftersale::getSkuName);
|
queryWrapper.selectAs(GoodsorderDetail::getGoodsNum,Aftersale::getGoodsNum);
|
queryWrapper.selectAs(GoodsorderDetail::getName,Aftersale::getGoodsName);
|
queryWrapper.selectAs(GoodsorderDetail::getPrice,Aftersale::getDetailPrice);
|
queryWrapper.selectAs(GoodsorderDetail::getMoney,Aftersale::getDetailMoney);
|
queryWrapper.selectAs(GoodsorderDetail::getIntegral,Aftersale::getDetailIntegral);
|
//订单编号
|
queryWrapper.selectAs(Goodsorder::getCode,Aftersale::getOrderCode);
|
queryWrapper.selectAs(Goodsorder::getMemberId,Aftersale::getMemberId);
|
queryWrapper.selectAs(Goodsorder::getPrice,Aftersale::getOrderPrice);
|
queryWrapper.selectAs(Goodsorder::getIntegral,Aftersale::getOrderIntegral);
|
queryWrapper.selectAs(Goodsorder::getCouponPrice,Aftersale::getOrderCouponPrice);
|
//收件人信息
|
queryWrapper.selectAs(Goodsorder::getLinkname,Aftersale::getMemberName);
|
queryWrapper.selectAs(Goodsorder::getLinkphone,Aftersale::getMemberPhone);
|
queryWrapper.selectAs(Goodsorder::getLinkaddr,Aftersale::getAddrInfo);
|
|
queryWrapper.selectAs(Goodsorder::getCode,Aftersale::getOrderCode);
|
queryWrapper.selectAs(Goodsorder::getPayOrderId,Aftersale::getOrderPayNo);
|
queryWrapper.leftJoin(GoodsorderDetail.class,GoodsorderDetail::getId,Aftersale::getDetailId);
|
queryWrapper.leftJoin(Goodsorder.class,Goodsorder::getId,Aftersale::getOrderId);
|
//根据ID查询
|
queryWrapper.eq(Aftersale::getId,id);
|
queryWrapper.last(" limit 1");
|
|
Aftersale model = aftersaleJoinMapper.selectJoinOne( Aftersale.class, queryWrapper);
|
if(model != null && detail){
|
model.setStatusStr(Constants.AftersaleStatus.getName(model.getStatus()));
|
model.setTypeStr(Constants.AftersaleType.getName(model.getType()));
|
//查詢售后记录对应的附件信息
|
Map<Integer ,List<MultiFileDTO>> fileList = multifileService.getOBJAllFileUrl(model.getId(),null, null,Constants.AFTERSALE_FILE);
|
if(fileList!= null){
|
model.setApplyFileList(fileList.get(Constants.MultiFile.AFTERSALE_APPLY.getKey()));
|
model.setKdFileList(fileList.get(Constants.MultiFile.AFTERSALE_KD.getKey()));
|
}
|
if(StringUtils.isNotBlank(model.getImgurl())){
|
//商品sku完整图片地址
|
String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
|
model.setImgurl(path + model.getImgurl());
|
}
|
}
|
return model;
|
}
|
@Override
|
public long count(Aftersale aftersale) {
|
QueryWrapper<Aftersale> wrapper = new QueryWrapper<>(aftersale);
|
return aftersaleMapper.selectCount(wrapper);
|
}
|
public synchronized Long getNextInCode(){
|
String prefix = DateUtil.getDate(new Date(),"yyyyMMdd");
|
Integer countNum = RedisUtil.getObject(redisTemplate, Constants.RedisKeys.AFTERSALE_KEY,Integer.class);
|
countNum = Constants.formatIntegerNum(countNum)+1;
|
//更新缓存
|
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.AFTERSALE_KEY,countNum);
|
String nextIndex =Long.toString( countNum);
|
return Long.parseLong(prefix + StringUtils.leftPad(nextIndex,4,"0"));
|
}
|
|
|
}
|