Przeglądaj źródła

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

zouxuan 5 lat temu
rodzic
commit
c6cdb81148

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

@@ -6,6 +6,7 @@ import com.ym.mec.common.dal.BaseDAO;
 public interface StudentRechargeDao extends BaseDAO<String, StudentRecharge> {
 
 
-    StudentRecharge selectByTransNo(String transNo);
+    StudentRecharge queryByTransNo(String transNo);
 	
+    StudentRecharge queryByOrderNo(String orderNo);
 }

+ 22 - 33
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroup4MixDto.java

@@ -25,21 +25,18 @@ public class ClassGroup4MixDto {
     @ApiModelProperty(value = "老师设置", required = true)
     private List<ClassGroupTeacherMapper> classGroupTeacherMapperList;
 
+    @ApiModelProperty(value = "是否跳过节假日 true-跳过 false-不跳过", required = true)
+    private Boolean isHoliday;
+
     @ApiModelProperty(value = "开始时间", required = true)
     private String startDate;
 
-    @ApiModelProperty(value = "排课星期几",required = true)
-    private Integer dayOfWeek;
-
-    @ApiModelProperty(value = "上课开始时间",required = true)
-    private String startClassTime;
-
-    @ApiModelProperty(value = "上课结束时间",required = true)
-    private String endClassTime;
-
     @ApiModelProperty(value = "排课次数", required = true)
     private Integer courseTimes;
 
+    @ApiModelProperty(value = "排课方式", required = true)
+    private List<CourseTimeDto> courseTimeDtoList;
+
     public String getMusicGroupId() {
         return musicGroupId;
     }
@@ -88,30 +85,6 @@ public class ClassGroup4MixDto {
         this.startDate = startDate;
     }
 
-    public Integer getDayOfWeek() {
-        return dayOfWeek;
-    }
-
-    public void setDayOfWeek(Integer dayOfWeek) {
-        this.dayOfWeek = dayOfWeek;
-    }
-
-    public String getStartClassTime() {
-        return startClassTime;
-    }
-
-    public void setStartClassTime(String startClassTime) {
-        this.startClassTime = startClassTime;
-    }
-
-    public String getEndClassTime() {
-        return endClassTime;
-    }
-
-    public void setEndClassTime(String endClassTime) {
-        this.endClassTime = endClassTime;
-    }
-
     public Integer getCourseTimes() {
         return courseTimes;
     }
@@ -127,4 +100,20 @@ public class ClassGroup4MixDto {
     public void setMixClassGroupId(Integer mixClassGroupId) {
         this.mixClassGroupId = mixClassGroupId;
     }
+
+    public Boolean getHoliday() {
+        return isHoliday;
+    }
+
+    public void setHoliday(Boolean holiday) {
+        isHoliday = holiday;
+    }
+
+    public List<CourseTimeDto> getCourseTimeDtoList() {
+        return courseTimeDtoList;
+    }
+
+    public void setCourseTimeDtoList(List<CourseTimeDto> courseTimeDtoList) {
+        this.courseTimeDtoList = courseTimeDtoList;
+    }
 }

+ 39 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseTimeDto.java

@@ -0,0 +1,39 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class CourseTimeDto {
+
+    @ApiModelProperty(value = "排课星期几",required = true)
+    private Integer dayOfWeek;
+
+    @ApiModelProperty(value = "上课开始时间",required = true)
+    private String startClassTime;
+
+    @ApiModelProperty(value = "上课结束时间",required = true)
+    private String endClassTime;
+
+    public Integer getDayOfWeek() {
+        return dayOfWeek;
+    }
+
+    public void setDayOfWeek(Integer dayOfWeek) {
+        this.dayOfWeek = dayOfWeek;
+    }
+
+    public String getStartClassTime() {
+        return startClassTime;
+    }
+
+    public void setStartClassTime(String startClassTime) {
+        this.startClassTime = startClassTime;
+    }
+
+    public String getEndClassTime() {
+        return endClassTime;
+    }
+
+    public void setEndClassTime(String endClassTime) {
+        this.endClassTime = endClassTime;
+    }
+}

+ 34 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRecharge.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 
 import io.swagger.annotations.ApiModelProperty;
@@ -19,12 +20,14 @@ public class StudentRecharge {
 	
 	/** 用户编号 */
 	@ApiModelProperty(value = "用户编号",required = false)
-	private Long userId;
+	private Integer userId;
 	
 	/** 交易流水号,第三方支付机构返回的 */
 	@ApiModelProperty(value = "交易流水号",required = false)
 	private String transNo;
 	
+	private String orderNo;
+	
 	/** 1,交易中;2,成功交易;3,交易失败;4,交易关闭 */
 	@ApiModelProperty(value = "交易状态",required = false)
 	private DealStatusEnum status;
@@ -59,6 +62,10 @@ public class StudentRecharge {
 	/** 最后修改时间 */
 	private java.util.Date modifyTime;
 	
+	private SysUser user = new SysUser();
+	
+	private SysUserCashAccountDetail detail = new SysUserCashAccountDetail();
+	
 	public void setId(String id){
 		this.id = id;
 	}
@@ -67,11 +74,11 @@ public class StudentRecharge {
 		return this.id;
 	}
 			
-	public void setUserId(Long userId){
+	public void setUserId(Integer userId){
 		this.userId = userId;
 	}
 	
-	public Long getUserId(){
+	public Integer getUserId(){
 		return this.userId;
 	}
 			
@@ -83,6 +90,14 @@ public class StudentRecharge {
 		return this.transNo;
 	}
 
+	public String getOrderNo() {
+		return orderNo;
+	}
+
+	public void setOrderNo(String orderNo) {
+		this.orderNo = orderNo;
+	}
+
 	public DealStatusEnum getStatus() {
 		return status;
 	}
@@ -155,6 +170,22 @@ public class StudentRecharge {
 		return this.modifyTime;
 	}
 			
+	public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+
+	public SysUserCashAccountDetail getDetail() {
+		return detail;
+	}
+
+	public void setDetail(SysUserCashAccountDetail detail) {
+		this.detail = detail;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 23 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRechargeQueryInfo.java

@@ -1,12 +1,29 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.TransTypeEnum;
 import com.ym.mec.common.page.QueryInfo;
 
-/**
- * @author : chengp
- * @version V1.0
- * @Description: TODO
- * @date Date : 2019年09月24日 10:07
- */
 public class StudentRechargeQueryInfo extends QueryInfo {
+
+	private DealStatusEnum status;
+	
+	private TransTypeEnum transType;
+
+	public DealStatusEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(DealStatusEnum status) {
+		this.status = status;
+	}
+
+	public TransTypeEnum getTransType() {
+		return transType;
+	}
+
+	public void setTransType(TransTypeEnum transType) {
+		this.transType = transType;
+	}
+
 }

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

@@ -19,7 +19,6 @@ import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
-import org.apache.ibatis.annotations.Param;
 
 public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	/**

+ 19 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRechargeService.java

@@ -1,16 +1,28 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.biz.dal.dto.RechargeDto;
+import java.math.BigDecimal;
+import java.util.Map;
+
 import com.ym.mec.biz.dal.entity.StudentRecharge;
 import com.ym.mec.common.service.BaseService;
+import com.ym.mec.thirdparty.union.NotifyMsg;
 
 public interface StudentRechargeService extends BaseService<String, StudentRecharge> {
 
-    /**
-     * 账户充值
-     * @param rechargeDto
-     */
-    Boolean recharge(RechargeDto rechargeDto);
+	/**
+	 * 账户充值
+	 * @param userId
+	 * @param bankCardNo
+	 * @param amount
+	 */
+	Map<?,?> recharge(Integer userId, String bankCardNo, BigDecimal amount);
+	
+	/**
+	 * 充值回调
+	 * @param notifyMsg
+	 * @return
+	 */
+	boolean rechargeCallback(NotifyMsg notifyMsg);
 
-    StudentRecharge selectByTransNo(String transNo);
+	StudentRecharge queryByTransNo(String transNo);
 }

+ 111 - 94
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -21,7 +21,9 @@ import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateConvertor;
 import com.ym.mec.util.date.DateUtil;
+import jdk.nashorn.internal.ir.WhileNode;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -802,6 +804,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroup.setStudentNum(studentList.size());
         classGroup.setType(ClassGroupTypeEnum.NORMAL);
         classGroup.setDelFlag(YesOrNoEnum.NO);
+        classGroup.setCurrentClassTimes(0);
+        classGroup.setTotalClassTimes(classGroup4MixDto.getCourseTimes());
         classGroup.setCreateTime(date);
         classGroup.setUpdateTime(date);
         classGroupDao.insert(classGroup);
@@ -827,32 +831,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //3、将老师加入关联关系
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 
-        //课时长度
-        long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getStartClassTime() + ":00"),
-                LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getEndClassTime() + ":00"))
-                .toMinutes();
 
         for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
             classGroupTeacherMapper.setClassGroupId(classGroup.getId());
             classGroupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
-
-            List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
-            BigDecimal salary = new BigDecimal("0");
-            for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherSalaryList) {
-                //对应基准课酬
-                BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
-                //基准课酬
-                if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
-                    salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
-                    break;
-                }
-                //阶梯课酬
-                if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
-                    salary = baseSalary;
-                    break;
-                }
-            }
-            classGroupTeacherMapper.setSalary(salary);
         }
         classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
 
