Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
921dec0fd5
27 changed files with 581 additions and 112 deletions
  1. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPurchaseListDao.java
  2. 11 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  3. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentRouteOrderDao.java
  4. 71 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/HfMemberDto.java
  5. 33 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java
  6. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  7. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  8. 1 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  9. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java
  10. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  11. 62 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  12. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  13. 29 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  14. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java
  15. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  16. 0 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantPaymentOrderServiceImpl.java
  17. 2 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  18. 27 9
      mec-biz/src/main/resources/config/mybatis/MusicGroupPurchaseListMapper.xml
  19. 13 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  20. 23 3
      mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml
  21. 3 3
      mec-biz/src/main/resources/config/mybatis/SysPaymentConfigMapper.xml
  22. 6 29
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  23. 3 3
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/ConfigInit.java
  24. 26 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/CorpMember.java
  25. 24 23
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/MainDemo.java
  26. 39 0
      mec-web/src/main/java/com/ym/mec/web/controller/AdapayController.java
  27. 170 0
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPurchaseListDao.java

@@ -5,9 +5,13 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 public interface MusicGroupPurchaseListDao extends BaseDAO<Integer, MusicGroupPurchaseList> {
 
 
     int batchInsert(@Param("musicGroupPurchaseLists") List<MusicGroupPurchaseList> MusicGroupPurchaseLists);
+
+
+    List<MusicGroupPurchaseList> getCount(@Param("musicGroupIds") Set<String> musicGroupIds);
 }

+ 11 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -275,6 +275,7 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
 
     /**
      * 统计商户当月收款金额
+     *
      * @param merNo
      * @param firstDate
      * @return
@@ -282,20 +283,26 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
     BigDecimal sumAccountAmount(@Param("merNo") String merNo, @Param("firstDate") Date firstDate);
 
     /**
-     * @describe 统计课程组非失败订单数量
-     * @author Joburgess
-     * @date 2020.06.22
      * @param groupId:
      * @param groupType:
      * @return int
+     * @describe 统计课程组非失败订单数量
+     * @author Joburgess
+     * @date 2020.06.22
      */
     int countGroupOrderWithoutFailed(@Param("groupId") String groupId,
-                                       @Param("groupType") GroupType groupType);
+                                     @Param("groupType") GroupType groupType);
 
     /**
      * 统计
+     *
      * @param sporadicId
      * @return
      */
     Integer countSporadicOrder(Integer sporadicId);
+
+    /*
+
+     */
+    Integer findOrganPayOrderNum(@Param("organId") Integer organId);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentRouteOrderDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 
+import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
@@ -41,4 +42,6 @@ public interface StudentPaymentRouteOrderDao extends BaseDAO<Long, StudentPaymen
                                    @Param("paymentChannelEnumList") List<PaymentChannelEnum> paymentChannelEnumList,
                                    @Param("startTime") Date startTime
     );
+
+    List<StudentPaymentOrderExportDto> ExportQueryPage(Map<String, Object> params);
 }

+ 71 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/HfMemberDto.java

@@ -0,0 +1,71 @@
+package com.ym.mec.biz.dal.dto;
+
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.web.multipart.MultipartFile;
+
+public class HfMemberDto {
+    //商户号
+    private String memberId;
+    //公司名称
+    private String name;
+    //省份编号
+    private String provCode;
+    //城市编号
+    private String areaCode;
+    //统一社会信用码
+    private String socialCreditCode;
+    //统一社会信用码有效期
+    private String socialCreditCodeExpires;
+    //经营范围
+    private String businessScope;
+    //法人
+    private String legalPerson;
+    //法人身份证号
+    private String legalCertId;
+    //身份证有效期
+    private String legalCertIdExpires;
+    //法人手机号
+    private String legalMp;
+    //公司地址
+    private String address;
+    //邮编
+    private String zipCode;
+    //银行卡号
+    private String cardNo;
+    //银行编码
+    private String bankCode;
+    //文件
+    private MultipartFile path;
+
+    public String getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(String memberId) {
+        this.memberId = memberId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getProvCode() {
+        return provCode;
+    }
+
+    public void setProvCode(String provCode) {
+        this.provCode = provCode;
+    }
+
+    public String getAreaCode() {
+        return areaCode;
+    }
+
+    public void setAreaCode(String areaCode) {
+        this.areaCode = areaCode;
+    }
+}

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -39,6 +39,15 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
 
     private List<Goods> goodsList;
 
+    //收款账户
+    private String routeMerNo;
+
+    //分润金额
+    private BigDecimal routeAmount;
+
+    //分润余额
+    private BigDecimal routeBalance;
+
     public BigDecimal getSporadicAmount() {
         return sporadicAmount;
     }
@@ -150,4 +159,28 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setCooperationOrganName(String cooperationOrganName) {
         this.cooperationOrganName = cooperationOrganName;
     }
+
+    public String getRouteMerNo() {
+        return routeMerNo;
+    }
+
+    public void setRouteMerNo(String routeMerNo) {
+        this.routeMerNo = routeMerNo;
+    }
+
+    public BigDecimal getRouteAmount() {
+        return routeAmount;
+    }
+
+    public void setRouteAmount(BigDecimal routeAmount) {
+        this.routeAmount = routeAmount;
+    }
+
+    public BigDecimal getRouteBalance() {
+        return routeBalance;
+    }
+
+    public void setRouteBalance(BigDecimal routeBalance) {
+        this.routeBalance = routeBalance;
+    }
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -154,6 +154,8 @@ public class MusicGroup {
 
 	private String subjectName;
 
+	private Boolean hasVerifyMusicalList = false;
+
 	public String getSubjectName() {
 		return subjectName;
 	}
@@ -495,4 +497,11 @@ public class MusicGroup {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	public Boolean getHasVerifyMusicalList() {
+		return hasVerifyMusicalList;
+	}
+
+	public void setHasVerifyMusicalList(Boolean hasVerifyMusicalList) {
+		this.hasVerifyMusicalList = hasVerifyMusicalList;
+	}
 }

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

@@ -115,4 +115,11 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
 	 */
 	Boolean getOrderStatus(Long id) throws Exception;
 
+	/**
+	 * 获取分部支付成功支付中订单数量
+	 * @param organId
+	 * @return
+	 */
+	Integer findOrganPayOrderNum(Integer organId);
+
 }

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

@@ -536,7 +536,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                     studentPaymentOrder.setBalancePaymentAmount(studentPaymentOrder.getExpectAmount());
                     studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
                     studentPaymentOrder.setUpdateTime(now);
-                    studentPaymentOrder.setRoutingOrganId(42);
+                    studentPaymentOrder.setRoutingOrganId(coursesGroup.getOrganId());
 
                     sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getExpectAmount().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "对外课程购买");
 
