package cn.jeesoft.mvc.helper; import cn.jeesoft.mvc.bean.Profit; import cn.jeesoft.mvc.model.PayType; import cn.jeesoft.mvc.services.ProfitService; /** * 费用计算帮助类 * @author king */ public class ProfitHelper { private final ProfitService mService; public ProfitHelper(ProfitService service) { this.mService = service; } /** * 获取用户的费率 * @return */ public Profit findUsers(int usersId) { Profit profit = mService.selectOne(usersId); return profit; } public Profit findSys() { return mService.selectOne(0); } /** * 计算手续费(按百分比) * @param money 交易金额(单位:分) * @param percent 百分比(1个单位,表示0.01%) * @param min 最小费用(单位:分) * @return 实际应付手续费(单位:分) */ public static int count(int money, Integer percent, int min) { if (percent==null || Math.abs(percent)>=10000 || percent==0) { // 没有设置则为0 return 0; } int value = (int) (money * percent * 0.0001); if (value == 0) { return min; } return value; } /** * 话费充值手续费 * @param usersId 用户ID * @param money 充值面额(单位:分) * @return 实际应付手续费(单位:分) */ public int getCall(int usersId, int money) { Integer value = findUsers(usersId).getCallFees(money); if (value == null || Math.abs(value)>money) { value = findSys().getCallFees(money); } if (value == null || Math.abs(value)>money) { // 没有设置则为0 return 0; } return value; } /** * 转账手续费 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际应付手续费(单位:分) */ public int getTransfer(int usersId, int money) { Integer percent = findUsers(usersId).getTransfer(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getTransfer(); } return count(money, percent, 1); } /** * 取现手续费 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际应付手续费(单位:分) */ public int getWithdraw(int usersId) { Integer value = findUsers(usersId).getWithdraw(); if (value == null) { value = findSys().getWithdraw(); } if (value == null) { // 没有设置则为0 return 0; } return value; } /** * 计算收款手续费 * @param usersId 用户ID * @param money 交易金额(单位:分) * @param type 交易方式(ALIPAY、KKLPAY、BANK) * @return 实际应付手续费(单位:分) */ public int getPayFees(int usersId, int money, PayType type) { int fees = 0; switch (type) { case ALIPAY: fees = getAlipay(usersId, money); break; case KKLPAY: fees = getKklpay(usersId, money); break; case BANK: fees = getBank(usersId, money); break; case AUTH: fees = getAuth(usersId, money); case ALLINPAY: fees = getAllinpay(usersId, money); break; default: break; } return fees; } /** * 支付宝收款手续费 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际应付手续费(单位:分) */ public int getAlipay(int usersId, int money) { Integer percent = findUsers(usersId).getAlipay(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getAlipay(); } return count(money, percent, 1); } /** * 卡卡联NFC收款手续费 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际应付手续费(单位:分) */ public int getKklpay(int usersId, int money) { Integer percent = findUsers(usersId).getKklpay(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getKklpay(); } return count(money, percent, 1); } /** * 卡卡联认证收款手续费 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际应付手续费(单位:分) */ public int getAuth(int usersId, int money) { Integer percent = findUsers(usersId).getAuth(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getAuth(); } return count(money, percent, 1); } /** * 通联支付收款手续费 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际应付手续费(单位:分) */ public int getAllinpay(int usersId, int money) { Integer percent = findUsers(usersId).getAllinpay(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getAllinpay(); } return count(money, percent, 1); } /** * 银联收款手续费 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际应付手续费(单位:分) */ public int getBank(int usersId, int money) { Integer percent = findUsers(usersId).getBank(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getBank(); } return count(money, percent, 1); } /** * 一级余额充值收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getOneBalance(int usersId, int money) { Integer percent = findUsers(usersId).getOneBalance(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getOneBalance(); } return count(money, percent, 0); } /** * 二级余额充值收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getTwoBalance(int usersId, int money) { Integer percent = findUsers(usersId).getTwoBalance(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getTwoBalance(); } return count(money, percent, 0); } /** * 三级余额充值收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getThreeBalance(int usersId, int money) { Integer percent = findUsers(usersId).getThreeBalance(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getThreeBalance(); } return count(money, percent, 0); } /** * 一级余额提现收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getOneWithdraw(int usersId, int money) { Integer value = findUsers(usersId).getOneWithdraw(); if (value == null) { value = findSys().getOneWithdraw(); } if (value == null) { // 没有设置则为0 return 0; } return value; } /** * 二级余额提现收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getTwoWithdraw(int usersId, int money) { Integer value = findUsers(usersId).getTwoWithdraw(); if (value == null) { value = findSys().getTwoWithdraw(); } if (value == null) { // 没有设置则为0 return 0; } return value; } /** * 三级余额提现收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getThreeWithdraw(int usersId, int money) { Integer value = findUsers(usersId).getThreeWithdraw(); if (value == null) { value = findSys().getThreeWithdraw(); } if (value == null) { // 没有设置则为0 return 0; } return value; } /** * 一级转账收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getOneTransfer(int usersId, int money) { Integer percent = findUsers(usersId).getOneTransfer(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getOneTransfer(); } return count(money, percent, 0); } /** * 二级转账收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getTwoTransfer(int usersId, int money) { Integer percent = findUsers(usersId).getTwoTransfer(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getTwoTransfer(); } return count(money, percent, 0); } /** * 三级转账收益 * @param usersId 用户ID * @param money 交易金额(单位:分) * @return 实际收益(单位:分) */ public int getThreeTransfer(int usersId, int money) { Integer percent = findUsers(usersId).getThreeTransfer(); if (percent == null || Math.abs(percent)>10000) { percent = findSys().getThreeTransfer(); } return count(money, percent, 0); } /** * 一级话费充值收益 * @param usersId 用户ID * @param money 充值面额(单位:分) * @return 实际收益(单位:分) */ public int getOneCall(int usersId, int money) { Integer value = findUsers(usersId).getOneCall(money); if (value == null) { value = findSys().getOneCall(money); } if (value == null) { // 没有设置则为0 return 0; } return value; } /** * 二级话费充值收益 * @param usersId 用户ID * @param money 充值面额(单位:分) * @return 实际收益(单位:分) */ public int getTwoCall(int usersId, int money) { Integer value = findUsers(usersId).getTwoCall(money); if (value == null) { value = findSys().getTwoCall(money); } if (value == null) { // 没有设置则为0 return 0; } return value; } /** * 三级话费充值收益 * @param usersId 用户ID * @param money 充值面额(单位:分) * @return 实际收益(单位:分) */ public int getThreeCall(int usersId, int money) { Integer value = findUsers(usersId).getThreeCall(money); if (value == null) { value = findSys().getThreeCall(money); } if (value == null) { // 没有设置则为0 return 0; } return value; } }