Commit 8ce4d01c by tang

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

parent 305ef211
......@@ -35,6 +35,7 @@ public class ValidationFilter implements Filter {
list.add("openCardCallback");
list.add("notifyQuickPay");
list.add("notifyPay");
list.add("aliPayCallback");
if(!list.contains(urls)){
String signCode = ComCode.signCode;
String subMerchantCode = httpRequest.getParameter("subMerchantCode");
......
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.dao.ArticleApiDao;
import com.thinkgem.jeesite.modules.messageCenter.entity.ArticleEntity;
......@@ -7,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.net.InetAddress;
import java.util.List;
/**
......@@ -19,11 +21,24 @@ public class ArticleApiService {
@Autowired
private ArticleApiDao articleApiDao;
public List<ArticleEntity> getArticles(ArticleRequest request) throws Exception {
return articleApiDao.getArticles(request);
public List<ArticleEntity> getArticles(ArticleRequest 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 {
return articleApiDao.getArticleDetail(request);
public ArticleEntity getArticleDetail(ArticleRequest 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 {
public Response sendMessagePay(JuHeZhongPayRequest request) {
Response resp = new Response();
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.setStatus(ComCode.STATUS_CODE_9998);
......
......@@ -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.user.bean.JuHeZhongPayRequest;
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.service.UserApiService;
import org.slf4j.Logger;
......@@ -83,6 +84,9 @@ public class PayApiService {
@Autowired
private RateDao rateDao;
@Autowired
private UserApiDao userDao;
/**
* 快捷支付(分为不同的渠道)
......@@ -95,6 +99,7 @@ public class PayApiService {
@Transactional(readOnly = false)
public PayBackDto quickPay(JuHeZhongPayRequest request) throws MyException, Exception {
if (ComCode.PAYCHANNEL_HL2.equals(request.getPayChannel())) {
logger.debug("进入到HL2通道");
PayBackDto payBackDto = this.jFenPayJuhezhong(request);
payBackDto.setIsUrl("0");
return payBackDto;
......@@ -379,7 +384,6 @@ public class PayApiService {
return payBackDto;
}
//TODO
//C黄金 D白银 E青铜
//根据分润变化重新写的分润方法
public Map<String, String> getUserBenefit(UserEntity userEntity, JuHeZhongPayRequest request) {
......@@ -430,7 +434,7 @@ public class PayApiService {
// 同上级分利润一样,当前用户是C,即黄金会员时,不参与分成;上上级用户只有是黄金会员时才能参与分成,即必须为C
// 出现的分成情况只有四种:
// 1.当前用户是E(青铜),上级用户是E1(青铜),上上级用户是C(黄金),当前用户费率与上上级用户费率差值
// 1.当前用户是E(青铜),上级用户是E1(青铜),上上级用户是C(黄金),上级用户费率与上上级用户费率差值
// 2.当前用户是E(青铜),上级用户是D1(白银),上上级用户是C(黄金),上级用户费率与上上级用户费率差值
// 3.当前用户是D(白银),上级用户是E1(青铜),上上级用户是C(黄金),当前用户费率与上上级用户费率差值
// 4.当前用户是D(白银),上级用户是D1(白银),上上级用户是C(黄金),上级用户费率与上上级用户费率差值
......@@ -444,7 +448,7 @@ public class PayApiService {
if (upUpUser != null && upUpUser.getUserLevel().equals("C")) {
//第一种情况
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)));
userBenefit.put(upUpUser.getUserCode(), benefitResult.toString());
}
......@@ -693,7 +697,7 @@ public class PayApiService {
// HL2 通道 即JFEN 发送验证码 需要的参数 SubMerchantCode\amount\cardCode\PayChannel 通道\
@Transactional(readOnly = false)
public Response sendMessageJFen(JuHeZhongPayRequest request) {
public Response sendMessageJFen(JuHeZhongPayRequest request) throws MyException {
request.setPayMethod("quick");
CardEntity cardEntity = userService.getCardInfoSwpaccid(request);
UserSubMchId userSubMchId = new UserSubMchId();
......@@ -704,7 +708,17 @@ public class PayApiService {
UserDetailEntity userDetailEntity = userService.getUserDetailByCode(request.getSubMerchantCode());
userDetailEntity.setCard(cardEntity);
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. 创建支付订单信息,并保存
String code = IdGen.randomBase62(64);
String payNo = ComCode.YYYYMMDDHHMM.format(new Date()) + IdGen.randomBase62(8); // 订单号
......@@ -735,7 +749,9 @@ public class PayApiService {
dto.put("merchantKey", ComCode.JFEN_MERCHANT_KEY);
dto.put("timestamp", System.currentTimeMillis());
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("accountName", userDetailEntity.getRealName());
dto.put("accountNo", cardEntity.getCardNo());
......@@ -1159,11 +1175,24 @@ public class PayApiService {
upgradeUserEntity.setOrderCode(orderEntity.getPayCode());
userService.updateUpgradeUser(upgradeUserEntity);
} else {
//支付宝升级成功后,对应的HL2通道需要修改费率
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 {
orderEntity.setPayStatus("4");
payDao.updateOrderStatus(orderEntity);
......@@ -1380,7 +1409,7 @@ public class PayApiService {
}
/**
* 计算每笔交易手续费的和
* 计算每笔交易手续费的和(HL4用)
*
* @param gradeRate
* @param amount
......@@ -1398,4 +1427,16 @@ public class PayApiService {
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 {
resp.setMessage(ComCode.STATUS_CODE_4001_DESC);
return resp;
}
// 根据手机号 + 使用场景 + 验证码查询
IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request);
// 验证码使用场景
if (identityCodeEntity == null) {
resp.setStatus(ComCode.STATUS_CODE_4010);
resp.setMessage(ComCode.STATUS_CODE_4010_DESC);
return resp;
}
// 验证码是否过期
if (!userService.checkIdentifyCodeExpired(identityCodeEntity)) {
resp.setStatus(ComCode.STATUS_CODE_4009);
resp.setMessage(ComCode.STATUS_CODE_4009_DESC);
return resp;
}
// 查询推荐人是否存在
if (userService.checkRecommend(request) == null) {
resp.setStatus(ComCode.STATUS_CODE_4006);
resp.setMessage(ComCode.STATUS_CODE_4006_DESC);
return resp;
}
// 查询注册手机号是否存在
if (userService.checkMobile(request) != null) {
resp.setStatus(ComCode.STATUS_CODE_4007);
resp.setMessage(ComCode.STATUS_CODE_4007_DESC);
return resp;
}
// 注册手机号与推荐人手机号是否重复
if (request.getMobile().equals(request.getRecommendedMobile())) {
resp.setStatus(ComCode.STATUS_CODE_4008);
resp.setMessage(ComCode.STATUS_CODE_4008_DESC);
return resp;
}
// // 根据手机号 + 使用场景 + 验证码查询
// IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request);
// // 验证码使用场景
// if (identityCodeEntity == null) {
// resp.setStatus(ComCode.STATUS_CODE_4010);
// resp.setMessage(ComCode.STATUS_CODE_4010_DESC);
// return resp;
// }
// // 验证码是否过期
// if (!userService.checkIdentifyCodeExpired(identityCodeEntity)) {
// resp.setStatus(ComCode.STATUS_CODE_4009);
// resp.setMessage(ComCode.STATUS_CODE_4009_DESC);
// return resp;
// }
// // 查询推荐人是否存在
// if (userService.checkRecommend(request) == null) {
// resp.setStatus(ComCode.STATUS_CODE_4006);
// resp.setMessage(ComCode.STATUS_CODE_4006_DESC);
// return resp;
// }
// // 查询注册手机号是否存在
// if (userService.checkMobile(request) != null) {
// resp.setStatus(ComCode.STATUS_CODE_4007);
// resp.setMessage(ComCode.STATUS_CODE_4007_DESC);
// return resp;
// }
// // 注册手机号与推荐人手机号是否重复
// if (request.getMobile().equals(request.getRecommendedMobile())) {
// resp.setStatus(ComCode.STATUS_CODE_4008);
// resp.setMessage(ComCode.STATUS_CODE_4008_DESC);
// return resp;
// }
// 保存注册用户
resp.setData(userService.signUp(request));
resp.setStatus(ComCode.STATUS_CODE_2000);
......
......@@ -138,7 +138,7 @@ public class UserApiService {
// 保存用户信息
String code = IdGen.randomBase62(64);
UserEntity recommend = userDao.checkRecommend(request);
if(recommend==null || userDao.checkNoUser() >0){
if(recommend==null && userDao.checkNoUser() >0){
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());
......@@ -796,4 +796,5 @@ public class UserApiService {
public Integer getActiveNum(UserRequest request){
return userDao.getActiveUserNum(request);
}
}
......@@ -40,7 +40,7 @@
</select>
<select id="getBenefitList" resultType="com.thinkgem.jeesite.modules.pay.entity.BenefitEntity">
SELECT
o.pay_code AS "orderEntity.payCode",
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",
......@@ -58,7 +58,7 @@
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 o.user_code = #{subMerchantCode}
AND yb.user_code = #{subMerchantCode}
<if test="payChannel != null and payChannel != ''">
AND o.pay_method = #{payChannel}
</if>
......
......@@ -929,8 +929,8 @@
<select id="checkNoUser" resultType="java.lang.Integer">
SELECT
COUNT (id)
FROM
youka_users
COUNT(id)
FROM
youka_users
</select>
</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