package com.ks.lijin.service.manager;
|
|
import com.ks.lijin.dao.LijinDangerGoodsDao;
|
import com.ks.lijin.mapper.LiJinExpendRecordMapper;
|
import com.ks.lijin.pojo.DO.LiJinDangerGoods;
|
import com.ks.lijin.pojo.DO.LiJinExpendRecord;
|
import com.ks.lijin.pojo.DO.TaoBaoOrderRecord;
|
import com.ks.lijin.utils.taobao.TaoBaoOrderUtil;
|
import org.springframework.stereotype.Component;
|
import org.yeshi.utils.TimeUtil;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.List;
|
|
@Component
|
public class LijinDangerGoodsManager {
|
|
@Resource
|
private LijinDangerGoodsDao lijinDangerGoodsDao;
|
|
@Resource
|
private LiJinExpendRecordMapper liJinExpendRecordMapper;
|
|
/**
|
* 处理订单
|
*
|
* @param record
|
* @throws Exception
|
*/
|
public void processOrder(TaoBaoOrderRecord record) throws Exception {
|
if (record == null) {
|
throw new Exception("订单为空");
|
}
|
|
if (record.getTb_paid_time() == null) {
|
throw new Exception("订单未付款");
|
}
|
|
//查询是否在危险订单中
|
LijinDangerGoodsDao.DaoQuery daoQuery = new LijinDangerGoodsDao.DaoQuery();
|
daoQuery.tradeId = record.getTrade_id();
|
daoQuery.count = 1;
|
List<LiJinDangerGoods> list = lijinDangerGoodsDao.list(daoQuery);
|
if (list != null && list.size() > 0) {
|
throw new Exception("已加入危险订单记录");
|
}
|
//判断是否
|
Date maxCreateTime = record.getTb_paid_time();
|
Date minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(maxCreateTime.getTime(), "yyyyMMdd"), "yyyyMMdd"));
|
LiJinExpendRecord expendRecord = liJinExpendRecordMapper.getMaxMoneyRecord(record.getItem_id() + "", minCreateTime, maxCreateTime);
|
//判断是否触发机制
|
if (expendRecord == null) {
|
throw new Exception("礼金创建记录不存在");
|
}
|
BigDecimal money = expendRecord.getMoney();
|
BigDecimal commission = TaoBaoOrderUtil.getCommission(record);
|
if (commission == null) {
|
throw new Exception("订单未处于付款/结算状态");
|
}
|
|
//礼金大于佣金的87%表示出错
|
if (money.compareTo(commission.multiply(new BigDecimal("0.87"))) >= 0) {
|
//危险报警
|
LiJinDangerGoods dangerGoods = new LiJinDangerGoods();
|
dangerGoods.setCreateTime(new Date());
|
dangerGoods.setGoodsId(record.getItem_id() + "");
|
dangerGoods.setGoodsType(1);
|
dangerGoods.setMaxLijinMoney(money.multiply(new BigDecimal(100)).intValue());
|
dangerGoods.setMinCommission(commission.multiply(new BigDecimal(100)).intValue());
|
dangerGoods.setId(dangerGoods.getGoodsType() + "-" + dangerGoods.getGoodsId());
|
lijinDangerGoodsDao.save(dangerGoods);
|
}
|
}
|
|
|
/**
|
* 是否是危险商品
|
* @param goodsId
|
* @param goodsType
|
* @return
|
*/
|
public boolean isDangerous(String goodsId, int goodsType) {
|
String id = goodsType + "-" + goodsId;
|
return lijinDangerGoodsDao.get(id) != null;
|
}
|
|
|
}
|