| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- package com.emato.ccnet.wx.service.impl;
- import com.emato.ccnet.wx.config.Cus;
- import com.emato.ccnet.wx.config.Merchant;
- import com.emato.ccnet.wx.contants.CcnetContants;
- import com.emato.ccnet.wx.contants.SysContants;
- import com.emato.ccnet.wx.dao.entity.ccnet.WxCuspayStatus;
- import com.emato.ccnet.wx.dao.entity.ccnet.WxOrder;
- import com.emato.ccnet.wx.dao.entity.ccnet.WxOrderGoods;
- import com.emato.ccnet.wx.dao.entity.ccnet.WxPayDoc;
- import com.emato.ccnet.wx.dao.mapper.ccnet.WxCuspayStatusMapper;
- import com.emato.ccnet.wx.dao.mapper.ccnet.WxOrderGoodsMapper;
- import com.emato.ccnet.wx.dao.mapper.ccnet.WxPayDocMapper;
- import com.emato.ccnet.wx.manager.snow.SnowflakeUtil;
- import com.emato.ccnet.wx.service.WxPayDocService;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- @Service("wxPayDocService")
- public class WxPayDocServiceImpl implements WxPayDocService {
- @Autowired
- private WxPayDocMapper wxPayDocMapper;
- @Autowired
- private Merchant merchant;
- @Autowired
- private WxCuspayStatusMapper wxCuspayStatusMapper;
- @Autowired
- private WxOrderGoodsMapper wxOrderGoodsMapper;
- @Autowired
- private Cus cus;
- private static final Logger logger = LoggerFactory.getLogger(WxPayDocServiceImpl.class);
- @Override
- public WxPayDoc add(WxPayDoc record) {
- record.setCreateTime(new Date());
- if(this.wxPayDocMapper.insertSelective(record)==1) {
- return record;
- }
- return null;
- }
- @Override
- public boolean delete(String wxCuspaySn) {
- return this.wxPayDocMapper.deleteByPrimaryKey(wxCuspaySn)==1;
- }
- @Override
- public WxPayDoc update(WxPayDoc record) {
- if(this.wxPayDocMapper.updateByPrimaryKeySelective(record)==1) {
- return record;
- }
- return null;
- }
- @Override
- public WxPayDoc get(String wxCuspaySn) {
- return this.wxPayDocMapper.selectByPrimaryKey(wxCuspaySn);
- }
- @Override
- public int addWxPayDoc(List list) {
- //支付单总表集合
- List<WxPayDoc> wxPayDocList = new ArrayList<>();
- List<WxPayDoc> upWxPayDocList = new ArrayList<>();
- //支付单状态表集合
- List<WxCuspayStatus> wxCuspayStatusList = new ArrayList<>();
- List<WxCuspayStatus> upWxCuspayStatusList = new ArrayList<>();
- //支付单数据
- List<WxOrder> wxOrderList = (List<WxOrder>) list;
- for (WxOrder wxOrder : wxOrderList) {
- //支付单表
- WxPayDoc wxPayDoc = wxPayDocMapper.findWxPayDocByOrderSn(wxOrder.getWxOrderSn());
- if(wxPayDoc != null){
- //组装wxPayDoc参数
- WxPayDoc updateWxPayDoc = buildWxPayDoc(wxOrder, wxPayDoc);
- upWxPayDocList.add(updateWxPayDoc);
- WxCuspayStatus wxCuspayStatus = wxCuspayStatusMapper.findWxcuspayStatusByOrderSn(wxOrder.getWxOrderSn());
- wxCuspayStatus.setSendStatus(CcnetContants.sendStatus.item_0.getItem());
- wxCuspayStatus.setRespStatus(CcnetContants.sendStatus.item_0.getItem());
- upWxCuspayStatusList.add(wxCuspayStatus);
- }else {
- wxPayDoc = new WxPayDoc();
- String wxCuspaySn = SysContants.wx_pay_doc + SnowflakeUtil.getSnowNextId();
- wxPayDoc.setWxCuspaySn(wxCuspaySn);
- //组装wxPayDoc参数
- WxPayDoc buildWxPayDoc = buildWxPayDoc(wxOrder, wxPayDoc);
- wxPayDocList.add(buildWxPayDoc);
- //支付单发送状态表组装
- WxCuspayStatus wxCuspayStatus = buildWxCuspayStatus(wxOrder, wxCuspaySn);
- wxCuspayStatusList.add(wxCuspayStatus);
- }
- }
- if(wxPayDocList != null && wxPayDocList.size() > 0){
- try {
- wxPayDocMapper.insertWxpayDocItemBatch(wxPayDocList);
- }catch (Exception e){
- logger.error("批量插入,支付单表记录全部失败");
- return 0;
- }
- }
- if(wxCuspayStatusList != null && wxCuspayStatusList.size() > 0){
- try {
- wxCuspayStatusMapper.insertCusOrderStatusItemBatch(wxCuspayStatusList);
- }catch (Exception e){
- logger.error("批量插入,支付单状态表记录全部失败");
- return 0;
- }
- }
- if(upWxPayDocList != null && upWxPayDocList.size() > 0) {
- try {
- wxPayDocMapper.updateWxPayDocItemBatch(upWxPayDocList);
- }catch (Exception e){
- logger.error("批量更新,支付单表记录全部失败");
- return 0;
- }
- }
- if(upWxCuspayStatusList != null && upWxCuspayStatusList.size() > 0) {
- try {
- wxCuspayStatusMapper.updateCusOrderStatusItemBatch(upWxCuspayStatusList);
- }catch (Exception e){
- logger.error("批量更新,支付单表状态记录全部失败");
- return 0;
- }
- }
- return 1;
- }
- /**
- * 组装wxPayDoc参数
- * @param wxOrder
- * @param wxPayDoc
- * @return
- */
- private WxPayDoc buildWxPayDoc(WxOrder wxOrder, WxPayDoc wxPayDoc) {
- //查询订单详情
- List<WxOrderGoods> orderGoodsList = wxOrderGoodsMapper.getWxOrderGoodsByWxOrderId(wxOrder.getWxOrderId());
- if (orderGoodsList == null || orderGoodsList.size() <= 0){
- logger.error("订单详情为空!");
- return null;
- }
- BigDecimal goodsValue = new BigDecimal(0);
- for (WxOrderGoods wxOrderGoods:orderGoodsList){
- goodsValue = wxOrderGoods.getTotalPrice();
- }
- BigDecimal duty = wxOrder.getActuralPaid().subtract(goodsValue).setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
- Map<String, Object> wxMap = (Map) cus.getPlay().get("wx");
- wxPayDoc.setWxCuspaySn(wxPayDoc.getWxCuspaySn());
- wxPayDoc.setOrderSn(wxOrder.getWxOrderSn());
- wxPayDoc.setMerchSn(wxOrder.getMerchSn());
- wxPayDoc.setMerchName(wxOrder.getMerchName());
- wxPayDoc.setPlatSn(merchant.getPlatSn());
- wxPayDoc.setPlatName(merchant.getPlatName());
- wxPayDoc.setThirdPartyMerchCode(wxOrder.getThirdPartyMerchCode());
- wxPayDoc.setAppid(wxMap.get("app-id").toString());
- wxPayDoc.setMchId(wxMap.get("mch-id").toString());
- wxPayDoc.setOutTradeNo(wxOrder.getMerchOrderId());
- wxPayDoc.setTransactionId(wxOrder.getPayNo());
- wxPayDoc.setCustoms(wxMap.get("customs").toString());
- wxPayDoc.setMchCustomsNo(merchant.getMerchantCustomsCode());
- wxPayDoc.setDuty(duty.intValue());
- wxPayDoc.setActionType("ADD");
- wxPayDoc.setSubOrderNo(wxOrder.getOrderSn());
- wxPayDoc.setFeeType("CNY");
- wxPayDoc.setOrderFee(wxOrder.getActuralPaid().multiply(new BigDecimal(100)).intValue());
- wxPayDoc.setTransportFee(0);
- wxPayDoc.setProductFee(wxOrder.getActuralPaid().multiply(new BigDecimal(100)).intValue());
- wxPayDoc.setCertType("IDCARD");
- wxPayDoc.setCertId(wxOrder.getBuyerIdCode());
- wxPayDoc.setName(wxOrder.getBuyerName());
- wxPayDoc.setCreateTime(new Date());
- return wxPayDoc;
- }
- @Override
- public List<WxPayDoc> findAllWxPayDoc() {
- return wxPayDocMapper.findAllWxPayDoc();
- }
- @Override
- public WxPayDoc getWxPayDocByOrderSn(String orderSn) {
- return wxPayDocMapper.findWxPayDocByOrderSn(orderSn);
- }
- private WxCuspayStatus buildWxCuspayStatus(WxOrder wxOrder, String wxCuspaySn) {
- WxCuspayStatus wxCuspayStatus = new WxCuspayStatus();
- String cusOrderStatusSn = SysContants.wx_cuspay_status + SnowflakeUtil.getSnowNextId();
- wxCuspayStatus.setCusOrderStatusSn(cusOrderStatusSn);
- wxCuspayStatus.setWxPaySn(wxCuspaySn);
- wxCuspayStatus.setOrderSn(wxOrder.getWxOrderSn());
- wxCuspayStatus.setMerchOrderSn(wxOrder.getMerchOrderId());
- wxCuspayStatus.setMerchSn(wxOrder.getMerchSn());
- wxCuspayStatus.setMerchName(wxOrder.getMerchName());
- wxCuspayStatus.setPlatSn(merchant.getPlatSn());
- wxCuspayStatus.setPlatName(merchant.getPlatName());
- wxCuspayStatus.setThirdPartyMerchCode(wxOrder.getThirdPartyMerchCode());
- wxCuspayStatus.setSendStatus(CcnetContants.sendStatus.item_0.getItem());
- wxCuspayStatus.setRespStatus(CcnetContants.sespStatus.item_0.getItem());
- return wxCuspayStatus;
- }
- }
|