Просмотр исходного кода

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 лет назад
Родитель
Сommit
da68b1f80e
24 измененных файлов с 412 добавлено и 210 удалено
  1. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  2. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  3. 39 13
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAccountDao.java
  5. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysAccount.java
  6. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/PayService.java
  7. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysAccountService.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  9. 6 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  10. 16 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupStudentFeeServiceImpl.java
  12. 44 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  13. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRechargeServiceImpl.java
  15. 19 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysAccountServiceImpl.java
  16. 49 29
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  17. 3 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  18. 2 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  19. 10 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  20. 6 5
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  21. 7 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  22. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  23. 143 108
      mec-biz/src/main/resources/config/mybatis/SysAccountMapper.xml
  24. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayUtil.java

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -76,4 +76,25 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return java.math.BigDecimal
      */
     BigDecimal countAllCourseFee(@Param("classGroupId") Integer classGroupId);
+
+    /**
+     * @describe 删除用户在指定班级上的课程
+     * @author Joburgess
+     * @date 2019/12/3
+     * @param ids: 学生课程缴费信息编号
+     * @return int
+     */
+    int batchDeleteWithID(@Param("ids") List<Integer> ids);
+
+    /**
+     * @describe 获取用户在指定班级上缴费记录编号
+     * @author Joburgess
+     * @date 2019/12/3
+     * @param classGroupId:
+     * @param userId:
+     * @return java.util.List<java.lang.Integer>
+     */
+    List<Integer> findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent(@Param("classGroupId") Integer classGroupId,
+                                                                              @Param("userId") Integer userId);
+
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -77,10 +77,11 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	 * @param userId       老师编号
 	 * @param salary       课酬
 	 * @param subsidy      补贴
+	 * @param startDateTime      开始时间
 	 * @return
 	 */
 	int batchUpdateWages(@Param("classGroupId") Integer classGroupId, @Param("userId") Integer userId, @Param("salary") BigDecimal salary,
-						 @Param("subsidy") BigDecimal subsidy);
+			@Param("subsidy") BigDecimal subsidy, @Param("startDateTime") String startDateTime);
 
 	/**
 	 * @param courseScheduleId: 课程编号

+ 39 - 13
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -15,11 +15,12 @@ import java.util.Map;
 import java.util.Set;
 
 public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
-	
-	MusicGroup getLocked(String id);
+
+    MusicGroup getLocked(String id);
 
     /**
      * 获取学员所在乐团详情列表
+     *
      * @param userId
      * @return
      */
@@ -27,6 +28,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取个人中心乐团数据
+     *
      * @param userId
      * @return
      */
@@ -34,6 +36,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取用户有效的乐团数
+     *
      * @param userId
      * @return
      */
@@ -41,6 +44,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根据课程类型获取剩余课时
+     *
      * @param userId
      * @param type
      * @return
@@ -49,6 +53,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根绝学员编号获取相关老师列表
+     *
      * @param studentId
      * @return
      */
@@ -56,13 +61,15 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取学员所在乐团
+     *
      * @param userId
      * @return
      */
-    List<ImGroupModel> queryUserGroups(@Param("userId") Integer userId,@Param("search") String search);
+    List<ImGroupModel> queryUserGroups(@Param("userId") Integer userId, @Param("search") String search);
 
     /**
      * 获取乐团总人数
+     *
      * @param musicGroupIds
      * @return
      */
@@ -77,11 +84,12 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取教师所在乐团列表
+     *
      * @param userId
      * @param search
      * @return
      */
-    List<ImGroupModel> queryTeacherGroups(@Param("userId") Integer userId, @Param("search")String search);
+    List<ImGroupModel> queryTeacherGroups(@Param("userId") Integer userId, @Param("search") String search);
 
     /**
      * 获取当前乐团所有教师列表
@@ -92,6 +100,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根据乐团编号列表获取乐团在读人数map
+     *
      * @param musicGroupIds
      * @return
      */
@@ -99,29 +108,32 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取乐团列表
+     *
      * @param musicGroupIds
      * @return
      */
     List<MusicGroup> queryListByIds(@Param("musicGroupIds") String musicGroupIds);
 
     /**
+     * @param musicGroupIds: 乐团编号列表
+     * @return java.util.List<java.util.Map < java.lang.String, java.lang.String>>
      * @describe 根据乐团获取对应的结算方式
      * @author Joburgess
      * @date 2019/11/3
-     * @param musicGroupIds: 乐团编号列表
-     * @return java.util.List<java.util.Map<java.lang.String,java.lang.String>>
      */
-    List<Map<String,String>> findSettlementTypeByMusicGroups(@Param("musicGroupIds") List<String> musicGroupIds);
-    
+    List<Map<String, String>> findSettlementTypeByMusicGroups(@Param("musicGroupIds") List<String> musicGroupIds);
+
     /**
      * 查询首页的乐团数量
+     *
      * @param ogranId
      * @return
      */
