WxOrderGoodsServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.emato.ccnet.wx.service.impl;
  2. import com.emato.ccnet.wx.contants.Contants;
  3. import com.emato.ccnet.wx.dao.entity.ccnet.WxOrderGoods;
  4. import com.emato.ccnet.wx.dao.entity.wx.WxOrderGoodsDate;
  5. import com.emato.ccnet.wx.dao.mapper.ccnet.WxOrderGoodsMapper;
  6. import com.emato.ccnet.wx.manager.snow.SnowflakeUtil;
  7. import com.emato.ccnet.wx.service.WxOrderGoodsService;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import java.math.BigDecimal;
  13. import java.util.ArrayList;
  14. import java.util.Date;
  15. import java.util.List;
  16. @Service("wxOrderGoodsService")
  17. public class WxOrderGoodsServiceImpl implements WxOrderGoodsService {
  18. @Autowired
  19. private WxOrderGoodsMapper wxOrderGoodsMapper;
  20. private static final Logger logger = LoggerFactory.getLogger(WxOrderGoodsServiceImpl.class);
  21. @Override
  22. public WxOrderGoods add(WxOrderGoods record) {
  23. record.setCreateTime(new Date());
  24. if(this.wxOrderGoodsMapper.insertSelective(record)==1) {
  25. return record;
  26. }
  27. return null;
  28. }
  29. @Override
  30. public boolean delete(String wxOrderGoodsSn) {
  31. return this.wxOrderGoodsMapper.deleteByPrimaryKey(wxOrderGoodsSn)==1;
  32. }
  33. @Override
  34. public WxOrderGoods update(WxOrderGoods record) {
  35. if(this.wxOrderGoodsMapper.updateByPrimaryKeySelective(record)==1) {
  36. return record;
  37. }
  38. return null;
  39. }
  40. @Override
  41. public WxOrderGoods get(String wxOrderGoodsSn) {
  42. return this.wxOrderGoodsMapper.selectByPrimaryKey(wxOrderGoodsSn);
  43. }
  44. /**
  45. * 增加微信商品详情
  46. * @param list
  47. * @return
  48. */
  49. @Override
  50. public int addWxOrderGoodsList(List list) {
  51. //本地微信订单商品集合新增
  52. List<WxOrderGoods> insertWxOrderList = new ArrayList<>();
  53. //微信订单商品数据
  54. List<WxOrderGoodsDate> wxOrderGoodsDateList = (List<WxOrderGoodsDate>) list;
  55. for(WxOrderGoodsDate wxOrderGoodsDate:wxOrderGoodsDateList){
  56. //查找本地是否有商品详情数据,如果有就删除
  57. List<WxOrderGoods> wxOrderGoodsList = getWxOrderGoodsByWxOrderId(wxOrderGoodsDate.getWxOrderId());
  58. if (wxOrderGoodsList != null && wxOrderGoodsList.size() > 0) {
  59. wxOrderGoodsMapper.deleteWxOrderGoodsByWxOrderId(wxOrderGoodsDate.getWxOrderId());
  60. }
  61. //添加微信订单详情记录集合
  62. insertWxOrderList.add(assembleWxOrder(wxOrderGoodsDate));
  63. }
  64. //批量微信订单数据
  65. if(insertWxOrderList.size() > 0 && wxOrderGoodsMapper.insertWxOrderGoodsBatch(insertWxOrderList) <= 0){
  66. logger.error("批量插入,微信订单详情记录失败");
  67. return 0;
  68. }
  69. return 1;
  70. }
  71. /**
  72. * 通过微信的微信id查找微信商品详情
  73. * @param wxOrderId
  74. * @return
  75. */
  76. @Override
  77. public List<WxOrderGoods> getWxOrderGoodsByWxOrderId(String wxOrderId) {
  78. return wxOrderGoodsMapper.getWxOrderGoodsByWxOrderId(wxOrderId);
  79. }
  80. /**
  81. * 初始微信订单详情数据
  82. * @param wxOrderGoodsDate
  83. * @return
  84. */
  85. private WxOrderGoods assembleWxOrder(WxOrderGoodsDate wxOrderGoodsDate) {
  86. WxOrderGoods wxOrderGoods = new WxOrderGoods();
  87. String wxOrderSn = SnowflakeUtil.getSnowNextId() + Contants.WX;
  88. wxOrderGoods.setWxOrderGoodsSn(wxOrderSn);
  89. wxOrderGoods.setWxOrderId(wxOrderGoodsDate.getWxOrderId());
  90. wxOrderGoods.setItemNo(wxOrderGoodsDate.getItemNo());
  91. wxOrderGoods.setItemName(wxOrderGoodsDate.getItemName());
  92. //wxOrderGoods.setItemDescribe();
  93. wxOrderGoods.setBarCode(wxOrderGoodsDate.getBarCode());
  94. wxOrderGoods.setUnit(wxOrderGoodsDate.getUnit());
  95. wxOrderGoods.setQty(wxOrderGoodsDate.getQty());
  96. BigDecimal acturalPrice = wxOrderGoodsDate.getTotalPrice();
  97. BigDecimal acturalTax = wxOrderGoodsDate.getTaxTotal();
  98. BigDecimal price = acturalPrice.divide(new BigDecimal(1).add(acturalTax),2,BigDecimal.ROUND_HALF_UP);
  99. price = price.divide(wxOrderGoodsDate.getQty(),2,BigDecimal.ROUND_HALF_UP);
  100. wxOrderGoods.setPrice(price);
  101. wxOrderGoods.setTotalPrice(price.multiply(wxOrderGoodsDate.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP));
  102. wxOrderGoods.setTaxPrice(acturalPrice.divide(wxOrderGoodsDate.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP));
  103. wxOrderGoods.setActuralPrice(acturalPrice);
  104. wxOrderGoods.setCountry(wxOrderGoodsDate.getCountry());
  105. wxOrderGoods.setCiqGno(wxOrderGoodsDate.getCiqGno());
  106. wxOrderGoods.setGcode(wxOrderGoodsDate.getGcode());
  107. wxOrderGoods.setGmodel(wxOrderGoodsDate.getGmodel());
  108. wxOrderGoods.setCiqGmodel(wxOrderGoodsDate.getCiqGmodel());
  109. wxOrderGoods.setBrand(wxOrderGoodsDate.getBrand());
  110. wxOrderGoods.setCreateTime(new Date());
  111. return wxOrderGoods;
  112. }
  113. }