| | |
| | | package com.matrix.system.shopXcx.action; |
| | | |
| | | import com.matrix.component.wechat.externalInterface.common.WechatConfigure; |
| | | import com.matrix.component.asyncmessage.AsyncMessageManager; |
| | | import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil; |
| | | import com.matrix.core.anotations.RemoveRequestToken; |
| | | import com.matrix.core.anotations.SaveRequestToken; |
| | | import com.matrix.core.constance.MatrixConstance; |
| | |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | | import com.matrix.core.pojo.PaginationVO; |
| | | import com.matrix.core.tools.*; |
| | | import com.matrix.component.redis.RedisUserLoginUtils; |
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.core.tools.ModelUtils; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.core.tools.WebUtil; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | |
| | | import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil; |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.hive.action.util.QueryUtil; |
| | | import com.matrix.system.shopXcx.api.service.WXShopOrderService; |
| | | import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService; |
| | | import com.matrix.system.shopXcx.bean.*; |
| | | import com.matrix.system.shopXcx.dao.ShopCouponRecordDao; |
| | | import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderDao; |
| | | import com.matrix.system.shopXcx.dao.ShopRefundRecordDao; |
| | | import com.matrix.component.tools.WxTempLateMsgUtil; |
| | | import com.matrix.system.shopXcx.api.service.WXShopOrderService; |
| | | import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting; |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | |
| | | @Autowired |
| | | private ShopDeliveryInfoDao shopDeliveryInfoDao; |
| | | @Autowired |
| | | private RedisUserLoginUtils redisUserLoginUtils; |
| | | |
| | | private AsyncMessageManager asyncMessageManager; |
| | | @Autowired |
| | | private ShopCouponRecordDao shopCouponRecordDao; |
| | | |
| | |
| | | |
| | | @Value("${wx_pay_debug_onoff}") |
| | | private boolean isDebug; |
| | | @Value("${evn}") |
| | | private String evn; |
| | | |
| | | |
| | | @Autowired |
| | | BusParameterSettingsDao parameterSettingsDao; |
| | | |
| | | /** |
| | | * 列表显示 |
| | |
| | | modifyMap.put("handingTime", new Date()); |
| | | int i = shopRefundRecordDao.updateByMap(modifyMap); |
| | | if (i > 0) { |
| | | //同意退款后发送微信提醒填写物流单号 |
| | | ShopRefundRecord fundRecord = shopRefundRecordDao.selectById(shopRefundRecord.getId()); |
| | | sendRefundLogisticsInfoToUser(fundRecord); |
| | | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功", "退款记录表"); |
| | | } else { |
| | | throw new GlobleException("操作失败"); |
| | |
| | | modifyOrder.put("id", record.getOrderId()); |
| | | shopOrderDao.updateByMap(modifyOrder); |
| | | } |
| | | //退款拒绝后发送微信提醒 |
| | | sendFailedRefundInfoToUser(record); |
| | | if (i > 0) { |
| | | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "操作成功", "退款记录表"); |
| | | } else { |
| | |
| | | if(flag){ |
| | | //退款成功后发送微信提醒 |
| | | ShopRefundRecord fundRecord = shopRefundRecordDao.selectById(oldShopRefundRecord.getId()); |
| | | sendRefundInfoToUser(fundRecord); |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | if(flag){ |
| | | //退款成功后发送微信提醒 |
| | | ShopRefundRecord fundRecord = shopRefundRecordDao.selectById(oldShopRefundRecord.getId()); |
| | | sendRefundInfoToUser(fundRecord); |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | if(flag){ |
| | | //退款成功后发送微信提醒 |
| | | ShopRefundRecord fundRecord = shopRefundRecordDao.selectById(Integer.valueOf(id)); |
| | | sendRefundInfoToUser(fundRecord); |
| | | |
| | | refundRecordService.updateGroupBuyStatus(Long.parseLong(id)); |
| | | } |
| | | } |
| | |
| | | if(flag){ |
| | | //退款成功后发送微信提醒 |
| | | ShopRefundRecord fundRecord = shopRefundRecordDao.selectById(Integer.valueOf(id)); |
| | | sendRefundInfoToUser(fundRecord); |
| | | |
| | | refundRecordService.updateGroupBuyStatus(Long.parseLong(id)); |
| | | } |
| | | } |
| | |
| | | //退款成功后同时把优惠券退回到用户的账号中 |
| | | if (shopOrder.getDiscountAmount() != null && shopOrder.getDiscountAmount().compareTo(BigDecimal.ZERO) == 0) { |
| | | ShopCouponRecord shopCouponRecord = new ShopCouponRecord(); |
| | | String userIds = shopRefundRecord.getUserId(); |
| | | shopCouponRecord.setUserId(userIds); |
| | | shopCouponRecord.setUserId(shopRefundRecord.getUserId()); |
| | | shopCouponRecord.setOrderId(shopOrder.getId()); |
| | | List<ShopCouponRecord> recordList = shopCouponRecordDao.selectByModel(shopCouponRecord); |
| | | if (CollectionUtils.isNotEmpty(recordList)) { |
| | |
| | | modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_MONEYBACK_SUCCESS); |
| | | modifyMap.put("refundCharge", shopRefundRecord.getRefundMoney()); |
| | | shopOrderDao.updateByMap(modifyMap); |
| | | |
| | | asyncMessageManager.sendMsg(AsyncMessageRouting.SHOP_ORDER_REFUND ,"orderId=%s", shopRefundRecord.getOrderId()); |
| | | |
| | | }catch (Exception e){ |
| | | LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id); |
| | | e.printStackTrace(); |
| | |
| | | return flag; |
| | | } |
| | | |
| | | //退款成功后发送微信提醒 |
| | | private int sendRefundInfoToUser(ShopRefundRecord shopRefundRecord) { |
| | | ShopOrder order = shopOrderDao.selectById(shopRefundRecord.getOrderId()); |
| | | if (order == null) { |
| | | throw new GlobleException("没有找到需要退款的订单信息"); |
| | | } |
| | | List<String> msg = new ArrayList<>(); |
| | | //退款说明 |
| | | String refundExplain = "退款已经原路返回,具体到账时间可能会有1-3天延迟"; |
| | | msg.add(order.getOrderNo()); |
| | | msg.add(DateUtil.dateToString(shopRefundRecord.getRefundTime(),DateUtil.DATE_FORMAT_SS)); |
| | | msg.add(refundExplain); |
| | | msg.add("商品名称"); |
| | | String formId = null; |
| | | if(AppConstance.REFUND_GOODS.equals(shopRefundRecord.getRefundType()) && null != shopRefundRecord.getRefundTransactionNo()){ |
| | | formId = shopRefundRecord.getRefundTransactionNo(); |
| | | }else { |
| | | formId = order.getWxOrderNo().split("=")[1]; |
| | | } |
| | | String page = "pages/refunDetail/refunDetail?id=" + shopRefundRecord.getId() + "&&status=1" + "&&inform=1"; |
| | | int res = WxTempLateMsgUtil.sendWxTemplateMsg(msg, order.getUserId(), |
| | | page, WxTempLateMsgUtil.REFUND_SUCCESS, formId); |
| | | return res; |
| | | } |
| | | |
| | | //退款拒绝后发送微信提醒 |
| | | private int sendFailedRefundInfoToUser(ShopRefundRecord shopRefundRecord) { |
| | | ShopOrder order = shopOrderDao.selectById(shopRefundRecord.getOrderId()); |
| | | if (order == null) { |
| | | throw new GlobleException("没有找到拒绝退款的订单信息"); |
| | | } |
| | | List<String> msg = new ArrayList<>(); |
| | | //退款说明 |
| | | String remarks = "如有疑问请联系客服"; |
| | | msg.add(order.getOrderNo()); |
| | | msg.add("商品名称"); |
| | | msg.add(shopRefundRecord.getRefundRefuseReason()); |
| | | msg.add(shopRefundRecord.getRefundCause()); |
| | | String formId = null; |
| | | if(AppConstance.REFUND_GOODS .equals(shopRefundRecord.getRefundType()) && null != shopRefundRecord.getRefundTransactionNo()){ |
| | | formId = shopRefundRecord.getRefundTransactionNo(); |
| | | }else { |
| | | formId = order.getWxOrderNo().split("=")[1]; |
| | | } |
| | | String page = "pages/refunDetail/refunDetail?id=" + shopRefundRecord.getId() + "&&status=2" + "&&inform=1"; |
| | | int res = WxTempLateMsgUtil.sendWxTemplateMsg(msg, order.getUserId(), |
| | | page, WxTempLateMsgUtil.REFUND_FAILED, formId); |
| | | return res; |
| | | } |
| | | |
| | | //同意退款后发送微信提醒填写物流单号 |
| | | private int sendRefundLogisticsInfoToUser(ShopRefundRecord shopRefundRecord) { |
| | | ShopOrder order = shopOrderDao.selectById(shopRefundRecord.getOrderId()); |
| | | if (order == null) { |
| | | throw new GlobleException("没有找到发送微信提醒的订单信息"); |
| | | } |
| | | List<String> msg = new ArrayList<>(); |
| | | //退款说明 |
| | | String remarks = "申请退款已审核通过,请尽快填写退货物流信息"; |
| | | msg.add(order.getOrderNo()); |
| | | msg.add("商品名称"); |
| | | msg.add("待退回"); |
| | | msg.add(remarks); |
| | | String formId = order.getWxOrderNo().split("=")[1]; |
| | | String page = "pages/refunding/refunding?id=" + shopRefundRecord.getId() + "&&inform=1"; |
| | | int res = WxTempLateMsgUtil.sendWxTemplateMsg(msg, order.getUserId(), |
| | | page, WxTempLateMsgUtil.WRITE_LOGISTICS, formId); |
| | | return res; |
| | | } |
| | | } |