-    Map<String,Integer> queryOrganMusicGroupNum(@Param("organId") String ogranId);
-    
+    Map<String, Integer> queryOrganMusicGroupNum(@Param("organId") String ogranId);
+
     /**
      * 查询本月乐团课程数
+     *
      * @param organId
      * @return
      */
@@ -129,36 +141,50 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取乐团下的教师map
+     *
      * @param musicGroupId
      * @return
      */
-    List<Map<Integer,String>> queryTeacherMap(String musicGroupId);
+    List<Map<Integer, String>> queryTeacherMap(String musicGroupId);
 
     /**
      * 获取乐团下的教师map
+     *
      * @param musicGroupId
      * @return
      */
-    List<Map<Integer,String>> queryTeacherIdMap(String musicGroupId);
+    List<Map<Integer, String>> queryTeacherIdMap(String musicGroupId);
 
     /**
      * 根据角色编号获取有权限的用户列表
+     *
      * @param roleIds
      * @return
      */
-    Set<Integer> queryUserIdByRoleId(@Param("roleIds") Set<Integer> roleIds,@Param("organIds") String organIds);
+    Set<Integer> queryUserIdByRoleId(@Param("roleIds") Set<Integer> roleIds, @Param("organIds") String organIds);
 
     /**
      * 获取教务老师时当前用户的乐团
+     *
      * @param userIds
      * @return
      */
     String queryEducationalMusicGroupId(Integer userIds);
 
+
+    /**
+     * 查询用户的乐团信息
+     *
+     * @param UserId
+     * @return
+     */
+    MusicGroup findUserMusicGroup(@Param("UserId") Integer UserId);
+
     /**
      * 获取乐团信息
      * @param list
      * @return
      */
     MusicGroup findMusicGroup(List<Long> list);
+
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAccountDao.java

@@ -16,4 +16,15 @@ public interface SysAccountDao extends BaseDAO<Integer, SysAccount> {
      * @return
      */
     SysAccount getPerAccount(@Param("amount") BigDecimal amount);
+
+    /**
+     * 获取一个支付账户
+     * @param company
+     * @param channel
+     * @param type
+     * @param amount
+     * @return
+     */
+    SysAccount getAccount(@Param("company") String company, @Param("channel") String channel, @Param("type") String type, @Param("amount") BigDecimal amount);
+
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysAccount.java

@@ -21,6 +21,11 @@ public class SysAccount {
     private String merNo;
 
     /**
+     * 分佣账户
+     */
+    private String routingMerNo;
+
+    /**
     * 最大收款金额
     */
     private BigDecimal maxReceipt;
@@ -104,4 +109,12 @@ public class SysAccount {
     public void setCompany(String company) {
         this.company = company;
     }
+
+    public String getRoutingMerNo() {
+        return routingMerNo;
+    }
+
+    public void setRoutingMerNo(String routingMerNo) {
+        this.routingMerNo = routingMerNo;
+    }
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/PayService.java

@@ -25,7 +25,8 @@ public interface PayService {
      * @return
      * @throws Exception
      */
-    Map<String,Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception;
+    Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer userId) throws Exception;
+
 
     Map query(String orderNo) throws Exception;
 

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysAccountService.java

@@ -11,8 +11,20 @@ public interface SysAccountService extends BaseService<Integer, SysAccount> {
 
     /**
      * 获取一个私户
+     *
      * @return
      */
     SysAccount getPerAccount(BigDecimal amount);
 
+
+    /**
+     * 获取一个收款账户
+     * @param company
+     * @param channel
+     * @param type
+     * @param amount
+     * @return
+     */
+    SysAccount getAccount(String company, String channel, String type,  BigDecimal amount);
+
 }

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

@@ -41,7 +41,7 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 	public static final String ATTENDANCE_RANGE = "attendance_range";
 
 	/**
-	 * 学生VIP课,允许请假的时间,为开课前{}小时
+	 * 学生允许请假的时间,为开课前{}小时
 	 */
 	public static final String ADVANCE_LEAVE_HOURS = "advance_leave_hours";
 

+ 6 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -337,7 +337,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             String courseScheduleName = subjectList.stream().map(subject -> subject.getName()).collect(Collectors.joining("/"));
 
-            while (highClassGroup.getCourseTimes() >= times) {
+            while (highClassGroup.getCourseTimes() > times) {
                 int dayOfWeek = now.getDayOfWeek().getValue();
                 if (highClassGroup.getDayOfWeek() == dayOfWeek) {
                     CourseSchedule courseSchedule = new CourseSchedule();
@@ -367,7 +367,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 now = now.plusDays(1);
             }
             //检测新排课冲突
-            //courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
+            courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
             courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
 
             List<Integer> userIdList = new ArrayList<>();
@@ -375,6 +375,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             //加入Im群组
             addImGroup(highClassGroup, userIdList);
+
         }
         redisCache.releaseLocked(key, value);
         return highClassGroupList;
@@ -1680,9 +1681,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(courseSchedule.getClassDate());
-            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
-            highClassGroup.setDayOfWeek(dayOfWeek - 1);
-
+            Integer dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1;
+            dayOfWeek =dayOfWeek.equals(0) ? 7 :dayOfWeek;
+            highClassGroup.setDayOfWeek(dayOfWeek);
         }
         return highClassGroupList;
     }

+ 16 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -21,6 +21,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -29,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -133,6 +135,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     private MusicGroupSubjectGoodsGroupService musicGroupSubjectGoodsGroupService;
     @Autowired
     private GoodsService goodsService;
+    
+    private SimpleDateFormat sdf_ymd = new SimpleDateFormat("yyyy-MM-dd");
+    
+    private SimpleDateFormat sdf_hms=new SimpleDateFormat("HH:mm:ss");
 
     @Override
     public BaseDAO<String, MusicGroup> getDAO() {
@@ -358,8 +364,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 orderNo,
                 "http://mstutest.dayaedu.com/api-student/studentOrder/notify",
                 "http://mstutest.dayaedu.com/#/paymentresult?orderNo=" + orderNo,
-                "测试订单",
-                "测试订单");
+                "乐团报名缴费",
+                "乐团报名缴费",
+                userId);
         
         studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
         studentPaymentOrder.setUpdateTime(date);
@@ -499,8 +506,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 orderNo,
                 "http://mstutest.dayaedu.com/api-student/studentOrder/notify",
                 "http://mstutest.dayaedu.com/#/paymentresult?orderNo=" + orderNo,
-                "测试订单",
-                "测试订单");
+                "乐团报名缴费",
+                "乐团报名缴费",
+                userId);
         
         studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
         studentPaymentOrder.setUpdateTime(date);
