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 list = (List)getHibernateTemplate().find(" FROM FinanceOrder WHERE order_no = ?0", new Object[] { order_no }); if (list.size() > 0) return list.get(0); return null; } public List findByState(String partyId, String state) { /** * 如果是查询已赎回的,则将提前赎回和正常赎回的都查出来 */ List list; if ("2".equals(state)) { list = (List)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)getHibernateTemplate().find(" FROM FinanceOrder WHERE state = ?0 and partyId =?1", new Object[] { state, partyId }); } else { list = (List)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 getAllStateBy_1() { List list = (List)getHibernateTemplate().find(" FROM FinanceOrder WHERE state = ?0 ", new Object[] { "1" }); if (list.size() > 0) { return list; } return null; } public void addListProfit(FinanceOrder order) { /** * 截止时间要大于现在这个时间则计算收益 赎回时间如果小于现在时间则不计算收益 */ List 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 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 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 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 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; } }