DailyTradeBiz.java 3.04 KB
package com.cjs.cms.biz.user.point;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.cjs.cms.dao.agent.HisOtcDeliverDao;
import com.cjs.cms.dao.pub.MySqlSysDateDao;
import com.cjs.cms.dao.user.point.PointActiveDao;
import com.cjs.cms.model.user.point.PointActiveInfo;
import com.cjs.cms.model.user.point.PointRuleInfo;
import com.cjs.cms.util.lang.DateEnum;
import com.cjs.cms.util.lang.DateUtil;
import com.cjs.cms.util.lang.JsonUtil;

/**
 * 每日交易送积分
 * @author tongxiaochuan
 *
 */
@Service
public class DailyTradeBiz {

    Logger                   log = LogManager.getLogger();
    @Autowired
    private PointActiveDao   pointActiveDao;
    @Autowired
    private HisOtcDeliverDao hisOtcDeliverDao;
    @Autowired
    private MySqlSysDateDao  mySqlSysDateDao;
    @Autowired
    private PointCommonBiz   pointCommonBiz;

    /**赠送积分
     * @throws Exception */
    @Transactional
    public String sendPoint(int id) throws Exception {
        PointActiveInfo pointActiveInfo = pointActiveDao.queryActiveById(id);
        if (pointActiveInfo.getStartDate().after(mySqlSysDateDao.getSysDate())
            || pointActiveInfo.getEndDate().before(mySqlSysDateDao.getSysDate())) {
            return JsonUtil.toFormJson("非活动时间", false);
        }

        String initDate = DateUtil.getBeforeDay(DateEnum.UNSIGNED_DATE);
        Map<String, Object> query = new HashMap<String, Object>();
        query.put("initDate", initDate);
        query.put("otcCode", pointActiveInfo.getRemark().split(","));
        List<Map<String, Object>> list = hisOtcDeliverDao.queryDailyBusinessBalance(query);

        //积分有效期
        Date expiredDate = pointCommonBiz.getExpiredDate(pointActiveInfo.getExpiredDate());

        log.info(expiredDate);
        double giftAmount;
        for (Map<String, Object> map : list) {
            giftAmount = 0.00;
            for (PointRuleInfo rule : pointActiveInfo.getRules()) {
                if (Double.parseDouble(map.get("BUSINESS_BALANCE").toString()) >= rule
                    .getStartRule()) {
                    giftAmount = rule.getGiftAmount().doubleValue();
                }
            }
            if (giftAmount == 0) {
                continue;
            }
            map.put("remark", "当日交易额:" + map.get("BUSINESS_BALANCE"));
            pointCommonBiz.sendPoint(map, pointActiveInfo, expiredDate, initDate, giftAmount);
        }

        log.info(initDate + "当日交易奖励配额已发放完毕");
        return JsonUtil.toFormJson("当日交易奖励配额已发放完毕", true);
    }

    public void dailyTrade() {
        int activeId = 6;
        try {
            this.sendPoint(activeId);
        } catch (Exception e) {
            log.info(e.getMessage());
        }
    }

}