@@ -1160,7 +1168,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         try {
             Map<String, Object> payMap = payService.getPayMap(amount, studentPaymentOrder.getOrderNo(), "https://pay.dayaedu.com/api/yqpay/notify",
-                    "http://dev.dayaedu.com", "续费", "乐团续费");
+                    "http://dev.dayaedu.com", "续费", "乐团续费",userId);
             studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
             studentPaymentOrder.setUpdateTime(date);
             studentPaymentOrderService.update(studentPaymentOrder);
@@ -1262,9 +1270,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         if ("all".equals(scope)) {
-            Integer classGrpupId = courseSchedule.getClassGroupId();
+			Integer classGrpupId = courseSchedule.getClassGroupId();
+			String startDateTime = sdf_ymd.format(courseSchedule.getClassDate()) + " " + sdf_hms.format(courseSchedule.getStartClassTime());
             // 未结算的课酬都修改
-            courseScheduleTeacherSalaryDao.batchUpdateWages(classGrpupId, teacherId, salary, subsidy);
+            courseScheduleTeacherSalaryDao.batchUpdateWages(classGrpupId, teacherId, salary, subsidy, startDateTime);
         } else {
             CourseScheduleTeacherSalary courseScheduleTeacherSalary = courseScheduleTeacherSalaryDao.queryByCourseScheduleIdAndUserId(courseScheduleId,
                     teacherId);

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

@@ -52,7 +52,7 @@ public class MusicGroupStudentFeeServiceImpl extends BaseServiceImpl<Long, Music
 		List<MusicGroupStudentFee> musicGroupStudentFeeList = musicGroupStudentFeeDao.queryWillRenewList(days);
 
 		for (MusicGroupStudentFee musicGroupStudentFee : musicGroupStudentFeeList) {
-			if (musicGroupStudentFee.getPaymentStatus() == PaymentStatus.PAID_COMPLETED) {
+			if (musicGroupStudentFee.getPaymentStatus() == PaymentStatus.PAID_COMPLETED && musicGroupStudentFee.getCourseFee().doubleValue() > 0) {
 				musicGroupStudentFee.setPaymentStatus(PaymentStatus.NON_PAYMENT);
 				musicGroupStudentFee.setUpdateTime(date);
 				updateList.add(musicGroupStudentFee);

+ 44 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -1,6 +1,9 @@
 package com.ym.mec.biz.service.impl;
 
-
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.SysAccount;
 import com.ym.mec.biz.service.PayService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
@@ -28,6 +31,10 @@ public class PayServiceImpl implements PayService {
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
     private SysAccountService sysAccountService;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private SysConfigDao sysConfigDao;
 
 
     /**
@@ -42,20 +49,32 @@ public class PayServiceImpl implements PayService {
      * @return
      * @throws Exception
      */
-    @Override
-    public Map<String,Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception {
+    public Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer userId) throws Exception {
+
+        String company = "daya";
+        if (userId != null) {
+            MusicGroup musicGroup = musicGroupDao.findUserMusicGroup(userId);
+            if (musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
+                company = "yadie";
+            }
+        }
+
         //支付通道决策
-        SysAccount routingAccount = getRoutingAccount(amount);
         Map unionPay = new HashMap();
-        //Map payMap = new Pay().getPayMap(amount, orderNo, notifyUrl, orderSubject, orderBody);
+        SysAccount routingAccount = getRoutingAccount(company,amount);
+        Map payMap = null;
+        String type = null;
+        if (routingAccount.getChannel().equals("YQPAY")) {
+            payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody,routingAccount.getMerNo(), routingAccount.getRoutingMerNo());
+            type = "YQPAY";
+        } else {
+            payMap = new Pay().getPayMap(amount, orderNo, notifyUrl, orderSubject, orderBody);
+            type = "ADAPAY";
+        }
 
         unionPay.put("orderNo", orderNo);
-       // unionPay.put("type", "ADAPAY");
-
-        Map payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, null);
-        unionPay.put("type", "YQPAY");
+        unionPay.put("type", type);
         unionPay.put("payMap", payMap);
-
         return unionPay;
     }
 
@@ -64,21 +83,29 @@ public class PayServiceImpl implements PayService {
         return new UnionPay(unionPayFeignService).query(orderNo);
     }
 
-
     /**
-     * 获取收款账户
-     *
+     * 获取收款账户
+     * @param company
      * @param money
      * @return
      */
-    private SysAccount getRoutingAccount(BigDecimal money) {
+    private SysAccount getRoutingAccount(String company, BigDecimal money) {
         SysAccount routingAccount = null;
         int payOrderNums = studentPaymentOrderService.findPayOrderNum(); //获取支付中和成功的订单数
-        //分佣账户(1、每10笔,前四笔收入私户)
+        //前几笔收入私户
+        Integer nums = Integer.parseInt(sysConfigDao.findConfigValue("per_account_nums"));
+
+        String type = null;
+        String channel = null;
         int rem = (payOrderNums + 1) % 10;
-        if (rem > 0 && rem <= 5) { //私人账户
-            routingAccount = sysAccountService.getPerAccount(money);
+        if (rem > 0 && rem <= nums) { //私人账户
+            channel = sysConfigDao.findConfigValue("per_account_channel");
+            type = "PER";
+        } else {
+            channel = sysConfigDao.findConfigValue("com_account_channel");
+            type = "COM";
         }
+        routingAccount = sysAccountService.getAccount(company, channel, type, null);
 
         return routingAccount;
     }

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

@@ -203,7 +203,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 
 		Date date = new Date();
 		
-		int days = 24;
+		int days = 1;
 		String str = sysConfigDao.findConfigValue(SysConfigService.ADVANCE_LEAVE_HOURS);
 		if (StringUtils.isNotBlank(str)) {
 			days = Integer.parseInt(str);

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

@@ -79,7 +79,7 @@ public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentR
 
 		try {
 			return payService.getPayMap(amount, studentRecharge.getOrderNo(), "https://pay.dayaedu.com/api/yqpay/notify", "http://dev.dayaedu.com", "充值",
-					"充值");
+					"充值",userId);
 		} catch (Exception e) {
 			throw new BizException("调用支付接口出错", e);
 		}

+ 19 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysAccountServiceImpl.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.entity.SysArea;
 import com.ym.mec.biz.service.SysAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -14,18 +15,23 @@ import java.util.List;
 
 @Service
 public class SysAccountServiceImpl extends BaseServiceImpl<Integer, SysAccount> implements SysAccountService {
-	
-	@Autowired
-	private SysAccountDao sysAccountDao;
-
-	@Override
-	public BaseDAO<Integer, SysAccount> getDAO() {
-		return sysAccountDao;
-	}
-
-	@Override
-	public SysAccount getPerAccount(BigDecimal money) {
-		return sysAccountDao.getPerAccount(money);
-	}
+
+    @Autowired
+    private SysAccountDao sysAccountDao;
+
+    @Override
+    public BaseDAO<Integer, SysAccount> getDAO() {
+        return sysAccountDao;
+    }
+
+    @Override
+    public SysAccount getPerAccount(BigDecimal money) {
+        return sysAccountDao.getPerAccount(money);
+    }
+
+    @Override
+    public SysAccount getAccount(String company, String channel, String type, BigDecimal amount) {
+        return sysAccountDao.getAccount(company, channel, type, amount);
+    }
 
 }

+ 49 - 29
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1013,7 +1013,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					"http://mstutest.dayaedu.com/api-student/studentOrder/notify",
 					"http://mstutest.dayaedu.com/#/paymentresult?orderNo=" + orderNo,
 					"vip课购买",
-					vipGroup.getName());
+					vipGroup.getName(),
+					user.getId());
 			studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
 			studentPaymentOrder.setUpdateTime(date);
 			studentPaymentOrderService.update(studentPaymentOrder);
@@ -1171,8 +1172,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		courseScheduleService.batchDeleteMusicGroupCourseWithStudent(vipGroupId.toString(),studentId,GroupType.VIP);
 
-		classGroup.setStudentNum(classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId()));
-		classGroupDao.update(classGroup);
+        List<Integer> studentPaymentIds = courseScheduleStudentPaymentDao.findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent(classGroup.getId(), studentId);
+        if(!CollectionUtils.isEmpty(studentPaymentIds)){
+            courseScheduleStudentPaymentDao.batchDeleteWithID(studentPaymentIds);
+        }
+
+//		classGroup.setStudentNum(classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId()));
+//		classGroupDao.update(classGroup);
 
 		//学员退出班级群
 		ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentId.toString())};
