package com.emato.ccnet.wx.service.impl; import com.emato.ccnet.wx.contants.Contants; import com.emato.ccnet.wx.dao.entity.ccnet.WxOrderGoods; import com.emato.ccnet.wx.dao.entity.wx.WxOrderGoodsDate; import com.emato.ccnet.wx.dao.mapper.ccnet.WxOrderGoodsMapper; import com.emato.ccnet.wx.manager.snow.SnowflakeUtil; import com.emato.ccnet.wx.service.WxOrderGoodsService; 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; @Service("wxOrderGoodsService") public class WxOrderGoodsServiceImpl implements WxOrderGoodsService { @Autowired private WxOrderGoodsMapper wxOrderGoodsMapper; private static final Logger logger = LoggerFactory.getLogger(WxOrderGoodsServiceImpl.class); @Override public WxOrderGoods add(WxOrderGoods record) { record.setCreateTime(new Date()); if(this.wxOrderGoodsMapper.insertSelective(record)==1) { return record; } return null; } @Override public boolean delete(String wxOrderGoodsSn) { return this.wxOrderGoodsMapper.deleteByPrimaryKey(wxOrderGoodsSn)==1; } @Override public WxOrderGoods update(WxOrderGoods record) { if(this.wxOrderGoodsMapper.updateByPrimaryKeySelective(record)==1) { return record; } return null; } @Override public WxOrderGoods get(String wxOrderGoodsSn) { return this.wxOrderGoodsMapper.selectByPrimaryKey(wxOrderGoodsSn); } /** * 增加微信商品详情 * @param list * @return */ @Override public int addWxOrderGoodsList(List list) { //本地微信订单商品集合新增 List insertWxOrderList = new ArrayList<>(); //微信订单商品数据 List wxOrderGoodsDateList = (List) list; for(WxOrderGoodsDate wxOrderGoodsDate:wxOrderGoodsDateList){ //查找本地是否有商品详情数据,如果有就删除 List wxOrderGoodsList = getWxOrderGoodsByWxOrderId(wxOrderGoodsDate.getWxOrderId()); if (wxOrderGoodsList != null && wxOrderGoodsList.size() > 0) { wxOrderGoodsMapper.deleteWxOrderGoodsByWxOrderId(wxOrderGoodsDate.getWxOrderId()); } //添加微信订单详情记录集合 insertWxOrderList.add(assembleWxOrder(wxOrderGoodsDate)); } //批量微信订单数据 if(insertWxOrderList.size() > 0 && wxOrderGoodsMapper.insertWxOrderGoodsBatch(insertWxOrderList) <= 0){ logger.error("批量插入,微信订单详情记录失败"); return 0; } return 1; } /** * 通过微信的微信id查找微信商品详情 * @param wxOrderId * @return */ @Override public List getWxOrderGoodsByWxOrderId(String wxOrderId) { return wxOrderGoodsMapper.getWxOrderGoodsByWxOrderId(wxOrderId); } /** * 初始微信订单详情数据 * @param wxOrderGoodsDate * @return */ private WxOrderGoods assembleWxOrder(WxOrderGoodsDate wxOrderGoodsDate) { WxOrderGoods wxOrderGoods = new WxOrderGoods(); String wxOrderSn = SnowflakeUtil.getSnowNextId() + Contants.WX; wxOrderGoods.setWxOrderGoodsSn(wxOrderSn); wxOrderGoods.setWxOrderId(wxOrderGoodsDate.getWxOrderId()); wxOrderGoods.setItemNo(wxOrderGoodsDate.getItemNo()); wxOrderGoods.setItemName(wxOrderGoodsDate.getItemName()); //wxOrderGoods.setItemDescribe(); wxOrderGoods.setBarCode(wxOrderGoodsDate.getBarCode()); wxOrderGoods.setUnit(wxOrderGoodsDate.getUnit()); wxOrderGoods.setQty(wxOrderGoodsDate.getQty()); BigDecimal acturalPrice = wxOrderGoodsDate.getTotalPrice(); BigDecimal acturalTax = wxOrderGoodsDate.getTaxTotal(); BigDecimal price = acturalPrice.divide(new BigDecimal(1).add(acturalTax),2,BigDecimal.ROUND_HALF_UP); price = price.divide(wxOrderGoodsDate.getQty(),2,BigDecimal.ROUND_HALF_UP); wxOrderGoods.setPrice(price); wxOrderGoods.setTotalPrice(price.multiply(wxOrderGoodsDate.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP)); wxOrderGoods.setTaxPrice(acturalPrice.divide(wxOrderGoodsDate.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP)); wxOrderGoods.setActuralPrice(acturalPrice); wxOrderGoods.setCountry(wxOrderGoodsDate.getCountry()); wxOrderGoods.setCiqGno(wxOrderGoodsDate.getCiqGno()); wxOrderGoods.setGcode(wxOrderGoodsDate.getGcode()); wxOrderGoods.setGmodel(wxOrderGoodsDate.getGmodel()); wxOrderGoods.setCiqGmodel(wxOrderGoodsDate.getCiqGmodel()); wxOrderGoods.setBrand(wxOrderGoodsDate.getBrand()); wxOrderGoods.setCreateTime(new Date()); return wxOrderGoods; } }