소스 검색

Merge remote-tracking branch 'origin/master'

zouxuan 4 년 전
부모
커밋
2442a0b7bd

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysPaymentConfigDao.java

@@ -10,6 +10,7 @@ import java.util.List;
 public interface SysPaymentConfigDao extends BaseDAO<Integer, SysPaymentConfig> {
     /**
      * 获取分部的收费配置
+     *
      * @param organId
      * @return
      */
@@ -17,6 +18,7 @@ public interface SysPaymentConfigDao extends BaseDAO<Integer, SysPaymentConfig>
 
     /**
      * 根据分部ids获取收费配置
+     *
      * @param organIds
      * @return
      */
@@ -25,14 +27,21 @@ public interface SysPaymentConfigDao extends BaseDAO<Integer, SysPaymentConfig>
 
     /**
      * 根据支付渠道获取账户
+     *
      * @param payType
      * @return
      */
     List<SysPaymentConfig> getPaymentConfigs(@Param("payType") PaymentChannelEnum payType);
 
     /**
-     *
      * @return
      */
     List<SysPaymentConfig> getOutAccounts(@Param("payType") PaymentChannelEnum payType);
+
+    /**
+     * 根据汇付账户获取配置
+     * @param merNo
+     * @return
+     */
+    SysPaymentConfig findPaymentConfigByMerNo(@Param("merNo") String merNo);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysPaymentConfigService.java

@@ -39,4 +39,11 @@ public interface SysPaymentConfigService extends BaseService<Integer, SysPayment
      * @return
      */
     AccountType checkAccountType(PaymentChannelEnum payType, String merNos);
+
+    /**
+     * 根据汇付获取配置
+     * @param merNo
+     * @return
+     */
+    SysPaymentConfig findPaymentConfigByMerNo(String merNo);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -1260,7 +1260,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		MusicGroupPaymentCalenderDetail calenderDetail = musicGroupPaymentCalenderDetailDao.get(calenderDetailId);
 		MusicGroupPaymentCalender calender = this.get(calenderDetail.getMusicGroupPaymentCalenderId());
 		MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, calender.getMusicGroupId());
-		if(calender.getIsGiveMusicNetwork()){
+		if(calender.getIsGiveMusicNetwork() && musicGroupStudentFee != null){
 			//赠送网管课
 			musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
 		}

+ 8 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -2084,16 +2084,19 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //当前乐团报名是否赠送乐团网管课
             MusicGroupPaymentCalenderDetail calenderDetail = musicGroupPaymentCalenderDetailDao.findByOrderId(studentPaymentOrder.getId());
             MusicGroupStudentFee musicGroupStudentFee = musicGroupPaymentCalenderService.updateCalender(calenderDetail.getId(), studentRegistration.getUserId());
-            musicGroupStudentFee.setUpdateTime(date);
-            musicGroupStudentFee.setLatestPaidTime(date);
-            musicGroupStudentFee.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
-            musicGroupStudentFee.setTemporaryCourseFee(new BigDecimal(0));
+            if(musicGroupStudentFee != null){
+                musicGroupStudentFee.setUpdateTime(date);
+                musicGroupStudentFee.setLatestPaidTime(date);
+                musicGroupStudentFee.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
+                musicGroupStudentFee.setTemporaryCourseFee(new BigDecimal(0));
+                musicGroupStudentFeeDao.update(musicGroupStudentFee);
+            }
             /*if (musicGroupPaymentCalender.getType().equals(MusicGroupPaymentCalender.FeeType.ONLINE)) {
                 Integer getRemainNetworkClassTimes = musicGroupStudentFee.getRemainNetworkClassTimes() == null ? 0 : musicGroupStudentFee.getRemainNetworkClassTimes();
                 musicGroupStudentFee.setRemainNetworkClassTimes(getRemainNetworkClassTimes + 1);
             }*/
 //            musicGroupStudentFee.setNextPaymentDate(musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId, musicGroupStudentFee.getNextPaymentDate(), musicGroupStudentFee));
-            musicGroupStudentFeeDao.update(musicGroupStudentFee);
+
 
             //插入交易明细
             SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);

+ 25 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -2,7 +2,6 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.HfMemberDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.AmountChannelDto;
@@ -10,22 +9,22 @@ import com.ym.mec.biz.dal.dto.RouteScaleDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.FeeTypeEnum;
 import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
-import com.ym.mec.biz.dal.enums.PaymentChannelTypeEnum;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.redis.service.RedisCache;
 import com.ym.mec.thirdparty.adapay.ConfigInit;
 import com.ym.mec.thirdparty.adapay.Payment;