@@ -864,13 +846,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
         BigDecimal expectPrice = new BigDecimal("0");
         int times = 0;
+        WhileNode:
         while (true) {
-            int dayOfWeek = now.getDayOfWeek().getValue();
-            if (classGroup4MixDto.getDayOfWeek().equals(dayOfWeek)) {
-                Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
-                Date classDate = Date.from(instant);
-                String startClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getStartClassTime() + ":00";
-                String endClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getEndClassTime() + ":00";
+            int dayOfWeek = now.getDayOfWeek().getValue();//当前星期
+            for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
+                if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
+
+                //课时长度
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00"),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00"))
+                        .toMinutes();
+
+
+                Date classDate = DateConvertor.toDate(now);
+                String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00";
+                String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00";
 
                 CourseSchedule courseSchedule = new CourseSchedule();
                 courseSchedule.setSchoolId(schoolId);
@@ -890,11 +880,28 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 times++;
 
                 for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+                    List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
+                    BigDecimal salary = new BigDecimal("0");
+                    for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherSalaryList) {
+                        //对应基准课酬
+                        BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
+                        //基准课酬
+                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            break;
+                        }
+                        //阶梯课酬
+                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+                            salary = baseSalary;
+                            break;
+                        }
+                    }
+
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                     courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
                     courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
                     courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
