admin
2019-01-02 2c2e4b771af2840c6d8ad720543823a974d2989b
暂存修改
8个文件已修改
333 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2Mapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2Mapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoManageServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/HongBaoManageService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/Constant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2Mapper.java
@@ -1,8 +1,17 @@
package com.yeshi.fanli.dao.mybatis;
import java.util.List;
import com.yeshi.fanli.dao.BaseMapper;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
public interface HongBaoV2Mapper extends BaseMapper<HongBaoV2> {
    /**
     * 获取子红包列表
     * @param id
     * @return
     */
    List<HongBaoV2> listChildrenById(Long id);
}
fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2Mapper.xml
@@ -36,6 +36,18 @@
        <include refid="Base_Column_List" />
        from yeshi_ec_hongbao_v2 where hb_id = #{id,jdbcType=BIGINT}
    </select>
    <select id="listChildrenById" resultMap="BaseResultMap"
        parameterType="java.lang.Long">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_hongbao_v2 where hb_pid = #{0}
    </select>
    List<HongBaoV2> listChildrenById(Long id);
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
        yeshi_ec_hongbao_v2 where hb_id = #{id,jdbcType=BIGINT}</delete>
    <insert id="insert" parameterType="com.yeshi.fanli.entity.bus.user.HongBaoV2"
fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoManageServiceImpl.java
@@ -102,4 +102,40 @@
        return getShareRate(System.currentTimeMillis());
    }
    @Override
    public BigDecimal getFirstInviteRate(int urank) {
        return getFirstInviteRate(urank, System.currentTimeMillis());
    }
    @Override
    public BigDecimal getFirstInviteRate(int urank, long time) {
        String key = "sale_6_" + urank;
        HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
        if (hongBaoManage == null)
            hongBaoManage = hongBaoManageMapper.selectByKey(key);
        if (hongBaoManage != null)
            return new BigDecimal(hongBaoManage.getValue());
        LogHelper.error("获取返利分成比例出错");
        return null;
    }
    @Override
    public BigDecimal getSecondInviteRate(int urank) {
        return getSecondInviteRate(urank, System.currentTimeMillis());
    }
    @Override
    public BigDecimal getSecondInviteRate(int urank, long time) {
        String key = "sale_7_" + urank;
        HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
        if (hongBaoManage == null)
            hongBaoManage = hongBaoManageMapper.selectByKey(key);
        if (hongBaoManage != null)
            return new BigDecimal(hongBaoManage.getValue());
        LogHelper.error("获取返利分成比例出错");
        return null;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.impl.hongbao;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
@@ -21,6 +22,7 @@
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderMapper;
import com.yeshi.fanli.entity.bus.user.HongBao;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.order.CommonOrderGoods;
import com.yeshi.fanli.entity.order.HongBaoOrder;
@@ -28,8 +30,12 @@
import com.yeshi.fanli.exception.HongBaoException;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
@Service
@@ -61,6 +67,9 @@
    @Resource
    private CommonOrderService commonOrderService;
    @Resource
    private UserInfoService userInfoService;
    @Override
    public int insert(HongBaoV2 record) {
@@ -268,19 +277,16 @@
    @Resource
    private HongBaoManageService hongBaoManageService;
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
    @Transactional
    @Override
    public void addHongBao(CommonOrder commonOrder, int type) throws HongBaoException {
        if (commonOrder == null || commonOrder.getId() == null || commonOrder.getUserInfo() == null)
            throw new HongBaoException(1, "订单信息不完整");
        HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
        if (hongBaoOrder == null) {
            if (type == HongBaoV2.TYPE_ZIGOU) {// 获取自购的返利比例
                BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
            } else if (type == HongBaoV2.TYPE_SHARE_GOODS) {
            } else
                throw new HongBaoException(2, "type错误");
        } else {
@@ -288,4 +294,215 @@
    }
    @Transactional
    private void updateHongBao(HongBaoOrder hongBaoOrder, CommonOrder commonOrder, int type) throws HongBaoException {
        if (type == HongBaoV2.TYPE_ZIGOU) {// 获取自购的返利比例
            BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
            HongBaoV2 hongBao = new HongBaoV2(hongBaoOrder.getHongBaoV2().getId());
            hongBao.setUpdateTime(new Date());
            if (commonOrder.getState() == CommonOrder.STATE_FK) {
                hongBao.setState(HongBaoV2.STATE_BUFENSHIXIAO);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
            } else if (commonOrder.getState() == CommonOrder.STATE_JS) {
                hongBao.setState(HongBaoV2.STATE_KELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
                hongBao.setPreGetTime(new Date(commonOrder.getSettleTime().getTime() + 1000 * 60 * 60 * 24 * 15L));
            } else if (commonOrder.getState() == CommonOrder.STATE_SX) {
                hongBao.setState(HongBaoV2.STATE_SHIXIAO);
            }
            hongBaoV2Mapper.updateByPrimaryKeySelective(hongBao);
            // 获取子红包
            List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getId());
            if (children != null)
                for (HongBaoV2 child : children) {
                    HongBaoV2 childUpdate = new HongBaoV2(child.getId());
                    childUpdate.setState(hongBao.getState());
                    childUpdate.setUpdateTime(new Date());
                    BigDecimal rate = null;
                    if (child.getType() == HongBaoV2.TYPE_YIJI) {
                        rate = hongBaoManageService.getFirstInviteRate(child.getUrank(),
                                commonOrder.getCreateTime().getTime());
                    } else if (child.getType() == HongBaoV2.TYPE_ERJI) {
                        rate = hongBaoManageService.getSecondInviteRate(child.getUrank(),
                                commonOrder.getCreateTime().getTime());
                    }
                    if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
                        childUpdate.setMoney(
                                MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), rate.divide(new BigDecimal(100))));
                        Calendar calendar = Calendar.getInstance();
                        calendar.setTime(commonOrder.getSettleTime());
                        calendar.add(Calendar.MONTH, 1);
                        childUpdate.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
                                calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
                                "yyyy-M-dd")));
                    } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
                        childUpdate.setMoney(
                                MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), rate.divide(new BigDecimal(100))));
                    }
                    hongBaoV2Mapper.updateByPrimaryKeySelective(childUpdate);
                }
        } else if (type == HongBaoV2.TYPE_SHARE_GOODS) {
            // TODO 分享赚的二级更新
            // 分享赚
            BigDecimal shareRate = hongBaoManageService.getShareRate(commonOrder.getCreateTime().getTime());
            HongBaoV2 hongBao = new HongBaoV2();
            hongBao.setCreateTime(new Date());
            hongBao.setType(HongBaoV2.TYPE_SHARE_GOODS);
            hongBao.setVersion(2);
            if (commonOrder.getState() == CommonOrder.STATE_FK) {
                hongBao.setState(HongBaoV2.STATE_BUFENSHIXIAO);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), shareRate.divide(new BigDecimal(100))));
            } else if (commonOrder.getState() == CommonOrder.STATE_JS) {
                hongBao.setState(HongBaoV2.STATE_KELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), shareRate.divide(new BigDecimal(100))));
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(commonOrder.getSettleTime());
                calendar.add(Calendar.MONTH, 1);
                hongBao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
                        calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25", "yyyy-M-dd")));
            }
            UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
            hongBao.setUrank(user.getRank());
            hongBaoV2Mapper.insertSelective(hongBao);
            // 插入红包与订单映射
            HongBaoOrder hongBaoOrder = new HongBaoOrder();
            hongBaoOrder.setCommonOrder(commonOrder);
            hongBaoOrder.setCreateTime(new Date());
            hongBaoOrder.setHongBaoV2(hongBao);
            hongBaoOrderMapper.insertSelective(hongBaoOrder);
        } else
            throw new HongBaoException(2, "type错误");
    }
    @Transactional
    private void saveHongBao(CommonOrder commonOrder, int type) throws HongBaoException {
        if (type == HongBaoV2.TYPE_ZIGOU) {// 获取自购的返利比例
            BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
            HongBaoV2 hongBao = new HongBaoV2();
            hongBao.setCreateTime(new Date());
            hongBao.setType(HongBaoV2.TYPE_ZIGOU);
            hongBao.setVersion(2);
            if (commonOrder.getState() == CommonOrder.STATE_FK) {
                hongBao.setState(HongBaoV2.STATE_BUFENSHIXIAO);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
            } else if (commonOrder.getState() == CommonOrder.STATE_JS) {
                hongBao.setState(HongBaoV2.STATE_KELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
                hongBao.setPreGetTime(new Date(commonOrder.getSettleTime().getTime() + 1000 * 60 * 60 * 24 * 15L));
            } else if (commonOrder.getState() == CommonOrder.STATE_SX) {
                hongBao.setState(HongBaoV2.STATE_SHIXIAO);
                hongBao.setMoney(new BigDecimal(0));
            } else {
                throw new HongBaoException(3, "维权订单不能创建红包");
            }
            UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
            hongBao.setUrank(user.getRank());
            hongBaoV2Mapper.insertSelective(hongBao);
            // 添加红包与订单的映射
            HongBaoOrder hongBaoOrder = new HongBaoOrder();
            hongBaoOrder.setCommonOrder(commonOrder);
            hongBaoOrder.setCreateTime(new Date());
            hongBaoOrder.setHongBaoV2(hongBao);
            hongBaoOrderMapper.insertSelective(hongBaoOrder);
            UserInfo boss = threeSaleSerivce.getBoss(user.getId());
            if (boss != null && hongBao.getState() != HongBaoV2.STATE_SHIXIAO) {// 1级BOSS存在且红包未失效
                // 插入一级子红包
                BigDecimal firstRate = hongBaoManageService
                        .getFirstInviteRate(boss.getRank() == null ? 0 : boss.getRank());
                HongBaoV2 firstHongbao = new HongBaoV2();
                firstHongbao.setParent(hongBao);
                firstHongbao.setCreateTime(new Date());
                firstHongbao.setType(HongBaoV2.TYPE_YIJI);
                firstHongbao.setVersion(2);
                firstHongbao.setState(hongBao.getState());
                if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
                    firstHongbao.setMoney(
                            MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), firstRate.divide(new BigDecimal(100))));
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTime(commonOrder.getSettleTime());
                    calendar.add(Calendar.MONTH, 1);
                    firstHongbao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
                            calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
                            "yyyy-M-dd")));
                } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
                    firstHongbao.setMoney(
                            MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), firstRate.divide(new BigDecimal(100))));
                }
                hongBaoV2Mapper.insertSelective(firstHongbao);
                // 插入二级子红包
                boss = threeSaleSerivce.getBoss(boss.getId());
                if (boss != null) {// 二级BOSS存在
                    BigDecimal secondRate = hongBaoManageService
                            .getSecondInviteRate(boss.getRank() == null ? 0 : boss.getRank());
                    HongBaoV2 secondHongbao = new HongBaoV2();
                    secondHongbao.setParent(hongBao);
                    secondHongbao.setCreateTime(new Date());
                    secondHongbao.setType(HongBaoV2.TYPE_ERJI);
                    secondHongbao.setVersion(2);
                    secondHongbao.setState(hongBao.getState());
                    if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
                        firstHongbao.setMoney(MoneyBigDecimalUtil.mul(commonOrder.geteIncome(),
                                secondRate.divide(new BigDecimal(100))));
                        Calendar calendar = Calendar.getInstance();
                        calendar.setTime(commonOrder.getSettleTime());
                        calendar.add(Calendar.MONTH, 1);
                        secondHongbao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
                                calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
                                "yyyy-M-dd")));
                    } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
                        secondHongbao.setMoney(MoneyBigDecimalUtil.mul(commonOrder.getEstimate(),
                                secondRate.divide(new BigDecimal(100))));
                    }
                    hongBaoV2Mapper.insertSelective(secondHongbao);
                }
            }
        } else if (type == HongBaoV2.TYPE_SHARE_GOODS) {
            // 分享赚不加入失效的订单
            if (commonOrder.getState() == CommonOrder.STATE_SX || commonOrder.getState() == CommonOrder.STATE_WQ)
                return;
            // 分享赚
            BigDecimal shareRate = hongBaoManageService.getShareRate(commonOrder.getCreateTime().getTime());
            HongBaoV2 hongBao = new HongBaoV2();
            hongBao.setCreateTime(new Date());
            hongBao.setType(HongBaoV2.TYPE_SHARE_GOODS);
            hongBao.setVersion(2);
            if (commonOrder.getState() == CommonOrder.STATE_FK) {
                hongBao.setState(HongBaoV2.STATE_BUFENSHIXIAO);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), shareRate.divide(new BigDecimal(100))));
            } else if (commonOrder.getState() == CommonOrder.STATE_JS) {
                hongBao.setState(HongBaoV2.STATE_KELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), shareRate.divide(new BigDecimal(100))));
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(commonOrder.getSettleTime());
                calendar.add(Calendar.MONTH, 1);
                hongBao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
                        calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25", "yyyy-M-dd")));
            }
            UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
            hongBao.setUrank(user.getRank());
            hongBaoV2Mapper.insertSelective(hongBao);
            // 插入红包与订单映射
            HongBaoOrder hongBaoOrder = new HongBaoOrder();
            hongBaoOrder.setCommonOrder(commonOrder);
            hongBaoOrder.setCreateTime(new Date());
            hongBaoOrder.setHongBaoV2(hongBao);
            hongBaoOrderMapper.insertSelective(hongBaoOrder);
        } else
            throw new HongBaoException(2, "type错误");
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/HongBaoManageService.java
@@ -34,14 +34,13 @@
     * @return
     */
    public BigDecimal getShareRate(long time);
    /**
     * 获取返利订单返利比例
     * 
     * @return
     */
    public BigDecimal getFanLiRate() ;
    public BigDecimal getFanLiRate();
    /**
     * 获取分享订单返利比例
@@ -50,4 +49,34 @@
     */
    public BigDecimal getShareRate();
    /**
     * 获取第一级的邀请赚比例
     *
     * @return
     */
    public BigDecimal getFirstInviteRate(int urank);
    /**
     * 获取第一级的邀请赚比例
     *
     * @param time
     * @return
     */
    public BigDecimal getFirstInviteRate(int urank, long time);
    /**
     * 获取第一级的邀请赚比例
     *
     * @return
     */
    public BigDecimal getSecondInviteRate(int urank);
    /**
     * 获取第一级的邀请赚比例
     *
     * @param time
     * @return
     */
    public BigDecimal getSecondInviteRate(int urank, long time);
}
fanli/src/main/java/com/yeshi/fanli/util/Constant.java
@@ -13,9 +13,9 @@
public class Constant {
    public static boolean IS_TASK = false;
    // 外网环境
    public static boolean IS_OUTNET = true;
    public static boolean IS_OUTNET = false;
    public static boolean IS_TEST = false;
    public static boolean IS_TEST = true;
    public static int PAGE_SIZE = 20;
    public static int[] TASK_TYPE = { 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008// 微信任务类型编号
fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java
@@ -39,6 +39,8 @@
    @Resource
    private TaoBaoUnionConfigService taoBaoUnionConfigService;
    /**
     * 缓存字符串
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -31,6 +31,7 @@
import org.w3c.dom.NodeList;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.NumberUtil;
import org.yeshi.utils.entity.ProxyIP;
import org.yeshi.utils.taobao.TbImgUtil;
import com.google.gson.Gson;
@@ -1620,7 +1621,8 @@
                        img.setPicture(item.ownText().trim());
                    else
                        img.setPicture("http:" + item.ownText().trim());
                    imgList.add(img);
                    if (img != null && img.getPicture() != null && img.getPicture().endsWith(".jpg"))
                        imgList.add(img);
                }
            }