FirstBuyDayBiz.java 2.95 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.account.ClientInfoDao;
import com.cjs.cms.dao.user.point.PointActiveDao;
import com.cjs.cms.model.user.point.PointActiveInfo;
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 FirstBuyDayBiz {

    Logger                   log = LogManager.getLogger();
    @Autowired
    private PointActiveDao   pointActiveDao;
    @Autowired
    private MySqlSysDateDao  mySqlSysDateDao;
    @Autowired
    private HisOtcDeliverDao hisOtcDeliverDao;
    @Autowired
    private ClientInfoDao    clientInfoDao;
    @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.getNow(DateEnum.UNSIGNED_DATE);
        Map<String, Object> query = new HashMap<String, Object>();
        query.put("initDate", initDate);
        query.put("minAmount", pointActiveInfo.getRules().get(0).getStartRule());
        List<String> users = hisOtcDeliverDao.queryUserForFirstBuyDay(query);
        List<Map<String, Object>> list = clientInfoDao.queryCountForDeveloper(users);

        Date expiredDate = pointCommonBiz.getExpiredDate(pointActiveInfo.getExpiredDate());
        double giftAmount = 0.00;
        for (Map<String, Object> map : list) {
            giftAmount = Integer.parseInt(map.get("SUM").toString())
                         * pointActiveInfo.getRules().get(0).getGiftAmount();
            map.put("remark", "当日交易达标的被推荐人数" + map.get("SUM"));
            pointCommonBiz.sendPoint(map, pointActiveInfo, expiredDate, initDate, giftAmount);
        }

        log.info("当日被首日买入活动推荐人配额奖励已发放完毕");
        return JsonUtil.toFormJson("当日被首日买入活动推荐人配额奖励已发放完毕", true);
    }

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