@@ -577,10 +577,6 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                     "outGroupBuy"
             );
 
-            Map<String, BigDecimal> routingFee = (Map<String, BigDecimal>) payMap.get("routingFee");
-            studentPaymentOrder.setRoutingOrganId((Integer) payMap.get("routingOrganId"));
-            studentPaymentOrder.setComAmount(routingFee.get("COM"));
-            studentPaymentOrder.setPerAmount(routingFee.get("PER"));
             studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
             studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
             studentPaymentOrder.setUpdateTime(now);

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

@@ -105,6 +105,8 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
     private StudentDao studentDao;
     @Autowired
     private TeacherCourseRewardService teacherCourseRewardService;
+    @Autowired
+    private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(EduPracticeGroupService.class);
@@ -455,13 +457,14 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             }
             studentPaymentOrder.setPaymentChannel("BALANCE");
             if(userCashAccount.getBalance().subtract(studentPaymentOrder.getExpectAmount()).doubleValue() >= 0){
+                studentPaymentRouteOrderService.addRouteOrder(orderNo, practiceGroupBuyParams.getOrganId(), studentPaymentOrder.getExpectAmount());
                 // 更新订单信息
                 studentPaymentOrder.setActualAmount(new BigDecimal(0));
                 studentPaymentOrder.setBalancePaymentAmount(studentPaymentOrder.getExpectAmount());
                 studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
                 studentPaymentOrder.setUpdateTime(now);
                 studentPaymentOrder.setOrganId(practiceGroupBuyParams.getOrganId());
-                studentPaymentOrder.setRoutingOrganId(42);
+                studentPaymentOrder.setRoutingOrganId(practiceGroupBuyParams.getOrganId());
 
                 sysUserCashAccountService.updateBalance(practiceGroupBuyParams.getStudentId(), studentPaymentOrder.getExpectAmount().negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,operatorInfo+",教务代买");
 

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

@@ -1920,6 +1920,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             musicGroupPageInfo = queryPage(queryInfo);
         }
         List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows();
+        
+        if(musicGroupList == null || musicGroupList.size() == 0){
+        	return musicGroupPageInfo;
+        }
         // 获取学校编号列表
 //        Set<Integer> schoolIds = musicGroupList.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
 //        List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(StringUtils.join(schoolIds,","));
@@ -1959,6 +1963,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 //        Set<Integer> organIds = musicGroupList.stream().map(e -> e.getOrganId()).collect(Collectors.toSet());
 //        Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMap(StringUtils.join(organIds,",")));
 
+        List<MusicGroupPurchaseList> musicGroupPurchaseListCount = musicGroupPurchaseListDao.getCount(musicGroupIds);
+        Map<String, Integer> purchaseListMap = musicGroupPurchaseListCount.stream().collect(Collectors.toMap(MusicGroupPurchaseList::getMusicGroupId, MusicGroupPurchaseList::getPurchaseNum));
+
         //获取分部名称map
         musicGroupList.forEach(e -> {
 //            e.setSchoolName(schoolNameMap.get(e.getSchoolId()));
@@ -1968,6 +1975,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             e.setTeamTeacherName(teamTeacherNameMap.get(e.getTeamTeacherId()));
             e.setPayNum(payNumMap.get(e.getId()) == null ? 0 : payNumMap.get(e.getId()));
             e.setChargeTypeName(chargeTypeNameMap.get(e.getChargeTypeId()));
+            e.setHasVerifyMusicalList(purchaseListMap.get(e.getId()) != null);
         });
         return musicGroupPageInfo;
     }

