From 2a212f983f35e1c569dfec3a172fb5f0c9f85fac Mon Sep 17 00:00:00 2001 From: lidongdong <1459917685@qq.com> Date: 星期二, 06 十二月 2022 13:43:43 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/haucheng_panzhihua' into haucheng_panzhihua --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java | 201 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 189 insertions(+), 12 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java index adccd32..7469c2b 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerRefundOrderServiceImpl.java @@ -1,32 +1,45 @@ package com.panzhihua.service_community.service.impl; +import cn.binarywang.wx.miniapp.api.WxMaService; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.panzhihua.common.constants.Constants; import com.panzhihua.common.model.dtos.shop.ComShopFlowerRefundOrderDTO; +import com.panzhihua.common.model.dtos.shop.ComShopOrderQueryDTO; import com.panzhihua.common.model.dtos.shop.PageComOrderRefundDTO; import com.panzhihua.common.model.vos.R; +import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO; +import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderGoodsVO; import com.panzhihua.common.model.vos.shop.ComShopFlowerRefundOrderVO; import com.panzhihua.common.model.vos.shop.ComShopOrderCountVO; +import com.panzhihua.common.model.vos.user.SysUserVO; +import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.utlis.OrderNoUtils; import com.panzhihua.common.utlis.WxPayUtils; +import com.panzhihua.common.utlis.WxUtil; import com.panzhihua.common.utlis.wx.WXPayUtil; -import com.panzhihua.service_community.dao.ComShopFlowerOrderDAO; -import com.panzhihua.service_community.dao.ComShopFlowerOrderPayDAO; -import com.panzhihua.service_community.dao.ComShopFlowerRefundOrderDAO; -import com.panzhihua.service_community.model.dos.ComShopFlowerOrderDO; -import com.panzhihua.service_community.model.dos.ComShopFlowerOrderPayDO; -import com.panzhihua.service_community.model.dos.ComShopFlowerRefundOrderDO; +import com.panzhihua.service_community.dao.*; +import com.panzhihua.service_community.model.dos.*; import com.panzhihua.service_community.service.ComShopFlowerRefundOrderService; +import com.panzhihua.service_community.util.WxMaConfiguration; import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; + +import static java.util.Objects.isNull; +import static java.util.Objects.nonNull; /** * @ClassName: ComShopFlowerRefundOrderServiceImpl @@ -54,18 +67,45 @@ private ComShopFlowerOrderDAO comShopFlowerOrderDAO; @Resource private ComShopFlowerOrderPayDAO comShopFlowerOrderPayDAO; + @Resource + private ComShopFlowerOrderGoodsDAO comShopFlowerOrderGoodsDAO; + @Resource + private ComShopFlowerGoodsDAO comShopFlowerGoodsDAO; + @Resource + private ComShopFlowerGoodsAttrDAO comShopFlowerGoodsAttrDAO; + @Resource + private ConvenientMerchantDAO convenientMerchantDAO; + @Resource + private WxMaConfiguration wxMaConfiguration; + @Resource + private UserService userService; + @Resource + private ConvenientElevatingPointDAO convenientElevatingPointDAO; @Override + @Transactional(rollbackFor = Exception.class) public R createRefundOrder(ComShopFlowerRefundOrderDTO comShopFlowerRefundOrderDTO) { ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO = new ComShopFlowerRefundOrderDO(); BeanUtils.copyProperties(comShopFlowerRefundOrderDTO, comShopFlowerRefundOrderDO); // 生成退款订单号 - String refundOrderNo = OrderNoUtils.NextOrderNo(comShopFlowerRefundOrderDTO.getUserId()); + String refundOrderNo = OrderNoUtils.NextOrderNoFlower(comShopFlowerRefundOrderDTO.getUserId()); comShopFlowerRefundOrderDO.setRefundOrderNo(refundOrderNo); comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.clz); comShopFlowerRefundOrderDO.setDeleteStatus(ComShopFlowerRefundOrderDO.deleteStatus.no); this.baseMapper.insert(comShopFlowerRefundOrderDO); + //商家接受退款信息 + ConvenientMerchantVO convenientMerchantVO = convenientMerchantDAO.selectMerchantById(comShopFlowerRefundOrderDTO.getStoreId()); + WxMaService maService = wxMaConfiguration.getMaService(Constants.HC_APP_ID); + R sysUserVOR = userService.getSysUserVOByPhone(convenientMerchantVO.getMobilePhone()); + if (R.isOk(sysUserVOR)) { + SysUserVO sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(sysUserVOR.getData()), SysUserVO.class); + try { + WxUtil.sendNewRefundOrderNotice(sysUserVO.getOpenid(),maService.getAccessToken(),refundOrderNo,comShopFlowerRefundOrderDO.getRefundAmount().toString(),DateUtil.format(comShopFlowerRefundOrderDO.getRefundTime(),"yyyy-MM-dd HH:mm")); + } catch (WxErrorException e) { + e.printStackTrace(); + } + } return R.ok(); } @@ -73,16 +113,61 @@ public R pageRefundOrder(PageComOrderRefundDTO pageComOrderRefundDTO) { Page page = new Page<>(pageComOrderRefundDTO.getPageNum(), pageComOrderRefundDTO.getPageSize()); IPage<ComShopFlowerRefundOrderVO> pages = this.baseMapper.pageRefundOrder(page, pageComOrderRefundDTO); + for (ComShopFlowerRefundOrderVO comShopFlowerRefundOrderVO : pages.getRecords()) { + String orderNo = comShopFlowerRefundOrderVO.getOrderNo(); + ComShopFlowerOrderDO comShopFlowerOrderDO = comShopFlowerOrderDAO.selectById(comShopFlowerRefundOrderVO.getOrderId()); + if (nonNull(comShopFlowerOrderDO)){ + comShopFlowerRefundOrderVO.setTotalAmount(comShopFlowerOrderDO.getTotalAmount()); + ConvenientElevatingPointDO convenientElevatingPointDO = convenientElevatingPointDAO.selectById(comShopFlowerOrderDO.getPointId()); + if (nonNull(convenientElevatingPointDO)){ + comShopFlowerRefundOrderVO.setPointName(convenientElevatingPointDO.getName()); + } + } + + List<ComShopFlowerOrderGoodsVO> orderGoodsVOS = new ArrayList<>(); + // 查询订单下商品信息 + List<ComShopFlowerOrderGoodsDO> orderGoodsDOList = comShopFlowerOrderGoodsDAO + .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no",orderNo)); + StringBuilder sbr = new StringBuilder(); + if (!orderGoodsDOList.isEmpty()) { + orderGoodsDOList.forEach(orderGoods -> { + ComShopFlowerOrderGoodsVO orderGoodsVO = new ComShopFlowerOrderGoodsVO(); + BeanUtils.copyProperties(orderGoods, orderGoodsVO); + orderGoodsVO.setNum(orderGoods.getAmount()); + orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic()); + orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice()); + orderGoodsVO.setGoodsAttr(orderGoods.getGoodsAttrName()); + orderGoodsVOS.add(orderGoodsVO); + sbr.append(orderGoods.getGoodsName()).append(" "); + }); + comShopFlowerRefundOrderVO.setGoodsAttrName(orderGoodsDOList.get(0).getGoodsAttrName()); + } + comShopFlowerRefundOrderVO.setOrderGoodsVOList(orderGoodsVOS); + comShopFlowerRefundOrderVO.setGoodsName(sbr.toString()); + + + // 查询店铺信息 +/* ConvenientMerchantVO shopStoreVO = new ConvenientMerchantVO(); + ConvenientMerchantDO shopStoreDO = convenientMerchantDAO.selectById(comShopFlowerRefundOrderVO.getStoreId()); + if (shopStoreDO != null) { + BeanUtils.copyProperties(shopStoreDO, shopStoreVO); + } + comShopFlowerRefundOrderVO.setConvenientMerchantVO(shopStoreVO); +*/ + + } return R.ok(pages); } @Override + @Transactional(rollbackFor = Exception.class) public R updateRefundOrder(ComShopFlowerRefundOrderDTO comShopFlowerRefundOrderDTO) { ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO = this.baseMapper.selectById(comShopFlowerRefundOrderDTO.getId()); if (Objects.isNull(comShopFlowerRefundOrderDO)) { return R.fail("不存在该退款订单"); - } + } ComShopFlowerOrderDO comShopFlowerOrderDO = comShopFlowerOrderDAO.selectById(comShopFlowerRefundOrderDO.getOrderId()); + if (ComShopFlowerRefundOrderDO.handleResult.agree.equals(comShopFlowerRefundOrderDTO.getHandleResult())) { //处理退款事宜 comShopFlowerRefundOrderDO.setRefundTime(new Date()); @@ -91,9 +176,8 @@ //微信处理退款 try { String refundNo = WXPayUtil.generateNonceStr(); - ComShopFlowerOrderDO comShopFlowerOrderDO = comShopFlowerOrderDAO.selectById(comShopFlowerRefundOrderDO.getOrderId()); - String refundStr = WxPayUtils.refund(appid, mchId, comShopFlowerOrderDO.getWxTardeNo(), comShopFlowerRefundOrderDO.getPayAmount(), - comShopFlowerRefundOrderDO.getRefundAmount(), refundNo, isTest); + String refundStr = WxPayUtils.refund(appid, mchId, comShopFlowerOrderDO.getOrderNo(), comShopFlowerRefundOrderDO.getPayAmount(), + comShopFlowerRefundOrderDO.getPayAmount(), refundNo, isTest); log.info("退款请求接口返回参数:{}" , refundStr); Map<String, String> mapResult = WXPayUtil.xmlToMap(refundStr); if (CollUtil.isNotEmpty(mapResult)) { @@ -118,13 +202,21 @@ // orderPayDO.setWxTradeNo(wxPayNotifyOrderDTO.getWxTradeNo()); orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.yes); orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tkcg); + //更新订单状态 + comShopFlowerOrderDO.setStatus(ComShopFlowerOrderDO.status.ytk); + comShopFlowerOrderDAO.updateById(comShopFlowerOrderDO); + + //退款成功发送消息 + sendRefundNotice(comShopFlowerRefundOrderDO, comShopFlowerOrderDO,"同意退款"); }else { //退款失败 comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb); - comShopFlowerRefundOrderDO.setRemark(comShopFlowerRefundOrderDO.getRemark() + "_"+return_msg); + comShopFlowerRefundOrderDO.setRemark(comShopFlowerRefundOrderDO.getRemark() + "_退款失败"); // 添加订单支付记录表 orderPayDO.setPayStatus(ComShopFlowerOrderPayDO.payStatus.no); orderPayDO.setRefundStatus(ComShopFlowerOrderPayDO.refundStatus.tksb); + //退款失败发送消息 + sendRefundNotice(comShopFlowerRefundOrderDO, comShopFlowerOrderDO,"退款失败"); } comShopFlowerOrderPayDAO.insert(orderPayDO); } @@ -137,11 +229,27 @@ comShopFlowerRefundOrderDO.setHandleTime(new Date()); comShopFlowerRefundOrderDO.setStatus(ComShopFlowerRefundOrderDO.status.tksb); comShopFlowerRefundOrderDO.setHandleResult(ComShopFlowerRefundOrderDO.handleResult.refuse); + //拒绝退款发送消息 + sendRefundNotice(comShopFlowerRefundOrderDO, comShopFlowerOrderDO,"拒绝退款"); } this.baseMapper.updateById(comShopFlowerRefundOrderDO); return R.ok(); } + private void sendRefundNotice(ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO, ComShopFlowerOrderDO comShopFlowerOrderDO,String msg) { + WxMaService maService = wxMaConfiguration.getMaService(Constants.HC_APP_ID); + R userOpenId = userService.getUserOpenId(comShopFlowerOrderDO.getUserId()); + if (R.isOk(userOpenId)) { + String openid = userOpenId.getData().toString(); + try { + WxUtil.sendRefundNotice(openid,maService.getAccessToken(),comShopFlowerRefundOrderDO.getRefundOrderNo(),comShopFlowerRefundOrderDO.getRefundAmount().toString(),msg); + } catch (WxErrorException e) { + e.printStackTrace(); + } + } + } + + @Override public R selectCountGroupStatus(Long storeId){ String[] statusStr = {"clz","tkcg","tksb","yqx","tkz"}; List<ComShopOrderCountVO> comShopOrderCountVOS = this.baseMapper.selectCountGroupStatus(storeId); @@ -160,4 +268,73 @@ retMap.put("zdd",amountTotal); return R.ok(retMap); } + + /** + * 根据订单id取消订单 + * + * @param \ + * @return 取消结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public R orderCancel(Long id) { + this.baseMapper.updateCancel(id,ComShopFlowerRefundOrderDO.status.yqx); + return R.ok(); + } + + + @Override + public R refundOrderDetail(Long id){ + ComShopFlowerRefundOrderDO comShopFlowerRefundOrderDO = this.baseMapper.selectById(id); + if (isNull(comShopFlowerRefundOrderDO)){ + return R.fail("未查询到该退款订单"); + } + ComShopFlowerRefundOrderVO comShopFlowerRefundOrderVO = new ComShopFlowerRefundOrderVO(); + BeanUtils.copyProperties(comShopFlowerRefundOrderDO,comShopFlowerRefundOrderVO); + String orderNo = comShopFlowerRefundOrderDO.getOrderNo(); + List<ComShopFlowerOrderGoodsVO> orderGoodsVOS = new ArrayList<>(); + // 查询订单下商品信息 + List<ComShopFlowerOrderGoodsDO> orderGoodsDOList = comShopFlowerOrderGoodsDAO + .selectList(new QueryWrapper<ComShopFlowerOrderGoodsDO>().eq("order_no",orderNo)); + StringBuilder sbr = new StringBuilder(); + if (!orderGoodsDOList.isEmpty()) { + orderGoodsDOList.forEach(orderGoods -> { + ComShopFlowerOrderGoodsVO orderGoodsVO = new ComShopFlowerOrderGoodsVO(); + BeanUtils.copyProperties(orderGoods, orderGoodsVO); + orderGoodsVO.setNum(orderGoods.getAmount()); + orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic()); + orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice()); + // 查询商品信息判断商品状态 + ComShopFlowerGoodsDO goodsDO = comShopFlowerGoodsDAO.selectById(orderGoods.getGoodsId()); + if (goodsDO == null || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.deleteStatus.yes) + || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.status.recovery)) { + orderGoodsVO.setGoodsStatus(ComShopFlowerOrderGoodsVO.goodsStatus.ysc); + } else if (goodsDO.getStatus().equals(ComShopFlowerGoodsDO.status.lower)) { + orderGoodsVO.setGoodsStatus(ComShopFlowerOrderGoodsVO.goodsStatus.yxj); + } else if (goodsDO.getStatus().equals(ComShopFlowerGoodsDO.status.sell)) { + orderGoodsVO.setGoodsStatus(ComShopFlowerOrderGoodsVO.goodsStatus.csz); + } + + // 根据商品规格id查询商品规格 + ComShopFlowerGoodsAttrDO goodsAttrDO = comShopFlowerGoodsAttrDAO.selectById(orderGoods.getGoodsAttrId()); + if (goodsAttrDO != null) { + orderGoodsVO.setGoodsAttr(goodsAttrDO.getGoodsAttrName()); + } + comShopFlowerRefundOrderVO.setGoodsAttrName(orderGoodsDOList.get(0).getGoodsAttrName()); + orderGoodsVOS.add(orderGoodsVO); + sbr.append(orderGoods.getGoodsName()).append(" "); + }); + } + comShopFlowerRefundOrderVO.setOrderGoodsVOList(orderGoodsVOS); + comShopFlowerRefundOrderVO.setGoodsName(sbr.toString()); + + ConvenientMerchantVO shopStoreVO = new ConvenientMerchantVO(); + // 查询店铺信息 + ConvenientMerchantDO shopStoreDO = convenientMerchantDAO.selectById(comShopFlowerRefundOrderDO.getStoreId()); + if (shopStoreDO != null) { + BeanUtils.copyProperties(shopStoreDO, shopStoreVO); + } + comShopFlowerRefundOrderVO.setConvenientMerchantVO(shopStoreVO); + return R.ok(comShopFlowerRefundOrderVO); + } } -- Gitblit v1.7.1