admin
2018-12-19 122d919d03f94a0c1eec3bd6ac35f36c7308a129
新的资金记录
1个文件已修改
1个文件已添加
371 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/exception/money/UserMoneyDetailException.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/UserMoneyDetailFactory.java 341 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/exception/money/UserMoneyDetailException.java
New file
@@ -0,0 +1,30 @@
package com.yeshi.fanli.exception.money;
public class UserMoneyDetailException extends Exception {
    private static final long serialVersionUID = 572112205824229000L;
    private int code;
    private String msg;
    public UserMoneyDetailException() {
    }
    public UserMoneyDetailException(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    public int getCode() {
        return code;
    }
    public String getMsg() {
        return msg;
    }
    @Override
    public String getMessage() {
        return this.msg;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/factory/UserMoneyDetailFactory.java
@@ -1,14 +1,248 @@
package com.yeshi.fanli.util.factory;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import com.yeshi.fanli.entity.bus.user.AlipayAccountValidNormalHistory;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.HongBao;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack;
import com.yeshi.fanli.exception.money.UserMoneyDetailException;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
public class UserMoneyDetailFactory {
    /**
     * 返利资金记录
     *
     * @param hongBaoList
     * @return
     */
    public static UserMoneyDetail createFanLi(Long uid, String orderId, BigDecimal money)
            throws UserMoneyDetailException {
        if (StringUtil.isNullOrEmpty(orderId))
            throw new UserMoneyDetailException(1, "订单号为空");
        if (money == null)
            throw new UserMoneyDetailException(1, "返利金额为空");
        if (uid == null)
            throw new UserMoneyDetailException(1, "UID为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.fanli.name() + ":" + orderId));
        detail.setMoney(money);
        detail.setTitle(UserMoneyDetailTypeEnum.fanli.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.fanli);
        detail.setDescInfo("订单号:" + orderId);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        return detail;
    }
    /**
     * 分享奖金到账
     *
     * @param uid
     * @param validCount
     * @param weiQuanCount
     * @param invalidCount
     * @param money
     * @param time
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createShare(Long uid, int validCount, int weiQuanCount, int invalidCount,
            BigDecimal money, Date time) throws UserMoneyDetailException {
        if (money == null)
            throw new UserMoneyDetailException(1, "返利金额为空");
        if (uid == null)
            throw new UserMoneyDetailException(1, "UID为空");
        if (time == null)
            throw new UserMoneyDetailException(1, "发生时间为空");
        Calendar ca = Calendar.getInstance();
        ca.setTime(time);
        ca.add(Calendar.MONTH, -1);
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy年MM月");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.share.name() + "-" + uid + "-" + timeF));
        detail.setMoney(money);
        detail.setTitle(timeF + UserMoneyDetailTypeEnum.share.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.share);
        detail.setDescInfo(String.format("有效订单:%s笔  维权订单:%s笔  失效订单:%s笔", validCount, weiQuanCount, invalidCount));
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        return detail;
    }
    /**
     * 邀请奖金到账
     *
     * @param uid
     * @param validCount
     * @param weiQuanCount
     * @param invalidCount
     * @param money
     * @param time
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createInvite(Long uid, int validCount, int weiQuanCount, int invalidCount,
            BigDecimal money, Date time) throws UserMoneyDetailException {
        if (money == null)
            throw new UserMoneyDetailException(1, "返利金额为空");
        if (uid == null)
            throw new UserMoneyDetailException(1, "UID为空");
        if (time == null)
            throw new UserMoneyDetailException(1, "发生时间为空");
        Calendar ca = Calendar.getInstance();
        ca.setTime(time);
        ca.add(Calendar.MONTH, -1);
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy年MM月");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.invite.name() + "-" + uid + "-" + timeF));
        detail.setMoney(money);
        detail.setTitle(timeF + UserMoneyDetailTypeEnum.invite.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.invite);
        detail.setDescInfo(String.format("有效订单:%s笔  维权订单:%s笔  失效订单:%s笔", validCount, weiQuanCount, invalidCount));
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        return detail;
    }
    /**
     * 返利维权
     *
     * @param uid
     * @param drawBack
     * @param money
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createFanLiWeiQuan(Long uid, TaoBaoWeiQuanDrawBack drawBack, BigDecimal money)
            throws UserMoneyDetailException {
        if (drawBack == null)
            throw new UserMoneyDetailException(1, "退款为空");
        if (drawBack.getId() == null)
            throw new UserMoneyDetailException(1, "退款ID为空");
        if (StringUtil.isNullOrEmpty(drawBack.getOrderId()))
            throw new UserMoneyDetailException(1, "订单号为空");
        if (StringUtil.isNullOrEmpty(drawBack.getOrderItemId()))
            throw new UserMoneyDetailException(1, "子订单号为空");
        if (money == null)
            throw new UserMoneyDetailException(1, "退款金额为空");
        if (uid == null)
            throw new UserMoneyDetailException(1, "UID为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil
                .Md5(UserMoneyDetailTypeEnum.fanliWeiQuan.name() + "-" + uid + "-" + drawBack.getOrderItemId()));
        detail.setMoney(new BigDecimal("0").subtract(money));
        detail.setTitle(UserMoneyDetailTypeEnum.fanliWeiQuan.getDesc());
        detail.setSubTitle("订单维权");
        detail.setType(UserMoneyDetailTypeEnum.fanliWeiQuan);
        detail.setSourceIdentifyId(drawBack.getId());
        detail.setDescInfo("订单号:" + drawBack.getOrderId());
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        return detail;
    }
    /**
     * 分享赚维权
     *
     * @param uid
     * @param drawBack
     * @param money
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createShareWeiQuan(Long uid, TaoBaoWeiQuanDrawBack drawBack, BigDecimal money)
            throws UserMoneyDetailException {
        if (drawBack == null)
            throw new UserMoneyDetailException(1, "退款为空");
        if (drawBack.getId() == null)
            throw new UserMoneyDetailException(1, "退款ID为空");
        if (StringUtil.isNullOrEmpty(drawBack.getOrderId()))
            throw new UserMoneyDetailException(1, "订单号为空");
        if (StringUtil.isNullOrEmpty(drawBack.getOrderItemId()))
            throw new UserMoneyDetailException(1, "子订单号为空");
        if (money == null)
            throw new UserMoneyDetailException(1, "退款金额为空");
        if (uid == null)
            throw new UserMoneyDetailException(1, "UID为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil
                .Md5(UserMoneyDetailTypeEnum.shareWeiQuan.name() + "-" + uid + "-" + drawBack.getOrderItemId()));
        detail.setMoney(new BigDecimal("0").subtract(money));
        detail.setTitle(UserMoneyDetailTypeEnum.shareWeiQuan.getDesc());
        detail.setSubTitle("订单维权");
        detail.setType(UserMoneyDetailTypeEnum.shareWeiQuan);
        detail.setSourceIdentifyId(drawBack.getId());
        detail.setDescInfo("订单号:" + drawBack.getOrderId());
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        return detail;
    }
    /**
     * 邀请赚维权
     *
     * @param uid
     * @param drawBack
     * @param money
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createInviteWeiQuan(Long uid, TaoBaoWeiQuanDrawBack drawBack, BigDecimal money)
            throws UserMoneyDetailException {
        if (drawBack == null)
            throw new UserMoneyDetailException(1, "退款为空");
        if (drawBack.getId() == null)
            throw new UserMoneyDetailException(1, "退款ID为空");
        if (StringUtil.isNullOrEmpty(drawBack.getOrderId()))
            throw new UserMoneyDetailException(1, "订单号为空");
        if (StringUtil.isNullOrEmpty(drawBack.getOrderItemId()))
            throw new UserMoneyDetailException(1, "子订单号为空");
        if (money == null)
            throw new UserMoneyDetailException(1, "退款金额为空");
        if (uid == null)
            throw new UserMoneyDetailException(1, "UID为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil
                .Md5(UserMoneyDetailTypeEnum.inviteWeiQuan.name() + "-" + uid + "-" + drawBack.getOrderItemId()));
        detail.setMoney(new BigDecimal("0").subtract(money));
        detail.setTitle(UserMoneyDetailTypeEnum.inviteWeiQuan.getDesc());
        detail.setSubTitle("订单维权");
        detail.setType(UserMoneyDetailTypeEnum.inviteWeiQuan);
        detail.setSourceIdentifyId(drawBack.getId());
        detail.setDescInfo("订单号:" + drawBack.getOrderId());
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        return detail;
    }
    /**
     * 提现资金记录
@@ -16,7 +250,16 @@
     * @param extract
     * @return
     */
    public static UserMoneyDetail create(Extract extract) {
    public static UserMoneyDetail createExtract(Extract extract) throws UserMoneyDetailException {
        if (extract == null)
            throw new UserMoneyDetailException(1, "提现记录不能为空");
        if (extract.getId() == null)
            throw new UserMoneyDetailException(1, "提现记录主键不能为空");
        if (extract.getMoney() == null)
            throw new UserMoneyDetailException(1, "提现金额不能为空");
        if (extract.getUserInfo() == null || extract.getUserInfo().getId() == null)
            throw new UserMoneyDetailException(1, "提现用户不能为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.extract.name() + ":" + extract.getId()));
@@ -29,4 +272,100 @@
        return detail;
    }
    /**
     * 提现账号验证记录
     *
     * @param aa
     * @param money
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createExtractAccountValid(AlipayAccountValidNormalHistory aa, BigDecimal money)
            throws UserMoneyDetailException {
        if (aa == null)
            throw new UserMoneyDetailException(1, "验证记录不能为空");
        if (aa.getUid() == null)
            throw new UserMoneyDetailException(1, "UID不能为空");
        if (money == null)
            throw new UserMoneyDetailException(1, "金额不能为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.extractVerify.name() + ":" + aa.getId()));
        detail.setMoney(new BigDecimal("0").subtract(money));
        detail.setSourceIdentifyId(aa.getId());
        detail.setTitle(UserMoneyDetailTypeEnum.extractVerify.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.extractVerify);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(aa.getUid()));
        return detail;
    }
    /**
     * 提现拒绝
     *
     * @param extract
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createExtractReject(Extract extract) throws UserMoneyDetailException {
        if (extract == null)
            throw new UserMoneyDetailException(1, "提现记录不能为空");
        if (extract.getId() == null)
            throw new UserMoneyDetailException(1, "提现记录主键不能为空");
        if (extract.getMoney() == null)
            throw new UserMoneyDetailException(1, "提现金额不能为空");
        if (extract.getUserInfo() == null || extract.getUserInfo().getId() == null)
            throw new UserMoneyDetailException(1, "提现用户不能为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.extractReject.name() + ":" + extract.getId()));
        detail.setMoney(extract.getMoney());
        detail.setSourceIdentifyId(extract.getId());
        detail.setTitle(UserMoneyDetailTypeEnum.extractReject.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.extractReject);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(extract.getUserInfo());
        return detail;
    }
    /**
     * 系统红包
     *
     * @param hb
     * @return
     * @throws UserMoneyDetailException
     */
    private static UserMoneyDetail createHongBao(HongBao hb, String subTitle) throws UserMoneyDetailException {
        if (hb == null)
            throw new UserMoneyDetailException(1, "红包不能为空");
        if (hb.getUserInfo() == null)
            throw new UserMoneyDetailException(1, "用户不能为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.hongbao.name() + ":" + hb.getId()));
        detail.setMoney(hb.getMoney());
        detail.setSourceIdentifyId(hb.getId());
        detail.setTitle(UserMoneyDetailTypeEnum.hongbao.getDesc());
        detail.setSubTitle(subTitle);
        detail.setType(UserMoneyDetailTypeEnum.hongbao);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(hb.getUserInfo());
        return detail;
    }
    /**
     * 新人红包
     *
     * @param hb
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createNewerHongBao(HongBao hb) throws UserMoneyDetailException {
        return createHongBao(hb, "新人红包");
    }
}