first commit

This commit is contained in:
Ray
2026-02-19 03:37:37 +08:00
commit ccfd8c79a4
2813 changed files with 453657 additions and 0 deletions

View File

@@ -0,0 +1,806 @@
package project.finance.internal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import kernel.util.DateUtils;
import kernel.util.StringUtils;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import project.Constants;
import project.finance.Finance;
import project.finance.FinanceOrder;
import project.finance.FinanceOrderService;
import project.finance.FinanceService;
import project.log.MoneyLog;
import project.log.MoneyLogService;
import project.party.PartyService;
import project.party.model.Party;
import project.party.model.UserRecom;
import project.party.recom.UserRecomService;
import project.syspara.SysparaService;
import project.user.UserDataService;
import project.wallet.Wallet;
import project.wallet.WalletService;
public class FinanceOrderServiceImpl extends HibernateDaoSupport implements FinanceOrderService {
protected PagedQueryDao pagedDao;
protected WalletService walletService;
protected MoneyLogService moneyLogService;
protected FinanceService financeService;
protected PartyService partyService;
protected SysparaService sysparaService;
protected UserDataService userDataService;
protected UserRecomService userRecomService;
public void saveCreate(FinanceOrder entity) {
entity.setCreate_time(new Date());
// 加入周期
Finance finance = financeService.findById(entity.getFinanceId());
entity.setCycle(finance.getCycle());
// 买入金额需要在区间内
if (entity.getAmount() > finance.getInvestment_max() || entity.getAmount() < finance.getInvestment_min()) {
throw new BusinessException("金额错误");
}
// 查看余额
Wallet wallet = this.walletService.saveWalletByPartyId(entity.getPartyId());
double amount_before = wallet.getMoney();
if (wallet.getMoney() < entity.getAmount()) {
throw new BusinessException("余额不足");
}
// wallet.setMoney(Arith.sub(wallet.getMoney(), entity.getAmount()));
// this.walletService.update(wallet);
this.walletService.update(wallet.getPartyId().toString(), Arith.sub(0, entity.getAmount()));
// 起息时间=确认时间加1天
Date date = new Date();// 取时间
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
// 把日期往后增加一天.整数往后推,负数往前移动
calendar.add(calendar.DATE, 1);
// 这个时间就是日期往后推一天的结果
date = calendar.getTime();
entity.setEarn_time(date);
// 截止时间=起息时间+周期+1
int days = (int) Arith.sub(entity.getCycle(), 1);
calendar.add(calendar.DATE, days);
date = calendar.getTime();
entity.setStop_time(date);
// 默认的赎回时间=截止时间+1
calendar.add(calendar.DATE, 1);
date = calendar.getTime();
entity.setClose_time(date);
// 保存资金日志
MoneyLog moneylog = new MoneyLog();
moneylog.setCategory(Constants.MONEYLOG_CATEGORY_FINANCE);
moneylog.setAmount_before(amount_before);
moneylog.setAmount(Arith.sub(0, entity.getAmount()));
moneylog.setAmount_after(Arith.sub(amount_before, entity.getAmount()));
moneylog.setLog("购买理财产品,订单号[" + entity.getOrder_no() + "]");
moneylog.setPartyId(entity.getPartyId());
moneylog.setWallettype(Constants.WALLET);
moneylog.setContent_type(Constants.MONEYLOG_FINANCE);
moneyLogService.save(moneylog);
this.getHibernateTemplate().save(entity);
// 购买理财产品后是否需要增加用户提现流水1不增加2要增加(coinspace,cqpro,amex,emex)
String finance_buy_add_userdata = this.sysparaService.find("finance_buy_add_userdata").getValue();
// 理财购买后给他增加提现流水限制金额
if ("2".equals(finance_buy_add_userdata)) {
Party party = this.partyService.cachePartyBy(entity.getPartyId(), false);
party.setWithdraw_limit_amount(Arith.add(party.getWithdraw_limit_amount(), entity.getAmount()));
partyService.update(party);
}
}
public void saveClose(FinanceOrder entity, Date systemTime) {
double get_amount = Arith.add(entity.getAmount(), entity.getProfit());
if (get_amount < 0) {
entity.setProfit(Arith.sub(0, entity.getAmount()));
get_amount = Arith.add(entity.getAmount(), entity.getProfit());
}
if (get_amount > 0) {
Wallet wallet = this.walletService.saveWalletByPartyId(entity.getPartyId());
double amount_before = wallet.getMoney();
// wallet.setMoney(Arith.add(wallet.getMoney(), get_amount));
// this.walletService.update(wallet);
this.walletService.update(wallet.getPartyId().toString(), get_amount);
/**
* 保存资金日志
*/
MoneyLog moneylog = new MoneyLog();
moneylog.setCategory(Constants.MONEYLOG_CATEGORY_FINANCE);
moneylog.setAmount_before(amount_before);
moneylog.setAmount(Arith.add(0, get_amount));
moneylog.setAmount_after(Arith.add(amount_before, get_amount));
moneylog.setLog("赎回理财产品,订单号[" + entity.getOrder_no() + "]");
moneylog.setPartyId(entity.getPartyId());
moneylog.setWallettype(Constants.WALLET);
moneylog.setContent_type(Constants.MONEYLOG_FINANCE);
moneylog.setCreateTime(systemTime != null ? systemTime : new Date());
moneyLogService.save(moneylog);
}
getHibernateTemplate().update(entity);
this.userDataService.saveSellFinance(entity);
}
public void saveClose(FinanceOrder entity) {
double get_amount = Arith.add(entity.getAmount(), entity.getProfit());
if (get_amount < 0) {
entity.setProfit(Arith.sub(0, entity.getAmount()));
get_amount = Arith.add(entity.getAmount(), entity.getProfit());
}
if (get_amount > 0) {
Wallet wallet = this.walletService.saveWalletByPartyId(entity.getPartyId());
double amount_before = wallet.getMoney();
// wallet.setMoney(Arith.add(wallet.getMoney(), get_amount));
// this.walletService.update(wallet);
this.walletService.update(wallet.getPartyId().toString(), get_amount);
/**
* 保存资金日志
*/
MoneyLog moneylog = new MoneyLog();
moneylog.setCategory(Constants.MONEYLOG_CATEGORY_FINANCE);
moneylog.setAmount_before(amount_before);
moneylog.setAmount(Arith.add(0, get_amount));
moneylog.setAmount_after(Arith.add(amount_before, get_amount));
moneylog.setLog("赎回理财产品,订单号[" + entity.getOrder_no() + "]");
moneylog.setPartyId(entity.getPartyId());
moneylog.setWallettype(Constants.WALLET);
moneylog.setContent_type(Constants.MONEYLOG_FINANCE);
moneylog.setCreateTime(new Date());
moneyLogService.save(moneylog);
}
getHibernateTemplate().update(entity);
this.userDataService.saveSellFinance(entity);
}
@Override
public FinanceOrder findByOrder_no(String order_no) {
List<FinanceOrder> list = (List<FinanceOrder>)getHibernateTemplate().find(" FROM FinanceOrder WHERE order_no = ?0",
new Object[] { order_no });
if (list.size() > 0)
return list.get(0);
return null;
}
public List<FinanceOrder> findByState(String partyId, String state) {
/**
* 如果是查询已赎回的,则将提前赎回和正常赎回的都查出来
*/
List<FinanceOrder> list;
if ("2".equals(state)) {
list = (List<FinanceOrder>)getHibernateTemplate().find(" FROM FinanceOrder WHERE partyId =?0 and state = ?1 or state =?2 ",
new Object[] { partyId, "0", "2" });
}
if ("0".equals(state) || "1".equals(state)) {
list = (List<FinanceOrder>)getHibernateTemplate().find(" FROM FinanceOrder WHERE state = ?0 and partyId =?1",
new Object[] { state, partyId });
} else {
list = (List<FinanceOrder>)getHibernateTemplate().find(" FROM FinanceOrder WHERE partyId =?0", new Object[] { partyId });
}
if (list.size() > 0)
return list;
return null;
}
public Page pagedQuery(int pageNo, int pageSize, String partyId, String state) {
/**
* 如果是查询已赎回的,则将提前赎回和正常赎回的都查出来
*/
StringBuffer queryString = new StringBuffer("");
queryString.append(" FROM FinanceOrder WHERE 1=1 ");
Map parameters = new HashMap();
queryString.append("AND partyId=:partyId ");
parameters.put("partyId", partyId);
if (StringUtils.isNotEmpty(state)) {
if ("2".equals(state)) {
queryString.append(" AND (state =:state_2 OR state =:state_0 )");
parameters.put("state_2", "0");
parameters.put("state_0", "2");
} else if ("02".equals(state)) {
/**
* 兼容其他项目所写,2提前赎回 (违约)
*/
queryString.append("AND state=:state ");
parameters.put("state", "2");
} else {
queryString.append("AND state=:state ");
parameters.put("state", state);
}
}
queryString.append(" order by create_time desc ");
Page page = this.pagedDao.pagedQueryHql(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
/**
* 根据日期获取到当日的购买订单
*
* @param pageNo
* @param pageSize
* @param date
* @return
*/
public Page pagedQueryByDate(int pageNo, int pageSize, String date) {
/**
* 如果是查询已赎回的,则将提前赎回和正常赎回的都查出来
*/
StringBuffer queryString = new StringBuffer("");
queryString.append(" FROM FinanceOrder WHERE 1=1 ");
Map parameters = new HashMap();
queryString.append("AND DATE(create_time) = DATE(:date) ");
parameters.put("date", date);
queryString.append(" order by create_time asc ");
Page page = this.pagedDao.pagedQueryHql(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
public void setWalletService(WalletService walletService) {
this.walletService = walletService;
}
public void setMoneyLogService(MoneyLogService moneyLogService) {
this.moneyLogService = moneyLogService;
}
public void setFinanceService(FinanceService financeService) {
this.financeService = financeService;
}
@Override
public List<FinanceOrder> getAllStateBy_1() {
List<FinanceOrder> list = (List<FinanceOrder>)getHibernateTemplate().find(" FROM FinanceOrder WHERE state = ?0 ", new Object[] { "1" });
if (list.size() > 0) {
return list;
}
return null;
}
public void addListProfit(FinanceOrder order) {
/**
* 截止时间要大于现在这个时间则计算收益 赎回时间如果小于现在时间则不计算收益
*/
List<Finance> finances = financeService.findAll();
Finance finance = new Finance();
Date now_date = new Date();
String date_string = DateUtils.format(now_date, DateUtils.DF_yyyyMMdd);
/**
* 现在时间是否大于赎回时间,如果大于等于,则赎回,不计算收益了,并将状态改变为已赎回 只计算年月日
*/
String order_date = DateUtils.format(order.getClose_time(), DateUtils.DF_yyyyMMdd);
String order_earn = DateUtils.format(order.getEarn_time(), DateUtils.DF_yyyyMMdd);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date_now = null;
Date close_date = null;
Date earn_date = null;
try {
date_now = dateFormat.parse(date_string);
close_date = dateFormat.parse(order_date);
earn_date = dateFormat.parse(order_earn);
} catch (ParseException e) {
e.printStackTrace();
}
/**
* 理财收益赎回时统一下发1还是每日下发2
*/
String finance_profit_days = sysparaService.find("finance_profit_days").getValue();
if ("1".equals(finance_profit_days)) {
// 如果赎回时间close_date < 现在时间date_now 则 arrive_close > 0
int arrive_close = date_now.compareTo(close_date);
if (arrive_close >= 0) {
order.setState("0");
saveClose(order);
return;
}
// 如果起息时间earn_date < 现在时间date_now 则 arrive_close > 0
// 起息时间要大于等于今天
int arrive_earn = date_now.compareTo(earn_date);
if (arrive_earn < 0) {
return;
}
for (int j = 0; j < finances.size(); j++) {
finance = finances.get(j);
if (finance.getId().equals(order.getFinanceId())) {
break;
}
}
/**
* 当日获取的收益
*/
double today_rate = Arith.mul(finance.getToday_rate(), 0.01);
double get_amount = Arith.mul(order.getAmount(), today_rate);
order.setProfit(Arith.add(order.getProfit(), get_amount));
this.getHibernateTemplate().update(order);
}
if ("2".equals(finance_profit_days)) {
// 如果赎回时间close_date < 现在时间date_now 则 arrive_close > 0
int arrive_close = date_now.compareTo(close_date);
if (arrive_close >= 0) {
order.setState("0");
// 自动赎回调用,只返回本金
saveClosePrincipal(order);
return;
}
// 如果起息时间earn_date < 现在时间date_now 则 arrive_close > 0
/**
* 起息时间要大于等于今天
*/
int arrive_earn = date_now.compareTo(earn_date);
if (arrive_earn < 0) {
return;
}
for (int j = 0; j < finances.size(); j++) {
finance = finances.get(j);
if (finance.getId().equals(order.getFinanceId())) {
break;
}
}
/**
* 当日获取的收益
*/
double today_rate = Arith.mul(finance.getToday_rate(), 0.01);
double get_amount = Arith.mul(order.getAmount(), today_rate);
// 5,0.5,3,0.3,2,0.2
String finance_level_profit = sysparaService.find("finance_level_profit").getValue();
boolean finance_level_profit_open = StringUtils.isNotEmpty(finance_level_profit);
// 判断是否有理财推荐奖励如果有需要扣除30%给推荐人
String finance_bonus_parameters = "";
finance_bonus_parameters = this.sysparaService.find("finance_bonus_parameters").getValue();
if ((finance_bonus_parameters != null && !"".equals(finance_bonus_parameters))
|| finance_level_profit_open) {
String[] finance_bonus_array = StringUtils.isNotEmpty(finance_bonus_parameters)
? finance_bonus_parameters.split(",")
: new String[] {};
List<UserRecom> list_parents = this.userRecomService.getParents(order.getPartyId());
if (CollectionUtils.isNotEmpty(list_parents)) {
int loop = 0;
for (int i = 0; i < list_parents.size(); i++) {
if (finance_level_profit_open) {// 等级奖励只给推荐一人
if (loop >= 1) {
break;
}
} else {
if (loop >= 3) {
break;
}
}
Party party_parent = this.partyService.cachePartyBy(list_parents.get(i).getReco_id(), true);
if (!Constants.SECURITY_ROLE_MEMBER.equals(party_parent.getRolename())) {
continue;
}
get_amount = Arith.mul(order.getAmount(), today_rate);
/**
* 增加推荐人理财收益
*/
double parent_get_money = 0d;
if (finance_level_profit_open) {
parent_get_money = levelProfit(party_parent.getId().toString(), get_amount,
finance_level_profit);
} else {
double finance_pip_amount = Double.valueOf(finance_bonus_array[loop]);
parent_get_money = Arith.mul(get_amount, finance_pip_amount);
}
if (parent_get_money == 0d) {
break;
}
Wallet wallet_parent = walletService.saveWalletByPartyId(party_parent.getId().toString());
double amount_before_parent = wallet_parent.getMoney();
walletService.update(wallet_parent.getPartyId().toString(), parent_get_money);
/**
* 保存资金日志
*/
MoneyLog moneyLog = new MoneyLog();
moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_FINANCE);
moneyLog.setAmount_before(amount_before_parent);
moneyLog.setAmount(parent_get_money);
moneyLog.setAmount_after(Arith.add(amount_before_parent, parent_get_money));
moneyLog.setLog("" + (i + 1) + "代下级用户,每日理财收益奖励金");
moneyLog.setPartyId(party_parent.getId().toString());
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.MONEYLOG_CONTENT_FINANCE_RECOM_PROFIT);
moneyLogService.save(moneyLog);
loop++;
}
}
/**
* 理财收益减少百分之30给上级
*/
if (!finance_level_profit_open) {// 等级奖励则无需扣除本人收益
get_amount = Arith.sub(get_amount, Arith.mul(order.getAmount(), 0.3));
}
}
Wallet wallet = this.walletService.saveWalletByPartyId(order.getPartyId());
double amount_before = wallet.getMoney();
// wallet.setMoney(Arith.add(wallet.getMoney(), get_amount));
this.walletService.update(wallet.getPartyId().toString(), get_amount);
// this.walletService.update(wallet);
/**
* 保存资金日志
*/
MoneyLog moneylog = new MoneyLog();
moneylog.setCategory(Constants.MONEYLOG_CATEGORY_FINANCE);
moneylog.setAmount_before(amount_before);
moneylog.setAmount(Arith.add(0, get_amount));
moneylog.setAmount_after(Arith.add(amount_before, get_amount));
moneylog.setLog("理财产品每日收益,订单号[" + order.getOrder_no() + "]");
moneylog.setPartyId(order.getPartyId());
moneylog.setWallettype(Constants.WALLET);
moneylog.setContent_type(Constants.MONEYLOG_CONTENT_FINANCE_PROFIT);
moneyLogService.save(moneylog);
order.setProfit(Arith.add(order.getProfit(), get_amount));
this.getHibernateTemplate().update(order);
}
}
public void addListProfit(FinanceOrder order, Date systemTime) {
/**
* 截止时间要大于现在这个时间则计算收益 赎回时间如果小于现在时间则不计算收益
*/
List<Finance> finances = financeService.findAll();
Finance finance = new Finance();
Date now_date = systemTime != null ? systemTime : new Date();
String date_string = DateUtils.format(now_date, DateUtils.DF_yyyyMMdd);
/**
* 现在时间是否大于赎回时间,如果大于等于,则赎回,不计算收益了,并将状态改变为已赎回 只计算年月日
*/
String order_date = DateUtils.format(order.getClose_time(), DateUtils.DF_yyyyMMdd);
String order_earn = DateUtils.format(order.getEarn_time(), DateUtils.DF_yyyyMMdd);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date_now = null;
Date close_date = null;
Date earn_date = null;
try {
date_now = dateFormat.parse(date_string);
close_date = dateFormat.parse(order_date);
earn_date = dateFormat.parse(order_earn);
} catch (ParseException e) {
e.printStackTrace();
}
/**
* 理财收益赎回时统一下发1还是每日下发2
*/
String finance_profit_days = sysparaService.find("finance_profit_days").getValue();
/**
* 1计算收益赎回统一发放
*/
if ("1".equals(finance_profit_days)) {
// 如果赎回时间close_date < 现在时间date_now 则 arrive_close > 0
int arrive_close = date_now.compareTo(close_date);
if (arrive_close >= 0) {
order.setState("0");
saveClose(order, systemTime);
return;
}
// 如果起息时间earn_date < 现在时间date_now 则 arrive_close > 0
/**
* 起息时间要大于等于今天
*/
int arrive_earn = date_now.compareTo(earn_date);
if (arrive_earn < 0) {
return;
}
for (int j = 0; j < finances.size(); j++) {
finance = finances.get(j);
if (finance.getId().equals(order.getFinanceId())) {
break;
}
}
/**
* 当日获取的收益
*/
double today_rate = Arith.mul(finance.getToday_rate(), 0.01);
double get_amount = Arith.mul(order.getAmount(), today_rate);
order.setProfit(Arith.add(order.getProfit(), get_amount));
this.getHibernateTemplate().update(order);
}
/**
* 2每日下发收益
*/
if ("2".equals(finance_profit_days)) {
// 如果赎回时间close_date < 现在时间date_now 则 arrive_close > 0
int arrive_close = date_now.compareTo(close_date);
if (arrive_close >= 0) {
order.setState("0");
/**
* 自动赎回调用,只返回本金
*/
saveClosePrincipal(order);
return;
}
// 如果起息时间earn_date < 现在时间date_now 则 arrive_close > 0
/**
* 起息时间要大于等于今天
*/
int arrive_earn = date_now.compareTo(earn_date);
if (arrive_earn < 0) {
return;
}
for (int j = 0; j < finances.size(); j++) {
finance = finances.get(j);
if (finance.getId().equals(order.getFinanceId())) {
break;
}
}
/**
* 当日获取的收益
*/
double today_rate = Arith.mul(finance.getToday_rate(), 0.01);
double get_amount = Arith.mul(order.getAmount(), today_rate);
// 5,0.5,3,0.3,2,0.2
String finance_level_profit = sysparaService.find("finance_level_profit").getValue();
boolean finance_level_profit_open = StringUtils.isNotEmpty(finance_level_profit);
// 判断是否有理财推荐奖励如果有需要扣除30%给推荐人
String finance_bonus_parameters = "";
finance_bonus_parameters = this.sysparaService.find("finance_bonus_parameters").getValue();
if ((finance_bonus_parameters != null && !"".equals(finance_bonus_parameters))
|| finance_level_profit_open) {
String[] finance_bonus_array = StringUtils.isNotEmpty(finance_bonus_parameters)
? finance_bonus_parameters.split(",")
: new String[] {};
List<UserRecom> list_parents = this.userRecomService.getParents(order.getPartyId());
if (CollectionUtils.isNotEmpty(list_parents)) {
int loop = 0;
for (int i = 0; i < list_parents.size(); i++) {
if (finance_level_profit_open) {// 等级奖励只给推荐一人
if (loop >= 1) {
break;
}
} else {
if (loop >= 3) {
break;
}
}
Party party_parent = this.partyService.cachePartyBy(list_parents.get(i).getReco_id(), true);
if (!Constants.SECURITY_ROLE_MEMBER.equals(party_parent.getRolename())) {
continue;
}
get_amount = Arith.mul(order.getAmount(), today_rate);
/**
* 增加推荐人理财收益
*/
double parent_get_money = 0d;
if (finance_level_profit_open) {
parent_get_money = levelProfit(party_parent.getId().toString(), get_amount,
finance_level_profit);
} else {
double finance_pip_amount = Double.valueOf(finance_bonus_array[loop]);
parent_get_money = Arith.mul(get_amount, finance_pip_amount);
}
if (parent_get_money == 0d) {
break;
}
Wallet wallet_parent = walletService.saveWalletByPartyId(party_parent.getId().toString());
double amount_before_parent = wallet_parent.getMoney();
walletService.update(wallet_parent.getPartyId().toString(), parent_get_money);
/**
* 保存资金日志
*/
MoneyLog moneyLog = new MoneyLog();
moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_FINANCE);
moneyLog.setAmount_before(amount_before_parent);
moneyLog.setAmount(parent_get_money);
moneyLog.setAmount_after(Arith.add(amount_before_parent, parent_get_money));
moneyLog.setLog("" + (i + 1) + "代下级用户,每日理财收益奖励金");
moneyLog.setPartyId(party_parent.getId().toString());
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.MONEYLOG_CONTENT_FINANCE_RECOM_PROFIT);
moneyLog.setCreateTime(systemTime);
moneyLogService.save(moneyLog);
loop++;
}
}
/**
* 理财收益减少百分之30给上级
*/
if (finance_level_profit_open) {// 等级奖励则无需扣除本人收益
get_amount = Arith.sub(get_amount, Arith.mul(get_amount, 0.3));
}
}
Wallet wallet = this.walletService.saveWalletByPartyId(order.getPartyId());
double amount_before = wallet.getMoney();
// wallet.setMoney(Arith.add(wallet.getMoney(), get_amount));
this.walletService.update(wallet.getPartyId().toString(), get_amount);
// this.walletService.update(wallet);
/**
* 保存资金日志
*/
MoneyLog moneylog = new MoneyLog();
moneylog.setCategory(Constants.MONEYLOG_CATEGORY_FINANCE);
moneylog.setAmount_before(amount_before);
moneylog.setAmount(Arith.add(0, get_amount));
moneylog.setAmount_after(Arith.add(amount_before, get_amount));
moneylog.setLog("理财产品每日收益,订单号[" + order.getOrder_no() + "]");
moneylog.setPartyId(order.getPartyId());
moneylog.setWallettype(Constants.WALLET);
moneylog.setContent_type(Constants.MONEYLOG_CONTENT_FINANCE_PROFIT);
moneylog.setCreateTime(systemTime);
moneyLogService.save(moneylog);
order.setProfit(Arith.add(order.getProfit(), get_amount));
this.getHibernateTemplate().update(order);
}
}
/**
* 每日下发收益,自动赎回调用,只返回本金
*/
public void saveClosePrincipal(FinanceOrder entity) {
double get_amount = Arith.add(entity.getAmount(), entity.getProfit_before());
if (get_amount < 0) {
entity.setProfit(Arith.sub(0, entity.getAmount()));
get_amount = Arith.add(entity.getAmount(), entity.getProfit());
}
if (get_amount > 0) {
Wallet wallet = this.walletService.saveWalletByPartyId(entity.getPartyId());
double amount_before = wallet.getMoney();
// wallet.setMoney(Arith.add(wallet.getMoney(), get_amount));
// this.walletService.update(wallet);
this.walletService.update(wallet.getPartyId().toString(), get_amount);
/**
* 保存资金日志
*/
MoneyLog moneylog = new MoneyLog();
moneylog.setCategory(Constants.MONEYLOG_CATEGORY_FINANCE);
moneylog.setAmount_before(amount_before);
moneylog.setAmount(Arith.add(0, get_amount));
moneylog.setAmount_after(Arith.add(amount_before, get_amount));
moneylog.setLog("赎回理财产品,订单号[" + entity.getOrder_no() + "]");
moneylog.setPartyId(entity.getPartyId());
moneylog.setWallettype(Constants.WALLET);
moneylog.setContent_type(Constants.MONEYLOG_FINANCE);
moneyLogService.save(moneylog);
}
getHibernateTemplate().update(entity);
this.userDataService.saveSellFinance(entity);
}
/**
* 等级奖励
*
* @param partyId
* @param profit
* @return 返回奖励
*/
public double levelProfit(String partyId, double profit, String finance_level_profit) {
// 5,0.5,3,0.3,2,0.2
double levelProfitMoney = 0d;
if (StringUtils.isEmptyString(finance_level_profit)) {
return levelProfitMoney;
}
List<UserRecom> listRecoms = this.userRecomService.findRecoms(partyId);
int recomsNum = listRecoms.size();
String[] finance_level_profit_array = finance_level_profit.split(",");
for (int i = 0; i < finance_level_profit_array.length; i++) {
double levelNeed = Double.valueOf(finance_level_profit_array[i]);
if (recomsNum >= levelNeed) {// 等级满足要求
double pipAmount = Double.valueOf(finance_level_profit_array[i + 1]);
levelProfitMoney = Arith.mul(profit, pipAmount);
break;
}
i++;
}
return levelProfitMoney;
}
public FinanceOrder findById(String id) {
return (FinanceOrder) getHibernateTemplate().get(FinanceOrder.class, id);
}
public void update(FinanceOrder entity) {
getHibernateTemplate().update(entity);
}
public void setPagedDao(PagedQueryDao pagedDao) {
this.pagedDao = pagedDao;
}
public void setUserDataService(UserDataService userDataService) {
this.userDataService = userDataService;
}
public void setPartyService(PartyService partyService) {
this.partyService = partyService;
}
public void setSysparaService(SysparaService sysparaService) {
this.sysparaService = sysparaService;
}
public void setUserRecomService(UserRecomService userRecomService) {
this.userRecomService = userRecomService;
}
}