-                    courseScheduleTeacherSalary.setExpectSalary(classGroupTeacherMapper.getSalary());
+                    courseScheduleTeacherSalary.setExpectSalary(salary);
                     courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
                     courseScheduleTeacherSalary.setCreateTime(date);
                     courseScheduleTeacherSalary.setUpdateTime(date);
@@ -910,12 +917,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
                     courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
                 }
-
+                if (classGroup4MixDto.getCourseTimes().equals(times)) {
+                    break WhileNode;
+                }
             }
             now = now.plusDays(1);
-            if (classGroup4MixDto.getCourseTimes().equals(times)) {
-                break;
-            }
         }
         //老师结算表
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
@@ -1016,32 +1022,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //3、将老师加入关联关系
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 
-        //课时长度
-        long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getStartClassTime() + ":00"),
-                LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getEndClassTime() + ":00"))
-                .toMinutes();
 
         for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
             classGroupTeacherMapper.setClassGroupId(classGroup.getId());
             classGroupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
-
-            List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
-            BigDecimal salary = new BigDecimal("0");
-            for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherSalaryList) {
-                //对应基准课酬
-                BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
-                //基准课酬
-                if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
-                    salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
-                    break;
-                }
-                //阶梯课酬
-                if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
-                    salary = baseSalary;
-                    break;
-                }
-            }
-            classGroupTeacherMapper.setSalary(salary);
         }
         classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
 
