package com.yeshi.fanli.util.factory;
|
|
import java.math.BigDecimal;
|
import java.util.Calendar;
|
import java.util.Date;
|
|
import com.yeshi.fanli.dto.HongBao;
|
import com.yeshi.fanli.entity.bus.user.AlipayAccountValidNormalHistory;
|
import com.yeshi.fanli.entity.bus.user.Extract;
|
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.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.TimeUtil;
|
import com.yeshi.fanli.util.account.UserUtil;
|
|
public class UserMoneyDetailFactory {
|
|
/**
|
* 返利资金记录
|
*
|
* @param hongBaoList
|
* @return
|
*/
|
public static UserMoneyDetail createFanLi(Long uid, String orderId, int orderType, String hbIds, 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() + "-" + uid + "-" + orderType + "-" + orderId + "-" + hbIds));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.fanliNew.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.fanliNew);
|
detail.setDescInfo(Constant.getSourceName(orderType) + ":" + orderId);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
detail.setOrderType(orderType);
|
return detail;
|
}
|
|
/**
|
* 饿了么返利
|
*
|
* @param uid
|
* @param orderId
|
* @param hbId
|
* @param money
|
* @return
|
* @throws UserMoneyDetailException
|
*/
|
public static UserMoneyDetail createElmeFanLi(Long uid, String orderId, Long hbId, 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.elmeFanli.name() + "-" + hbId));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.elmeFanli.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.elmeFanli);
|
detail.setDescInfo("订单号:" + orderId);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
detail.setOrderType(Constant.SOURCE_TYPE_ELME);
|
return detail;
|
}
|
|
/**
|
* 分享奖金到账
|
*
|
* @param uid
|
* @param validCount
|
* @param weiQuanCount
|
* @param invalidCount
|
* @param money
|
* @param time
|
* @return
|
* @throws UserMoneyDetailException
|
*/
|
public static UserMoneyDetail createShare(Long uid, int orderType, 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年M月");
|
|
UserMoneyDetail detail = new UserMoneyDetail();
|
detail.setCreateTime(new Date());
|
detail.setIdentifyCode(
|
StringUtil.Md5(UserMoneyDetailTypeEnum.share.name() + "-" + orderType + "-" + uid + "-" + timeF));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.shareNew.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.shareNew);
|
detail.setDescInfo(Constant.getSourceName(orderType) + ":" + timeF);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
detail.setOrderType(orderType);
|
return detail;
|
}
|
|
/**
|
* 邀请奖金到账
|
*
|
* @param uid
|
* @param validCount
|
* @param weiQuanCount
|
* @param invalidCount
|
* @param money
|
* @param time
|
* @return
|
* @throws UserMoneyDetailException
|
*/
|
public static UserMoneyDetail createInvite(Long uid, int orderType, int validCount, int weiQuanCount,
|
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.M");
|
|
UserMoneyDetail detail = new UserMoneyDetail();
|
detail.setCreateTime(new Date());
|
detail.setIdentifyCode(
|
StringUtil.Md5(UserMoneyDetailTypeEnum.invite.name() + "-" + orderType + "-" + uid + "-" + timeF));
|
detail.setMoney(money);
|
detail.setTitle(timeF + UserMoneyDetailTypeEnum.invite.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.invite);
|
if (validCount != 0 || weiQuanCount != 0)
|
detail.setDescInfo(String.format("有效订单:%s笔 维权订单:%s笔", validCount, weiQuanCount));
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
detail.setOrderType(orderType);
|
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.fanliWeiQuanNew.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.fanliWeiQuanNew);
|
detail.setSourceIdentifyId(drawBack.getId());
|
detail.setDescInfo(
|
Constant.getSourceName(Constant.SOURCE_TYPE_TAOBAO) + ":" + drawBack.getOrderId() + "-部分商品售后");
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
detail.setOrderType(Constant.SOURCE_TYPE_TAOBAO);
|
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));
|
detail.setOrderType(Constant.SOURCE_TYPE_TAOBAO);
|
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("订单号:" + UserUtil.filterOrderId(drawBack.getOrderId()));
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
detail.setOrderType(Constant.SOURCE_TYPE_TAOBAO);
|
return detail;
|
}
|
|
/**
|
* 提现资金记录
|
*
|
* @param extract
|
* @return
|
*/
|
public static UserMoneyDetail createExtract(Extract extract, String alipayNo) 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, "提现用户不能为空");
|
|
if (alipayNo != null && alipayNo.length() > 10)
|
alipayNo = "*" + alipayNo.substring(alipayNo.length() - 10, alipayNo.length());
|
|
UserMoneyDetail detail = new UserMoneyDetail();
|
detail.setCreateTime(new Date());
|
detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.extract.name() + ":" + extract.getId()));
|
detail.setMoney(new BigDecimal("0").subtract(extract.getMoney()));
|
detail.setSourceIdentifyId(extract.getId());
|
detail.setTitle(UserMoneyDetailTypeEnum.extractNew.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.extractNew);
|
detail.setUpdateTime(new Date());
|
detail.setDescInfo("支付宝订单号:" + alipayNo);
|
detail.setUserInfo(extract.getUserInfo());
|
detail.setShow(false);
|
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.extractVerifyNew.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.extractVerifyNew);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(aa.getUid()));
|
detail.setDescInfo(String.format("支付宝:%s -姓名-%s", UserUtil.filterAlipayAccount(aa.getAccount()),
|
UserUtil.filterAlipayName(aa.getName())));
|
return detail;
|
}
|
|
/**
|
* 系统扣除
|
* @Title: createSystemTakeOff
|
* @Description:
|
* @param uid
|
* @param money
|
* @param desc
|
* @return
|
* @throws UserMoneyDetailException
|
* UserMoneyDetail 返回类型
|
* @throws
|
*/
|
public static UserMoneyDetail createSystemTakeOff(Long uid, BigDecimal money, String desc)
|
throws UserMoneyDetailException {
|
if (uid == 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(uid + "-" + UserMoneyDetailTypeEnum.systemTakeOff.name() + System.currentTimeMillis()));
|
detail.setMoney(new BigDecimal("0").subtract(money));
|
detail.setTitle(UserMoneyDetailTypeEnum.systemTakeOff.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.systemTakeOff);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
detail.setDescInfo(desc);
|
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.setSubTitle("原路退回");
|
detail.setTitle(UserMoneyDetailTypeEnum.extractReject.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.extractReject);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(extract.getUserInfo());
|
detail.setShow(false);// 隐藏提现失败记录
|
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() + "-" + subTitle + "-" + 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;
|
}
|
|
private static UserMoneyDetail createHongBaoDeduct(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.hongbaoDeduct.name() + "-" + subTitle + "-"
|
+ hb.getBeizhu() + "-" + hb.getId()));
|
detail.setMoney(hb.getMoney());
|
detail.setSourceIdentifyId(hb.getId());
|
detail.setTitle(UserMoneyDetailTypeEnum.hongbaoDeduct.getDesc());
|
detail.setSubTitle(subTitle);
|
detail.setType(UserMoneyDetailTypeEnum.hongbaoDeduct);
|
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, "新人红包");
|
}
|
|
/**
|
* 新人红包扣除
|
*
|
* @param hb
|
* @return
|
* @throws UserMoneyDetailException
|
*/
|
|
public static UserMoneyDetail createNewerHongBaoDeduct(HongBao hb) throws UserMoneyDetailException {
|
return createHongBaoDeduct(hb, "新人红包扣除");
|
}
|
|
/**
|
* 返利奖励
|
*
|
* @param orderId
|
* @param money
|
* @param user
|
* @return
|
* @throws UserMoneyDetailException
|
*/
|
public static UserMoneyDetail createOrderReward(String orderId, int orderType, BigDecimal money,
|
BigDecimal originalMoney, UserInfo user) throws UserMoneyDetailException {
|
if (StringUtil.isNullOrEmpty(orderId))
|
throw new UserMoneyDetailException(1, "订单号不能为空");
|
if (user == 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.hongbao.name() + "-" + "老版本" + "-" + orderId));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.orderRewardNew.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.orderRewardNew);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(user);
|
detail.setOrderType(orderType);
|
detail.setDescInfo(Constant.getSourceName(orderType) + ":" + orderId + "-原返利:" + originalMoney);
|
return detail;
|
}
|
|
/**
|
* 订单重复统计退款
|
*
|
* @param orderId
|
* @param money
|
* @param user
|
* @return
|
* @throws UserMoneyDetailException
|
*/
|
public static UserMoneyDetail createRepeatStatistic(String orderId, int orderType, BigDecimal money, UserInfo user)
|
throws UserMoneyDetailException {
|
if (StringUtil.isNullOrEmpty(orderId))
|
throw new UserMoneyDetailException(1, "订单号不能为空");
|
if (user == 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.repeatStatistic.name() + "-" + orderId + "-" + user.getId()));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.repeatStatistic.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.repeatStatistic);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(user);
|
detail.setDescInfo("订单号:" + orderId);
|
detail.setOrderType(orderType);
|
return detail;
|
}
|
|
public static UserMoneyDetail createSystemEqualize(String desc, BigDecimal money, UserInfo user)
|
throws UserMoneyDetailException {
|
if (user == 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.systemEqualize.name() + "-" + System.currentTimeMillis() + "-" + user.getId()));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.systemEqualizeNew.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.systemEqualizeNew);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(user);
|
if (!StringUtil.isNullOrEmpty(desc)) {
|
detail.setDescInfo(desc);
|
}
|
return detail;
|
}
|
|
public static UserMoneyDetail createScoreConvert(BigDecimal money, UserInfo user) throws UserMoneyDetailException {
|
if (user == 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.scoreConvert.name() + "-" + System.currentTimeMillis() + "-" + user.getId()));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.scoreConvert.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.scoreConvert);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(user);
|
|
return detail;
|
}
|
|
/**
|
* 邀请奖金到账
|
*
|
* @param uid
|
* @param validCount
|
* @param weiQuanCount
|
* @param invalidCount
|
* @param money
|
* @param time
|
* @return
|
* @throws UserMoneyDetailException
|
*/
|
public static UserMoneyDetail createInviteSubsidy(Long uid, int orderType, 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.M");
|
|
UserMoneyDetail detail = new UserMoneyDetail();
|
detail.setCreateTime(new Date());
|
detail.setIdentifyCode(
|
StringUtil.Md5(UserMoneyDetailTypeEnum.subsidy.name() + "-" + orderType + "-" + uid + "-" + timeF));
|
detail.setMoney(money);
|
detail.setTitle(
|
timeF + UserMoneyDetailTypeEnum.subsidy.getDesc() + "【" + Constant.getSourceName(orderType) + "】");
|
detail.setType(UserMoneyDetailTypeEnum.subsidy);
|
detail.setDescInfo("邀请订单补贴");
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
detail.setOrderType(orderType);
|
return detail;
|
}
|
|
/**
|
* 团队收益
|
* @Title: createTeamReward
|
* @Description:
|
* @param uid
|
* @param money
|
* @param time
|
* @return
|
* @throws UserMoneyDetailException
|
* UserMoneyDetail 返回类型
|
* @throws
|
*/
|
|
public static UserMoneyDetail createTeamReward(Long uid, 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年M月");
|
|
UserMoneyDetail detail = new UserMoneyDetail();
|
detail.setCreateTime(new Date());
|
detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.teamReward.name() + "-" + uid + "-" + timeF));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.teamReward.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.teamReward);
|
detail.setDescInfo(timeF);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
return detail;
|
}
|
|
|
/**
|
* 团队分红
|
* @Title: createTeamDividents
|
* @Description:
|
* @param uid
|
* @param money
|
* @param time
|
* @return
|
* @throws UserMoneyDetailException
|
* UserMoneyDetail 返回类型
|
* @throws
|
*/
|
public static UserMoneyDetail createTeamDividents(Long uid, 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年M月");
|
|
UserMoneyDetail detail = new UserMoneyDetail();
|
detail.setCreateTime(new Date());
|
detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.teamDividents.name() + "-" + uid + "-" + timeF));
|
detail.setMoney(money);
|
detail.setTitle(UserMoneyDetailTypeEnum.teamDividents.getDesc());
|
detail.setType(UserMoneyDetailTypeEnum.teamDividents);
|
detail.setDescInfo(timeF);
|
detail.setUpdateTime(new Date());
|
detail.setUserInfo(new UserInfo(uid));
|
return detail;
|
}
|
|
}
|