-import com.ym.mec.thirdparty.union.UnionPay;
-import com.ym.mec.thirdparty.union.UnionPayFeignService;
 import com.ym.mec.thirdparty.yqpay.YqPayUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -45,6 +44,8 @@ public class PayServiceImpl implements PayService {
     private SellOrderService sellOrderService;
     @Autowired
     private HfMemberDao hfMemberDao;
+    @Autowired
+    private RedisCache<String, Object> redisCache;
 
     @Override
     public Map<String, Object> getPayMap(BigDecimal amount, BigDecimal balanceAmount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer organId, String receiver) throws Exception {
@@ -543,8 +544,26 @@ public class PayServiceImpl implements PayService {
         List<PaymentChannelEnum> paymentChannelList = new ArrayList<>();
         paymentChannelList.add(PaymentChannelEnum.ADAPAY);
 
-        BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(routeScaleDto.getOrganId(), paymentChannelList, monthStartTime);
-        monthHasReceipt = monthHasReceipt == null ? BigDecimal.ZERO : monthHasReceipt;
+//        String key = "month_max_receipt_"+routeScaleDto.getOrganId();
+//        if(redisCache.exists(key)){
+//            RedisTemplate<String, Object> redisTemplate = redisCache.getRedisTemplate();
+//            try {
+//                ValueOperations<String, Object> valueOper = redisTemplate.opsForValue();
+//                Long index = valueOper.increment(key, 1);
+//            } catch (Exception ex) {
+//                log.error("分布式订单号生成失败异常。。。。。", ex);
+//            } finally {
+//                redisTemplate.expire(key, 600, TimeUnit.SECONDS);// 保留10分钟内的key
+//            }
+//        }else {
+            BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(routeScaleDto.getOrganId(), paymentChannelList, monthStartTime);
+            monthHasReceipt = monthHasReceipt == null ? BigDecimal.ZERO : monthHasReceipt;
+//            monthHasReceipt.multiply(new BigDecimal(100));
+//
+//        }
+
+
+
         if (routeScaleDto.getAmount().add(monthHasReceipt).compareTo(monthMaxReceipt) > 0) {
             routeScaleDto.setMerNo(hfmember.getRouteMemberId());
             routeScaleDto.setOrganId(hfmember.getRouteOrganId());

+ 6 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -262,7 +262,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         callOrderCallBack(order);
     }
 
-    private Boolean confirmOrder(StudentPaymentOrder order) throws Exception {
+    private Boolean confirmOrder(StudentPaymentOrder order) {
         String delayRouteStartDate = sysConfigDao.findConfigValue("delay_route_start_date");
         if (order.getCreateTime().before(Objects.requireNonNull(DateUtil.stringToDate(delayRouteStartDate, "yyyy-MM-dd HH:mm:ss")))) {
             return true;
@@ -284,7 +284,11 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             confirm.put("order_no", idGeneratorService.generatorId("payment"));
             confirm.put("confirm_amt", routeOrder.getRouteAmount());
             confirm.put("div_members", divMembers);
-            Payment.createConfirm(confirm);
+            try {
+                Payment.createConfirm(confirm);
+            } catch (Exception e) {
+                continue;
+            }
         }
         return true;
     }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysPaymentConfigServiceImpl.java

@@ -63,4 +63,9 @@ public class SysPaymentConfigServiceImpl extends BaseServiceImpl<Integer, SysPay
         }
         return accountType;
     }
+
+    @Override
+    public SysPaymentConfig findPaymentConfigByMerNo(String merNo) {
+        return sysPaymentConfigDao.findPaymentConfigByMerNo(merNo);
+    }
 }

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/SysPaymentConfigMapper.xml

@@ -230,4 +230,7 @@
             AND hf_mer_no_ != ''
         </if>
     </select>
+    <select id="findPaymentConfigByMerNo" resultMap="SysPaymentConfig">
+        SELECT * FROM sys_payment_config WHERE hf_mer_no_ = #{merNo} LIMIT 1
+    </select>
 </mapper>

+ 14 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysPaymentConfigController.java

@@ -34,6 +34,13 @@ public class SysPaymentConfigController extends BaseController {
         if (paymentConfig != null) {
             return failed("此分部配置已经存在");
         }
+        if(StringUtils.isNotBlank(sysPaymentConfig.getHfMerNo())){
+            SysPaymentConfig nowConfig = sysPaymentConfigService.findPaymentConfigByMerNo(sysPaymentConfig.getHfMerNo());
+            if(nowConfig != null){
+                return failed("汇付商户号已配置,不同分部请勿配置相同商户号");
+            }
+        }
+
         Date nowDate = new Date();
         sysPaymentConfig.setCreateTime(nowDate);
         sysPaymentConfig.setUpdateTime(nowDate);
@@ -56,6 +63,13 @@ public class SysPaymentConfigController extends BaseController {
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('paymentConfig/update')")
     public Object update(SysPaymentConfig sysPaymentConfig) {
+        if(StringUtils.isNotBlank(sysPaymentConfig.getHfMerNo())){
+            SysPaymentConfig nowConfig = sysPaymentConfigService.findPaymentConfigByMerNo(sysPaymentConfig.getHfMerNo());
+            if(nowConfig != null && !nowConfig.getOrganId().equals(sysPaymentConfig.getOrganId())){
+                return failed("汇付商户号已配置,不同分部请勿配置相同商户号");
+            }
+        }
+
         sysPaymentConfig.setUpdateTime(new Date());
         sysPaymentConfigService.update(sysPaymentConfig);
         return succeed();