@@ -1256,10 +1262,15 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.QUIT);
 				classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
 
-				ClassGroup classGroup=new ClassGroup();
-				classGroup.setId(classStudentMapperByUserIdAndClassGroupId.getClassGroupId());
-				classGroup.setStudentNum(classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId()));
-				classGroupDao.update(classGroup);
+//				ClassGroup classGroup=new ClassGroup();
+//				classGroup.setId(classStudentMapperByUserIdAndClassGroupId.getClassGroupId());
+//				classGroup.setStudentNum(classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId()));
+//				classGroupDao.update(classGroup);
+
+                List<Integer> studentPaymentIds = courseScheduleStudentPaymentDao.findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent(classStudentMapperByUserIdAndClassGroupId.getClassGroupId(), studentApplyRefunds.getUserId());
+                if(!CollectionUtils.isEmpty(studentPaymentIds)){
+                    courseScheduleStudentPaymentDao.batchDeleteWithID(studentPaymentIds);
+                }
 
 				courseScheduleService.batchDeleteMusicGroupCourseWithStudent(studentPaymentOrder.getMusicGroupId(),studentApplyRefunds.getUserId(),GroupType.VIP);
 
@@ -1563,7 +1574,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 		ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId, null);
 
-		Integer exitStudentNum = classGroupStudentMapperDao.countClassGroupExitStudentNum(classGroup.getId(), studentIds);
+        Integer studentNum = classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId());
+        if(studentNum.compareTo(classGroup.getExpectStudentNum())>=0){
+            throw new BizException("该班级人数已达上限");
+        }
+
+        Integer exitStudentNum = classGroupStudentMapperDao.countClassGroupExitStudentNum(classGroup.getId(), studentIds);
 		if(exitStudentNum>0){
 			throw new BizException("选择的学生中存在此课程中已存在的学生");
 		}
