| | |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.FlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.IAdminMallOrderService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.mall.service.IMallMoneyFlowService; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | |
| | | |
| | | private final MallOrderRefundAddressMapper mallOrderRefundAddressMapper; |
| | | |
| | | private final MallGoodsCommentMapper mallGoodsCommentMapper; |
| | | |
| | | private final MallMoneyFlowMapper mallMoneyFlowMapper; |
| | | |
| | | private final IApiMallMemberWalletService iApiMallMemberWalletService; |
| | |
| | | private final MallMemberPaymentMapper mallMemberPaymentMapper; |
| | | |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | |
| | | |
| | | @Override |
| | | public IPage<MallOrderInfo> findOrderListInPage(MallOrderInfo mallOrderInfo, QueryRequest request) { |
| | | Page<MallOrderInfo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | return this.baseMapper.selectInPage(mallOrderInfo, page); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminMallOrderInfoVo> getOrderListInPage(MallOrderInfoDto mallOrderInfo, QueryRequest request) { |
| | | Page<AdminMallOrderInfoVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminMallOrderInfoVo> adminMallOrderInfoVos = this.baseMapper.selectOrderListInPage(page, mallOrderInfo); |
| | | // List<AdminMallOrderInfoVo> records = adminMallOrderInfoVos.getRecords(); |
| | | // if(CollUtil.isNotEmpty(records)){ |
| | | // for(AdminMallOrderInfoVo adminMallOrderInfoVo : records){ |
| | | // Long id = adminMallOrderInfoVo.getId(); |
| | | // List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectbyOrderId(id); |
| | | // StringBuffer stringBuffer = new StringBuffer(); |
| | | // for(MallOrderItem mallOrderItem : mallOrderItemList){ |
| | | // stringBuffer.append(mallOrderItem.getGoodsName()+"*"+mallOrderItem.getCnt()+";"); |
| | | // } |
| | | // adminMallOrderInfoVo.setGoodsName(stringBuffer.toString()); |
| | | // } |
| | | // } |
| | | return adminMallOrderInfoVos; |
| | | } |
| | | |
| | |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | |
| | | if(!"微信支付".equals(mallOrderInfo.getPayMethod()) && !"支付宝支付".equals(mallOrderInfo.getPayMethod())){ |
| | | BigDecimal amount = mallOrderRefund.getAmount(); |
| | | //用户钱包增加对应的余额 |
| | | iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId()); |
| | | //新增一条资金流水 |
| | | MallMoneyFlow mallMoneyFlow = new MallMoneyFlow(); |
| | | mallMoneyFlow.setMemberId(mallOrderRefund.getMemberId()); |
| | | mallMoneyFlow.setOrderNo(mallOrderInfo.getOrderNo()); |
| | | mallMoneyFlow.setType(4); |
| | | mallMoneyFlow.setAmount(mallOrderInfo.getAmount()); |
| | | mallMoneyFlowMapper.insert(mallMoneyFlow); |
| | | iApiMallMemberWalletService.addBalance(amount, mallOrderInfo.getMemberId()); |
| | | |
| | | mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), amount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); |
| | | |
| | | //积分池减少对应的数值 |
| | | String redisKey = "scorePool"; |
| | | String scorePoolRedis = redisUtils.getString(redisKey); |
| | | if(StrUtil.isBlank(scorePoolRedis)){ |
| | | redisUtils.set(redisKey,0,0L); |
| | | } |
| | | BigDecimal scorePoolOld = new BigDecimal(redisUtils.getString(redisKey)); |
| | | if(scorePoolOld.compareTo(amount) < 0){ |
| | | redisUtils.set(redisKey,0,0L); |
| | | }else{ |
| | | redisUtils.set(redisKey,scorePoolOld.subtract(amount).intValue(),0L); |
| | | } |
| | | } |
| | | |
| | | MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation(); |
| | |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | private final RedisUtils redisUtils; |
| | | @Override |
| | | public FebsResponse refundConfirm(Long id) { |
| | | MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id); |
| | |
| | | mallOrderInfo.setStatus(6); |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | |
| | | BigDecimal refundAmount = mallOrderRefund.getAmount(); |
| | | //用户钱包增加对应的余额 |
| | | iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId()); |
| | | iApiMallMemberWalletService.addBalance(refundAmount, mallOrderInfo.getMemberId()); |
| | | //积分池减少对应的数值 |
| | | String redisKey = "scorePool"; |
| | | String scorePoolRedis = redisUtils.getString(redisKey); |
| | | if(StrUtil.isBlank(scorePoolRedis)){ |
| | | redisUtils.set(redisKey,0,0L); |
| | | } |
| | | BigDecimal scorePoolOld = new BigDecimal(redisUtils.getString(redisKey)); |
| | | if(scorePoolOld.compareTo(refundAmount) < 0){ |
| | | redisUtils.set(redisKey,0,0L); |
| | | }else{ |
| | | redisUtils.set(redisKey,scorePoolOld.subtract(refundAmount).intValue(),0L); |
| | | } |
| | | |
| | | //新增一条资金流水 |
| | | MallMoneyFlow mallMoneyFlow = new MallMoneyFlow(); |
| | | mallMoneyFlow.setMemberId(mallOrderRefund.getMemberId()); |
| | | mallMoneyFlow.setOrderNo(mallOrderInfo.getOrderNo()); |
| | | mallMoneyFlow.setType(4); |
| | | mallMoneyFlow.setAmount(mallOrderInfo.getAmount()); |
| | | mallMoneyFlowMapper.insert(mallMoneyFlow); |
| | | |
| | | mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | |
| | | return adminMallMemberPaymentVo; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminMallGoodsCommentVo> getCommentListInPage(AdminMallGoodsCommentDto adminMallGoodsCommentDto, QueryRequest request) { |
| | | Page<AdminMallGoodsCommentVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminMallGoodsCommentVo> adminMallGoodsCommentVos = mallGoodsCommentMapper.getCommentListInPage(page, adminMallGoodsCommentDto); |
| | | return adminMallGoodsCommentVos; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse showStateSwitchOn(Long id) { |
| | | MallGoodsComment mallGoodsComment = mallGoodsCommentMapper.selectById(id); |
| | | if (ObjectUtil.isEmpty(mallGoodsComment)) { |
| | | return new FebsResponse().fail().message("评论不存在,请刷新当前页面"); |
| | | } |
| | | mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_ENABLE); |
| | | mallGoodsCommentMapper.updateById(mallGoodsComment); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse showStateSwitchOff(Long id) { |
| | | MallGoodsComment mallGoodsComment = mallGoodsCommentMapper.selectById(id); |
| | | if (ObjectUtil.isEmpty(mallGoodsComment)) { |
| | | return new FebsResponse().fail().message("评论不存在,请刷新当前页面"); |
| | | } |
| | | mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_DISABLED); |
| | | mallGoodsCommentMapper.updateById(mallGoodsComment); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse delOrder(Long id) { |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallOrderInfo)){ |
| | | return new FebsResponse().fail().message("订单不存在,请刷新重试"); |
| | | } |
| | | Integer status = mallOrderInfo.getStatus(); |
| | | if(status != 7){ |
| | | return new FebsResponse().fail().message("订单不是已取消状态"); |
| | | } |
| | | mallOrderInfoMapper.deleteById(id); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse takeGoods(Long id) { |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallOrderInfo)){ |
| | | return new FebsResponse().fail().message("订单不存在,刷新后重试"); |
| | | } |
| | | Integer status = mallOrderInfo.getStatus(); |
| | | if(2 != status){ |
| | | return new FebsResponse().fail().message("订单不是待发货状态"); |
| | | } |
| | | |
| | | mallOrderInfo.setStatus(3); |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminMallMoneyFlowVo> orderMoneyFlow(QueryRequest request, MallOrderInfo mallOrderInfo) { |
| | | MallOrderInfo mallOrder = this.baseMapper.selectById(mallOrderInfo.getId()); |
| | | Page<AdminMallMoneyFlowVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminMallMoneyFlowVo> adminMallMoneyFlowVos = mallMoneyFlowMapper.selectOrderMoneyFlowInPage(page, mallOrder); |
| | | return adminMallMoneyFlowVos; |
| | | } |
| | | |
| | | @Override |
| | | public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) { |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo()); |
| | | if (mallOrderInfo == null) { |
| | | return; |
| | | } |
| | | |
| | | MallExpressInfo mallExpressInfo = new MallExpressInfo(); |
| | | mallExpressInfo.setMemberId(mallOrderInfo.getMemberId()); |
| | | mallExpressInfo.setOrderId(mallOrderInfo.getId()); |
| | | mallExpressInfo.setExpressNo(deliverGoodsDto.getExpressNo()); |
| | | mallExpressInfo.setExpressCom(deliverGoodsDto.getExpressCom()); |
| | | mallExpressInfo.setExpressCode(deliverGoodsDto.getExpressCode()); |
| | | mallExpressInfoMapper.insert(mallExpressInfo); |
| | | |
| | | mallOrderInfo.setStatus(3); |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | } |
| | | } |