package com.matrix.system.shopXcx.mqTask; import com.matrix.system.hive.service.SysVipInfoService; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.score.constant.ScoreSettingConstant; import com.matrix.system.score.entity.ScoreVipDetail; import com.matrix.system.score.service.ScoreVipDetailService; import com.matrix.system.shopXcx.bean.ShopOrder; import com.matrix.system.shopXcx.bean.ShopOrderDetails; import com.matrix.system.shopXcx.dao.ShopOrderDao; import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; import com.rabbitmq.client.DeliverCallback; import com.rabbitmq.client.Delivery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; import java.math.BigDecimal; import java.util.List; /** * 订单创建积分事件处理 */ @Component public class ScoreOrderTask implements DeliverCallback { @Autowired ShopOrderDao shopOrderDao; @Autowired ShopOrderDetailsDao shopOrderDetailsDao; @Autowired SysVipInfoService sysVipInfoService; @Autowired ScoreVipDetailService scoreVipDetailService; @Autowired BusParameterSettingsDao busParameterSettingsDao; @Override public void handle(String consumerTag, Delivery message) throws IOException { String orderId = new String(message.getBody(), "UTF-8"); LogUtil.debug("收到订单积分任务orderId={}", orderId); //获取订单信息 ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); //获取订单详情 List orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); order.setDetails(orderDetails); //扣除积分 if(order.getScorePay()!=null&&order.getScorePay()>0){ scoreVipDetailService.deductionScore(order.getUserId(),null, Long.parseLong(order.getStoreId()+""),order.getScorePay(), Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH,"商城积分抵扣"); }else{ //消费获得积分 int addScore=0; BusParameterSettings cashConsumptionShop = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.CASH_CONSUMPTION_SHOP, order.getCompanyId()); for(ShopOrderDetails shopOrderDetail : orderDetails) { if(shopOrderDetail.getPayType()==ShopOrderDetails.PAYTYPE_MICRO){ Integer xfkdScore= shopOrderDetail.getShopSku().getScore(); if(xfkdScore!=null && xfkdScore>0){ addScore+=xfkdScore; }else{ if(StringUtils.isNotBlank(cashConsumptionShop.getParamValue())){ addScore+= shopOrderDetail.getTotalPrice().divide(new BigDecimal(cashConsumptionShop.getParamValue())).intValue(); } } } } if(addScore>0){ //插入新的积分 scoreVipDetailService.addScore( order.getUserId(), null, Long.parseLong(order.getStoreId()+""), addScore, Long.parseLong(orderId+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH, "微商城消费"); } } } }