+ 62 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -245,8 +245,17 @@ public class PayServiceImpl implements PayService {
 
     @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 {
+        String usePaymentConfig = sysConfigDao.findConfigValue("use_payment_config");
+        List<RouteScaleDto> routeScaleDtos = null;
+        //使用配置开关
+        if (usePaymentConfig.equals("0")) {
+            routeScaleDtos = noUsePaymentConfig(organId, amount);
+        }
+
         //根据金额获取分润
-        List<RouteScaleDto> routeScaleDtos = getAmountChannel(organId, amount, receiver);
+        if (routeScaleDtos == null) {
+            routeScaleDtos = getAmountChannel(organId, amount, receiver);
+        }
         //零星支付,收到指定
         if (routeScaleDtos == null) {
             routeScaleDtos = getSporadicChannel(amount, receiver);
@@ -259,10 +268,33 @@ public class PayServiceImpl implements PayService {
         return getPayRoute(amount, balanceAmount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, routeScaleDtos);
     }
 
+    private List<RouteScaleDto> noUsePaymentConfig(Integer organId, BigDecimal amount) {
+        String paymentChannel = sysConfigDao.findConfigValue("payment_channel");
+        List<RouteScaleDto> routeScaleDtos = new ArrayList<>();
+        RouteScaleDto routeScaleDto = new RouteScaleDto();
+        routeScaleDto.setAmount(amount);
+        routeScaleDto.setOrganId(organId);
+        routeScaleDto.setScale(100);
+        if (paymentChannel.equals("YQPAY")) {
+            routeScaleDto.setMerNo(YqPayUtil.merNo);
+            routeScaleDto.setPayType(PaymentChannelEnum.YQPAY);
+            routeScaleDto.setFeeFlag("Y");
+        } else {
+            routeScaleDto.setMerNo(ConfigInit.merNo);
+            routeScaleDto.setPayType(PaymentChannelEnum.ADAPAY);
+            routeScaleDto.setFeeFlag("Y");
+        }
+        routeScaleDtos.add(routeScaleDto);
+        return routeScaleDtos;
+    }
+
     private List<RouteScaleDto> getPaymentConfigChannel(Integer organId, BigDecimal amount) {
         SysPaymentConfig paymentConfig = sysPaymentConfigService.findPaymentConfigByOrganId(organId);
         if (paymentConfig == null || StringUtils.isBlank(paymentConfig.getRouteScale())) {
             String paymentChannel = sysConfigDao.findConfigValue("payment_channel");
+            if (paymentConfig != null) {
+                paymentChannel = paymentConfig.getPayType().getCode();
+            }
             List<RouteScaleDto> routeScaleDtos = new ArrayList<>();
             RouteScaleDto routeScaleDto = new RouteScaleDto();
             routeScaleDto.setAmount(amount);
@@ -271,6 +303,7 @@ public class PayServiceImpl implements PayService {
             if (paymentChannel.equals("YQPAY")) {
                 routeScaleDto.setMerNo(YqPayUtil.merNo);
                 routeScaleDto.setPayType(PaymentChannelEnum.YQPAY);
+                routeScaleDto.setFeeFlag("Y");
             } else {
                 routeScaleDto.setMerNo(ConfigInit.merNo);
                 routeScaleDto.setPayType(PaymentChannelEnum.ADAPAY);
@@ -299,7 +332,7 @@ public class PayServiceImpl implements PayService {
 
         //笔数比例
         if (paymentConfig.getType().equals(1)) {
-            int payOrderNums = studentPaymentOrderService.findPayOrderNum(); //获取支付中和成功的订单数
+            int payOrderNums = studentPaymentOrderService.findOrganPayOrderNum(organId); //获取支付中和成功的订单数
             int rem = payOrderNums % 10;
             rem = rem == 0 ? 10 : rem;
 
@@ -308,12 +341,15 @@ public class PayServiceImpl implements PayService {
             while (iterator.hasNext()) {
                 RouteScaleDto routeScaleDto = iterator.next();
                 Integer num = routeScaleDto.getScale();
+                boolean flag = false;
                 if (rem > scale && rem <= scale + num) {
                     routeScaleDto.setScale(100);
-                    continue;
+                    flag = true;
                 }
                 scale += num;
-                iterator.remove();
+                if (!flag) {
+                    iterator.remove();
+                }
             }
         }
         return routeScaleDtos;
@@ -333,7 +369,7 @@ public class PayServiceImpl implements PayService {
         Set<String> musicGroupType = new HashSet<>();
         musicGroupType.add("renew");
         musicGroupType.add("register");
-        if(musicGroupType.contains(receiver)){
+        if (musicGroupType.contains(receiver)) {
             receiver = "musicGroupBuy";
         }
 
@@ -391,14 +427,14 @@ public class PayServiceImpl implements PayService {
             return null;
         }
 
-        Map<String, String> channel = (Map<String, String>) JSON.parseObject(SporadicChannel, Map.class);
+        Map<String, Object> channel = (Map<String, Object>) JSON.parseObject(SporadicChannel, Map.class);
 
-        BigDecimal minReceiptMoney = new BigDecimal(channel.get("minReceiptMoney")); //最小接收的金额(不包含)
+        BigDecimal minReceiptMoney = new BigDecimal(channel.get("minReceipt").toString()); //最小接收的金额(不包含)
         if (amount.compareTo(minReceiptMoney) <= 0) {
             return null;
         }
 
-        Integer organId = Integer.parseInt(channel.get("organId"));
+        Integer organId = Integer.parseInt(channel.get("organId").toString());
         if (checkHasMaxReceipt(organId, amount)) {
             return null;
         }
@@ -439,10 +475,12 @@ public class PayServiceImpl implements PayService {
         paymentChannelList.add(PaymentChannelEnum.ADAPAY);
 
         BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(organId, paymentChannelList, monthStartTime);
+        monthHasReceipt = monthHasReceipt == null ? BigDecimal.ZERO : monthHasReceipt;
         if (amount.add(monthHasReceipt).compareTo(monthMaxReceipt) >= 0) {
             return true;
         }
         BigDecimal totalHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(organId, paymentChannelList, null);
+        totalHasReceipt = totalHasReceipt == null ? BigDecimal.ZERO : totalHasReceipt;
         if (amount.add(totalHasReceipt).compareTo(totalMaxReceipt) >= 0) {
             return true;
         }
@@ -460,9 +498,11 @@ public class PayServiceImpl implements PayService {
         int i = 0;
         BigDecimal hasRouteAmount = BigDecimal.ZERO;
         BigDecimal hasRouteBalanceAmount = BigDecimal.ZERO;
+        BigDecimal hasRouteMoney = BigDecimal.ZERO;
         List<Map<String, Object>> tempRoutingList = new ArrayList<>();
 
         PaymentChannelEnum patType = null;
+        boolean feeFlag = false;
         for (RouteScaleDto routeScaleDto : routeScaleDtos) {
             patType = routeScaleDto.getPayType();
             Map<String, Object> routingList = new HashMap<>();
@@ -474,26 +514,36 @@ public class PayServiceImpl implements PayService {
             }
             BigDecimal routingFee = routingAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
             BigDecimal routeBalanceAmount = balanceAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+            BigDecimal routingMoney = amount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
             if (i == routeScaleDtos.size()) {
                 routingFee = routingAmount.subtract(hasRouteAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
                 routeBalanceAmount = balanceAmount.subtract(hasRouteBalanceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
+                routingMoney = amount.subtract(hasRouteMoney).setScale(2, BigDecimal.ROUND_HALF_UP);
             }
-            hasRouteAmount = hasRouteAmount.add(routingFee);
-            hasRouteBalanceAmount = hasRouteBalanceAmount.add(routeBalanceAmount);
 
             if (routingFee.compareTo(BigDecimal.ZERO) <= 0) {
                 continue;
             }
+
+            hasRouteAmount = hasRouteAmount.add(routingFee);
+            hasRouteBalanceAmount = hasRouteBalanceAmount.add(routeBalanceAmount);
+            hasRouteMoney = hasRouteMoney.add(routingMoney);
+
             routingList.put("routingMerNo", routeScaleDto.getMerNo());//分佣账户
             routingList.put("routingFee", routingFee); //分佣金额
-
             tempRoutingList.add(routingList);
+            if (routeScaleDto.getFeeFlag().equals("Y")) {
+                feeFlag = true;
+            }
+            if (i == routeScaleDtos.size() && !feeFlag) {
+                routeScaleDto.setFeeFlag("Y");
+            }
 
             StudentPaymentRouteOrder studentPaymentRouteOrder = new StudentPaymentRouteOrder();
             studentPaymentRouteOrder.setOrderNo(orderNo);
             studentPaymentRouteOrder.setRouteOrganId(routeScaleDto.getOrganId());
             studentPaymentRouteOrder.setFeeFlag(routeScaleDto.getFeeFlag());
-            studentPaymentRouteOrder.setRouteAmount(routingFee);
+            studentPaymentRouteOrder.setRouteAmount(routingMoney);
             studentPaymentRouteOrder.setRouteBalanceAmount(routeBalanceAmount);
             studentPaymentRouteOrder.setMerNo(routeScaleDto.getMerNo());
             RouteOrders.add(studentPaymentRouteOrder);

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

@@ -3070,7 +3070,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
                 studentPaymentOrder.setUpdateTime(now);
                 studentPaymentOrder.setOrganId(practiceGroupBuyParams.getOrganId());
-                studentPaymentOrder.setRoutingOrganId(42);
+                studentPaymentOrder.setRoutingOrganId(practiceGroupBuyParams.getOrganId());
 
                 sysUserCashAccountService.updateBalance(practiceGroupBuyParams.getStudentId(), studentPaymentOrder.getExpectAmount().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "网管课购买");
 
@@ -3445,7 +3445,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 newOrder.setStatus(DealStatusEnum.SUCCESS);
                 newOrder.setUpdateTime(new Date());
                 newOrder.setOrganId(practiceGroup.getOrganId());
-                newOrder.setRoutingOrganId(42);
+                newOrder.setRoutingOrganId(practiceGroup.getOrganId());
 
                 sysUserCashAccountService.updateBalance(userId, newOrder.getExpectAmount().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "网管课购买");
 

+ 29 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -26,6 +26,7 @@ import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -53,6 +54,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private SysUserCashAccountDao sysUserCashAccountDao;
     @Autowired
     private StudentRepairService studentRepairService;
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -193,9 +196,30 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         closeOrders(orderNoList);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     public void updateOrder(Map<String, String> rpMap) throws Exception {
         DealStatusEnum status = rpMap.get("tradeState").equals("1") ? DealStatusEnum.SUCCESS : DealStatusEnum.FAILED;
         StudentPaymentOrder order = findOrderByOrderNo(rpMap.get("merOrderNo"));
+        //关闭或失败的订单查询订单成功,订单改成成功,钱退到余额
+        if (order != null && (order.getStatus().equals(DealStatusEnum.CLOSE) || order.getStatus().equals(DealStatusEnum.FAILED)) && status.equals(DealStatusEnum.SUCCESS)) {
+            String memo = order.getStatus().equals(DealStatusEnum.CLOSE) ? "关闭订单" : "失败订单";
+            memo = memo+",实际支付成功,退到用户余额";
+            //更新订单状态
+            order.setStatus(status);
+            order.setTransNo(rpMap.get("orderNo"));
+            order.setPaymentBusinessChannel(rpMap.get("channelType"));
+            order.setPayTime(new Date());
+            order.setMemo(memo);
+            int updateCount = this.update(order);
+            if (updateCount <= 0) {
+                throw new BizException("订单更新失败");
+            }
+            //增加用户余额
+            sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount(),
+                    PlatformCashAccountDetailTypeEnum.REFUNDS, memo+",订单号:"+order.getOrderNo());
+            return;
+        }
+
         if (order == null || !order.getStatus().equals(DealStatusEnum.ING)) {
             return;
         }
@@ -335,10 +359,6 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     public Boolean getOrderStatus(Long id) throws Exception {
         StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.get(id);
-        studentPaymentOrder.setStatus(DealStatusEnum.ING);
-        if(studentPaymentOrderDao.update(studentPaymentOrder) <= 0){
-            throw new BizException("订单状态更新失败,请重试");
-        }
         List<StudentPaymentOrder> orderList = new ArrayList<>();
         orderList.add(studentPaymentOrder);
         if (studentPaymentOrder.getPaymentChannel().equals("ADAPAY")) {
@@ -348,4 +368,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         }
         return true;
     }
+
+    @Override
+    public Integer findOrganPayOrderNum(Integer organId) {
+        return studentPaymentOrderDao.findOrganPayOrderNum(organId);
+    }
 }

+ 0 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -57,7 +57,6 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
             dataList = studentPaymentRouteOrderDao.queryPageOrder(params);
 
             StudentPaymentRouteOrderDto orderMoneyAmount = studentPaymentRouteOrderDao.getOrderMoneyAmount(params);
-            BigDecimal totalExpectAmount = orderMoneyAmount.getExpectAmount() != null ? orderMoneyAmount.getExpectAmount() : BigDecimal.ZERO;
             BigDecimal totalActualAmount = orderMoneyAmount.getActualAmount() != null ? orderMoneyAmount.getActualAmount() : BigDecimal.ZERO;
             BigDecimal totalBalancePaymentAmount = orderMoneyAmount.getBalancePaymentAmount() != null ? orderMoneyAmount.getBalancePaymentAmount() : BigDecimal.ZERO;
 
@@ -67,7 +66,6 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
             BigDecimal totalAdvanceAmount = totalChargeAmount.subtract(totalBalancePaymentAmount);
 
             pageInfo.setTotalAdvanceAmount(totalAdvanceAmount);
-            pageInfo.setTotalExpectAmount(totalExpectAmount);
             pageInfo.setTotalActualAmount(totalActualAmount);
             pageInfo.setTotalRevenueAmount(totalActualAmount.subtract(totalAdvanceAmount));
         }

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

@@ -593,7 +593,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             studentPaymentOrder.setMusicGroupId(musicGroupId);
             studentPaymentOrder.setClassGroupId(studentAddDto.getSignClassId());
             studentPaymentOrder.setOrganId(musicGroup.getOrganId());
-            studentPaymentOrder.setRoutingOrganId(42);
+            studentPaymentOrder.setRoutingOrganId(musicGroup.getOrganId());
 
             //生成订单明细
             List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();

+ 0 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantPaymentOrderServiceImpl.java

@@ -180,9 +180,6 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP
                     "tenantPayment"
             );
 
-            Map<String, BigDecimal> routingFee = (Map<String, BigDecimal>) payMap.get("routingFee");
-            tenantPaymentOrder.setComAmount(routingFee.get("COM"));
-            tenantPaymentOrder.setPerAmount(routingFee.get("PER"));
             tenantPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
             tenantPaymentOrder.setPaymentChannel(PaymentChannelEnum.valueOf(payMap.get("type").toString()));
             tenantPaymentOrder.setUpdateTime(date);

+ 2 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1365,7 +1365,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
 				studentPaymentOrder.setUpdateTime(date);
 				studentPaymentOrder.setOrganId(vipGroup.getOrganId());
-		        studentPaymentOrder.setRoutingOrganId(42);
+		        studentPaymentOrder.setRoutingOrganId(vipGroup.getOrganId());
 
 				this.orderCallback(studentPaymentOrder);
 
@@ -1414,11 +1414,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					"vipBuy"
 			);
 
-			Map<String,BigDecimal> routingFee = (Map<String,BigDecimal>)payMap.get("routingFee");
 			studentPaymentOrder.setOrganId(vipGroup.getOrganId());
-			studentPaymentOrder.setRoutingOrganId((Integer) payMap.get("routingOrganId"));
-			studentPaymentOrder.setComAmount(routingFee.get("COM"));
-			studentPaymentOrder.setPerAmount(routingFee.get("PER"));
+			studentPaymentOrder.setRoutingOrganId(vipGroup.getOrganId());
 			studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
 			studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
 			studentPaymentOrder.setUpdateTime(date);

+ 27 - 9
mec-biz/src/main/resources/config/mybatis/MusicGroupPurchaseListMapper.xml

@@ -17,13 +17,17 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="MusicGroupPurchaseList">
-		SELECT * FROM music_group_purchase_list WHERE id_ = #{id} 
-	</select>
+        SELECT *
+        FROM music_group_purchase_list
+        WHERE id_ = #{id}
+    </select>
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="MusicGroupPurchaseList">
-		SELECT * FROM music_group_purchase_list ORDER BY id_
-	</select>
+        SELECT *
+        FROM music_group_purchase_list
+        ORDER BY id_
+    </select>
 
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPurchaseList" useGeneratedKeys="true"
@@ -59,8 +63,10 @@
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
-		DELETE FROM music_group_purchase_list WHERE id_ = #{id} 
-	</delete>
+        DELETE
+        FROM music_group_purchase_list
+        WHERE id_ = #{id}
+    </delete>
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="MusicGroupPurchaseList" parameterType="map">
@@ -76,20 +82,32 @@
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM music_group_purchase_list
+        SELECT COUNT(*) FROM music_group_purchase_list
         <where>
             <if test="musicGroupId != null">
                 music_group_id_ = #{musicGroupId}
             </if>
         </where>
-	</select>
+    </select>
 
     <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPurchaseList" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO music_group_purchase_list (id_,music_group_id_,goods_id_,purchase_num_,create_time_,update_time_)
         VALUES
         <foreach collection="musicGroupPurchaseLists" item="item" index="index" separator=",">
-        (#{item.id},#{item.musicGroupId},#{item.goodsId},#{item.purchaseNum},now(),now())
+            (#{item.id},#{item.musicGroupId},#{item.goodsId},#{item.purchaseNum},now(),now())
         </foreach>
     </insert>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="getCount" resultMap="MusicGroupPurchaseList">
+        SELECT music_group_id_, COUNT(*) purchase_num_ FROM music_group_purchase_list
+        <where>
+            music_group_id_ IN
+            <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+                #{musicGroupId}
+            </foreach>
+        </where>
+        GROUP BY music_group_id_
+    </select>
 </mapper>

+ 13 - 1
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -248,7 +248,7 @@
                 AND spo.order_no_ = #{orderNo}
             </if>
             <if test="merNos != null">
-                AND spo.mer_nos_ = #{merNos}
+                AND FIND_IN_SET(#{merNos},spo.mer_nos_)
             </if>
             <if test="transNo != null">
                 AND spo.trans_no_ = #{transNo}
@@ -454,6 +454,9 @@
         <result column="organ_name" property="organName"/>
         <result column="username_" property="user.username"/>
         <result column="charge_type_" property="chargeType"/>
+        <result column="routeMerNo" property="routeMerNo" />
+        <result column="routeAmount" property="routeAmount" />
+        <result column="routeBalance" property="routeBalance" />
         <collection property="orderDetailList" ofType="com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail">
             <result column="detail_id_" property="id"/>
             <result column="detail_type_" property="type"/>
@@ -644,4 +647,13 @@
     <select id="countSporadicOrder" resultType="java.lang.Integer">
         SELECT COUNT(id_) FROM student_payment_order spo WHERE spo.group_type_ = 'SPORADIC' AND spo.music_group_id_ = #{sporadicId}
     </select>
+
+    <!-- 查找支付成功和支付中订单 -->
+    <select id="findOrganPayOrderNum" resultType="int">
+        <![CDATA[
+        SELECT COUNT(*)
+        FROM student_payment_order
+        WHERE organ_id_ = #{organId} AND status_ IN ('SUCCESS','ING')
+        ]]>
+    </select>
 </mapper>

+ 23 - 3
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -87,13 +87,15 @@
         <include refid="global.limit"/>
     </select>
     <select id="getOrderMoneyAmount" parameterType="map" resultMap="StudentPaymentRouteOrderDto">
-        SELECT SUM(spo.expect_amount_) expect_amount_,SUM(actual_amount_) actual_amount_,SUM(balance_payment_amount_)
-        balance_payment_amount_ FROM student_payment_order spo
+        SELECT SUM(spro.route_amount_) actual_amount_,SUM(spro.route_balance_amount_)
+        balance_payment_amount_ FROM student_payment_route_order spro
+        LEFT JOIN student_payment_order spo on spo.order_no_ = spro.order_no_
         <include refid="queryPaymentOrder"/>
     </select>
 
     <select id="getChargeAmount" parameterType="map" resultType="java.math.BigDecimal">
-        SELECT SUM(actual_amount_) FROM student_payment_order spo
+        SELECT SUM(spro.route_amount_) FROM student_payment_route_order spro
+        LEFT JOIN student_payment_order spo ON spo.order_no_=spro.order_no_
         LEFT JOIN sporadic_charge_info sci ON spo.music_group_id_ = sci.id_
         <include refid="queryPaymentOrder"/>
     </select>
@@ -183,4 +185,22 @@
         </if>
     </select>
 
+    <select id="ExportQueryPage" resultMap="com.ym.mec.biz.dal.dao.StudentPaymentOrderDao.orderAndDetail"
+            parameterType="map">
+        SELECT spo.*,u.username_,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
+        detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,
+        sci.charge_type_,g.id_ goods_id, g.name_ goods_name,o.name_ organ_name,spro.route_amount_
+        routeAmount,spro.route_balance_amount_ routeBalance,
+        spro.mer_no_ routeMerNo
+        FROM student_payment_order spo
+        LEFT JOIN student_payment_route_order spro ON spro.order_no_ = spo.order_no_
+        LEFT JOIN sys_user u on spo.user_id_ = u.id_
+        LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
+        LEFT JOIN organization o on spro.route_organ_id_ = o.id_
+        LEFT JOIN sporadic_charge_info sci on spo.music_group_id_ = sci.id_
+        LEFT JOIN goods g on FIND_IN_SET(g.id_,spod.goods_id_list_)
+        <include refid="queryPaymentOrder"/>
+        ORDER BY spo.id_ ASC
+    </select>
+
 </mapper>

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

@@ -162,16 +162,16 @@
         <where>
             <if test="payType == null">
                 pay_type_ IS NOT NULL
-                AND (spc.yq_mer_no_ IS NOT NULL OR spc.hf_mer_no_ IS NOT NULL)
+                AND (spc.yq_mer_no_ !='' OR spc.hf_mer_no_ !='')
             </if>
             <if test="payType != null">
                 AND pay_type_ = #{payType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
             <if test='payType != null and payType.code.equals("YQPAY")'>
-                AND spc.yq_mer_no_ IS NOT NULL
+                AND spc.yq_mer_no_ != ''
             </if>
             <if test='payType != null and payType.code.equals("ADAPAY")'>
-                AND spc.hf_mer_no_ IS NOT NULL
+                AND spc.hf_mer_no_ !=''
             </if>
         </where>
 

+ 6 - 29
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -176,12 +176,15 @@ public class StudentOrderController extends BaseController {
         if (studentPaymentOrder == null && tenantPaymentOrder == null) {
             return failed("订单不存在");
         }
+        BigDecimal payAmount;
         if (studentPaymentOrder != null) {
             createTime = studentPaymentOrder.getCreateTime();
             merNos = studentPaymentOrder.getMerNos();
+            payAmount = studentPaymentOrder.getActualAmount();
         } else {
             createTime = tenantPaymentOrder.getCreateTime();
             merNos = tenantPaymentOrder.getMerNos();
+            payAmount = tenantPaymentOrder.getActualAmount();
         }
 
         Calendar beforeTime = Calendar.getInstance();
@@ -198,7 +201,7 @@ public class StudentOrderController extends BaseController {
         paymentParams.put("app_id", ConfigInit.appId);
         paymentParams.put("order_no", orderNo);
         paymentParams.put("pay_channel", payChannel);
-        paymentParams.put("pay_amt", amount);
+        paymentParams.put("pay_amt", payAmount.setScale(2, BigDecimal.ROUND_HALF_UP));
         paymentParams.put("goods_title", orderSubject);
         paymentParams.put("goods_desc", orderBody);
         paymentParams.put("time_expire", timeExpire);
@@ -208,8 +211,8 @@ public class StudentOrderController extends BaseController {
         for (StudentPaymentRouteOrder routeOrder : routeOrders) {
             Map<String, Object> divMember = new HashMap<>();
             divMember.put("member_id", routeOrder.getMerNo());//分佣账户
-            divMember.put("amount", routeOrder.getRouteAmount());//分佣金额
-            divMember.put("fee_flag",routeOrder.getFeeFlag());
+            divMember.put("amount", routeOrder.getRouteAmount().setScale(2, BigDecimal.ROUND_HALF_UP));//分佣金额
+            divMember.put("fee_flag", routeOrder.getFeeFlag());
             if (routeOrder.getMerNo().equals(ConfigInit.merNo)) {
                 divMember.put("member_id", 0);
             }
@@ -698,30 +701,4 @@ public class StudentOrderController extends BaseController {
         practice4Organs = practice4Organs.stream().sorted(Comparator.comparingDouble(Practice4OrganDto::getScale).reversed()).collect(Collectors.toList());
         return succeed(practice4Organs);
     }
-
-    @Autowired
-    PayService payService;
-
-    @GetMapping("/test")
-    public HttpResponseResult test() {
-        String baseApiUrl = "http://dev.dayaedu.com";
-        Map<String, Object> payMap = new HashMap<>();
-        try {
-            payMap = payService.getPayMap(
-                    new BigDecimal("50"),
-                    BigDecimal.ZERO,
-                    "20070915150900001",
-                    baseApiUrl + "/api-student/studentOrder/notify",
-                    baseApiUrl + "/api-student/studentOrder/paymentResult?orderNo=5435253245",
-                    "对外课程组购买",
-                    "测试购买",
-                    2,
-                    null
-            );
-            return succeed(payMap);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return succeed(payMap);
-    }
 }

+ 3 - 3
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/ConfigInit.java

@@ -10,7 +10,7 @@ public class ConfigInit {
     private static ConfigInit instance;
     public final static Integer organId = 46; //商户对应的分部
     public final static String merNo = "B09767221"; //商户对应的分部
-    public final static String appId = "app_f0ebdd29-046f-4b60-bd50-92e2c1285c02";
+    public final static String appId = "app_756972d1-882e-44c6-9f52-e6a6b93c8756";
 
     public final static String wxAppId = "wx751141096e75a4ee";
     public final static String wxAppSecret = "e882d76c95d1613607a85338b1bed3ff";
@@ -44,8 +44,8 @@ public class ConfigInit {
          *添加商户配置,一个商户只需要 添加一次,添加以后在内存中。
          */
 
-        String apiKey = "api_live_8dd6fba0-59ca-45f7-8e82-0b3ae7bd7907";
-        String mockApiKey = "api_test_193c8f6a-514f-4d95-a26b-2861c7971105";
+        String apiKey = "api_live_bfc3c02f-657b-4731-9fcd-ea9503aa3bb9";
+        String mockApiKey = "api_test_d09b9f68-9798-43b3-93b7-a22ef406a20c";
         String rsaPrivateKey = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAL3zHDr2s5Lp3b9FKAD4vB3Y2MyOypv68mKFi8uPznO9JkzBhwYLYRC8mnP+W7tw5Q7Yuf5Szhn8Mo9KZ8Bsv6S6iz3BtXzeHb/8nyeBAH2m477bJzwmapZPhPSroR8md1dnNI+4NttM/0Cn/rdAySzQn+IPHLPxWFwQw+y6FFi7AgMBAAECgYEAkuUBPfAvKzxEyng22ZmCESrzbi43La1B6UMRuxi5NfRfPBilzNzb8c+JOo7Ibgp+eZ7NJ4rt7FaG2x1VYxA2m151I86e6TlgPYNjjj56RpkrD9/LrDqePFE4AlrwO5802fK4X/iac1MCpEhaiVNQ3x6ikwcKWzKmMV/EpdijIcECQQDlt+ou3L5M2TQW8YYg9zA9TKRd+M/Xs0tPLJLE+W6m0+dmyeHBErMW6X874qhmIc3F8HYIW+O51GMy6KDgQ7PrAkEA065ujs1ZkwIPMopgIoqlRi8JDvAxgEZqktDDMMg0o2XZP6J7C5suf2BsrhKnjLlxII7dQPxDfPDiRz4jYpBKcQJBAKd77ev42W5iNk48DdTfJHas+HHjRHY5rMCu+NtQGNLdUKtqqYQBRD2CRFe/K5Q7NTIJ3aS+ikwkg6bMYO7hrb0CQDesuC1c+0M8Fm0vketj1eZotpQ0PoDDhIJK4BuzfIzBW+ttu7kovokH/m2mQGU13Pg4Ox89ei6hWJJuWHYzBzECQQDexzziaTpHMy3achL2M2pOSdaSLYoesmPTmVZ3kOZf82FpRlfxVGUs0nKpEEgagUkiHUQHAu5RVkxIiDqMYrQp";
 
         merConfig.setApiKey(apiKey);

+ 26 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/CorpMember.java

@@ -7,9 +7,9 @@ import java.util.Map;
 import com.alibaba.fastjson.JSON;
 
 /**
- * @author yingyong.wang
+ * @author 
  */
-class CorpMember extends ConfigInit {
+public class CorpMember extends ConfigInit {
 
     /**
      * 运行 CorpMember 类接口
@@ -129,6 +129,30 @@ class CorpMember extends ConfigInit {
     }
 
     /**
+     * 创建 CorpMember
+     *
+     * @return 创建的CorpMember 对象
+     * @throws Exception 异常
+     */
+    public Map<String, Object> executeCreateMember( Map<String,Object> info,String path) throws Exception {
+        System.out.println("=======execute Create CorpMember begin=======");
+        Map<String, Object> memberParams = new HashMap<String, Object>();
+        memberParams.put("app_id", appId);
+        memberParams.putAll(info);
+
+        File file = new File(path);
+        System.out.println("创建企业用户,请求参数:" + JSON.toJSONString(memberParams) );
+        Map<String, Object> member = com.huifu.adapay.model.CorpMember.create(memberParams, file);
+        System.out.println("创建企业用户,返回参数:" + JSON.toJSONString(member) );
+
+
+        System.out.println("=======execute Create CorpMember end=======");
+
+        return member;
+
+    }
+
+    /**
      * 查询 CorpMember
      *
      * @param member_id 待查询的member_id

+ 24 - 23
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/MainDemo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.thirdparty.adapay;
 
+import java.util.HashMap;
 import java.util.Map;
 
 
@@ -17,29 +18,29 @@ public class MainDemo {
 
     public static void testMerchant() throws Exception {
 
-//        HashMap<String, Object> memberParams = new HashMap<>();
-//        memberParams.put("member_id", "W004201");
-//        memberParams.put("order_no", "corp_mem_" + System.currentTimeMillis());
-//
-//        memberParams.put("social_credit_code", "91420106303461541T");
-//        memberParams.put("social_credit_code_expires", "20440730");
-//        memberParams.put("business_scope", "教育资讯、投资资讯");
-//        memberParams.put("name", "武汉大雅乐盟教育咨询有限公司");
-//        memberParams.put("prov_code", "0042");
-//        memberParams.put("area_code", "4201");
-//        memberParams.put("legal_person", "李松");
-//        memberParams.put("legal_cert_id", "420106196811210837");
-//        memberParams.put("legal_cert_id_expires", "20990730");
-//        memberParams.put("legal_mp", "13958465215");//法人手机号
-//        memberParams.put("address", "武昌区水果湖汉街武汉中央文化旅游区K3地块第2幢34层2号");
-//        memberParams.put("zip_code", "430000");
-//        //memberParams.put("telphone", "41164452");
-//       // memberParams.put("email", "ceshi@qq.com");
-//        memberParams.put("bank_code", "03020000");
-//        memberParams.put("bank_acct_type", "1");
-//        memberParams.put("card_no", "‘8111501011700649152");
-//        memberParams.put("card_name", "武汉大雅");
-//        new CorpMember().executeCreateMember(memberParams);
+        HashMap<String, Object> memberParams = new HashMap<>();
+        memberParams.put("member_id", "W004201");
+        memberParams.put("order_no", "corp_mem_" + System.currentTimeMillis());
+
+        memberParams.put("social_credit_code", "91420106303461541T");
+        memberParams.put("social_credit_code_expires", "20440730");
+        memberParams.put("business_scope", "教育资讯、投资资讯");
+        memberParams.put("name", "武汉大雅乐盟教育咨询有限公司");
+        memberParams.put("prov_code", "0042");
+        memberParams.put("area_code", "4201");
+        memberParams.put("legal_person", "李松");
+        memberParams.put("legal_cert_id", "420106196811210837");
+        memberParams.put("legal_cert_id_expires", "20990730");
+        memberParams.put("legal_mp", "13958465215");//法人手机号
+        memberParams.put("address", "武昌区水果湖汉街武汉中央文化旅游区K3地块第2幢34层2号");
+        memberParams.put("zip_code", "430000");
+        //memberParams.put("telphone", "41164452");
+       // memberParams.put("email", "ceshi@qq.com");
+        memberParams.put("bank_code", "03020000");
+        memberParams.put("bank_acct_type", "1");
+        memberParams.put("card_no", "‘8111501011700649152");
+        memberParams.put("card_name", "武汉大雅");
+        new CorpMember().executeCreateMember(memberParams);
 
 //        new CorpMember().executeQueryMember("W004201");
 

+ 39 - 0
mec-web/src/main/java/com/ym/mec/web/controller/AdapayController.java

@@ -0,0 +1,39 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.thirdparty.adapay.CorpMember;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+
+@RequestMapping("adapay")
+@Api(tags = "汇付服务")
+@RestController
+public class AdapayController extends BaseController {
+
+
+    @ApiOperation("新建企业用户")
+    @PostMapping(value = "createMember")
+    public Object queryRegisterContract(MultipartFile file) throws Exception {
+
+        HashMap<String, Object> memberParams = new HashMap<>();
+        memberParams.put("order_no", "corp_mem_" + System.currentTimeMillis());
+
+        memberParams.put("bank_acct_type", "1");
+        memberParams.put("card_name", "武汉大雅乐盟教育咨询有限公司");
+
+        String path = "C:/Users/river/Desktop/imgzip/武汉大雅乐盟教育咨询有限公司.zip";
+
+        new CorpMember().executeCreateMember(memberParams,path);
+        return true;
+    }
+
+
+}

+ 170 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -92,6 +92,8 @@ public class ExportController extends BaseController {
 
     @Autowired
     private CooperationOrganService cooperationOrganService;
+    @Autowired
+    private StudentPaymentRouteOrderDao studentPaymentRouteOrderDao;
 
     @ApiOperation(value = "导出教师考勤列表")
     @PostMapping("export/queryTeacherAttendances")
@@ -1798,4 +1800,172 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+
+    @ApiOperation(value = "财务管理导出")
+    @RequestMapping("export/routeOrderList")
+    @PreAuthorize("@pcs.hasPermissions('export/routeOrderList')")
+    public void routeOrderList(StudentPaymentOrderQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getRoutingOrganId()) && queryInfo.getOrderType().equals("3")) {
+                queryInfo.setRoutingOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            }
+        }
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        queryInfo.setIsExport(true);
+        queryInfo.setOrderType("3");
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+        List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage(params);
+        if (studentPaymentOrderExportDtos.size() > 50000) {
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
+        OutputStream outputStream = response.getOutputStream();
+        long i = 1;
+        for (StudentPaymentOrderExportDto row : studentPaymentOrderExportDtos) {
+            if (queryInfo.getOrderType().equals("1")) {
+                BigDecimal comAmount = row.getComAmount() == null ? BigDecimal.ZERO : row.getComAmount();
+                row.setActualAmount(comAmount);
+            } else if (queryInfo.getOrderType().equals("2")) {
+                BigDecimal perAmount = row.getPerAmount() == null ? BigDecimal.ZERO : row.getPerAmount();
+                row.setActualAmount(perAmount);
+            }
+            if (row.getActualAmount() == null) {
+                row.setActualAmount(BigDecimal.ZERO);
+            }
+            if (row.getBalancePaymentAmount() == null) {
+                row.setBalancePaymentAmount(BigDecimal.ZERO);
+            }
+            BigDecimal transferFee = (row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP);
+            row.setTransferFee(transferFee);
+            BigDecimal musicalFee = BigDecimal.ZERO;
+            BigDecimal teachingFee = BigDecimal.ZERO;
+            BigDecimal courseFee = BigDecimal.ZERO;
+            BigDecimal leaseFee = BigDecimal.ZERO;
+            String goodsName = "";
+            if (row.getOrderDetailList() != null) {
+                for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) {
+                    if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL)) {
+                        if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
+                            leaseFee = orderDetail.getPrice();
+                        } else {
+                            musicalFee = orderDetail.getPrice();
+                        }
+                    } else if (orderDetail.getType().equals(OrderDetailTypeEnum.COURSE)) {
+                        courseFee = courseFee.add(orderDetail.getPrice());
+                    } else if (orderDetail.getType().equals(OrderDetailTypeEnum.ACCESSORIES) || orderDetail.getType().equals(OrderDetailTypeEnum.TEACHING) || orderDetail.getType().equals(OrderDetailTypeEnum.OTHER)) {
+                        teachingFee = teachingFee.add(orderDetail.getPrice());
+                    }
+                }
+            }
+            if (row.getGoodsList() != null) {
+                goodsName = row.getGoodsList().stream().map(Goods::getName).collect(Collectors.joining("|"));
+            }
+            row.setCourseFee(courseFee);
+            row.setMusicalFee(musicalFee);
+            row.setTeachingFee(teachingFee);
+            row.setLeaseFee(leaseFee);
+            row.setMemo(goodsName);
+            //专业
+            if (row.getGroupType().equals(GroupType.MUSIC)) {
+                StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
+                if (studentRegistration != null) {
+                    row.setSubjectName(studentRegistration.getSubjectName());
+                    row.setSchoolName(studentRegistration.getSchoolName());
+                    row.setCooperationOrganName(studentRegistration.getRemark());
+                }
+            } else if (row.getGroupType().equals(GroupType.VIP)) {
+                row.setCourseFee(row.getActualAmount());
+                VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
+                if (vipGroupInfo != null) {
+                    row.setSchoolName(vipGroupInfo.getSchoolName());
+                    row.setSubjectName(vipGroupInfo.getSubjectName());
+                }
+
+            } else if (row.getGroupType().equals(GroupType.SPORADIC)) {
+                row.setSporadicAmount(row.getActualAmount());
+                row.setMusicalFee(BigDecimal.ZERO);
+                row.setTeachingFee(BigDecimal.ZERO);
+                if (row.getChargeType() != null) {
+
+                    if (row.getChargeType().equals(1)) {
+                        row.setSporadicType("考级");
+                    } else if (row.getChargeType().equals(2)) {
+                        row.setSporadicType("声部更改");
+                    } else if (row.getChargeType().equals(3)) {
+                        row.setSporadicType("乐器更换");
+                    } else if (row.getChargeType().equals(4)) {
+                        row.setSporadicType("配件销售");
+                    } else if (row.getChargeType().equals(5)) {
+                        row.setSporadicType("维修费");
+                    } else if (row.getChargeType().equals(6)) {
+                        row.setSporadicType("福袋活动");
+                    } else if (row.getChargeType().equals(7)) {
+                        row.setSporadicType("上门费");
+                    } else if (row.getChargeType().equals(9)) {
+                        row.setSporadicType("账户充值");
+                    } else if (row.getChargeType().equals(10)) {
+                        row.setSporadicType("乐保服务");
+                    } else if (row.getChargeType().equals(11)) {
+                        row.setSporadicType("其他");
+                    }
+                }
+                School userSchool = musicGroupDao.findUserSchool(row.getUserId());
+                if (userSchool != null) {
+                    row.setSchoolName(userSchool.getName());
+                }
+            } else if (row.getGroupType().equals(GroupType.PRACTICE)) {
+                row.setCourseFee(row.getActualAmount());
+                School userSchool = musicGroupDao.findUserSchool(row.getUserId());
+                if (userSchool != null) {
+                    row.setSchoolName(userSchool.getName());
+                }
+                PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId()));
+                if (practiceGroup != null) {
+                    row.setSubjectName(practiceGroup.getSubjectName());
+                }
+            }
+            String paymentChannel = "";
+            if (row.getPaymentChannel() == null) {
+            } else if (row.getPaymentChannel().equals("YQPAY")) {
+                paymentChannel = "双乾";
+            } else if (row.getPaymentChannel().equals("ADAPAY")) {
+                paymentChannel = "汇付";
+            } else if (row.getPaymentChannel().equals("BALANCE")) {
+                paymentChannel = "余额";
+            }
+            row.setPaymentChannel(paymentChannel);
+            row.setId(i);
+            i++;
+        }
+
+        try {
+            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付","分润账户","分润金额","分润余额","到账时间",
+                    "关联乐团ID/VIP课ID", "课程形态", "课程费用", "减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
+            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount","routeMerNo","routeAmount","routeBalance", "payTime", "musicGroupId",
+                    "groupType.desc", "courseFee", "remitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls"); //    //收款账户
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }