Commit 8ce4d01c by tang

添加ali支付回调过滤,修改HL2费率等

parent 305ef211
...@@ -35,6 +35,7 @@ public class ValidationFilter implements Filter { ...@@ -35,6 +35,7 @@ public class ValidationFilter implements Filter {
list.add("openCardCallback"); list.add("openCardCallback");
list.add("notifyQuickPay"); list.add("notifyQuickPay");
list.add("notifyPay"); list.add("notifyPay");
list.add("aliPayCallback");
if(!list.contains(urls)){ if(!list.contains(urls)){
String signCode = ComCode.signCode; String signCode = ComCode.signCode;
String subMerchantCode = httpRequest.getParameter("subMerchantCode"); String subMerchantCode = httpRequest.getParameter("subMerchantCode");
......
package com.thinkgem.jeesite.modules.messageCenter.service; package com.thinkgem.jeesite.modules.messageCenter.service;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.messageCenter.bean.ArticleRequest; import com.thinkgem.jeesite.modules.messageCenter.bean.ArticleRequest;
import com.thinkgem.jeesite.modules.messageCenter.dao.ArticleApiDao; import com.thinkgem.jeesite.modules.messageCenter.dao.ArticleApiDao;
import com.thinkgem.jeesite.modules.messageCenter.entity.ArticleEntity; import com.thinkgem.jeesite.modules.messageCenter.entity.ArticleEntity;
...@@ -7,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -7,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.net.InetAddress;
import java.util.List; import java.util.List;
/** /**
...@@ -19,11 +21,24 @@ public class ArticleApiService { ...@@ -19,11 +21,24 @@ public class ArticleApiService {
@Autowired @Autowired
private ArticleApiDao articleApiDao; private ArticleApiDao articleApiDao;
public List<ArticleEntity> getArticles(ArticleRequest request) throws Exception { public List<ArticleEntity> getArticles(ArticleRequest request){
return articleApiDao.getArticles(request); List<ArticleEntity> articles = articleApiDao.getArticles(request);
for (ArticleEntity entity: articles) {
if(!StringUtils.isBlank(entity.getImage())){
String replace = entity.getImage().replace("/youka-manage/", "http://youkapay.com/youka-manage/");
entity.setImage(replace);
}
}
return articles;
} }
public ArticleEntity getArticleDetail(ArticleRequest request) throws Exception { public ArticleEntity getArticleDetail(ArticleRequest request){
return articleApiDao.getArticleDetail(request); ArticleEntity articleDetail = articleApiDao.getArticleDetail(request);
String content = articleDetail.getContent();
if(content.contains("/youka-manage/")){
String replace = content.replace("/youka-manage/", "http://youkapay.com/youka-manage/");
articleDetail.setContent(replace);
}
return articleDetail;
} }
} }
...@@ -151,7 +151,12 @@ public class PayApiController { ...@@ -151,7 +151,12 @@ public class PayApiController {
public Response sendMessagePay(JuHeZhongPayRequest request) { public Response sendMessagePay(JuHeZhongPayRequest request) {
Response resp = new Response(); Response resp = new Response();
if(ComCode.PAYCHANNEL_HL2.equals(request.getPayChannel())){ // 目前仅仅jfen通道需要请求这个接口 如果还有其他通道发送验证码请加上通道的判断 if(ComCode.PAYCHANNEL_HL2.equals(request.getPayChannel())){ // 目前仅仅jfen通道需要请求这个接口 如果还有其他通道发送验证码请加上通道的判断
return payService.sendMessageJFen(request); try {
return payService.sendMessageJFen(request);
} catch (MyException e) {
resp.setMessage(e.getMessage());
resp.setStatus(ComCode.STATUS_CODE_9998);
}
} }
resp.setMessage("没有该渠道"); resp.setMessage("没有该渠道");
resp.setStatus(ComCode.STATUS_CODE_9998); resp.setStatus(ComCode.STATUS_CODE_9998);
......
...@@ -30,6 +30,7 @@ import com.thinkgem.jeesite.modules.sys.entity.Dict; ...@@ -30,6 +30,7 @@ import com.thinkgem.jeesite.modules.sys.entity.Dict;
import com.thinkgem.jeesite.modules.sys.utils.DictUtils; import com.thinkgem.jeesite.modules.sys.utils.DictUtils;
import com.thinkgem.jeesite.modules.user.bean.JuHeZhongPayRequest; import com.thinkgem.jeesite.modules.user.bean.JuHeZhongPayRequest;
import com.thinkgem.jeesite.modules.user.bean.UserRequest; import com.thinkgem.jeesite.modules.user.bean.UserRequest;
import com.thinkgem.jeesite.modules.user.dao.UserApiDao;
import com.thinkgem.jeesite.modules.user.entity.*; import com.thinkgem.jeesite.modules.user.entity.*;
import com.thinkgem.jeesite.modules.user.service.UserApiService; import com.thinkgem.jeesite.modules.user.service.UserApiService;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -83,6 +84,9 @@ public class PayApiService { ...@@ -83,6 +84,9 @@ public class PayApiService {
@Autowired @Autowired
private RateDao rateDao; private RateDao rateDao;
@Autowired
private UserApiDao userDao;
/** /**
* 快捷支付(分为不同的渠道) * 快捷支付(分为不同的渠道)
...@@ -95,6 +99,7 @@ public class PayApiService { ...@@ -95,6 +99,7 @@ public class PayApiService {
@Transactional(readOnly = false) @Transactional(readOnly = false)
public PayBackDto quickPay(JuHeZhongPayRequest request) throws MyException, Exception { public PayBackDto quickPay(JuHeZhongPayRequest request) throws MyException, Exception {
if (ComCode.PAYCHANNEL_HL2.equals(request.getPayChannel())) { if (ComCode.PAYCHANNEL_HL2.equals(request.getPayChannel())) {
logger.debug("进入到HL2通道");
PayBackDto payBackDto = this.jFenPayJuhezhong(request); PayBackDto payBackDto = this.jFenPayJuhezhong(request);
payBackDto.setIsUrl("0"); payBackDto.setIsUrl("0");
return payBackDto; return payBackDto;
...@@ -379,7 +384,6 @@ public class PayApiService { ...@@ -379,7 +384,6 @@ public class PayApiService {
return payBackDto; return payBackDto;
} }
//TODO
//C黄金 D白银 E青铜 //C黄金 D白银 E青铜
//根据分润变化重新写的分润方法 //根据分润变化重新写的分润方法
public Map<String, String> getUserBenefit(UserEntity userEntity, JuHeZhongPayRequest request) { public Map<String, String> getUserBenefit(UserEntity userEntity, JuHeZhongPayRequest request) {
...@@ -430,7 +434,7 @@ public class PayApiService { ...@@ -430,7 +434,7 @@ public class PayApiService {
// 同上级分利润一样,当前用户是C,即黄金会员时,不参与分成;上上级用户只有是黄金会员时才能参与分成,即必须为C // 同上级分利润一样,当前用户是C,即黄金会员时,不参与分成;上上级用户只有是黄金会员时才能参与分成,即必须为C
// 出现的分成情况只有四种: // 出现的分成情况只有四种:
// 1.当前用户是E(青铜),上级用户是E1(青铜),上上级用户是C(黄金),当前用户费率与上上级用户费率差值 // 1.当前用户是E(青铜),上级用户是E1(青铜),上上级用户是C(黄金),上级用户费率与上上级用户费率差值
// 2.当前用户是E(青铜),上级用户是D1(白银),上上级用户是C(黄金),上级用户费率与上上级用户费率差值 // 2.当前用户是E(青铜),上级用户是D1(白银),上上级用户是C(黄金),上级用户费率与上上级用户费率差值
// 3.当前用户是D(白银),上级用户是E1(青铜),上上级用户是C(黄金),当前用户费率与上上级用户费率差值 // 3.当前用户是D(白银),上级用户是E1(青铜),上上级用户是C(黄金),当前用户费率与上上级用户费率差值
// 4.当前用户是D(白银),上级用户是D1(白银),上上级用户是C(黄金),上级用户费率与上上级用户费率差值 // 4.当前用户是D(白银),上级用户是D1(白银),上上级用户是C(黄金),上级用户费率与上上级用户费率差值
...@@ -444,7 +448,7 @@ public class PayApiService { ...@@ -444,7 +448,7 @@ public class PayApiService {
if (upUpUser != null && upUpUser.getUserLevel().equals("C")) { if (upUpUser != null && upUpUser.getUserLevel().equals("C")) {
//第一种情况 //第一种情况
if (userEntity.getLevel().equals("E") && upUser.getUserLevel().equals("E")) { if (userEntity.getLevel().equals("E") && upUser.getUserLevel().equals("E")) {
BigDecimal rateResult = BigDecimal.valueOf(Double.valueOf(userRateEntity.getRate())).subtract(BigDecimal.valueOf(Double.valueOf(upUpUser.getRate()))); BigDecimal rateResult = BigDecimal.valueOf(Double.valueOf(upUser.getRate())).subtract(BigDecimal.valueOf(Double.valueOf(upUpUser.getRate())));
BigDecimal benefitResult = rateResult.multiply(BigDecimal.valueOf(Double.valueOf(amount))); BigDecimal benefitResult = rateResult.multiply(BigDecimal.valueOf(Double.valueOf(amount)));
userBenefit.put(upUpUser.getUserCode(), benefitResult.toString()); userBenefit.put(upUpUser.getUserCode(), benefitResult.toString());
} }
...@@ -693,7 +697,7 @@ public class PayApiService { ...@@ -693,7 +697,7 @@ public class PayApiService {
// HL2 通道 即JFEN 发送验证码 需要的参数 SubMerchantCode\amount\cardCode\PayChannel 通道\ // HL2 通道 即JFEN 发送验证码 需要的参数 SubMerchantCode\amount\cardCode\PayChannel 通道\
@Transactional(readOnly = false) @Transactional(readOnly = false)
public Response sendMessageJFen(JuHeZhongPayRequest request) { public Response sendMessageJFen(JuHeZhongPayRequest request) throws MyException {
request.setPayMethod("quick"); request.setPayMethod("quick");
CardEntity cardEntity = userService.getCardInfoSwpaccid(request); CardEntity cardEntity = userService.getCardInfoSwpaccid(request);
UserSubMchId userSubMchId = new UserSubMchId(); UserSubMchId userSubMchId = new UserSubMchId();
...@@ -704,7 +708,17 @@ public class PayApiService { ...@@ -704,7 +708,17 @@ public class PayApiService {
UserDetailEntity userDetailEntity = userService.getUserDetailByCode(request.getSubMerchantCode()); UserDetailEntity userDetailEntity = userService.getUserDetailByCode(request.getSubMerchantCode());
userDetailEntity.setCard(cardEntity); userDetailEntity.setCard(cardEntity);
userEntity.setUserDetail(userDetailEntity); userEntity.setUserDetail(userDetailEntity);
//获取当前渠道当日剩余额度
BigDecimal limitNumber = getLimitNumber(userEntity.getLevel(), userEntity.getCode(), request.getPayChannel());
if (BigDecimal.valueOf(Double.valueOf(request.getAmount())).compareTo(limitNumber) > 0) {
throw new MyException("超出当日额度");
}
// 判断费率,额度等
//获取用户对应等级费率以及每笔需要的手续费
RateEntity gradeRate = getGradeRate(userEntity.getLevel(), request.getPayChannel());
//获取单笔价格
int amountHL2 = calculationAmountHL2(gradeRate);
// 2. 创建支付订单信息,并保存 // 2. 创建支付订单信息,并保存
String code = IdGen.randomBase62(64); String code = IdGen.randomBase62(64);
String payNo = ComCode.YYYYMMDDHHMM.format(new Date()) + IdGen.randomBase62(8); // 订单号 String payNo = ComCode.YYYYMMDDHHMM.format(new Date()) + IdGen.randomBase62(8); // 订单号
...@@ -735,7 +749,9 @@ public class PayApiService { ...@@ -735,7 +749,9 @@ public class PayApiService {
dto.put("merchantKey", ComCode.JFEN_MERCHANT_KEY); dto.put("merchantKey", ComCode.JFEN_MERCHANT_KEY);
dto.put("timestamp", System.currentTimeMillis()); dto.put("timestamp", System.currentTimeMillis());
int amountInt = (int) (Double.valueOf(request.getAmount()) * 100); int amountInt = (int) (Double.valueOf(request.getAmount()) * 100);
dto.put("amount", amountInt); //减去每笔手续费
int amount2 = amountInt- amountHL2;
dto.put("amount", amount2);
dto.put("idNo", userDetailEntity.getIdCard()); dto.put("idNo", userDetailEntity.getIdCard());
dto.put("accountName", userDetailEntity.getRealName()); dto.put("accountName", userDetailEntity.getRealName());
dto.put("accountNo", cardEntity.getCardNo()); dto.put("accountNo", cardEntity.getCardNo());
...@@ -1159,11 +1175,24 @@ public class PayApiService { ...@@ -1159,11 +1175,24 @@ public class PayApiService {
upgradeUserEntity.setOrderCode(orderEntity.getPayCode()); upgradeUserEntity.setOrderCode(orderEntity.getPayCode());
userService.updateUpgradeUser(upgradeUserEntity); userService.updateUpgradeUser(upgradeUserEntity);
} else { } else {
//支付宝升级成功后,对应的HL2通道需要修改费率
userService.updateUserLevelByCode(userEntity); userService.updateUserLevelByCode(userEntity);
UserSubMchId userSubMchId = new UserSubMchId();
userSubMchId.setUserCode(orderEntity.getUserCode());
userSubMchId.setPayChannel("quick_jfen");
UserSubMchId userSubMchIdQuery = userDao.getUserSubmchid(userSubMchId);
if (userSubMchIdQuery != null){
logger.debug("支付宝升级后,开始进行修改HL2费率");
//修改费率
RateEntity rateEntity = new RateEntity();
rateEntity.setPayChannel("quick_jfen");
rateEntity.setUserLevel(userEntity.getLevel());
rateEntity.setServiceType("1");//修改的标识
userDao.getRateByLevel(rateEntity);
userService.merchantFeelJFen(userSubMchIdQuery.getSubmchid(),rateEntity);
}
} }
} }
} else { } else {
orderEntity.setPayStatus("4"); orderEntity.setPayStatus("4");
payDao.updateOrderStatus(orderEntity); payDao.updateOrderStatus(orderEntity);
...@@ -1380,7 +1409,7 @@ public class PayApiService { ...@@ -1380,7 +1409,7 @@ public class PayApiService {
} }
/** /**
* 计算每笔交易手续费的和 * 计算每笔交易手续费的和(HL4用)
* *
* @param gradeRate * @param gradeRate
* @param amount * @param amount
...@@ -1398,4 +1427,16 @@ public class PayApiService { ...@@ -1398,4 +1427,16 @@ public class PayApiService {
return result; return result;
} }
/**
* 计算每笔交易手续费的和(HL2用)
*
* @param gradeRate
* @return
*/
public int calculationAmountHL2(RateEntity gradeRate) {
Double siglePrice = Double.valueOf(gradeRate.getSiglePrice());
//总共所需手续费,只算每笔的手续费,单位是分
int result = BigDecimal.valueOf(siglePrice*100).intValue();
return result;
}
} }
...@@ -107,38 +107,38 @@ public class UserApiController { ...@@ -107,38 +107,38 @@ public class UserApiController {
resp.setMessage(ComCode.STATUS_CODE_4001_DESC); resp.setMessage(ComCode.STATUS_CODE_4001_DESC);
return resp; return resp;
} }
// 根据手机号 + 使用场景 + 验证码查询 // // 根据手机号 + 使用场景 + 验证码查询
IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request); // IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request);
// 验证码使用场景 // // 验证码使用场景
if (identityCodeEntity == null) { // if (identityCodeEntity == null) {
resp.setStatus(ComCode.STATUS_CODE_4010); // resp.setStatus(ComCode.STATUS_CODE_4010);
resp.setMessage(ComCode.STATUS_CODE_4010_DESC); // resp.setMessage(ComCode.STATUS_CODE_4010_DESC);
return resp; // return resp;
} // }
// 验证码是否过期 // // 验证码是否过期
if (!userService.checkIdentifyCodeExpired(identityCodeEntity)) { // if (!userService.checkIdentifyCodeExpired(identityCodeEntity)) {
resp.setStatus(ComCode.STATUS_CODE_4009); // resp.setStatus(ComCode.STATUS_CODE_4009);
resp.setMessage(ComCode.STATUS_CODE_4009_DESC); // resp.setMessage(ComCode.STATUS_CODE_4009_DESC);
return resp; // return resp;
} // }
// 查询推荐人是否存在 // // 查询推荐人是否存在
if (userService.checkRecommend(request) == null) { // if (userService.checkRecommend(request) == null) {
resp.setStatus(ComCode.STATUS_CODE_4006); // resp.setStatus(ComCode.STATUS_CODE_4006);
resp.setMessage(ComCode.STATUS_CODE_4006_DESC); // resp.setMessage(ComCode.STATUS_CODE_4006_DESC);
return resp; // return resp;
} // }
// 查询注册手机号是否存在 // // 查询注册手机号是否存在
if (userService.checkMobile(request) != null) { // if (userService.checkMobile(request) != null) {
resp.setStatus(ComCode.STATUS_CODE_4007); // resp.setStatus(ComCode.STATUS_CODE_4007);
resp.setMessage(ComCode.STATUS_CODE_4007_DESC); // resp.setMessage(ComCode.STATUS_CODE_4007_DESC);
return resp; // return resp;
} // }
// 注册手机号与推荐人手机号是否重复 // // 注册手机号与推荐人手机号是否重复
if (request.getMobile().equals(request.getRecommendedMobile())) { // if (request.getMobile().equals(request.getRecommendedMobile())) {
resp.setStatus(ComCode.STATUS_CODE_4008); // resp.setStatus(ComCode.STATUS_CODE_4008);
resp.setMessage(ComCode.STATUS_CODE_4008_DESC); // resp.setMessage(ComCode.STATUS_CODE_4008_DESC);
return resp; // return resp;
} // }
// 保存注册用户 // 保存注册用户
resp.setData(userService.signUp(request)); resp.setData(userService.signUp(request));
resp.setStatus(ComCode.STATUS_CODE_2000); resp.setStatus(ComCode.STATUS_CODE_2000);
......
...@@ -138,7 +138,7 @@ public class UserApiService { ...@@ -138,7 +138,7 @@ public class UserApiService {
// 保存用户信息 // 保存用户信息
String code = IdGen.randomBase62(64); String code = IdGen.randomBase62(64);
UserEntity recommend = userDao.checkRecommend(request); UserEntity recommend = userDao.checkRecommend(request);
if(recommend==null || userDao.checkNoUser() >0){ if(recommend==null && userDao.checkNoUser() >0){
throw new MyException("推荐人手机号码不存在"); throw new MyException("推荐人手机号码不存在");
} }
UserEntity userEntity = new UserEntity(code, "", request.getMobile(), MD5.sign(request.getNewPassword(), ComCode.signCode, "utf-8"), request.getRecommendedMobile(), recommend==null?"0"+",":recommend.getRecommendedPath() + recommend.getId() + ",", recommend.getBelongTo()); UserEntity userEntity = new UserEntity(code, "", request.getMobile(), MD5.sign(request.getNewPassword(), ComCode.signCode, "utf-8"), request.getRecommendedMobile(), recommend==null?"0"+",":recommend.getRecommendedPath() + recommend.getId() + ",", recommend.getBelongTo());
...@@ -796,4 +796,5 @@ public class UserApiService { ...@@ -796,4 +796,5 @@ public class UserApiService {
public Integer getActiveNum(UserRequest request){ public Integer getActiveNum(UserRequest request){
return userDao.getActiveUserNum(request); return userDao.getActiveUserNum(request);
} }
} }
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</select> </select>
<select id="getBenefitList" resultType="com.thinkgem.jeesite.modules.pay.entity.BenefitEntity"> <select id="getBenefitList" resultType="com.thinkgem.jeesite.modules.pay.entity.BenefitEntity">
SELECT SELECT
o.pay_code AS "orderEntity.payCode", DISTINCT o.pay_code AS "orderEntity.payCode",
o.pay_no AS "orderEntity.payNo", o.pay_no AS "orderEntity.payNo",
o.pay_status AS "orderEntity.payStatus", o.pay_status AS "orderEntity.payStatus",
o.pay_type AS "orderEntity.payType", o.pay_type AS "orderEntity.payType",
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
LEFT JOIN sys_dict sd ON sd.`VALUE` = o.pay_channel LEFT JOIN sys_dict sd ON sd.`VALUE` = o.pay_channel
LEFT JOIN sys_dict sdm ON sdm.`VALUE` = o.pay_method LEFT JOIN sys_dict sdm ON sdm.`VALUE` = o.pay_method
WHERE o.del_flag = 0 WHERE o.del_flag = 0
AND o.user_code = #{subMerchantCode} AND yb.user_code = #{subMerchantCode}
<if test="payChannel != null and payChannel != ''"> <if test="payChannel != null and payChannel != ''">
AND o.pay_method = #{payChannel} AND o.pay_method = #{payChannel}
</if> </if>
......
...@@ -929,8 +929,8 @@ ...@@ -929,8 +929,8 @@
<select id="checkNoUser" resultType="java.lang.Integer"> <select id="checkNoUser" resultType="java.lang.Integer">
SELECT SELECT
COUNT (id) COUNT(id)
FROM FROM
youka_users youka_users
</select> </select>
</mapper> </mapper>
\ No newline at end of file
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