You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
4.6 KiB
118 lines
4.6 KiB
package com.hai.service.impl;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.hai.common.utils.DateUtil;
|
|
import com.hai.dao.BsOrderRebateMapper;
|
|
import com.hai.entity.BsIntegralRebate;
|
|
import com.hai.entity.BsOrderRebate;
|
|
import com.hai.entity.BsOrderRebateExample;
|
|
import com.hai.entity.HighOrder;
|
|
import com.hai.order.type.OrderProductType;
|
|
import com.hai.service.*;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@Service("bsOrderRebateService")
|
|
public class BsOrderRebateServiceImpl implements BsOrderRebateService {
|
|
|
|
@Resource
|
|
private BsOrderRebateMapper bsOrderRebateMapper;
|
|
|
|
@Resource
|
|
private HighOrderService highOrderService;
|
|
|
|
@Resource
|
|
private BsIntegralRebateService bsIntegralRebateService;
|
|
|
|
@Resource
|
|
private BsDistributionUserRelService bsDistributionUserRelService;
|
|
|
|
@Resource
|
|
private HighUserService highUserService;
|
|
|
|
@Override
|
|
public List<BsOrderRebate> getOrderRebateByList(Map<String, Object> map) {
|
|
|
|
BsOrderRebateExample example = new BsOrderRebateExample();
|
|
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void insertOrderRebate(BsOrderRebate bsOrderRebate) {
|
|
bsOrderRebateMapper.insert(bsOrderRebate);
|
|
}
|
|
|
|
@Override
|
|
public void updateOrderRebate(BsOrderRebate bsOrderRebate) {
|
|
bsOrderRebateMapper.updateByPrimaryKey(bsOrderRebate);
|
|
}
|
|
|
|
@Override
|
|
public BsOrderRebate findOrderRebate(Long id) {
|
|
return bsOrderRebateMapper.selectByPrimaryKey(id);
|
|
}
|
|
|
|
@Override
|
|
public void insertOrderRebate(HighOrder highOrder) {
|
|
|
|
// 计算返利积分数量
|
|
// 查询是否配置返利
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("type" , highOrder.getProductType());
|
|
map.put("companyId" , highOrder.getCompanyId());
|
|
|
|
BsIntegralRebate bsIntegralRebate = bsIntegralRebateService.findIntegralRebateByMap(map);
|
|
|
|
// 判断是否配置返利内容
|
|
if (bsIntegralRebate != null) {
|
|
|
|
// 判断是否在返利条件
|
|
if (DateUtil.isEffectiveDate(highOrder.getCreateTime(), bsIntegralRebate.getStartTime() , bsIntegralRebate.getEndTime())) {
|
|
|
|
// 积分返利积分
|
|
BigDecimal integralNum = highOrder.getPayRealPrice().multiply(bsIntegralRebate.getPercentage()).setScale( 0, BigDecimal.ROUND_HALF_UP );
|
|
// 1级分销
|
|
BigDecimal integralNumFirst = highOrder.getPayRealPrice().multiply(bsIntegralRebate.getFirstDistribution()).setScale( 0, BigDecimal.ROUND_HALF_UP );
|
|
// 2级分销
|
|
BigDecimal integralNumSecond = highOrder.getPayRealPrice().multiply(bsIntegralRebate.getSecondDistribution()).setScale( 0, BigDecimal.ROUND_HALF_UP );
|
|
|
|
// 定义请求对象
|
|
JSONObject object = new JSONObject();
|
|
// 拼接分销返利对象
|
|
object.put("userId" , highOrder.getMemId());
|
|
object.put("orderNo" , highOrder.getOrderNo());
|
|
object.put("integralNumFirst" , integralNumFirst);
|
|
object.put("integralNumSecond" , integralNumSecond);
|
|
object.put("companyId", highOrder.getCompanyId());
|
|
object.put("remark" , OrderProductType.getDataByType(highOrder.getProductType()).getName() + "订单:"+ highOrder.getTitle() + "-" + highOrder.getOrderNo() + "积分返利:");
|
|
object.put("name" , "下单" + OrderProductType.getDataByType(highOrder.getProductType()).getName() + ":" + highOrder.getTitle());
|
|
object.put("logoImg" , OrderProductType.getDataByType(highOrder.getProductType()).getImgUrl());
|
|
|
|
bsDistributionUserRelService.distributionRebate(object);
|
|
highUserService.goldHandle(highOrder.getMemId(), integralNum.intValue(), 1, 4, highOrder.getId(), object.getString("remark") + integralNum);
|
|
|
|
// 查询积分返利记录
|
|
BsOrderRebate orderRebate = new BsOrderRebate();
|
|
orderRebate.setOrderId(highOrder.getId());
|
|
orderRebate.setOrderNo(highOrder.getOrderNo());
|
|
orderRebate.setCreateTime(new Date());
|
|
orderRebate.setUpdateTime(new Date());
|
|
orderRebate.setStatus(1);
|
|
orderRebate.setIntegralNum(integralNum.intValue());
|
|
orderRebate.setUserId(highOrder.getMemId());
|
|
orderRebate.setUserName(highOrder.getMemName());
|
|
bsOrderRebateMapper.insert(orderRebate);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|