@@ -1053,13 +1037,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
         BigDecimal expectPrice = new BigDecimal("0");
         int times = 0;
+        WhileNode:
         while (true) {
             int dayOfWeek = now.getDayOfWeek().getValue();
-            if (classGroup4MixDto.getDayOfWeek().equals(dayOfWeek)) {
-                Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
-                Date classDate = Date.from(instant);
-                String startClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getStartClassTime() + ":00";
-                String endClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getEndClassTime() + ":00";
+            for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
+                if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
+
+                //课时长度
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00"),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00"))
+                        .toMinutes();
+
+
+                Date classDate = DateConvertor.toDate(now);
+                String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00";
+                String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00";
 
                 CourseSchedule courseSchedule = new CourseSchedule();
                 courseSchedule.setSchoolId(schoolId);
@@ -1079,11 +1071,28 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 times++;
 
                 for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+                    List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
+                    BigDecimal salary = new BigDecimal("0");
+                    for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherSalaryList) {
+                        //对应基准课酬
+                        BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
+                        //基准课酬
+                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            break;
+                        }
+                        //阶梯课酬
+                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+                            salary = baseSalary;
+                            break;
+                        }
+                    }
+
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                     courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
                     courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
                     courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
-                    courseScheduleTeacherSalary.setExpectSalary(classGroupTeacherMapper.getSalary());
+                    courseScheduleTeacherSalary.setExpectSalary(salary);
                     courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
                     courseScheduleTeacherSalary.setCreateTime(date);
                     courseScheduleTeacherSalary.setUpdateTime(date);
@@ -1099,8 +1108,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
                     courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
                 }
-
+                if (classGroup4MixDto.getCourseTimes().equals(times)) {
+                    break WhileNode;
+                }
             }
+
             now = now.plusDays(1);
             if (classGroup4MixDto.getCourseTimes().equals(times)) {
                 break;
@@ -1175,6 +1187,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroup.setStudentNum(studentList.size());
         classGroup.setType(ClassGroupTypeEnum.SNAP);
         classGroup.setDelFlag(YesOrNoEnum.NO);
+        classGroup.setTotalClassTimes(classGroup4MixDto.getCourseTimes());
+        classGroup.setCurrentClassTimes(0);
         classGroup.setCreateTime(date);
         classGroup.setUpdateTime(date);
         classGroupDao.insert(classGroup);
@@ -1196,32 +1210,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //3、将老师加入关联关系
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 
-        //课时长度
-        long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getStartClassTime() + ":00"),
-                LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + classGroup4MixDto.getEndClassTime() + ":00"))
-                .toMinutes();
 
         for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
             classGroupTeacherMapper.setClassGroupId(classGroup.getId());
             classGroupTeacherMapper.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
-
-            List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
-            BigDecimal salary = new BigDecimal("0");
-            for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherSalaryList) {
-                //对应基准课酬
-                BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
-                //基准课酬
-                if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
-                    salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
-                    break;
-                }
-                //阶梯课酬
-                if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
-                    salary = baseSalary;
-                    break;
-                }
-            }
-            classGroupTeacherMapper.setSalary(salary);
         }
         classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
 
@@ -1233,13 +1225,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
         BigDecimal expectPrice = new BigDecimal("0");
         int times = 0;
+        WhileNode:
         while (true) {
             int dayOfWeek = now.getDayOfWeek().getValue();
-            if (classGroup4MixDto.getDayOfWeek().equals(dayOfWeek)) {
-                Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
-                Date classDate = Date.from(instant);
-                String startClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getStartClassTime() + ":00";
-                String endClassTime = DateUtil.getDate(classDate) + " " + classGroup4MixDto.getEndClassTime() + ":00";
+            for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
+                if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
+
+                //课时长度
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00"),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00"))
+                        .toMinutes();
+
+
+                Date classDate = DateConvertor.toDate(now);
+                String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00";
+                String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00";
 
                 CourseSchedule courseSchedule = new CourseSchedule();
                 courseSchedule.setSchoolId(schoolId);
@@ -1259,11 +1259,28 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 times++;
 
                 for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
+                    List<TeacherDefaultMusicGroupSalary> teacherSalaryList = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), "SINGLE", musicGroup.getSettlementType());
+                    BigDecimal salary = new BigDecimal("0");
+                    for (TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary : teacherSalaryList) {
+                        //对应基准课酬
+                        BigDecimal baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacherSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacherSalary();
+                        //基准课酬
+                        if (teacherDefaultMusicGroupSalary.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+                            salary = new BigDecimal(classCourseDuration).divide(new BigDecimal(30)).multiply(baseSalary).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            break;
+                        }
+                        //阶梯课酬
+                        if (classCourseDuration >= teacherDefaultMusicGroupSalary.getDurationMin() && classCourseDuration <= teacherDefaultMusicGroupSalary.getDurationMin()) {
+                            salary = baseSalary;
+                            break;
+                        }
+                    }
+
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
                     courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
                     courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
                     courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
-                    courseScheduleTeacherSalary.setExpectSalary(classGroupTeacherMapper.getSalary());
+                    courseScheduleTeacherSalary.setExpectSalary(salary);
                     courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
                     courseScheduleTeacherSalary.setCreateTime(date);
                     courseScheduleTeacherSalary.setUpdateTime(date);
@@ -1279,12 +1296,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
                     courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
                 }
-
+                if (classGroup4MixDto.getCourseTimes().equals(times)) {
+                    break WhileNode;
+                }
             }
+
             now = now.plusDays(1);
-            if (classGroup4MixDto.getCourseTimes().equals(times)) {
-                break;
-            }
         }
         //加入合奏班
         ClassGroupRelation classGroupRelation = new ClassGroupRelation();

+ 66 - 20
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,39 +1,85 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.dao.ChargeTypeDao;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
+import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.OrganizationDao;
+import com.ym.mec.biz.dal.dao.SchoolDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
+import com.ym.mec.biz.dal.dto.MusicCardDto;
+import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
+import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
+import com.ym.mec.biz.dal.entity.ApprovalStatus;
+import com.ym.mec.biz.dal.entity.ChargeType;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.entity.School;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.PayService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
-
 import com.ym.mec.util.date.DateUtil;
-import org.apache.commons.lang3.LocaleUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.util.*;
-import java.util.stream.Collectors;
 
 @Service
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {

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

@@ -1,73 +1,142 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
 import java.util.Date;
+import java.util.Map;
 
 import javax.annotation.Resource;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.ym.mec.biz.dal.dao.StudentRechargeDao;
 import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
-import com.ym.mec.biz.dal.dto.RechargeDto;
 import com.ym.mec.biz.dal.entity.StudentRecharge;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountStatusEnum;
+import com.ym.mec.biz.dal.enums.TransTypeEnum;
+import com.ym.mec.biz.service.PayService;
 import com.ym.mec.biz.service.StudentRechargeService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.union.NotifyMsg;
 
 @Service
-public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentRecharge>  implements StudentRechargeService {
-	
+public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentRecharge> implements StudentRechargeService {
+
 	@Resource
 	private StudentRechargeDao studentRechargeDao;
-    @Autowired
-    private StudentRegistrationDao studentRegistrationDao;
-	
+	@Autowired
+	private StudentRegistrationDao studentRegistrationDao;
+
 	@Autowired
 	private SysUserCashAccountService sysUserCashAccountService;
 
 	@Resource
-	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
+	private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+
+	@Autowired
+	private PayService payService;
+
+	@Autowired
+	private IdGeneratorService idGeneratorService;
+
 	@Override
 	public BaseDAO<String, StudentRecharge> getDAO() {
 		return studentRechargeDao;
 	}
 
 	@Override
-	public Boolean recharge(RechargeDto rechargeDto) {
+	@Transactional(rollbackFor = Exception.class)
+	public Map<?, ?> recharge(Integer userId, String bankCardNo, BigDecimal amount) {
 
-		//TODO ���õ�����֧��
-		Date now  = new Date();
+		Date now = new Date();
 
-		//��ֵ��¼
-        StudentRecharge studentRecharge = new StudentRecharge();
-        studentRecharge.setAmount(rechargeDto.getRechargeAmount());
+		SysUserCashAccount userCashAccount = sysUserCashAccountService.get(userId);
+		if (userCashAccount == null) {
+			throw new BizException("账户不存在");
+		}
+
+		if (userCashAccount.getStatus() != PlatformCashAccountStatusEnum.NORMAL) {
+			throw new BizException("账户不可用");
+		}
+
+		StudentRecharge studentRecharge = new StudentRecharge();
+		studentRecharge.setAmount(amount);
 		studentRecharge.setCreateTime(now);
-		studentRecharge.setUserId(rechargeDto.getUserId().longValue());
+		studentRecharge.setUserId(userId);
+		studentRecharge.setStatus(DealStatusEnum.ING);
 		studentRecharge.setTransNo(null);
+		studentRecharge.setOrderNo(idGeneratorService.generatorId("recharge") + "");
 		studentRechargeDao.insert(studentRecharge);
-		//�˻��ʽ���ˮ
-		SysUserCashAccountDetail cashAccount = new SysUserCashAccountDetail();
-		cashAccount.setAmount(rechargeDto.getRechargeAmount());
-		cashAccount.setBalance(null);
-		cashAccount.setTransNo(null);
-		cashAccount.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
-		cashAccount.setUserId(rechargeDto.getUserId());
-		cashAccount.setCreateTime(now);
-		sysUserCashAccountDetailDao.insert(cashAccount);
-
-		//�ۼ��˻�
-		sysUserCashAccountService.updateBalance(rechargeDto.getUserId(),rechargeDto.getRechargeAmount());
+
+		try {
+			return payService.getPayMap(amount, studentRecharge.getOrderNo(), "https://pay.dayaedu.com/api/yqpay/notify", "http://dev.dayaedu.com", "测试订单",
+					"测试订单");
+		} catch (Exception e) {
+			throw new BizException("调用支付接口出错", e);
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean rechargeCallback(NotifyMsg notifyMsg) {
+
+		if (notifyMsg.getStatus().equals("TRADE_SUCCESS") || notifyMsg.getStatus().equals("TRADE_CLOSED")) {
+
+			String orderNo = notifyMsg.getMerOrderId();
+
+			StudentRecharge studentRecharge = studentRechargeDao.queryByOrderNo(orderNo);
+
+			if (studentRecharge == null) {
+				throw new BizException("充值记录不存在");
+			}
+
+			DealStatusEnum status = notifyMsg.getStatus().equals("TRADE_SUCCESS") ? DealStatusEnum.SUCCESS : DealStatusEnum.FAilED;
+
+			String transNo = notifyMsg.getSeqId();
+
+			String paymentChannel = notifyMsg.getTargetSys();
+
+			Date paymentDate = notifyMsg.getPayTime();
+
+			studentRecharge.setPayPlatform(paymentChannel);
+			studentRecharge.setStatus(status);
+			studentRecharge.setTransNo(transNo);
+			studentRecharge.setModifyTime(paymentDate);
+
+			studentRechargeDao.update(studentRecharge);
+
+			if (status == DealStatusEnum.SUCCESS) {
+
+				TransTypeEnum transType = TransTypeEnum.FAST_PAYMENT;
+
+				if ("WXPay".equals(paymentChannel)) {
+					transType = TransTypeEnum.WECHAT;
+				} else if ("Alipay 2.0".equals(paymentChannel)) {
+					transType = TransTypeEnum.ALIPAY;
+				}
+
+				// 更新账户余额
+				// 新增交易流水
+				sysUserCashAccountDetailService.addCashAccountDetail(studentRecharge.getUserId(), studentRecharge.getAmount(), orderNo, transNo,
+						PlatformCashAccountDetailTypeEnum.RECHARGE, transType, status, "");
+			}
+
+		}
 
 		return true;
 	}
 
 	@Override
-	public StudentRecharge selectByTransNo(String transNo) {
-		return studentRechargeDao.selectByTransNo(transNo);
+	public StudentRecharge queryByTransNo(String transNo) {
+		return studentRechargeDao.queryByTransNo(transNo);
 	}
 }

+ 33 - 6
mec-biz/src/main/resources/config/mybatis/StudentRechargeMapper.xml

@@ -10,6 +10,7 @@
         <result column="id_" property="id"/>
         <result column="user_id_" property="userId"/>
         <result column="trans_no_" property="transNo"/>
+        <result column="order_no_" property="orderNo"/>
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="amount_" property="amount"/>
         <result column="fee_user_" property="feeUser"/>
@@ -20,6 +21,12 @@
         <result column="create_time_" property="createTime"/>
         <result column="modify_time_" property="modifyTime"/>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.entity.StudentRecharge" id="StudentRechargeVO" extends="StudentRecharge">
+        <result column="username_" property="user.username"/>
+        <result column="trans_no_" property="transNo"/>
+        <result column="trans_type_" property="transType"/>
+    </resultMap>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="StudentRecharge">
@@ -40,8 +47,8 @@
         </selectKey>
         -->
         INSERT INTO student_recharge
-        (id_,user_id_,trans_no_,status_,amount_,fee_user_,fee_platform_,pay_platform_,description_,comment_,create_time_,modify_time_)
-        VALUES(#{id},#{userId},#{transNo},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{amount},#{feeUser},#{feePlatform},#{payPlatform},#{description},#{comment},now(),now())
+        (id_,user_id_,trans_no_,order_no_,status_,amount_,fee_user_,fee_platform_,pay_platform_,description_,comment_,create_time_,modify_time_)
+        VALUES(#{id},#{userId},#{transNo},#{orderNo},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{amount},#{feeUser},#{feePlatform},#{payPlatform},#{description},#{comment},now(),now())
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -75,6 +82,9 @@
             <if test="transNo != null">
                 trans_no_ = #{transNo},
             </if>
+            <if test="orderNo != null">
+                order_no_ = #{orderNo},
+            </if>
             <if test="payPlatform != null">
                 pay_platform_ = #{payPlatform},
             </if>
@@ -88,17 +98,34 @@
 	</delete>
 
     <!-- 分页查询 -->
-    <select id="queryPage" resultMap="StudentRecharge" parameterType="map">
-        SELECT * FROM student_recharge ORDER BY id_
+    <select id="queryPage" resultMap="StudentRechargeVO" parameterType="map">
+        SELECT sr.*,u.username_,cad.trans_no_,cad.trans_type_ FROM student_recharge sr left join sys_user u on sr.user_id_ = u.id_ left join sys_user_cash_account_detail cad on sr.user_id_ = cad.user_id_ where 1 = 1
+        <if test="status != null">
+           and sr.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        <if test="transType != null">
+           and cad.trans_type_ = #{transType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        ORDER BY sr.id_
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM student_recharge
+		SELECT COUNT(1) FROM student_recharge sr left join sys_user u on sr.user_id_ = u.id_ left join sys_user_cash_account_detail cad on sr.user_id_ = cad.user_id_ where 1 = 1
+		<if test="status != null">
+           and sr.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        <if test="transType != null">
+           and cad.trans_type_ = #{transType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
 	</select>
 
-    <select id="selectByTransNo" resultMap="StudentRecharge">
+    <select id="queryByTransNo" resultMap="StudentRecharge">
 		SELECT * FROM student_recharge WHERE  trans_no_ = #{transNo}
 	</select>
+
+    <select id="queryByOrderNo" resultMap="StudentRecharge">
+		SELECT * FROM student_recharge WHERE  order_no_ = #{orderNo}
+	</select>
 </mapper>

+ 28 - 40
mec-student/src/main/java/com/ym/mec/student/controller/RechargeController.java

@@ -1,55 +1,43 @@
 package com.ym.mec.student.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.RechargeDto;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.service.StudentRechargeService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
-import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+
+import javax.annotation.Resource;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.annotation.Resource;
-
-/**
- * @version V1.0
- * @Description: 充值
- * @date Date : 2019年09月23日 16:56
- */
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.service.StudentRechargeService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.common.controller.BaseController;
 
 @RequestMapping("recharge")
 @Api(tags = "账户充值")
 @RestController
 public class RechargeController extends BaseController {
-    @Resource
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
-    private StudentRechargeService rechargeService;
-
-    @Autowired
-    private SysUserCashAccountService sysUserCashAccountService;
-
-    @ApiOperation("充值")
-    @GetMapping(value = "/recharge")
-    public Object recharge(RechargeDto rechargeDto){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("获取用户信息失败");
-        }
-        SysUserCashAccount userCashAccount = sysUserCashAccountService.get(sysUser.getId());
-        if(userCashAccount == null || !userCashAccount.getStatus().equals(1)){
-            return failed("账户不存在");
-        }
-
-        if(!userCashAccount.getStatus().equals(1)){
-            return failed("账户已冻结");
-        }
-
-        return succeed(rechargeService.recharge(rechargeDto));
-    }
+	@Resource
+	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private StudentRechargeService rechargeService;
+
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
+
+	@ApiOperation("充值")
+	@GetMapping(value = "/recharge")
+	public Object recharge(String bankCardNo, BigDecimal amount) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed("获取用户信息失败");
+		}
+
+		return succeed(rechargeService.recharge(sysUser.getId(), bankCardNo, amount));
+	}
 }

+ 32 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentRechargeController.java

@@ -0,0 +1,32 @@
+package com.ym.mec.web.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.biz.dal.page.StudentRechargeQueryInfo;
+import com.ym.mec.biz.service.StudentRechargeService;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("studentRecharge")
+@Api(tags = "充值服务")
+@RestController
+public class StudentRechargeController extends BaseController {
+
+	@Autowired
+	private StudentRechargeService studentRechargeService;
+
+	@ApiOperation(value = "列表分页查询")
+	@GetMapping(value = "/queryPage", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    @PreAuthorize("@pcs.hasPermissions('studentRecharge/queryPage')")
+	public Object queryPage(StudentRechargeQueryInfo queryInfo) {
+		return succeed(studentRechargeService.queryPage(queryInfo));
+	}
+
+}

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/student/StudentCashAccountDetailController.java

@@ -56,7 +56,7 @@ public class StudentCashAccountDetailController extends BaseController {
         }
 
         //
-        StudentRecharge studentRecharge = studentRechargeService.selectByTransNo(transNo);
+        StudentRecharge studentRecharge = studentRechargeService.queryByTransNo(transNo);
         if(studentRecharge == null){
             return failed("交易不存在");
         }