/* * Powered By zhangyunhua * Web Site: http://www.hehenian.com * Since 2008 - 2014 */ package com.hehenian.biz.service.activity.impl; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hehenian.biz.common.account.dataobject.AccountUserDo; import com.hehenian.biz.common.activity.IActivityOrderService; import com.hehenian.biz.common.activity.dataobject.ActivityOrderDo; import com.hehenian.biz.common.userhome.dataobject.UserIncomeDo; import com.hehenian.biz.common.util.CalculateUtils; import com.hehenian.biz.component.account.IUserComponent; import com.hehenian.biz.component.activity.IActivityOrderComponent; import com.hehenian.biz.component.activity.IActivityTradeComponent; import com.hehenian.biz.facade.colorlife.IColorOrderFacade; /** * @author zhangyunhua * @version 1.0 * @since 1.0 */ @Service("activityOrderService") public class ActivityOrderServiceImpl implements IActivityOrderService { private final Logger logger = Logger.getLogger(this.getClass()); @Autowired private IActivityOrderComponent activityOrderComponent; @Autowired private IUserComponent userComponent; @Autowired private IColorOrderFacade colorOrderFacade; @Autowired private IActivityTradeComponent activityTradeComponent; /** * 根据ID 查询 * * @parameter id */ public ActivityOrderDo getById(int id) { return activityOrderComponent.getById(id); } /** * 根据条件查询列表 */ public List<ActivityOrderDo> selectActivityOrder( Map<String, Object> parameterMap) { return activityOrderComponent.selectActivityOrder(parameterMap); } /** * 更新 */ public int updateActivityOrderById(ActivityOrderDo newActivityOrderDo) { return activityOrderComponent .updateActivityOrderById(newActivityOrderDo); } /** * 新增 */ public Long addActivityOrder(ActivityOrderDo newActivityOrderDo) { int i = activityOrderComponent.addActivityOrder(newActivityOrderDo); if (i > 0) { return newActivityOrderDo.getOrdId(); } return 0l; } /** * 删除 */ public int deleteById(int id) { return activityOrderComponent.deleteById(id); } @Override public ActivityOrderDo queryOrderDetail(String userId, String orderSN, String orderType) { AccountUserDo user = userComponent.getUserByColorId(Long .valueOf(userId)); if (null == user) { return null; } ActivityOrderDo order = activityOrderComponent.queryOrderDetail( String.valueOf(user.getId()), orderSN, orderType); if (null == order) { return null; } // 可提现金额 = 订单金额 * (1+3.5%) // 订单利息 = 订单金额 * 3.5% int status = order.getOrdStatus() == null ? 0 : order.getOrdStatus(); if (1 == status) {// 成功的才计算收益 int amount = order.getInvestAmount() == null ? 0 : order .getInvestAmount().intValue(); // order.setOrderInterestAmount(CalculateUtils.mul(amount, 0.035d)); // // 订单利息 // order.setOrderWithdrawalAmount(CalculateUtils.mul(amount, // 1.035d)); // 订单可提取金额 order.setOrderInterestAmount(order.getProfit()); // 订单利息 order.setOrderWithdrawalAmount(amount + order.getProfit()); // 订单可提取金额 } return order; } @Override public ActivityOrderDo getByOrdNo(ActivityOrderDo activityOrderDo) { return activityOrderComponent.getByOrdNo(activityOrderDo); } public int updateStatus(AccountUserDo accountUserDo,ActivityOrderDo activityOrderDo){ ActivityOrderDo newActivityOrderDo = new ActivityOrderDo(); newActivityOrderDo.setOrdId(activityOrderDo.getOrdId()); Date now = new Date(); newActivityOrderDo.setUpdateTime(now); newActivityOrderDo.setOrdStatus(1); int i = activityOrderComponent.updateActivityOrderById(newActivityOrderDo); Boolean b = activityTradeComponent.addActivityTrades(activityOrderDo.getOrdId()); if (b){ logger.info("生成扣款计划表成功"); }else { logger.error("生成扣款计划表失败"); } int result = colorOrderFacade.sendOrderStatus(accountUserDo.getColorid(), activityOrderDo.getOrdNo(), activityOrderDo.getInvestAmount(), now, newActivityOrderDo.getOrdStatus() + "", activityOrderDo.getRemark(), activityOrderDo.getOrdId()); if (result==0){ logger.info("订单完成后通知彩生活成功"); }else if (result==1){ logger.error("订单完成后通知彩生活失败"); }else{ logger.error("订单完成后通知彩生活,参数非法"); } return i; } public long hasOrder( int ordType, long userId){ return activityOrderComponent.hasOrder( ordType, userId); } /* * (non-Javadoc) * * @see * com.hehenian.biz.common.activity.IActivityOrderService#getAllOrderIncome * (java.lang.String, java.util.Date) */ @Override public UserIncomeDo getAllOrderIncome(long userId, Date queryDate) { return getAllOrderIncomeByOrderSubType(userId, queryDate, null); } public int addRechargeMoney(long ordid, long addMoney, long userId) { return activityOrderComponent.addRechargeMoney(ordid, addMoney, userId); } /* * (no-Javadoc) <p>Title: getAllOrderIncome</p> <p>Description: </p> * * @param userId * * @param queryDate * * @param orderSubType * * @return * * @see * com.hehenian.biz.common.activity.IActivityOrderService#getAllOrderIncome * (long, java.util.Date, java.lang.String) */ @Override public UserIncomeDo getAllOrderIncomeByOrderSubType(long userId, Date queryDate, String orderSubType) { // 彩生活用户转和合年用户 AccountUserDo user = userComponent.getUserByColorId(userId); if (null == user) { return null; } List<ActivityOrderDo> orderList = activityOrderComponent.getByUserId(user.getId(), orderSubType); if (null == orderList || orderList.isEmpty()) { return null; } double totalOrderAmount = 0;// 订单金额汇总 double totalInterest = 0; // 合计利息 for (ActivityOrderDo order : orderList) { int status = order.getOrdStatus() == null ? 0 : order.getOrdStatus().intValue(); if (1 != status) { // 过滤未成功的订单 continue; } if (order.getEndDate().getTime() >= queryDate.getTime()) { // 统计有效时间内的订单 totalOrderAmount = CalculateUtils.add(order.getInvestAmount(), totalOrderAmount); // 订单利息 // double interest = CalculateUtils.mul(order.getInvestAmount(), // order.getRate()); double interest = order.getProfit(); totalInterest = CalculateUtils.add(interest, totalInterest); } } UserIncomeDo userIncome = new UserIncomeDo(); userIncome.setTotalInvestAmount(totalOrderAmount); // 可提现金额 = 订单金额 + 收益 // 订单利息 = 订单金额 * 收益率 userIncome.setRecievedInterest(totalInterest); // 订单利息汇总 userIncome.setWithdrawalAmount(CalculateUtils.add(totalOrderAmount, totalInterest)); // 订单可提取金额汇总 return userIncome; } @Override public boolean notifyColorLife(AccountUserDo accountUserDo, ActivityOrderDo activityOrderDo) { int result = colorOrderFacade.sendOrderStatus(accountUserDo.getColorid(), activityOrderDo.getOrdNo(), activityOrderDo.getInvestAmount(), new Date(), activityOrderDo.getOrdStatus() + "", activityOrderDo.getRemark(), activityOrderDo.getOrdId()); if (result==0){ logger.info("订单授权完成后通知彩生活成功"); return true; }else if (result==1){ logger.error("订单授权完成后通知彩生活失败"); }else{ logger.error("订单授权完成后通知彩生活,参数非法"); } return false; } }