Commit f6727afa authored by shiyu's avatar shiyu

支付成功发送模板消息

parent 25e2a1d7
...@@ -19,6 +19,8 @@ public class DistributionOrderRequestDto extends BaseRequestDto implements Entit ...@@ -19,6 +19,8 @@ public class DistributionOrderRequestDto extends BaseRequestDto implements Entit
*/ */
private String searchParam; private String searchParam;
private Long userId;
/** /**
* 分销分享记录id * 分销分享记录id
*/ */
......
...@@ -79,6 +79,9 @@ public class SupplierItemDaoImpl implements SupplierItemDao { ...@@ -79,6 +79,9 @@ public class SupplierItemDaoImpl implements SupplierItemDao {
public int updateStock(long itemId, int stock) { public int updateStock(long itemId, int stock) {
SupplierItem supplierItem = new SupplierItem(); SupplierItem supplierItem = new SupplierItem();
supplierItem.setStock(stock); supplierItem.setStock(stock);
if (stock <= 0) {
supplierItem.setIsOnSale(false);
}
SupplierItemExample supplierItemExample = new SupplierItemExample(); SupplierItemExample supplierItemExample = new SupplierItemExample();
SupplierItemExample.Criteria criteria = supplierItemExample.createCriteria(); SupplierItemExample.Criteria criteria = supplierItemExample.createCriteria();
criteria.andIdEqualTo(itemId); criteria.andIdEqualTo(itemId);
......
...@@ -8,6 +8,7 @@ import com.wechat.pay.java.service.refund.model.RefundNotification; ...@@ -8,6 +8,7 @@ import com.wechat.pay.java.service.refund.model.RefundNotification;
import com.wwdz.ch.core.api.OfficialAccountApi; import com.wwdz.ch.core.api.OfficialAccountApi;
import com.wwdz.ch.core.api.wxpay.WxPayServiceApi; import com.wwdz.ch.core.api.wxpay.WxPayServiceApi;
import com.wwdz.ch.core.consts.DistributionEnum; import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.notify.AliSmsSender;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.PriceUtil; import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.core.util.RedisUtils; import com.wwdz.ch.core.util.RedisUtils;
...@@ -15,6 +16,7 @@ import com.wwdz.ch.core.util.TimeUtil; ...@@ -15,6 +16,7 @@ import com.wwdz.ch.core.util.TimeUtil;
import com.wwdz.ch.db.dao.distribution.*; import com.wwdz.ch.db.dao.distribution.*;
import com.wwdz.ch.db.domain.distribution.*; import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto; import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.wx.entity.DistributionOrderNoticeMsg;
import com.wwdz.ch.wx.entity.PayNoticeMsg; import com.wwdz.ch.wx.entity.PayNoticeMsg;
import com.wwdz.ch.wx.service.distribution.SendMsgService; import com.wwdz.ch.wx.service.distribution.SendMsgService;
import com.wwdz.ch.wx.service.distribution.SupplierItemService; import com.wwdz.ch.wx.service.distribution.SupplierItemService;
...@@ -79,6 +81,12 @@ public class WxPayCallbackController { ...@@ -79,6 +81,12 @@ public class WxPayCallbackController {
@Autowired @Autowired
RefundOrderDao refundOrderDao; RefundOrderDao refundOrderDao;
@Autowired
AliSmsSender aliSmsSender;
@Autowired
WxAppletApi wxAppletApi;
@RequestMapping(value ="/getPayNotify") @RequestMapping(value ="/getPayNotify")
public String payNotify(HttpServletRequest request) throws IOException { public String payNotify(HttpServletRequest request) throws IOException {
logger.info("------------------ 收到微信支付回调通知 ------------------"); logger.info("------------------ 收到微信支付回调通知 ------------------");
...@@ -144,12 +152,18 @@ public class WxPayCallbackController { ...@@ -144,12 +152,18 @@ public class WxPayCallbackController {
if (!updateResult.getSuccess()) { if (!updateResult.getSuccess()) {
return JsonUtils.from(returnMap); return JsonUtils.from(returnMap);
} }
} else { } else if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.AUCTION.getCode()) {
//竞拍订单处理 //竞拍订单处理
Result updateResult = handleAuctionOrder(transaction); Result updateResult = handleAuctionOrder(transaction);
if (!updateResult.getSuccess()) { if (!updateResult.getSuccess()) {
return JsonUtils.from(returnMap); return JsonUtils.from(returnMap);
} }
} else if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.COLLECT.getCode()) {
//藏馆订单
Result updateResult = handleOrderOfCollector(transaction);
if (!updateResult.getSuccess()) {
return JsonUtils.from(returnMap);
}
} }
} }
} }
...@@ -192,7 +206,7 @@ public class WxPayCallbackController { ...@@ -192,7 +206,7 @@ public class WxPayCallbackController {
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId()); SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
//更新库存 //更新库存
supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum()); supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum());
logger.info(">>>>>>>>>>>> 微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<"); logger.info(">>>>>>>>>>>> 一口价订单,微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<");
//用户首次购买的话,即绑定该分销商 //用户首次购买的话,即绑定该分销商
boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId()); boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId());
if (!isExisted) { if (!isExisted) {
...@@ -206,26 +220,28 @@ public class WxPayCallbackController { ...@@ -206,26 +220,28 @@ public class WxPayCallbackController {
distributorBind.setIsValid(true); distributorBind.setIsValid(true);
distributorBindDao.insert(distributorBind); distributorBindDao.insert(distributorBind);
} }
//用户支付成功,发送模板信息通知分销商 if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode()) {
try { //用户支付成功,发送模板信息通知分销商
String openId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId()); try {
if (StringUtils.hasLength(openId)) { String openId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId());
PayNoticeMsg payNoticeMsg = new PayNoticeMsg(); if (StringUtils.hasLength(openId)) {
payNoticeMsg.setDistributionOrderId(distributionOrderId); PayNoticeMsg payNoticeMsg = new PayNoticeMsg();
payNoticeMsg.setItemName(supplierItem.getName()); payNoticeMsg.setDistributionOrderId(distributionOrderId);
payNoticeMsg.setItemNum(distributionOrder.getItemNum()); payNoticeMsg.setItemName(supplierItem.getName());
payNoticeMsg.setAmount(PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount())); payNoticeMsg.setItemNum(distributionOrder.getItemNum());
payNoticeMsg.setPayTime(TimeUtil.wxTimeConvert(payTime)); payNoticeMsg.setAmount(PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()));
sendMsgService.sendPayTempletMsg(openId, payNoticeMsg); payNoticeMsg.setPayTime(TimeUtil.wxTimeConvert(payTime));
} else { sendMsgService.sendPayTempletMsg(openId, payNoticeMsg);
logger.info(">>>>> 分销商id :{}, 获取openid失败 <<<<<", distributionOrder.getSellerId()); } else {
logger.info(">>>>> 分销商id :{}, 获取openid失败 <<<<<", distributionOrder.getSellerId());
}
} catch (Exception e) {
logger.error("用户支付成功,向分销商发送模板信息失败:{}", e);
} }
} catch (Exception e) {
logger.error("用户支付成功,向分销商发送模板信息失败:{}", e);
} }
return Result.success(); return Result.success();
} catch (Exception e) { } catch (Exception e) {
logger.error(">>>>>>>>>>>> 微信支付回调通知处理失败 error :{}", e); logger.error(">>>>>>>>>>>> 一口价订单,微信支付回调通知处理失败 error :{}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} }
return Result.failed(); return Result.failed();
...@@ -255,7 +271,7 @@ public class WxPayCallbackController { ...@@ -255,7 +271,7 @@ public class WxPayCallbackController {
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId()); SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
//更新库存 //更新库存
supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum()); supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum());
logger.info(">>>>>>>>>>>> 微信支付回调通知处理成功,更新拍卖订单状态和商品库存 <<<<<<<<<<<<"); logger.info(">>>>>>>>>>>> 竞拍订单,微信支付回调通知处理成功,更新拍卖订单状态和商品库存 <<<<<<<<<<<<");
//用户首次购买的话,即绑定该分销商 //用户首次购买的话,即绑定该分销商
boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId()); boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId());
if (!isExisted) { if (!isExisted) {
...@@ -271,7 +287,68 @@ public class WxPayCallbackController { ...@@ -271,7 +287,68 @@ public class WxPayCallbackController {
} }
return Result.success(); return Result.success();
} catch (Exception e) { } catch (Exception e) {
logger.error(">>>>>>>>>>>> 微信支付回调通知处理失败 error :{}", e); logger.error(">>>>>>>>>>>> 竞拍订单,微信支付回调通知处理失败 error :{}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return Result.failed();
}
/**
* 更新仓管订单状态
* @return
*/
@Transactional
public Result handleOrderOfCollector(Transaction transaction) {
try {
//商户订单号,分销订单号
String distributionOrderId = transaction.getOutTradeNo();
//微信支付交易id
String transactionId = transaction.getTransactionId();
//支付成功时间
String payTime = transaction.getSuccessTime();
//支付成功,更新订单状态为待发货
DistributionOrder distributionOrderDto = new DistributionOrder();
distributionOrderDto.setDistributionOrderId(distributionOrderId);
distributionOrderDto.setTransactionId(transactionId);
distributionOrderDto.setPayTime(TimeUtil.wxTimeConvertToDate(payTime));
distributionOrderDto.setState(DistributionEnum.DistributionOrderStateEnum.PRE_SEND.getCode());
distributionOrderDao.update(distributionOrderDto);
//用户付款成功后,把藏家利润的记录更新为有效,因为未付款前只是创建了预计利润记录,但并未生效
distributorProfitDao.updateValidState(distributionOrderId, true);
//用户确认签收,新增分销商利润
DistributionOrder distributionOrder = distributionOrderDao.findById(distributionOrderId);
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
//更新库存
supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum());
logger.info(">>>>>>>>>>>> 藏馆订单,微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<");
//给藏家发信息
String lastOpenId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId());
if (com.xxdxxs.utils.StringUtils.hasLength(lastOpenId)) {
DistributionOrderNoticeMsg distributionOrderNoticeMsg = new DistributionOrderNoticeMsg();
distributionOrderNoticeMsg.setOpenId(lastOpenId);
distributionOrderNoticeMsg.setItemId(supplierItem.getId());
distributionOrderNoticeMsg.setItemName(supplierItem.getName());
distributionOrderNoticeMsg.setItemNum(distributionOrder.getItemNum());
distributionOrderNoticeMsg.setAmount(PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()));
distributionOrderNoticeMsg.setCreateTime(distributionOrder.getCreateTime());
Result result = sendMsgService.newOrderNoticeMsg(distributionOrderNoticeMsg);
if (!result.getSuccess()) {
String url = wxAppletApi.getUrlLink("/pages/saleOrder/index","shopState=2");
String msg = "您的藏馆收到一个新订单,请前往" + url + "查看";
aliSmsSender.sendSms(distributionOrder.getSellerId(), msg);
}
} else {
String url = wxAppletApi.getUrlLink("/pages/saleOrder/index","shopState=2");
String msg = "您的藏馆收到一个新订单,请前往" + url + "查看";
aliSmsSender.sendSms(distributionOrder.getSellerId(), msg);
}
return Result.success();
} catch (Exception e) {
logger.error(">>>>>>>>>>>> 藏馆订单,微信支付回调通知处理失败 error :{}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} }
return Result.failed(); return Result.failed();
......
...@@ -479,27 +479,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -479,27 +479,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributorProfit.setIsValid(false); distributorProfit.setIsValid(false);
distributorProfitDao.insert(distributorProfit); distributorProfitDao.insert(distributorProfit);
//给藏家发信息
String lastOpenId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId());
if (com.xxdxxs.utils.StringUtils.hasLength(lastOpenId)) {
DistributionOrderNoticeMsg distributionOrderNoticeMsg = new DistributionOrderNoticeMsg();
distributionOrderNoticeMsg.setOpenId(lastOpenId);
distributionOrderNoticeMsg.setItemId(supplierItem.getId());
distributionOrderNoticeMsg.setItemName(supplierItem.getName());
distributionOrderNoticeMsg.setItemNum(distributionOrder.getItemNum());
distributionOrderNoticeMsg.setAmount(PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()));
distributionOrderNoticeMsg.setCreateTime(distributionOrder.getCreateTime());
Result result = sendMsgService.newOrderNoticeMsg(distributionOrderNoticeMsg);
if (!result.getSuccess()) {
String url = wxAppletApi.getUrlLink("/pages/saleOrder/index","shopState=2");
String msg = "您的藏馆收到一个新订单,请前往" + url + "查看";
aliSmsSender.sendSms(distributionOrder.getSellerId(), msg);
}
} else {
String url = wxAppletApi.getUrlLink("/pages/saleOrder/index","shopState=2");
String msg = "您的藏馆收到一个新订单,请前往" + url + "查看";
aliSmsSender.sendSms(distributionOrder.getSellerId(), msg);
}
return Result.success(map); return Result.success(map);
} catch (Exception e) { } catch (Exception e) {
logger.error("创建藏品一口价订单失败 error : {}", e); logger.error("创建藏品一口价订单失败 error : {}", e);
...@@ -718,17 +698,20 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -718,17 +698,20 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
deliveryNoticeMsg.setDeliveryTime(now); deliveryNoticeMsg.setDeliveryTime(now);
//发送给卖家 //发送给卖家
String sellerOpenId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId()); if (dto.getUserId() == null || distributionOrder.getSellerId().longValue() != dto.getUserId()) {
if (com.xxdxxs.utils.StringUtils.hasLength(sellerOpenId)) { String sellerOpenId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId());
if (distributionOrder.getType().intValue() == DistributionEnum.DistributionTypeEnum.COLLECT.getCode()) { if (com.xxdxxs.utils.StringUtils.hasLength(sellerOpenId)) {
deliveryNoticeMsg.setShopState(2); if (distributionOrder.getType().intValue() == DistributionEnum.DistributionTypeEnum.COLLECT.getCode()) {
deliveryNoticeMsg.setShopState(2);
} else {
deliveryNoticeMsg.setShopState(1);
}
sendMsgService.sendDeliveryTempletMsg(sellerOpenId, deliveryNoticeMsg);
} else { } else {
deliveryNoticeMsg.setShopState(1); logger.info(">>>>> 卖家id :{}, 获取openid失败 <<<<<", distributionOrder.getSellerId());
} }
sendMsgService.sendDeliveryTempletMsg(sellerOpenId, deliveryNoticeMsg);
} else {
logger.info(">>>>> 分销商id :{}, 获取openid失败 <<<<<", distributionOrder.getSellerId());
} }
//发送给买家 //发送给买家
String buyerOpenId = sendMsgService.getOpenIdByUserId(distributionOrder.getBuyerId()); String buyerOpenId = sendMsgService.getOpenIdByUserId(distributionOrder.getBuyerId());
if (com.xxdxxs.utils.StringUtils.hasLength(buyerOpenId)) { if (com.xxdxxs.utils.StringUtils.hasLength(buyerOpenId)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment