Commit f6727afa authored by shiyu's avatar shiyu

支付成功发送模板消息

parent 25e2a1d7
......@@ -19,6 +19,8 @@ public class DistributionOrderRequestDto extends BaseRequestDto implements Entit
*/
private String searchParam;
private Long userId;
/**
* 分销分享记录id
*/
......
......@@ -79,6 +79,9 @@ public class SupplierItemDaoImpl implements SupplierItemDao {
public int updateStock(long itemId, int stock) {
SupplierItem supplierItem = new SupplierItem();
supplierItem.setStock(stock);
if (stock <= 0) {
supplierItem.setIsOnSale(false);
}
SupplierItemExample supplierItemExample = new SupplierItemExample();
SupplierItemExample.Criteria criteria = supplierItemExample.createCriteria();
criteria.andIdEqualTo(itemId);
......
......@@ -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.wxpay.WxPayServiceApi;
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.util.PriceUtil;
import com.wwdz.ch.core.util.RedisUtils;
......@@ -15,6 +16,7 @@ import com.wwdz.ch.core.util.TimeUtil;
import com.wwdz.ch.db.dao.distribution.*;
import com.wwdz.ch.db.domain.distribution.*;
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.service.distribution.SendMsgService;
import com.wwdz.ch.wx.service.distribution.SupplierItemService;
......@@ -79,6 +81,12 @@ public class WxPayCallbackController {
@Autowired
RefundOrderDao refundOrderDao;
@Autowired
AliSmsSender aliSmsSender;
@Autowired
WxAppletApi wxAppletApi;
@RequestMapping(value ="/getPayNotify")
public String payNotify(HttpServletRequest request) throws IOException {
logger.info("------------------ 收到微信支付回调通知 ------------------");
......@@ -144,12 +152,18 @@ public class WxPayCallbackController {
if (!updateResult.getSuccess()) {
return JsonUtils.from(returnMap);
}
} else {
} else if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.AUCTION.getCode()) {
//竞拍订单处理
Result updateResult = handleAuctionOrder(transaction);
if (!updateResult.getSuccess()) {
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 {
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
//更新库存
supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum());
logger.info(">>>>>>>>>>>> 微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<");
logger.info(">>>>>>>>>>>> 一口价订单,微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<");
//用户首次购买的话,即绑定该分销商
boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId());
if (!isExisted) {
......@@ -206,6 +220,7 @@ public class WxPayCallbackController {
distributorBind.setIsValid(true);
distributorBindDao.insert(distributorBind);
}
if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode()) {
//用户支付成功,发送模板信息通知分销商
try {
String openId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId());
......@@ -223,9 +238,10 @@ public class WxPayCallbackController {
} catch (Exception e) {
logger.error("用户支付成功,向分销商发送模板信息失败:{}", e);
}
}
return Result.success();
} catch (Exception e) {
logger.error(">>>>>>>>>>>> 微信支付回调通知处理失败 error :{}", e);
logger.error(">>>>>>>>>>>> 一口价订单,微信支付回调通知处理失败 error :{}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return Result.failed();
......@@ -255,7 +271,7 @@ public class WxPayCallbackController {
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
//更新库存
supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum());
logger.info(">>>>>>>>>>>> 微信支付回调通知处理成功,更新拍卖订单状态和商品库存 <<<<<<<<<<<<");
logger.info(">>>>>>>>>>>> 竞拍订单,微信支付回调通知处理成功,更新拍卖订单状态和商品库存 <<<<<<<<<<<<");
//用户首次购买的话,即绑定该分销商
boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId());
if (!isExisted) {
......@@ -271,7 +287,68 @@ public class WxPayCallbackController {
}
return Result.success();
} 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();
}
return Result.failed();
......
......@@ -479,27 +479,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributorProfit.setIsValid(false);
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);
} catch (Exception e) {
logger.error("创建藏品一口价订单失败 error : {}", e);
......@@ -718,6 +698,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
deliveryNoticeMsg.setDeliveryTime(now);
//发送给卖家
if (dto.getUserId() == null || distributionOrder.getSellerId().longValue() != dto.getUserId()) {
String sellerOpenId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId());
if (com.xxdxxs.utils.StringUtils.hasLength(sellerOpenId)) {
if (distributionOrder.getType().intValue() == DistributionEnum.DistributionTypeEnum.COLLECT.getCode()) {
......@@ -727,8 +708,10 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
}
sendMsgService.sendDeliveryTempletMsg(sellerOpenId, deliveryNoticeMsg);
} else {
logger.info(">>>>> 分销商id :{}, 获取openid失败 <<<<<", distributionOrder.getSellerId());
logger.info(">>>>> 卖家id :{}, 获取openid失败 <<<<<", distributionOrder.getSellerId());
}
}
//发送给买家
String buyerOpenId = sendMsgService.getOpenIdByUserId(distributionOrder.getBuyerId());
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