@@ -1583,11 +1599,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOnlineClassesUnitPrice());
 			}
 		}
-		List<CourseSchedule> vipGroupCourseSchedules=courseScheduleDao.findVipGroupCourseSchedules(vipGroupId);
-
-		if(CollectionUtils.isEmpty(vipGroupCourseSchedules)){
-			throw new BizException("此vip课不存在课程");
-		}
 
 		List<ImGroupMember> imGroupMemberList = new ArrayList<>();
 		List<ClassGroupStudentMapper> classGroupStudentMappers=new ArrayList<>();
@@ -1600,7 +1611,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 //			courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,studentId);
 
 			List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
-			for (CourseSchedule vipGroupCourseSchedule : vipGroupCourseSchedules) {
+			for (CourseSchedule vipGroupCourseSchedule : surplusCourses) {
 				CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
 				courseScheduleStudentPayment.setGroupType(GroupType.VIP);
 				courseScheduleStudentPayment.setMusicGroupId(vipGroupId.toString());
@@ -1630,8 +1641,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMappers);
 
-		classGroup.setStudentNum(classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId()));
-		classGroupDao.update(classGroup);
+//		classGroup.setStudentNum(classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId()));
+//		classGroupDao.update(classGroup);
 
 		try {
 			ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
@@ -1702,22 +1713,31 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		List<VipGroup> normalVipGroupList = vipGroupDao.queryNormalStatusList();
 		if (!CollectionUtils.isEmpty(normalVipGroupList)){
             Date now = new Date();
+            List<VipGroup> needUpdateVipGroups = new ArrayList<>();
             for (VipGroup vipGroup : normalVipGroupList) {
-                if(now.before(vipGroup.getRegistrationStartTime())){
-                    vipGroup.setStatus(VipGroupStatusEnum.NOT_START);
-                }
-                if(vipGroup.getRegistrationStartTime().before(now)&&vipGroup.getCoursesExpireDate().after(now)){
-                    vipGroup.setStatus(VipGroupStatusEnum.APPLYING);
-                }
-                if(vipGroup.getCoursesExpireDate().before(now)&&vipGroup.getCourseStartDate().after(now)){
-                    vipGroup.setStatus(VipGroupStatusEnum.APPLYING_END);
-                }
-                if(vipGroup.getCourseStartDate().before(now)&&vipGroup.getCoursesExpireDate().after(now)){
-                    vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
+                try {
+                    if(now.before(vipGroup.getRegistrationStartTime())){
+                        vipGroup.setStatus(VipGroupStatusEnum.NOT_START);
+                    }
+                    if(vipGroup.getRegistrationStartTime().before(now)&&vipGroup.getCoursesExpireDate().after(now)){
+                        vipGroup.setStatus(VipGroupStatusEnum.APPLYING);
+                    }
+                    if(vipGroup.getCoursesExpireDate().before(now)&&vipGroup.getCourseStartDate().after(now)){
+                        vipGroup.setStatus(VipGroupStatusEnum.APPLYING_END);
+                    }
+                    if(vipGroup.getCourseStartDate().before(now)&&vipGroup.getCoursesExpireDate().after(now)){
+                        vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
+                    }
+                    VipGroup vipGroup1 = new VipGroup();
+                    vipGroup1.setId(vipGroup.getId());
+                    vipGroup1.setStatus(vipGroup.getStatus());
+                    vipGroup1.setUpdateTime(now);
+                    needUpdateVipGroups.add(vipGroup1);
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
-                vipGroup.setUpdateTime(now);
             }
-            vipGroupDao.batchUpdate(normalVipGroupList);
+            vipGroupDao.batchUpdate(needUpdateVipGroups);
         }
 	}
 

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

@@ -134,10 +134,11 @@
         FROM
             course_schedule_student_payment cssp
             LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
-            LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_
-            AND cssp.user_id_ = sa.user_id_
+            LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
+            LEFT JOIN class_group_student_mapper cgsm ON cssp.user_id_=cgsm.user_id_ AND cssp.class_group_id_=cgsm.class_group_id_
         WHERE
             cssp.course_schedule_id_ =#{courseScheduleId}
+            AND cgsm.status_!='QUIT'
     </select>
 
     <update id="deleteStudentByMusicGroupId" parameterType="map">

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -974,7 +974,6 @@
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             AND cs.class_group_id_ = #{classGroupId}
             AND csts.user_id_ = #{userId}
-            AND csts.expect_salary_ != 0
             <if test="onlyHistory!=null and onlyHistory==1">
                 AND CONCAT( cs.class_date_, ' ', cs.end_class_time_ )&lt;now()
             </if>
@@ -1333,6 +1332,8 @@
     <select id="findByClassGroupAndStatus" resultMap="CourseSchedule">
       select
         cs.id_,
+        cs.group_type_,
+        cs.music_group_id_,
         cs.class_group_id_,
         cs.status_,
         cs.subsidy_,

+ 10 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -162,8 +162,11 @@
 		(cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
 		AND cs.class_group_id_ = #{classGroupId}
     </select>
+	<select id="findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent" resultType="int">
+		SELECT id_ FROM course_schedule_student_payment WHERE class_group_id_=#{classGroupId} AND user_id_=#{userId}
+	</select>
 
-    <delete id="deleteStudentCourseSchedule">
+	<delete id="deleteStudentCourseSchedule">
 		DELETE FROM course_schedule_student_payment WHERE user_id_ = #{userId} AND course_schedule_id_ IN
 		<foreach collection="courseScheduleList" item="courseSchedule" index="index" open="(" close=")" separator=",">
 			#{courseSchedule.id}
@@ -175,4 +178,10 @@
 			#{courseScheduleId}
 		</foreach>
 	</delete>
+    <delete id="batchDeleteWithID">
+		DELETE FROM course_schedule_student_payment WHERE id_ IN
+		<foreach collection="ids" item="id" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+    </delete>
 </mapper>

+ 6 - 5
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -312,11 +312,12 @@
     </select>
 
 	<update id="batchUpdateWages" parameterType="map">
-		UPDATE course_schedule_teacher_salary set
-			subsidy_ = #{subsidy},
-			expect_salary_ = #{salary},
-			update_time_ = now()
-		WHERE user_id_ = #{userId} and class_group_id_ = #{classGroupId}
+		UPDATE course_schedule_teacher_salary csts left join course_schedule cs on csts.course_schedule_id_ = cs.id_ 
+		set
+			csts.subsidy_ = #{subsidy},
+			csts.expect_salary_ = #{salary},
+			csts.update_time_ = now()
+		WHERE csts.user_id_ = #{userId} and csts.class_group_id_ = #{classGroupId} and csts.settlement_time_ is null and CONCAT(cs.class_date_,' ',cs.start_class_time_) &gt; #{startDateTime}
 	</update>
     <update id="batchUpdateTeacherExpectSalary">
 		UPDATE course_schedule_teacher_salary

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -379,6 +379,13 @@
 	<select id="queryEducationalMusicGroupId" resultType="java.lang.String">
 		SELECT GROUP_CONCAT(mg.id_) FROM music_group mg WHERE mg.educational_teacher_id_ = #{userIds}
 	</select>
+
+	<select id="findUserMusicGroup" resultMap="MusicGroup">
+		SELECT mg.* FROM music_group mg
+		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+		WHERE sr.user_id_ = #{UserId} AND sr.payment_status_= '2' ORDER BY sr.id_ ASC LIMIT 1
+	</select>
+
     <select id="findMusicGroup" resultMap="MusicGroup">
 		SELECT mg.* FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_

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

@@ -246,7 +246,7 @@
         <![CDATA[
         SELECT COUNT(*)
         FROM student_payment_order
-        WHERE status_ <= 2
+        WHERE FIND_IN_SET(status_,'SUCCESS,ING,WAIT_PAY')
         ]]>
     </select>
 

+ 143 - 108
mec-biz/src/main/resources/config/mybatis/SysAccountMapper.xml

@@ -1,112 +1,147 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ym.mec.biz.dal.dao.SysAccountDao">
-  <resultMap id="SysAccount" type="com.ym.mec.biz.dal.entity.SysAccount">
-    <!--@Table sys_account-->
-    <id column="id_" jdbcType="INTEGER" property="id" />
-    <result column="company_" jdbcType="VARCHAR" property="company" />
-    <result column="mer_no_" jdbcType="VARCHAR" property="merNo" />
-    <result column="max_receipt_" jdbcType="DECIMAL" property="maxReceipt" />
-    <result column="has_receipt_" jdbcType="DECIMAL" property="hasReceipt" />
-    <result column="channel_" jdbcType="VARCHAR" property="channel" />
-    <result column="type_" jdbcType="CHAR" property="type" />
-    <result column="version" jdbcType="INTEGER" property="version" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    id_,company_, mer_no_, max_receipt_, has_receipt_, channel_, type_, version
-  </sql>
-  <select id="get" parameterType="java.lang.Integer" resultMap="SysAccount">
-    <!--@mbg.generated-->
-    select 
-    <include refid="Base_Column_List" />
-    from sys_account
-    where id_ = #{id,jdbcType=INTEGER}
-  </select>
-  <delete id="delete" parameterType="java.lang.Integer">
-    <!--@mbg.generated-->
-    delete from sys_account
-    where id_ = #{id,jdbcType=INTEGER}
-  </delete>
-  <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.SysAccount" useGeneratedKeys="true">
-    <!--@mbg.generated-->
-    insert into sys_account
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="company != null">
-        company_,
-      </if>
-      <if test="merNo != null">
-        mer_no_,
-      </if>
-      <if test="maxReceipt != null">
-        max_receipt_,
-      </if>
-      <if test="hasReceipt != null">
-        has_receipt_,
-      </if>
-      <if test="channel != null">
-        channel_,
-      </if>
-      <if test="type != null">
-        type_,
-      </if>
-      <if test="version != null">
-        version,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="company != null">
-        #{company,jdbcType=VARCHAR},
-      </if>
-      <if test="merNo != null">
-        #{merNo,jdbcType=VARCHAR},
-      </if>
-      <if test="maxReceipt != null">
-        #{maxReceipt,jdbcType=DECIMAL},
-      </if>
-      <if test="hasReceipt != null">
-        #{hasReceipt,jdbcType=DECIMAL},
-      </if>
-      <if test="channel != null">
-        #{channel,jdbcType=VARCHAR},
-      </if>
-      <if test="type != null">
-          #{type,jdbcType=CHAR},
-      </if>
-      <if test="version != null">
-        #{version,jdbcType=INTEGER},
-      </if>
-    </trim>
-  </insert>
-  <update id="update" parameterType="com.ym.mec.biz.dal.entity.SysAccount">
-    <!--@mbg.generated-->
-    update sys_account
-    <set>
-      <if test="company != null">
-        company_ = #{company,jdbcType=VARCHAR},
-      </if>
-      <if test="merNo != null">
-        mer_no_ = #{merNo,jdbcType=VARCHAR},
-      </if>
-      <if test="maxReceipt != null">
-        max_receipt_ = #{maxReceipt,jdbcType=DECIMAL},
-      </if>
-      <if test="hasReceipt != null">
-        has_receipt_ = #{hasReceipt,jdbcType=DECIMAL},
-      </if>
-      <if test="channel != null">
-        channel_ = #{channel,jdbcType=VARCHAR},
-      </if>
-      <if test="type != null">
-          type_ = #{type,jdbcType=CHAR},
-      </if>
-      <if test="version != null">
-        version = version+1,
-      </if>
-    </set>
-    where id_ = #{id,jdbcType=INTEGER} AND version =#{version}
-  </update>
-  <!-- 获取一个私户账户 -->
-  <select id="getPerAccount" resultMap="SysAccount">
-    SELECT * FROM sys_account WHERE channel_ = 'YQPAY' AND type_ = 'PER'
-  </select>
+    <resultMap id="SysAccount" type="com.ym.mec.biz.dal.entity.SysAccount">
+        <!--@Table sys_account-->
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="company_" jdbcType="VARCHAR" property="company"/>
+        <result column="mer_no_" jdbcType="VARCHAR" property="merNo"/>
+        <result column="routing_mer_no_" jdbcType="VARCHAR" property="routingMerNo"/>
+        <result column="max_receipt_" jdbcType="DECIMAL" property="maxReceipt"/>
+        <result column="has_receipt_" jdbcType="DECIMAL" property="hasReceipt"/>
+        <result column="channel_" jdbcType="VARCHAR" property="channel"/>
+        <result column="type_" jdbcType="CHAR" property="type"/>
+        <result column="version" jdbcType="INTEGER" property="version"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+            id_,
+            company_,
+            mer_no_,
+            routing_mer_no_,
+            max_receipt_,
+            has_receipt_,
+            channel_,
+            type_,
+            version
+    </sql>
+    <select id="get" parameterType="java.lang.Integer" resultMap="SysAccount">
+        <!--@mbg.generated-->
+        select
+        <include refid="Base_Column_List"/>
+        from sys_account
+        where id_ = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="delete" parameterType="java.lang.Integer">
+        <!--@mbg.generated-->
+        delete from sys_account
+        where id_ = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.SysAccount"
+            useGeneratedKeys="true">
+        <!--@mbg.generated-->
+        insert into sys_account
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="company != null">
+                company_,
+            </if>
+            <if test="merNo != null">
+                mer_no_,
+            </if>
+            <if test="merNo != null">
+                routing_mer_no_,
+            </if>
+            <if test="maxReceipt != null">
+                max_receipt_,
+            </if>
+            <if test="hasReceipt != null">
+                has_receipt_,
+            </if>
+            <if test="channel != null">
+                channel_,
+            </if>
+            <if test="type != null">
+                type_,
+            </if>
+            <if test="version != null">
+                version,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="company != null">
+                #{company,jdbcType=VARCHAR},
+            </if>
+            <if test="merNo != null">
+                #{merNo,jdbcType=VARCHAR},
+            </if>
+            <if test="routingMerNo != null">
+                #{routingMerNo,jdbcType=VARCHAR},
+            </if>
+            <if test="maxReceipt != null">
+                #{maxReceipt,jdbcType=DECIMAL},
+            </if>
+            <if test="hasReceipt != null">
+                #{hasReceipt,jdbcType=DECIMAL},
+            </if>
+            <if test="channel != null">
+                #{channel,jdbcType=VARCHAR},
+            </if>
+            <if test="type != null">
+                #{type,jdbcType=CHAR},
+            </if>
+            <if test="version != null">
+                #{version,jdbcType=INTEGER},
+            </if>
+        </trim>
+    </insert>
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.SysAccount">
+        <!--@mbg.generated-->
+        update sys_account
+        <set>
+            <if test="company != null">
+                company_ = #{company,jdbcType=VARCHAR},
+            </if>
+            <if test="merNo != null">
+                mer_no_ = #{merNo,jdbcType=VARCHAR},
+            </if>
+            <if test="routingMerNo != null">
+                routing_mer_no_ = #{routingMerNo,jdbcType=VARCHAR},
+            </if>
+            <if test="maxReceipt != null">
+                max_receipt_ = #{maxReceipt,jdbcType=DECIMAL},
+            </if>
+            <if test="hasReceipt != null">
+                has_receipt_ = #{hasReceipt,jdbcType=DECIMAL},
+            </if>
+            <if test="channel != null">
+                channel_ = #{channel,jdbcType=VARCHAR},
+            </if>
+            <if test="type != null">
+                type_ = #{type,jdbcType=CHAR},
+            </if>
+            <if test="version != null">
+                version = version+1,
+            </if>
+        </set>
+        where id_ = #{id,jdbcType=INTEGER} AND version =#{version}
+    </update>
+    <!-- 获取一个私户账户 -->
+    <select id="getPerAccount" resultMap="SysAccount">
+        SELECT *
+        FROM sys_account
+        WHERE channel_ = 'YQPAY'
+          AND type_ = 'PER'
+    </select>
+
+    <select id="getAccount" resultMap="SysAccount">
+        SELECT * FROM sys_account WHERE company_=#{company}
+        <if test="channel != null">
+            AND channel_ = #{channel}
+        </if>
+        <if test="type != null">
+            AND type_ = #{type}
+        </if>
+        <if test="amount != null">
+            <![CDATA[AND max_receipt_ < has_receipt_+ #{amount}]]>
+        </if>
+    </select>
 </mapper>

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayUtil.java

@@ -40,7 +40,7 @@ public class YqPayUtil {
      * @return
      * @throws Exception
      */
-    public static Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String routingMerNo) throws Exception {
+    public static Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody,String merNo, String routingMerNo) throws Exception {
         List<Map> tempRoutingList = new ArrayList();
         Map<String, Object> routingList = new HashMap<>();
         routingList.put("routingMerNo", routingMerNo);//分佣账户
@@ -57,7 +57,7 @@ public class YqPayUtil {
         contentMap.put("merMerOrderNo", orderNo); //商户订单号
         contentMap.put("orderSubject", orderSubject); //订单标题
         contentMap.put("returnUrl", returnUrl); //前台页面地址
-        if (routingMerNo != null && !routingMerNo.isEmpty()) {
+        if (routingMerNo != null && !routingMerNo.isEmpty() && !merNo.equals(routingMerNo)) {
             contentMap.put("tempRoutingList", JSON.toJSONString(tempRoutingList));//分账设置
         }
         Map<String, Object> payMap = getRequestMap(notifyUrl, contentMap);