Commit 57a0ec53 by tang

修改推广,修改高级别用户分润

parent 7b7041fd
......@@ -123,6 +123,8 @@ public static final String QUICK_WEB_PAY = "/quick/web/pay";
public static final String STATUS_CODE_9999_DESC = "验证SIGN失败";
public static final String STATUS_CODE_9998 = "9998";
public static final String STATUS_CODE_9998_DESC = "通用异常";
public static final String STATUS_CODE_9997 = "9997";
public static final String STATUS_CODE_9997_DESC = "信息填写有误";
/**
* 验证码
......
......@@ -9,6 +9,8 @@ import com.thinkgem.jeesite.modules.pay.entity.BalanceEntity;
import com.thinkgem.jeesite.modules.pay.entity.BenefitEntity;
import com.thinkgem.jeesite.modules.pay.service.BenefitSevice;
import com.thinkgem.jeesite.modules.user.bean.UserRequest;
import com.thinkgem.jeesite.modules.user.entity.UserEntity;
import com.thinkgem.jeesite.modules.user.service.UserApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -26,6 +28,9 @@ public class BenefitController{
@Autowired
private BenefitSevice benefitSevice;
@Autowired
private UserApiService userService;
/**
* 余额查询
......@@ -44,8 +49,17 @@ public class BenefitController{
try {
BenefitEntity entity = new BenefitEntity();
entity.setUserCode(request.getSubMerchantCode());
BalanceEntity balanceEntity = benefitSevice.getBalance(entity);
BalanceEntity balanceEntity = null;
//高级别用户
//1.获取的下线,在成为高级别用户以后的所有收益----即总收益
UserEntity userInfo = userService.getUserInfo(request);
if (userInfo.getLevel().equals("A")||userInfo.getLevel().equals("B")){
//王者、钻石用户
balanceEntity = benefitSevice.getBalanceHighLevel(entity,userInfo);
}else{
//非高级别用户
balanceEntity = benefitSevice.getBalance(entity);
}
response.setData(balanceEntity);
response.setStatus(ComCode.STATUS_CODE_2000);
response.setMessage(ComCode.STATUS_CODE_2000_DESC);
......
......@@ -20,4 +20,7 @@ public interface OrderApiDao {
// 查询分润
public List<BenefitEntity> getBenefitList(OrderRequest request);
//查询高级别用户分润
public List<BenefitEntity> getBenefitListHighLevel(OrderRequest request);
}
\ No newline at end of file
......@@ -41,4 +41,9 @@ public interface PayApiDao {
//获取用户的费率信息
UserRateEntity getUpUser(Map<String, String> map);
//高级别用户获取分润之和
BenefitEntity getBenefitSumHighLevel(BenefitEntity benefitEntity);
//高级别用户获取总提现之和
BenefitEntity getBenefitSumHighLevelM(BenefitEntity benefitEntity);
}
package com.thinkgem.jeesite.modules.pay.service;
import com.thinkgem.jeesite.common.baseBean.Request;
import com.thinkgem.jeesite.common.persistence.Page;
import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.modules.pay.bean.OrderRequest;
......@@ -8,6 +9,12 @@ import com.thinkgem.jeesite.modules.pay.dao.PayApiDao;
import com.thinkgem.jeesite.modules.pay.entity.BalanceEntity;
import com.thinkgem.jeesite.modules.pay.entity.BenefitEntity;
import com.thinkgem.jeesite.modules.pay.entity.OrderEntity;
import com.thinkgem.jeesite.modules.sys.entity.Dict;
import com.thinkgem.jeesite.modules.sys.utils.DictUtils;
import com.thinkgem.jeesite.modules.user.bean.UserRequest;
import com.thinkgem.jeesite.modules.user.dao.UserApiDao;
import com.thinkgem.jeesite.modules.user.entity.UpgradeUserEntity;
import com.thinkgem.jeesite.modules.user.entity.UserEntity;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -32,6 +39,9 @@ public class BenefitSevice {
@Autowired
private OrderApiDao orderApiDao;
@Autowired
private UserApiDao userDao;
/**
* 余额
* @param entity
......@@ -102,6 +112,88 @@ public class BenefitSevice {
/**
* 余额(高级别用户)
* @param entity
* @return
*/
public BalanceEntity getBalanceHighLevel(BenefitEntity entity , UserEntity userEntity){
//高级用户是否存在推荐用户,存在继续,不存在,则直接返回
UserEntity recomUserEntity = checkRecommend(userEntity.getMobile());
UserEntity upgradeUserInfo = userDao.getUpgradeUserInfo(userEntity.getMobile());
if (recomUserEntity==null){
BalanceEntity balanceEntity = new BalanceEntity();
balanceEntity.setBalance("0.00");
balanceEntity.setTodayIncome("0.00");
balanceEntity.setYesterdayIncome("0.00");
balanceEntity.setMonthIncome("0.00");
balanceEntity.setYearIncome("0.00");
return balanceEntity;
}
String levelRate = getRateByLevel(userEntity.getLevel());
// 总收益
entity.setBenefitType(levelRate);
entity.setCreateDate(userEntity.getCreated());
entity.setCardCode(upgradeUserInfo.getMobile());
BenefitEntity benefitEntityA = payDao.getBenefitSumHighLevel(entity);
// 总提现
BenefitEntity benefitEntityM = payDao.getBenefitSumHighLevelM(entity);
// 余额 = 总收益-总提现
BalanceEntity balanceEntity = getLastBalance(benefitEntityA, benefitEntityM);
// 今日收益
Date date = new Date();
String today = DateUtils.formatDate(date,"yyyy-MM-dd HH:mm:ss");
String todayYMD = DateUtils.formatDate(date,"yyyy-MM-dd");
entity.setEndTime(today);
entity.setStartTime(todayYMD+ " 00:00:00");
BenefitEntity benefitEntityToday = payDao.getBenefitSumHighLevel(entity);
if(benefitEntityToday != null && StringUtils.isNotBlank(benefitEntityToday.getAmount())){
balanceEntity.setTodayIncome(benefitEntityToday.getAmount());
}else{
balanceEntity.setTodayIncome("0.00");
}
// 昨日收益
entity.setEndTime(DateUtils.getYesterday(todayYMD,"yyyy-MM-dd") + " 23:59:59");
entity.setStartTime(DateUtils.getYesterday(todayYMD,"yyyy-MM-dd") + " 00:00:00");
BenefitEntity benefitEntityYesterday = payDao.getBenefitSumHighLevel(entity);
if(benefitEntityYesterday != null && StringUtils.isNotBlank(benefitEntityYesterday.getAmount())){
balanceEntity.setYesterdayIncome(benefitEntityYesterday.getAmount());
}else{
balanceEntity.setYesterdayIncome("0.00");
}
// 本月收益
entity.setEndTime(today);
entity.setStartTime(DateUtils.getFirstByMonth(todayYMD,"yyyy-MM-dd") + " 00:00:00");
BenefitEntity benefitEntityMonth = payDao.getBenefitSumHighLevel(entity);
if(benefitEntityMonth != null && StringUtils.isNotBlank(benefitEntityMonth.getAmount())){
balanceEntity.setMonthIncome(benefitEntityMonth.getAmount());
}else{
balanceEntity.setMonthIncome("0.00");
}
// 本年收益
entity.setEndTime(today);
entity.setStartTime(DateUtils.getCurrYearFirst(todayYMD,"yyyy-MM-dd") + " 00:00:00");
BenefitEntity benefitEntityYear = payDao.getBenefitSumHighLevel(entity);
if(benefitEntityYear != null && StringUtils.isNotBlank(benefitEntityYear.getAmount())){
balanceEntity.setYearIncome(benefitEntityYear.getAmount());
}else{
balanceEntity.setYearIncome("0.00");
}
return balanceEntity;
}
/**
* 分润
* @param request
* @return
......@@ -113,8 +205,26 @@ public class BenefitSevice {
if(request.getEndDate() != null && request.getEndDate() != 0){
request.setEndTime(DateUtils.formatDate(new Date(request.getEndDate()),"yyyy-MM-dd") + " 23:59:59");
}
List<BenefitEntity> benefitList = null;
Request re = new Request();
re.setSubMerchantCode(request.getSubMerchantCode());
UserEntity userInfo = userDao.getUserInfo(re);
if (userInfo.getLevel().equals("A") || userInfo.getLevel().equals("B")){
//高级用户是否存在推荐用户,存在继续,不存在,则直接返回
UserEntity recomUserEntity = checkRecommend(userInfo.getMobile());
if (recomUserEntity==null){
return benefitList;
}
//升级前用户信息
UserEntity upgradeUserInfo = userDao.getUpgradeUserInfo(userInfo.getMobile());
request.setSubMerchantCode(upgradeUserInfo.getMobile());
request.setSign(getRateByLevel(userInfo.getLevel()));
benefitList = orderApiDao.getBenefitListHighLevel(request);
}else{
benefitList = orderApiDao.getBenefitList(request);
}
return orderApiDao.getBenefitList(request);
return benefitList;
}
......@@ -187,4 +297,31 @@ public class BenefitSevice {
return balanceEntity;
}
/**
* 判断高级用户是否已经推荐过用户
* @param mobile
* @return
*/
private UserEntity checkRecommend(String mobile){
UserEntity upgradeUserInfo = userDao.getUpgradeUserInfo(mobile);
UserRequest userRequest = new UserRequest();
userRequest.setRecommendedMobile(upgradeUserInfo.getMobile());
UserEntity recomUserEntity = userDao.checkRecommend(userRequest);
return recomUserEntity;
}
/**
* 根据高级别用户等级获取分润比例
* @param level
* @return
*/
private String getRateByLevel(String level){
List<Dict> list = DictUtils.getDictList("benefit_rate_" + level);
String rate = "0";
if (list != null && list.size() > 0) {
rate = list.get(0).getValue();
}
return rate;
}
}
......@@ -6,10 +6,13 @@ import com.thinkgem.jeesite.common.constant.ComCode;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.commonError.MyException;
import com.thinkgem.jeesite.modules.img.bean.ImgRequest;
import com.thinkgem.jeesite.modules.pay.entity.BalanceEntity;
import com.thinkgem.jeesite.modules.pay.entity.RateEntity;
import com.thinkgem.jeesite.modules.sys.entity.User;
import com.thinkgem.jeesite.modules.user.bean.IdentityCodeRequest;
import com.thinkgem.jeesite.modules.user.bean.JuHeZhongPayRequest;
import com.thinkgem.jeesite.modules.user.bean.UserRequest;
import com.thinkgem.jeesite.modules.user.entity.CardEntity;
import com.thinkgem.jeesite.modules.user.entity.IdentityCodeEntity;
import com.thinkgem.jeesite.modules.user.entity.Level;
import com.thinkgem.jeesite.modules.user.entity.UserEntity;
......@@ -492,7 +495,11 @@ public class UserApiController {
userService.certification(request);
resp.setStatus(ComCode.STATUS_CODE_2000);
resp.setMessage(ComCode.STATUS_CODE_2000_DESC);
} catch (Exception e) {
}catch (MyException e){
resp.setStatus(ComCode.STATUS_CODE_9997);
resp.setMessage(ComCode.STATUS_CODE_9997_DESC);
resp.setError(e.getMessage());
}catch (Exception e) {
resp.setStatus(ComCode.STATUS_CODE_9998);
resp.setMessage(ComCode.STATUS_CODE_9998_DESC);
resp.setError(e.getMessage());
......@@ -699,6 +706,29 @@ public class UserApiController {
return true;
}
/**
* 获取结算卡信息
* @param request
* @return
*/
@PostMapping("/getDebitCard")
public Response getDebitCard(JuHeZhongPayRequest request) {
Response resp = new Response();
try {
CardEntity debitCardByUserCode = userService.getDebitCardByUserCode(request.getSubMerchantCode());
resp.setData(debitCardByUserCode);
resp.setMessage(ComCode.STATUS_CODE_2000_DESC);
resp.setStatus(ComCode.STATUS_CODE_2000);
}catch (Exception e){
resp.setMessage(ComCode.STATUS_CODE_9998_DESC);
resp.setStatus(ComCode.STATUS_CODE_9998);
resp.setError(e.getMessage());
}
return resp;
}
@PostMapping("/testMatch")
public Response testMatch(UserRequest request){
Response resp = new Response();
......
......@@ -126,4 +126,7 @@ public interface UserApiDao {
//获取满足条件的数量
Integer getMatchNum(String mobile);
//获取用户升级之前信息
UserEntity getUpgradeUserInfo(String mobile);
}
......@@ -73,4 +73,40 @@
</if>
AND yb.del_flag = 0
</select>
<select id="getBenefitListHighLevel" resultType="com.thinkgem.jeesite.modules.pay.entity.BenefitEntity">
SELECT
DISTINCT o.pay_code AS "orderEntity.payCode",
o.pay_no AS "orderEntity.payNo",
o.pay_status AS "orderEntity.payStatus",
o.pay_type AS "orderEntity.payType",
o.pay_channel AS "orderEntity.payChannel",
o.pay_method AS "orderEntity.payMethod",
o.`subject` AS "orderEntity.subject",
o.amount AS "orderEntity.amount",
sd.label AS "orderEntity.payChannelName",
sdm.label AS "orderEntity.payMethodName",
yb.amount * #{sign} AS "amount",
yb.create_date AS "createDate"
FROM
youka_benefit yb
LEFT JOIN `youka_orders` o ON yb.order_code = o.`code`
LEFT JOIN sys_dict sd ON sd.`VALUE` = o.pay_channel
LEFT JOIN sys_dict sdm ON sdm.`VALUE` = o.pay_method
WHERE o.del_flag = 0
AND yb.user_code IN (SELECT y.code FROM youka_users y WHERE y.recommended_mobile = #{subMerchantCode})
<if test="payChannel != null and payChannel != ''">
AND o.pay_method = #{payChannel}
</if>
<if test="payStatus != null and payStatus != ''">
AND o.pay_status = #{payStatus}
</if>
<if test="startTime != null and startTime != ''">
AND o.create_date &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND o.create_date &lt;= #{endTime}
</if>
AND yb.del_flag = 0
</select>
</mapper>
\ No newline at end of file
......@@ -205,4 +205,44 @@
AND
yr.pay_channel = #{pay_channel}
</select>
<select id="getBenefitSumHighLevel" resultType="com.thinkgem.jeesite.modules.pay.entity.BenefitEntity">
SELECT
CAST(
sum(b.amount)*#{benefitType} AS DECIMAL (19, 3)
) AS amount
FROM youka_benefit b
LEFT JOIN youka_orders o ON o.`code` = b.order_code
WHERE
b.del_flag = 0
AND b.benefit_type = "A"
AND o.pay_status = 2
AND b.user_code IN (select y.code FROM youka_users y WHERE y.recommended_mobile = #{cardCode})
<if test="createDate != null and createDate != ''">
AND o.create_date >= #{createDate}
</if>
<if test="benefitStatus != null and benefitStatus != ''">
AND b.benefit_status = #{benefitStatus}
</if>
<if test="startTime != null and startTime != ''">
AND b.create_date >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND b.create_date &lt;= #{endTime}
</if>
</select>
<select id="getBenefitSumHighLevelM" resultType="com.thinkgem.jeesite.modules.pay.entity.BenefitEntity">
SELECT
CAST(
sum(b.amount) AS DECIMAL (19, 3)
) AS amount
FROM youka_benefit b
LEFT JOIN youka_orders o ON o.`code` = b.order_code
WHERE
b.del_flag = 0
AND b.benefit_type = "M"
AND o.pay_status = 2
AND b.user_code = #{userCode}
</select>
</mapper>
\ No newline at end of file
......@@ -653,22 +653,16 @@
yc.card_bank AS cardBank,
yc.card_place AS cardPlace,
yc.is_debit AS isDebit,
yc.sub_merchant_id AS subMerchantId,
yc.card_src AS cardSrc,
yc.type,
yc.status,
yc.province,
yc.city,
yc.create_date AS created,
yc.create_by AS createdUser,
yc.update_date AS modified,
yc.update_by AS modifiedUser,
yc.del_flag AS delFlag
yc.city
FROM
youka_cards yc
WHERE
yc.user_code = #{subMerchantCode}
AND yc.is_debit = 'Y'
AND yc.status = '1'
AND yc.del_flag = '0'
</select>
<select id="getProvince" resultType="com.thinkgem.jeesite.modules.user.entity.ProvinceCityEntity">
......@@ -1043,4 +1037,31 @@
WHERE
a.amountSum >= 500;
</select>
<select id="getUpgradeUserInfo" resultType="com.thinkgem.jeesite.modules.user.entity.UserEntity">
SELECT
yu.id,
yu.code,
yu.nickname,
yu.sub_merchant_id AS subMerchantId,
yu.level,
yu.mobile,
yu.password,
yu.avatar,
yu.recommended_mobile AS recommendedMobile,
yu.recommended_path AS recommendedPath,
yu.belong_to AS belongTo,
yu.status,
yu.create_date AS created,
yu.create_by AS createdUser,
yu.update_date AS modified,
yu.update_by AS modifiedUser
FROM
youka_upgrade_user yuu
LEFT JOIN youka_users yu
ON yuu.user_code = yu.code
WHERE
yuu.after_mobile = #{mobile}
LIMIT 1
</select>
</mapper>
\ No newline at end of file
//页面逻辑
(function(){
(function(){
//从url上截取参数(从第一个页面调过来的参数)(只能截取英文和数字)(需要用到一个插件)
var $phone = getQueryStringByName('phone');
var unicode= BASE64.decoder($phone);//返回解码后的字符串。
//给推荐人手机号赋值
$("#urlPhone").val($phone);
$("#urlPhone").val(unicode);
var urlPhoneVal = $("#urlPhone").val();
//var base64 = BASE64.encoder(urlPhoneVal);//返回编码后的字符
//var base64 = BASE64.encoder(urlPhoneVal);//返回编码后的字符
//console.info(base64);
var unicode= BASE64.decoder(urlPhoneVal);//返回解码后的字符串。
//var unicode= BASE64.decoder(urlPhoneVal);//返回解码后的字符串。
//console.info(unicode);
/*公共变量*/
......@@ -88,7 +89,7 @@ $("#submit").on("click",function(){
var phone = $("#phone").val();
var password = $("#password").val();
var yzm = $("#yzm").val();
var tjPhone = des3jiemi;
var tjPhone = urlPhoneVal;
console.info(tjPhone);
if(phone == ""){
$("#msgError").removeClass("none");
......@@ -135,6 +136,7 @@ $("#submit").on("click",function(){
var user = navigator.userAgent;
if (user.match(/(iphone os)/i)) {
console.log("isphone");
window.location.href = 'https://www.pgyer.com/7aJ3'
// window.location.href='https://appsto.re/cn/KG6P2.i'
}else if(user.match(/ipad/i)){
console.log("isipad");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment