Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
2d4e4c6b55
67 changed files with 1377 additions and 683 deletions
  1. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChargeTypeDao.java
  2. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  3. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  4. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRechargeDao.java
  5. 9 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentWithdrawDao.java
  7. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMessageConfigDao.java
  8. 22 33
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroup4MixDto.java
  9. 39 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseTimeDto.java
  10. 60 49
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Goods.java
  11. 34 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRecharge.java
  12. 6 32
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessageConfig.java
  13. 128 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PaymentStatusEnum.java
  15. 62 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupQueryInfo.java
  16. 23 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRechargeQueryInfo.java
  17. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  18. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/GoodsService.java
  19. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  20. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectPlanService.java
  21. 0 15
      mec-biz/src/main/java/com/ym/mec/biz/service/SmsCodeService.java
  22. 19 7
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRechargeService.java
  23. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  24. 28 19
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentWithdrawService.java
  25. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageConfigService.java
  26. 8 8
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  27. 134 96
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  28. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  29. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  30. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java
  31. 13 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  32. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  33. 11 39
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SmsCodeServiceImpl.java
  34. 99 30
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRechargeServiceImpl.java
  35. 58 36
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  36. 91 89
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java
  37. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageConfigServiceImpl.java
  38. 9 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  39. 1 4
      mec-biz/src/main/resources/config/mybatis/ChargeTypeMapper.xml
  40. 9 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  41. 2 2
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  42. 0 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  43. 23 3
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  44. 33 6
      mec-biz/src/main/resources/config/mybatis/StudentRechargeMapper.xml
  45. 9 3
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  46. 1 3
      mec-biz/src/main/resources/config/mybatis/SysMessageConfigMapper.xml
  47. 1 2
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  48. 3 2
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  49. 5 0
      mec-education/pom.xml
  50. 28 0
      mec-education/src/main/java/com/ym/mec/education/config/ImageVerifyCodeConfig.java
  51. 1 1
      mec-education/src/main/java/com/ym/mec/education/config/ResourceServerConfig.java
  52. 112 0
      mec-education/src/main/java/com/ym/mec/education/controller/SmsCodeController.java
  53. 2 1
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  54. 28 40
      mec-student/src/main/java/com/ym/mec/student/controller/RechargeController.java
  55. 19 24
      mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  56. 8 2
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  57. 4 5
      mec-student/src/main/java/com/ym/mec/student/controller/SysMessageController.java
  58. 10 24
      mec-student/src/main/java/com/ym/mec/student/controller/WithdrawController.java
  59. 2 3
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java
  60. 69 0
      mec-util/src/main/java/com/ym/mec/util/date/DateConvertor.java
  61. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  62. 2 7
      mec-web/src/main/java/com/ym/mec/web/controller/GoodsController.java
  63. 11 5
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  64. 32 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRechargeController.java
  65. 10 13
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java
  66. 19 19
      mec-web/src/main/java/com/ym/mec/web/controller/StudentWithdrawController.java
  67. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/student/StudentCashAccountDetailController.java

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

@@ -6,7 +6,6 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 public interface ChargeTypeDao extends BaseDAO<Integer, ChargeType> {
 
@@ -16,5 +15,5 @@ public interface ChargeTypeDao extends BaseDAO<Integer, ChargeType> {
      * @param chargeTypeIds
      * @return
      */
-    List<Map<Integer, String>> queryNameByIds(@Param("chargeTypeIds") Set<Integer> chargeTypeIds);
+    List<Map<Integer, String>> queryNameByIds(@Param("chargeTypeIds") String chargeTypeIds);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -340,6 +340,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
 
     /**
      * 获取学生端,vip课程列表
+     *
      * @param musicGroupIds
      * @return
      */
@@ -347,6 +348,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
 
     /**
      * 获取学生端,学员乐团课列表详情
+     *
      * @param musicGroupIds
      * @return
      */
@@ -354,9 +356,17 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
 
     /**
      * 查询对应类型所有班级列表
+     *
      * @param musicGroupId
      * @param type
      * @return
      */
     List<ClassGroup> findClassGroupByMusicGroupIdAndType(@Param("musicGroupId") String musicGroupId, @Param("type") ClassGroupTypeEnum type);
+
+    /**
+     * 根据合奏班id获取子班及老师
+     * @param mixClassGroupId
+     * @return
+     */
+    List<ClassGroupTeachersDto> findClassGroupByMixClassGroupId(@Param("mixClassGroupId") Integer mixClassGroupId);
 }

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

@@ -27,10 +27,10 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取个人中心乐团数据
-     * @param id
+     * @param userId
      * @return
      */
-    MusicCardDto queryPersonalMusicGroups(Integer id);
+    MusicCardDto queryPersonalMusicGroups(@Param("userId") Integer userId);
 
     /**
      * 获取用户有效的乐团数

+ 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);
 }

+ 9 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
 
 import org.apache.ibatis.annotations.Param;
@@ -129,11 +130,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     /**
      * 批量调剂学生专业
      *
-     * @param userIds
+     * @param userId
      * @param subId
      * @return
      */
-    int batchUpdateSubject(@Param("userIds") String userIds, @Param("subId") Integer subId, @Param("musicGroupId") String musicGroupId);
+    int batchUpdateSubject(@Param("userId") Integer userId, @Param("subId") Integer subId, @Param("musicGroupId") String musicGroupId);
 
     /**
      * 根据id list 查询报名学生
@@ -176,4 +177,10 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     List<StudentRegistration> findStudentListByUserIdList(@Param("musicGroupId") String musicGroupId, @Param("userIdList") List<Integer> userIdList);
+
+    /**
+     * @param ids
+     * @return
+     */
+    int batchOpenPay(@Param("ids") String ids, @Param("paymentStatus") PaymentStatusEnum paymentStatus);
 }

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

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.entity.StudentWithdraw;
 import com.ym.mec.common.dal.BaseDAO;
 
-public interface StudentWithdrawDao extends BaseDAO<String, StudentWithdraw> {
+public interface StudentWithdrawDao extends BaseDAO<Integer, StudentWithdraw> {
 
     StudentWithdraw getByUserId(Long userId);
 }

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

@@ -1,15 +1,15 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.SysMessageConfig;
-import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 public interface SysMessageConfigDao extends BaseDAO<Integer, SysMessageConfig> {
 
 	/**
 	 * 根据消息类型查询对象
-	 * @param type
+	 * @param messageType
 	 * @return
 	 */
-	public SysMessageConfig queryByType(MessageType type);
+	SysMessageConfig queryByType(@Param("messageType") String messageType);
 }

+ 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;
+    }
+}

+ 60 - 49
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Goods.java

@@ -18,7 +18,7 @@ public class Goods {
 	/** 商品编号 */
 	@ApiModelProperty(value = "商品编号",required = false)
 	private Integer id;
-	
+
 	/** 产品分类 */
 	@ApiModelProperty(value = "产品分类",required = false)
 	private Integer goodsCategoryId;
@@ -26,71 +26,71 @@ public class Goods {
 	/** 产品分类 */
 	@ApiModelProperty(value = "产品分类名称",required = false)
 	private String goodsCategoryName;
-	
+
 	/** 商品货号 */
 	@ApiModelProperty(value = "商品货号",required = false)
 	private String sn;
-	
+
 	/** 商品名称 */
 	@ApiModelProperty(value = "商品名称",required = false)
 	private String name;
-	
+
 	/** 品牌 */
 	@ApiModelProperty(value = "品牌",required = false)
 	private String brand;
-	
+
 	/** 规格 */
 	@ApiModelProperty(value = "规格",required = false)
 	private String specification;
-	
+
 	/** 展示图片的地址 */
 	@ApiModelProperty(value = "展示图片的地址",required = false)
 	private String image;
-	
+
 	/** 库存数量 */
 	@ApiModelProperty(value = "库存数量",required = false)
 	private Integer stockCount;
-	
+
 	/** 总销量数 */
 	@ApiModelProperty(value = "总销量数",required = false)
 	private Integer sellCount;
-	
+
 	/** 市场销售价 */
 	@ApiModelProperty(value = "市场销售价",required = false)
 	private BigDecimal marketPrice;
-	
+
 	/** 折扣价 */
 	@ApiModelProperty(value = "折扣价",required = false)
 	private BigDecimal discountPrice;
-	
+
 	/** 团购价 */
 	@ApiModelProperty(value = "团购价",required = false)
 	private BigDecimal groupPurchasePrice;
-	
+
 	/** 页面简介 */
 	@ApiModelProperty(value = "页面简介",required = false)
 	private String brief;
-	
+
 	/** 商品的详细描述 */
 	@ApiModelProperty(value = "商品的详细描述",required = false)
 	private String desc;
-	
+
 	/** 是否是新品(1,是  0,否) */
 	@ApiModelProperty(value = "是否是新品(1,是  0,否)",required = false)
 	private YesOrNoEnum isNew;
-	
+
 	/** 是否置顶(1,置顶   0,不置顶) */
 	@ApiModelProperty(value = "是否置顶(1,置顶   0,不置顶)",required = false)
 	private YesOrNoEnum isTop;
-	
+
 	/** 状态(1,上架  0,下架) */
 	@ApiModelProperty(value = "状态(1,上架  0,下架)",required = false)
 	private YesOrNoEnum status;
-	
+
 	/** 备注 */
 	@ApiModelProperty(value = "备注",required = false)
 	private String memo;
-	
+
 	/** 发布时间 */
 	@ApiModelProperty(value = "发布时间",required = false)
 	private java.util.Date publishTime;
@@ -101,17 +101,28 @@ public class Goods {
 
 	/** 辅件列表 */
 	private List<Goods> goodsList;
-	
+
+	/** 声部列表编号 */
+	private String subjectIds;
+
 	/** 创建时间 */
 	private java.util.Date createTime;
-	
+
 	/** 修改时间 */
 	private java.util.Date updateTime;
 
 	@ApiModelProperty(value = "商品类型", required = false)
 	private GoodsType type;
 
-	public String getGoodsCategoryName() {
+    public String getSubjectIds() {
+        return subjectIds;
+    }
+
+    public void setSubjectIds(String subjectIds) {
+        this.subjectIds = subjectIds;
+    }
+
+    public String getGoodsCategoryName() {
 		return goodsCategoryName;
 	}
 
@@ -138,71 +149,71 @@ public class Goods {
 	public void setId(Integer id){
 		this.id = id;
 	}
-	
+
 	public Integer getId(){
 		return this.id;
 	}
-			
+
 	public void setGoodsCategoryId(Integer goodsCategoryId){
 		this.goodsCategoryId = goodsCategoryId;
 	}
-	
+
 	public Integer getGoodsCategoryId(){
 		return this.goodsCategoryId;
 	}
-			
+
 	public void setSn(String sn){
 		this.sn = sn;
 	}
-	
+
 	public String getSn(){
 		return this.sn;
 	}
-			
+
 	public void setName(String name){
 		this.name = name;
 	}
-	
+
 	public String getName(){
 		return this.name;
 	}
-			
+
 	public void setBrand(String brand){
 		this.brand = brand;
 	}
-	
+
 	public String getBrand(){
 		return this.brand;
 	}
-			
+
 	public void setSpecification(String specification){
 		this.specification = specification;
 	}
-	
+
 	public String getSpecification(){
 		return this.specification;
 	}
-			
+
 	public void setImage(String image){
 		this.image = image;
 	}
-	
+
 	public String getImage(){
 		return this.image;
 	}
-			
+
 	public void setStockCount(Integer stockCount){
 		this.stockCount = stockCount;
 	}
-	
+
 	public Integer getStockCount(){
 		return this.stockCount;
 	}
-			
+
 	public void setSellCount(Integer sellCount){
 		this.sellCount = sellCount;
 	}
-	
+
 	public Integer getSellCount(){
 		return this.sellCount;
 	}
@@ -234,15 +245,15 @@ public class Goods {
 	public void setBrief(String brief){
 		this.brief = brief;
 	}
-	
+
 	public String getBrief(){
 		return this.brief;
 	}
-			
+
 	public void setDesc(String desc){
 		this.desc = desc;
 	}
-	
+
 	public String getDesc(){
 		return this.desc;
 	}
@@ -274,31 +285,31 @@ public class Goods {
 	public void setMemo(String memo){
 		this.memo = memo;
 	}
-	
+
 	public String getMemo(){
 		return this.memo;
 	}
-			
+
 	public void setPublishTime(java.util.Date publishTime){
 		this.publishTime = publishTime;
 	}
-	
+
 	public java.util.Date getPublishTime(){
 		return this.publishTime;
 	}
-			
+
 	public void setCreateTime(java.util.Date createTime){
 		this.createTime = createTime;
 	}
-	
+
 	public java.util.Date getCreateTime(){
 		return this.createTime;
 	}
-			
+
 	public void setUpdateTime(java.util.Date updateTime){
 		this.updateTime = updateTime;
 	}
-	
+
 	public java.util.Date getUpdateTime(){
 		return this.updateTime;
 	}
@@ -310,7 +321,7 @@ public class Goods {
 	public void setGoodsList(List<Goods> goodsList) {
 		this.goodsList = goodsList;
 	}
-			
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 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);

+ 6 - 32
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessageConfig.java

@@ -1,44 +1,18 @@
 package com.ym.mec.biz.dal.entity;
 
-import org.apache.commons.lang.StringUtils;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
-import com.ym.mec.common.enums.BaseEnum;
-
 /**
  * 对应数据库表(sys_message_config):
  */
 public class SysMessageConfig {
 
-	public enum MessageType implements BaseEnum<String, MessageType> {
-		USER_REGISTER("用户注册"),
-		PUSH("推送"),
-		SMS("短信");
-
-		private MessageType(String code) {
-		}
-
-		@Override
-		public String getCode() {
-			return name();
-		}
-
-		public static MessageType getMessageType(String name) {
-			for (MessageType type : MessageType.values()) {
-				if (StringUtils.equals(type.name(), name)) {
-					return type;
-				}
-			}
-			return null;
-		}
-
-	}
-
 	/**  */
 	private Integer id;
 
 	/** 消息类型 */
-	private MessageType messageType;
+	private MessageTypeEnum messageType;
 
 	/** 消息内容 */
 	private String content;
@@ -62,12 +36,12 @@ public class SysMessageConfig {
 		return this.id;
 	}
 
-	public void setMessageType(MessageType messageType) {
-		this.messageType = messageType;
+	public MessageTypeEnum getMessageType() {
+		return messageType;
 	}
 
-	public MessageType getMessageType() {
-		return this.messageType;
+	public void setMessageType(MessageTypeEnum messageType) {
+		this.messageType = messageType;
 	}
 
 	public void setContent(String content) {

+ 128 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -0,0 +1,128 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
+    SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
+    SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
+    SMS_PAYMENT_MESSAGE("SMS_PAYMENT_MESSAGE", "缴费通知"),
+    SMS_PAYMENT_SUCCESS("SMS_PAYMENT_SUCCESS", "缴费成功"),
+    SMS_RENEW_SUCCESS("SMS_RENEW_SUCCESS", "续费成功"),
+    SMS_BALANCE_PAY("SMS_BALANCE_PAY", "余额充值"),
+    SMS_BASICS_SKILL_APPLY_MESSAGE("SMS_BASICS_SKILL_APPLY_MESSAGE", "基础技能训练报名通知"),
+    SMS_VIP_COURSE_BUY_SUCCESS("SMS_VIP_COURSE_BUY_SUCCESS", "VIP课购买成功"),
+    SMS_VIP_COURSE_SIGN("SMS_VIP_COURSE_SIGN", "VIP课签到"),
+    SMS_QUIT_COURSE_SUCCESS("SMS_QUIT_COURSE_SUCCESS", "退课成功"),
+    SMS_WITHDRAW_SUCCESS("SMS_WITHDRAW_SUCCESS", "提现成功"),
+    SMS_MUSIC_GROUP_CLOSE("SMS_MUSIC_GROUP_CLOSE", "乐团关闭(关闭后)"),
+
+    STUDENT_SMS_PAYMENT_RESULT("STUDENT_SMS_PAYMENT_RESULT", "缴费结果"),
+    STUDENT_PUSH_PAYMENT_RESULT("STUDENT_PUSH_PAYMENT_RESULT", "缴费结果"),
+    STUDENT_PUSH_MUSIC_GROUP_CLOSE("STUDENT_PUSH_MUSIC_GROUP_CLOSE", "乐团关闭(确认后)"),
+    STUDENT_PUSH_BASICS_SKILL_APPLY_MESSAGE("STUDENT_PUSH_BASICS_SKILL_APPLY_MESSAGE", "基础技能训练报名通知"),
+    STUDENT_SMS_WAIT_RENEW_MESSAGE("STUDENT_SMS_WAIT_RENEW_MESSAGE", "待续费通知"),
+    STUDENT_PUSH_WAIT_RENEW_MESSAGE("STUDENT_PUSH_WAIT_RENEW_MESSAGE", "待续费通知"),
+    STUDENT_SMS_MUSIC_GROUP_RENEW_RESULT("STUDENT_SMS_MUSIC_GROUP_RENEW_RESULT", "乐团续费结果"),
+    STUDENT_PUSH_MUSIC_GROUP_RENEW_RESULT("STUDENT_PUSH_MUSIC_GROUP_RENEW_RESULT", "乐团续费结果"),
+    STUDENT_SMS_BALANCE_CONSUME("STUDENT_SMS_BALANCE_CONSUME", "余额消费"),
+    STUDENT_PUSH_BALANCE_CONSUME("STUDENT_PUSH_BALANCE_CONSUME", "余额消费"),
+    STUDENT_PUSH_VIP_BUY("STUDENT_PUSH_VIP_BUY", "VIP课购买"),
+    STUDENT_PUSH_HAVE_COURSE_MESSAGE("STUDENT_PUSH_HAVE_COURSE_MESSAGE", "有课提醒"),
+    STUDENT_PUSH_ATTEND_COURSE_MESSAGE("STUDENT_PUSH_ATTEND_COURSE_MESSAGE", "上课提醒"),
+    STUDENT_PUSH_ONLINE_COURSE_ACTION("STUDENT_PUSH_ONLINE_COURSE_ACTION", "线上课开始"),
+    STUDENT_PUSH_NAMES_ACHIEVE("STUDENT_PUSH_NAMES_ACHIEVE", "点名完成"),
+    SCHEDULE_CHANGE("SCHEDULE_CHANGE", "课表变动"),
+    STUDENT_SMS_TEACHING_SCHOOL_CHANGE("STUDENT_SMS_TEACHING_SCHOOL_CHANGE", "教学点变动"),
+    STUDENT_PUSH_TEACHING_SCHOOL_CHANGE("STUDENT_PUSH_TEACHING_SCHOOL_CHANGE", "教学点变动"),
+    STUDENT_PUSH_JOB_MESSAGE("STUDENT_PUSH_JOB_MESSAGE", "作业提醒"),
+    STUDENT_PUSH_CLASS_MESSAGE("STUDENT_PUSH_CLASS_MESSAGE", "班级消息"),
+
+    TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN("TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN", "乐团课新增安排"),
+    TEACHER_SMS_VIP_COURSE_APPLY_RESULT("TEACHER_SMS_VIP_COURSE_APPLY_RESULT", "VIP课申请结果"),
+    TEACHER_PUSH_VIP_COURSE_APPLY_RESULT("TEACHER_PUSH_VIP_COURSE_APPLY_RESULT", "VIP课申请结果"),
+    TEACHER_SMS_VIP_COURSE_ADD("TEACHER_SMS_VIP_COURSE_ADD", "VIP课新增"),
+    TEACHER_PUSH_VIP_COURSE_ADD("TEACHER_PUSH_VIP_COURSE_ADD", "VIP课新增"),
+    TEACHER_PUSH_VIP_COURSE_STOP("TEACHER_PUSH_VIP_COURSE_STOP", "VIP课停止"),
+    TEACHER_PUSH_ACTION_COURSE_MESSAGE("TEACHER_PUSH_ACTION_COURSE_MESSAGE", "开课提醒"),
+    TEACHER_PUSH_HAVE_COURSE_MESSAGE("TEACHER_PUSH_HAVE_COURSE_MESSAGE", "有课提醒"),
+    TEACHER_PUSH_ATTEND_CLASS_MESSAGE("TEACHER_PUSH_ATTEND_CLASS_MESSAGE", "上课提醒"),
+    TEACHER_PUSH_SIGN_IN_MESSAGE("TEACHER_PUSH_SIGN_IN_MESSAGE", "签到提醒"),
+    TEACHER_PUSH_NAMES_MESSAGE("TEACHER_PUSH_NAMES_MESSAGE", "点名提醒"),
+    TEACHER_PUSH_SIGN_OUT_MESSAGE("TEACHER_PUSH_SIGN_OUT_MESSAGE", "签退提醒"),
+    TEACHER_PUSH_JOB_WAIT_REPLY("TEACHER_PUSH_JOB_WAIT_REPLY", "作业待回复"),
+    TEACHER_PUSH_SUBSTITUTE_PLAN("TEACHER_PUSH_SUBSTITUTE_PLAN", "代课安排"),
+    TEACHER_PUSH_LEAVE_RESULT("TEACHER_PUSH_LEAVE_RESULT", "请假结果"),
+    TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT("TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT", "课时调整结果"),
+    TEACHER_PUSH_STUDENT_LEAVE("TEACHER_PUSH_STUDENT_LEAVE", "学员请假"),
+    TEACHER_PUSH_CLASS_MESSAGE("TEACHER_PUSH_CLASS_MESSAGE", "班级消息"),
+
+    EDUCATION_PUSH_MUSIC_GROUP_FOUND("EDUCATION_PUSH_MUSIC_GROUP_FOUND", "乐团成立"),
+    EDUCATION_PUSH_MUSIC_GROUP_CLOSE("EDUCATION_PUSH_MUSIC_GROUP_CLOSE", "乐团关闭"),
+    EDUCATION_PUSH_COURSE_CHANGE("EDUCATION_PUSH_COURSE_CHANGE", "课程调整"),
+    EDUCATION_PUSH_TOMORROW_COURSE_PLAN("EDUCATION_PUSH_TOMORROW_COURSE_PLAN", "明日课程安排"),
+    EDUCATION_PUSH_TEACHER_NO_SIGN_IN("EDUCATION_PUSH_TEACHER_NO_SIGN_IN", "老师未签到"),
+    EDUCATION_PUSH_TEACHER_EXCEPTION_SING_IN("EDUCATION_PUSH_TEACHER_EXCEPTION_SING_IN", "老师异常签到"),
+    EDUCATION_PUSH_TEACHER_NO_SIGN_OUT("EDUCATION_PUSH_TEACHER_NO_SIGN_OUT", "老师未签退"),
+    EDUCATION_PUSH_STUDENT_LEAVE("EDUCATION_PUSH_STUDENT_LEAVE", "学员请假"),
+    EDUCATION_PUSH_STUDENT_CONTINUE_NO_ARRIVAL("EDUCATION_PUSH_STUDENT_CONTINUE_NO_ARRIVAL", "学员连续未到"),
+    EDUCATION_PUSH_STUDENT_NO_PAYMENT("EDUCATION_PUSH_STUDENT_NO_PAYMENT", "学员未交费"),
+    EDUCATION_PUSH_VIP_COURSE_APPLY("EDUCATION_PUSH_VIP_COURSE_APPLY", "VIP课申请"),
+    EDUCATION_PUSH_TEACHER_LEAVE_APPLY("EDUCATION_PUSH_TEACHER_LEAVE_APPLY", "老师请假申请"),
+    EDUCATION_PUSH_STUDENT_QUIT_MUSIC_GROUP_APPLY("EDUCATION_PUSH_STUDENT_QUIT_MUSIC_GROUP_APPLY", "学员退团申请"),
+    EDUCATION_PUSH_STUDENT_QUIT_COURSE_APPLY("EDUCATION_PUSH_STUDENT_QUIT_COURSE_APPLY", "学员退课申请"),
+    EDUCATION_PUSH_STUDENT_WITHDRAW_APPLY("EDUCATION_PUSH_STUDENT_WITHDRAW_APPLY", "学员提现申请"),
+    EDUCATION_PUSH_STUDENT_APPEAL("EDUCATION_PUSH_STUDENT_APPEAL", "学员申诉"),
+
+    BACKSTAGE_CREATE_MUSIC_GROUP_APPLY("BACKSTAGE_CREATE_MUSIC_GROUP_APPLY", "建团申请"),
+    BACKSTAGE_ACTION_APPLY("BACKSTAGE_ACTION_APPLY", "开启报名"),
+    BACKSTAGE_ACTION_PAYMENT("BACKSTAGE_ACTION_PAYMENT", "开启缴费"),
+    BACKSTAGE_LENGTHEN_PAYMENT("BACKSTAGE_LENGTHEN_PAYMENT", "延长缴费"),
+    BACKSTAGE_ACTION_GROUP("BACKSTAGE_ACTION_GROUP", "开团"),
+    BACKSTAGE_STUDENT_SUBJECT_CHANGE("BACKSTAGE_STUDENT_SUBJECT_CHANGE", "学员声部调整"),
+    BACKSTAGE_MUSIC_GROUP_MARKING("BACKSTAGE_MUSIC_GROUP_MARKING", "乐团筹备中"),
+    BACKSTAGE_MARK_OK("BACKSTAGE_MARK_OK", "筹备完成"),
+    BACKSTAGE_MARK_QUIT("BACKSTAGE_MARK_QUIT", "筹备中,退回"),
+    BACKSTAGE_MUSIC_GROUP_ADD_STUDENT("BACKSTAGE_MUSIC_GROUP_ADD_STUDENT", "乐团添加学员"),
+    BACKSTAGE_TEACHER_AMOUNT_CHANGE("BACKSTAGE_TEACHER_AMOUNT_CHANGE", "老师课酬调整"),
+    BACKSTAGE_COURSE_CHANGE("BACKSTAGE_COURSE_CHANGE", "课时、课程调整"),
+    BACKSTAGE_MUSIC_GROUP_IN_CHANGE("BACKSTAGE_MUSIC_GROUP_IN_CHANGE", "乐团内调整"),
+    BACKSTAGE_SPAN_GROUP_CHANGE("BACKSTAGE_SPAN_GROUP_CHANGE", "跨越团调整"),
+    BACKSTAGE_MUSIC_GROUP_STOP("BACKSTAGE_MUSIC_GROUP_STOP", "乐团暂停"),
+    BACKSTAGE_MUSIC_GROUP_CLOSE("BACKSTAGE_MUSIC_GROUP_CLOSE", "乐团结束"),
+    BACKSTAGE_VIP_COURSE_APPLY("BACKSTAGE_VIP_COURSE_APPLY", "VIP课申请"),
+    BACKSTAGE_VIP_COURSE_STOP("BACKSTAGE_VIP_COURSE_STOP", "VIP课停止"),
+    BACKSTAGE_TEACHER_FREEZE("BACKSTAGE_TEACHER_FREEZE", "老师冻结"),
+    BACKSTAGE_TEACHER_POSITIVE("BACKSTAGE_TEACHER_POSITIVE", "老师转正"),
+    BACKSTAGE_STUDENT_OK_QUIT_GROUP("BACKSTAGE_STUDENT_OK_QUIT_GROUP", "学员确认退团"),
+    BACKSTAGE_STUDENT_OK_QUIT_COURSE("BACKSTAGE_STUDENT_OK_QUIT_COURSE", "学员确认退课"),
+    BACKSTAGE_STUDENT_APPEAL("BACKSTAGE_STUDENT_APPEAL", "学员申述"),
+    BACKSTAGE_STUDENT_APPLY_QUIT_GROUP("BACKSTAGE_STUDENT_APPLY_QUIT_GROUP", "学员申请退团"),
+    BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
+    BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDNET_APPLY_WITHDRAW", "学员申请提现");
+
+    MessageTypeEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    private String code;
+
+    private String msg;
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return code;
+    }
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PaymentStatusEnum.java

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum PaymentStatusEnum implements BaseEnum<Integer, PaymentStatusEnum> {
-	NO(0,""),
+	NO(0,"未开启缴费"),
 	OPEN(1,"开启缴费"),
 	YES(2,"已缴费");
 

+ 62 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupQueryInfo.java

@@ -0,0 +1,62 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+public class MusicGroupQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "所属分部编号",required = false)
+    private Integer organId;
+
+    @ApiModelProperty(value = "乐团编号",required = false)
+    private String musicGroupId;
+
+    @ApiModelProperty(value = "乐团名称",required = false)
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "收费类型编号",required = false)
+    private Integer chargeTypeId;
+
+    @ApiModelProperty(value = "乐团状态",required = false)
+    private String musicGroupStatus;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public Integer getChargeTypeId() {
+        return chargeTypeId;
+    }
+
+    public void setChargeTypeId(Integer chargeTypeId) {
+        this.chargeTypeId = chargeTypeId;
+    }
+
+    public String getMusicGroupStatus() {
+        return musicGroupStatus;
+    }
+
+    public void setMusicGroupStatus(String musicGroupStatus) {
+        this.musicGroupStatus = musicGroupStatus;
+    }
+}

+ 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;
+	}
+
 }

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

@@ -289,4 +289,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return
      */
     List<ClassGroup> highClassGroupList(String musicGroupId);
+
+
+    List<ClassGroupTeachersDto> classGroupAndTeacher(int classGroupId);
 }

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

@@ -31,5 +31,4 @@ public interface GoodsService extends BaseService<Integer, Goods> {
      * @return
      */
     List<Goods> findGoodsByIds(String ids);
-
 }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -14,10 +15,10 @@ import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 import com.ym.mec.biz.dal.entity.ApprovalStatus;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+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> {
 	/**
@@ -130,7 +131,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param queryInfo
 	 * @return
 	 */
-	PageInfo<MusicGroup> queryMusicGroupPage(QueryInfo queryInfo);
+	PageInfo<MusicGroup> queryMusicGroupPage(MusicGroupQueryInfo queryInfo);
 
 	/**
 	 * 修改乐团基本信息
@@ -164,7 +165,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param musicGroupId
 	 * @return
 	 */
-	MusicGroup openPay(String musicGroupId);
+	MusicGroup openPay(String musicGroupId, String expireDate);
 
 	/**
 	 * 获取乐团详情

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

@@ -41,4 +41,11 @@ public interface MusicGroupSubjectPlanService extends BaseService<Integer, Music
      * @return
      */
     MusicGroupRegRespDto getMusicGroupRegInfo(String musicGroupId);
+
+    /**
+     * 报名人数加一
+     * @param musicGroupId
+     * @param subjectId
+     */
+    void addApplyStudentNum(String musicGroupId, Integer subjectId,int num);
 }

+ 0 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/SmsCodeService.java

@@ -15,19 +15,4 @@ public interface SmsCodeService {
 	 * @return
 	 */
 	boolean sendValidCode(String mobile) throws Exception;
-
-	/**
-	 * 获取验证码
-	 *
-	 * @param mobile 手机号
-	 * @return 验证码
-	 */
-	Object getValidCode(String mobile);
-
-	/**
-	 * 删除验证码
-	 *
-	 * @param mobile
-	 */
-	void removeValidCode(String mobile);
 }

+ 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);
 }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
@@ -34,7 +35,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @param subId
 	 * @return
 	 */
-	Integer batchUpdateSubject(String userId, Integer subId,String musicGroupId);
+	Integer batchUpdateSubject(Integer userId, Integer subId,String musicGroupId) throws Exception;
 
 	/**
 	 * 学生报名缴费金额详情
@@ -199,9 +200,9 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 
 	/**
 	 * 开启缴费
-	 * @param id
+	 * @param ids
 	 * @return
 	 */
-	int openPayment(Long id);
+	int openPayment(String ids);
 
 }

+ 28 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/StudentWithdrawService.java

@@ -1,31 +1,40 @@
 package com.ym.mec.biz.service;
 
+import java.math.BigDecimal;
+
 import com.ym.mec.biz.dal.dto.CashAccountDetail;
-import com.ym.mec.biz.dal.dto.WithdrawDto;
 import com.ym.mec.biz.dal.dto.WithdrawInfoDto;
 import com.ym.mec.biz.dal.entity.StudentWithdraw;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.TransTypeEnum;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
-public interface StudentWithdrawService extends BaseService<String, StudentWithdraw> {
+public interface StudentWithdrawService extends BaseService<Integer, StudentWithdraw> {
 
-    /**
-     * 确认提现
-     * @param withdrawDto
-     * @return
-     */
-    boolean confirmWithdraw(WithdrawDto withdrawDto);
+	/**
+	 * 确认提现
+	 * @param id 提现申请编号
+	 * @param status 交易状态
+	 * @param memo 备注
+	 * @param transNo 交易流水号
+	 * @param transType 交易渠道
+	 * @return
+	 */
+	boolean confirmWithdraw(Integer id, DealStatusEnum status, String memo, String transNo, TransTypeEnum transType);
 
-    /**
-     * 根据学员id查询提现记录
-     * @param cashAccountDetail
-     * @return
-     */
-    PageInfo<WithdrawInfoDto> queryWithdrawPage(CashAccountDetail cashAccountDetail);
+	/**
+	 * 根据学员id查询提现记录
+	 * @param cashAccountDetail
+	 * @return
+	 */
+	PageInfo<WithdrawInfoDto> queryWithdrawPage(CashAccountDetail cashAccountDetail);
 
-    /**
-     *  新增提现记录
-     * @param studentWithdraw
-     */
-    void add(StudentWithdraw studentWithdraw) throws Exception;
+	/**
+	 *  新增提现记录
+	 * @param userId
+	 * @param bankCardNo
+	 * @param amount
+	 */
+	void apply(Integer userId, String bankCardNo, BigDecimal amount) throws Exception;
 }

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

@@ -1,7 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.SysMessageConfig;
-import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.common.service.BaseService;
 
 public interface SysMessageConfigService extends BaseService<Integer, SysMessageConfig> {
@@ -11,5 +11,5 @@ public interface SysMessageConfigService extends BaseService<Integer, SysMessage
 	 * @param type
 	 * @return
 	 */
-	public SysMessageConfig queryByType(MessageType type);
+	SysMessageConfig queryByType(MessageTypeEnum type);
 }

+ 8 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -1,14 +1,14 @@
 package com.ym.mec.biz.service;
 
-import java.util.Date;
-
 import com.ym.mec.biz.dal.entity.SysMessage;
-import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
-import com.ym.mec.biz.dal.enums.SendStatusEnum;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.SendStatusEnum;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 
+import java.util.Date;
+
 public interface SysMessageService extends BaseService<Long, SysMessage> {
 
 	/**
@@ -62,7 +62,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param args 参数
 	 * @return
 	 */
-	public void sendMessage(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageType messageType, String receivers, Date triggerTime,
+	public void sendMessage(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageTypeEnum messageType, String receivers, Date triggerTime,
 			Integer readStatus, String url, Object... args);
 
 	/**
@@ -90,7 +90,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param receiver 消息接受者
 	 * @return
 	 */
-	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageType messageType, String receiver);
+	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageTypeEnum messageType, String receiver);
 
 	/**
 	 * 获取已经发送的验证码
@@ -98,14 +98,14 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param mobileNOOrEmailAddr
 	 * @return
 	 */
-	public String getSendedVerificationCode(MessageType type, String mobileNOOrEmailAddr);
+	public String getSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr);
 
 	/**
 	 * 删除已有的key
 	 * @param type
 	 * @param mobileNOOrEmailAddr
 	 */
-	public void delSendedVerificationCode(MessageType type, String mobileNOOrEmailAddr);
+	public void delSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr);
 
 	/**
 	 * 查询消息未读条数

+ 134 - 96
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;
@@ -806,6 +808,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);
@@ -831,32 +835,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);
 
@@ -868,13 +850,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);
@@ -894,11 +884,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);
@@ -914,12 +921,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);
@@ -1020,32 +1026,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);
 
@@ -1057,13 +1041,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);
@@ -1083,11 +1075,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);
@@ -1103,8 +1112,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;
@@ -1179,6 +1191,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);
@@ -1200,32 +1214,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);
 
@@ -1237,13 +1229,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);
@@ -1263,11 +1263,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);
@@ -1283,12 +1300,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();
@@ -1373,15 +1390,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 if (!Objects.isNull(currentBishopTeacher)) {
                     e.setMasterTeacherId(currentBishopTeacher.getUserId());
                     e.setMasterTeacherName(currentBishopTeacher.getUserName());
-                    e.setTeacherNum(1);
                 }
 
                 List<CourseScheduleTeacherSalary> currentCourseTeachingTeachers = courseScheduleTeachingTeacherMaps.get(e.getCourseScheduleId().longValue());
                 if (CollectionUtils.isEmpty(currentCourseTeachingTeachers)) {
+                    e.setTeacherNum(0);
                     e.setTeachingTeachers(new ArrayList<>());
                 } else {
                     e.setTeachingTeachers(currentCourseTeachingTeachers);
-                    e.setTeacherNum(e.getTeacherNum() == null ? 0 : e.getTeacherNum() + currentCourseTeachingTeachers.size());
+                    e.setTeacherNum(currentCourseTeachingTeachers.size());
                 }
 
             });
@@ -1412,4 +1429,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
         return classGroupList;
     }
+
+    @Override
+    public List<ClassGroupTeachersDto> classGroupAndTeacher(int classGroupId) {
+        List<ClassGroupTeachersDto> classGroups = classGroupDao.findClassGroupByMixClassGroupId(classGroupId);
+        String classGroupIds = "";
+        for (ClassGroupTeachersDto classGroupTeachersDto : classGroups) {
+            classGroupIds += classGroupTeachersDto.getId() + ",";
+        }
+        classGroupIds = classGroupIds.substring(0, classGroupIds.length() - 1);
+
+        List<ClassGroupTeacherMapper> classGroupTeachers = classGroupTeacherMapperDao.findClassGroupTeachers(classGroupIds);
+        for (ClassGroupTeachersDto classGroup : classGroups) {
+            List<ClassGroupTeacherMapper> classGroupTeacherMappers = new ArrayList<>();
+            for (ClassGroupTeacherMapper classGroupTeacher : classGroupTeachers) {
+                if (!classGroup.getId().equals(classGroupTeacher.getUserId())) continue;
+                classGroupTeacherMappers.add(classGroupTeacher);
+            }
+            classGroup.setClassGroupTeacherMapperList(classGroupTeacherMappers);
+        }
+        return classGroups;
+    }
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -3,6 +3,9 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.entity.ImGroupMember;
+import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.im.ImFeignService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -30,6 +33,8 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
     private ClassGroupService classGroupService;
     @Autowired
     private ClassGroupRelationService classGroupRelationService;
+    @Autowired
+    private ImFeignService imFeignService;
 
     @Override
     public BaseDAO<Long, ClassGroupStudentMapper> getDAO() {
@@ -61,6 +66,14 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
         //3、删除学生对应班级的课程
         List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroupId);
         courseScheduleStudentPaymentService.deleteStudentCourseSchedule(userId, courseScheduleList);
+
+        //4、学生退出班级群组
+        ClassGroup classGroup = classGroupService.get(classGroupId);
+
+        ImGroupMember[] imGroupMembers = {new ImGroupMember(userId.toString())};
+        // 退出群组
+        imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
         return true;
     }
 

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

@@ -22,6 +22,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
@@ -86,7 +87,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		sysUserCashAccountDao.insert(new SysUserCashAccount(employee.getId(),"CNY"));
 		//添加用户电子签章账户
 		contractService.register(employee.getId());
-		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(), employee.getAvatar()));
+		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(),
+				StringUtils.isEmpty(employee.getAvatar())?"https://daya-online.oss-cn-beijing.aliyuncs.com/201910/RgHwgKc.jpg":employee.getAvatar()));
 		employee.setImToken(imResult.getToken());
 		employeeDao.update(employee);
 	}

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

@@ -1,13 +1,12 @@
 package com.ym.mec.biz.service.impl;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.ym.mec.biz.dal.dao.GoodsDao;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import java.util.List;
 

+ 13 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -7,18 +7,17 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.service.*;
 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.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,8 +26,6 @@ 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.util.*;
 import java.util.stream.Collectors;
 
@@ -193,12 +190,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
-    public MusicCardDto queryPersonalMusicGroups(Integer id) {
-        MusicCardDto musicCardDto = musicGroupDao.queryPersonalMusicGroups(id);
+    public MusicCardDto queryPersonalMusicGroups(Integer userId) {
+        MusicCardDto musicCardDto = musicGroupDao.queryPersonalMusicGroups(userId);
         if(musicCardDto != null){
-            musicCardDto.setMusicGroupNum(musicGroupDao.countUserMusicGroups(id));
-            musicCardDto.setVipClassNum(musicGroupDao.countCourseByType(id, ClassGroupTypeEnum.VIP));
-            return musicGroupDao.queryPersonalMusicGroups(id);
+            musicCardDto.setMusicGroupNum(musicGroupDao.countUserMusicGroups(userId));
+            musicCardDto.setVipClassNum(musicGroupDao.countCourseByType(userId, ClassGroupTypeEnum.VIP));
+            return musicGroupDao.queryPersonalMusicGroups(userId);
         }
         return new MusicCardDto();
     }
@@ -539,7 +536,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
-    public PageInfo<MusicGroup> queryMusicGroupPage(QueryInfo queryInfo) {
+    public PageInfo<MusicGroup> queryMusicGroupPage(MusicGroupQueryInfo queryInfo) {
         PageInfo<MusicGroup> musicGroupPageInfo = queryPage(queryInfo);
         List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows();
         // 获取学校编号列表
@@ -567,7 +564,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         // 获取收费类型编号列表
         Set<Integer> chargeTypeIds = musicGroupList.stream().map(e -> e.getChargeTypeId()).collect(Collectors.toSet());
-        List<Map<Integer, String>> chargeTypeNames = chargeTypeDao.queryNameByIds(chargeTypeIds);
+        if(chargeTypeIds == null){
+            chargeTypeIds = new HashSet<>();
+        }
+        List<Map<Integer, String>> chargeTypeNames = chargeTypeDao.queryNameByIds(StringUtils.join(chargeTypeIds,","));
         Map<Integer, String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames);
 
         musicGroupList.forEach(e -> {
@@ -660,9 +660,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
-    public MusicGroup openPay(String musicGroupId) {
+    public MusicGroup openPay(String musicGroupId, String expireDate) {
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
         musicGroup.setStatus(MusicGroupStatusEnum.PAY);
+        musicGroup.setApplyExpireDate(DateUtil.toDate(expireDate));
         musicGroupDao.update(musicGroup);
         return musicGroup;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -103,4 +104,13 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
 
         return musicGroupRegResp;
     }
+
+    @Override
+    public void addApplyStudentNum(String musicGroupId, Integer subjectId,int num) {
+        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
+        int applyNum = musicOneSubjectClassPlan.getApplyStudentNum() == null ? 0 : musicOneSubjectClassPlan.getApplyStudentNum();
+        musicOneSubjectClassPlan.setApplyStudentNum(applyNum + num);
+        musicOneSubjectClassPlan.setUpdateTime(new Date());
+        musicGroupSubjectPlanDao.update(musicOneSubjectClassPlan);
+    }
 }

+ 11 - 39
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SmsCodeServiceImpl.java

@@ -2,44 +2,27 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.SysMessageConfigDao;
-import com.ym.mec.biz.dal.dao.SysMessageDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.entity.SysMessage;
-import com.ym.mec.biz.dal.entity.SysMessageConfig;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.SmsCodeService;
-import com.ym.mec.biz.service.SysMessageConfigService;
-import com.ym.mec.common.redis.service.RedisCache;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
-import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
 public class SmsCodeServiceImpl implements SmsCodeService {
-	
-	@Autowired
-	private RedisCache<String,Object> redisCache;
-	
-	private final String loginVerifyCodeKey = "loginVerifyCode:";
-	
-	private int expireTime = 60 * 10;
-
-	@Autowired
-	private MessageSenderPluginContext messageSenderPluginContext;
 
 	@Autowired
-	private SysMessageConfigDao sysMessageConfigDao;
-	@Autowired
-	private SysMessageDao sysMessageDao;
+	private SysMessageService sysMessageService;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public boolean verifyValidCode(String mobile, String authCode) {
-		String verifyCode = (String) redisCache.get(loginVerifyCodeKey + mobile);
+//		String verifyCode = (String) redisCache.get(loginVerifyCodeKey + mobile);
+		String verifyCode = sysMessageService.getSendedVerificationCode(MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, mobile);
 		if(StringUtils.isNoneEmpty(verifyCode) && StringUtils.equalsIgnoreCase(verifyCode,authCode)){
 			return true;
 		}
@@ -51,30 +34,19 @@ public class SmsCodeServiceImpl implements SmsCodeService {
 //		String code = RandomStringUtils.randomNumeric(6);
 		String code = "123456";
 		// 发送验证码
-		SysMessageConfig messageConfig = sysMessageConfigDao.get(1);
-		String content = String.format(messageConfig.getContent(), code);
-		messageSenderPluginContext.send(MessageSenderPluginContext.MessageSender.YIMEI,"",content,mobile,"");
+//		SysMessageConfig messageConfig = sysMessageConfigDao.get(1);
+//		String content = String.format(messageConfig.getContent(), code);
+//		messageSenderPluginContext.send(MessageSenderPluginContext.MessageSender.YIMEI,"",content,mobile,"");
 		//保存发送记录
 		SysUser sysUser = sysUserFeignService.queryUserByMobile(mobile);
 		Integer userId = null;
 		if(sysUser != null){
 			userId = sysUser.getId();
 		}
-		sysMessageDao.insert(new SysMessage("",content, MessageSendMode.SMS,mobile,userId,""));
-		redisCache.put(loginVerifyCodeKey + mobile, code, expireTime);
+		sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.YIMEI,userId,MessageSendMode.SMS, MessageTypeEnum.SMS_VERIFY_CODE_LOGIN,mobile);
+//		sysMessageService.insert(new SysMessage("",content, MessageSendMode.SMS,mobile,userId,""));
+//		redisCache.put(loginVerifyCodeKey + mobile, code, expireTime);
 		return true;
 	}
 
-	@Override
-	public String getValidCode(String mobile) {
-		return (String) redisCache.get(loginVerifyCodeKey + mobile);
-	}
-
-	@Override
-	public void removeValidCode(String mobile) {
-		if (redisCache.exists(loginVerifyCodeKey + mobile)) {
-			redisCache.delete(loginVerifyCodeKey + mobile);
-		}
-	}
-
 }

+ 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);
 	}
 }

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

@@ -1,37 +1,32 @@
 package com.ym.mec.biz.service.impl;
 
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import javax.annotation.Resource;
-
-import com.ym.mec.auth.api.entity.SysMenu;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.enums.SysUserType;
+import com.ym.mec.auth.api.enums.UserLockFlag;
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
+import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.common.page.PageInfo;
+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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 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.auth.api.enums.SysUserType;
-import com.ym.mec.auth.api.enums.UserLockFlag;
-import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
-import com.ym.mec.biz.dal.dto.StudentFeeDto;
-import com.ym.mec.biz.dal.dto.StudentInfo;
-import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
-import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.service.impl.BaseServiceImpl;
-import com.ym.mec.util.collection.MapUtil;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
@@ -93,9 +88,20 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public Integer batchUpdateSubject(String userIds, Integer subId, String musicGroupId) {
+    @Transactional(rollbackFor = Exception.class)
+    public Integer batchUpdateSubject(Integer userId, Integer subId, String musicGroupId) throws Exception {
+        //获取当前学员的当前声部
+        StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+        if(studentRegistration == null){
+            throw new Exception("学员信息不存在");
+        }
+        //当前专业报名人数减一
+        musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId,subId,-1);
         //批量调剂(未缴费学员)
-        return studentRegistrationDao.batchUpdateSubject(userIds, subId, musicGroupId);
+        int i = studentRegistrationDao.batchUpdateSubject(userId, subId, musicGroupId);
+        //修改专业已报名人数
+        musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId,subId,1);
+        return i;
     }
 
     @Override
@@ -152,12 +158,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             sysUser.setUserType(SysUserType.STUDENT);
             sysUser.setGender(studentRegistration.getGender());
             sysUser.setOrganId(studentRegistration.getOrganId());
-            sysUser.setRealName(studentRegistration.getName());
+            sysUser.setRealName(studentRegistration.getParentsName());
+            sysUser.setUsername(studentRegistration.getName());
             sysUser.setIdCardNo(studentRegistration.getIdCardNo());
             teacherDao.addSysUser(sysUser);
             userId = sysUser.getId();
             //添加用户现金账户
-            sysUserCashAccountDao.insert(new SysUserCashAccount(userId,"CNY"));
+            sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
             //添加用户电子签章账户
             contractService.register(userId);
             //注册到融云
@@ -168,9 +175,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         studentRegistration.setUserId(sysUser.getId());
         studentRegistrationDao.insert(studentRegistration);
         //增加报名学生数
-        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
-        int applyNum = musicOneSubjectClassPlan.getApplyStudentNum() == null ? 0 : musicOneSubjectClassPlan.getApplyStudentNum();
-        musicOneSubjectClassPlan.setApplyStudentNum(applyNum + 1);
+        musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(),1);
         return studentRegistration;
     }
 
@@ -183,6 +188,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     public StudentPaymentOrder addOrder(StudentRegistration studentRegistration, BigDecimal amount, String orderNo, String paymentChannel, BigDecimal courseFee, List<MusicGroupSubjectGoodsGroup> goodsGroups, List<Goods> goodsList, List<Goods> otherGoodsList) {
 
+
+
+
+
         Date date = new Date();
         StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
         studentPaymentOrder.setUserId(studentRegistration.getUserId());
@@ -258,8 +267,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         //增加缴费学生数
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
         int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
-        musicOneSubjectClassPlan.setPaidStudentNum(paidNum+1);
-
+        musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
         return studentPaymentOrder;
     }
 
@@ -372,7 +380,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 teacherDao.addSysUser(sysUser);
                 userId = sysUser.getId();
                 //添加用户现金账户
-                sysUserCashAccountDao.insert(new SysUserCashAccount(userId,"CNY"));
+                sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
                 //添加用户电子签章账户
                 contractService.register(userId);
                 //注册到融云
@@ -385,6 +393,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             studentRegistration.setUserId(userId);
             //学生报名表
             studentRegistrationDao.insert(studentRegistration);
+            //增加报名学生数
+            musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(),1);
             if (studentRegistration.getClassGroupId() != null) {
                 ClassGroup classGroup = classGroupDao.get(studentRegistration.getClassGroupId());
                 if (classGroup != null) {
@@ -445,20 +455,34 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public StudentPaymentOrder updateApplyOrder(StudentPaymentOrder studentPaymentOrder) {
         //更新订单状态
         studentPaymentOrderService.update(studentPaymentOrder);
+        Date nowDate = new Date();
 
         //成功报名状态变更
         StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(studentPaymentOrder.getUserId(), studentPaymentOrder.getMusicGroupId());
+        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
+
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)) {
             studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
             studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
             studentRegistrationDao.update(studentRegistration);
+
+            //加入缴费周期
+            MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee();
+            musicGroupStudentFee.setMusicGroupId(studentRegistration.getMusicGroupId());
+            musicGroupStudentFee.setUserId(studentRegistration.getUserId());
+            musicGroupStudentFee.setCourseFee(musicOneSubjectClassPlan.getFee());
+            musicGroupStudentFee.setCreateTime(nowDate);
+            musicGroupStudentFee.setUpdateTime(nowDate);
+            musicGroupStudentFee.setLatestPaidTime(nowDate);
+            musicGroupStudentFee.setSubjectId(studentRegistration.getActualSubjectId());
+            musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
+            musicGroupStudentFeeDao.insert(musicGroupStudentFee);
         }
 
         //失败减去已收款金额
 
         //减去缴费人数
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAilED)) {
-            MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
             musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
             musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
         }
@@ -488,18 +512,16 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     public List<StudentRegistration> findMusicGroupStudent(String musicGroupId, Integer actualSubjectId) {
-        return studentRegistrationDao.findMusicGroupStudent(musicGroupId,actualSubjectId);
+        return studentRegistrationDao.findMusicGroupStudent(musicGroupId, actualSubjectId);
     }
 
     @Override
     public List<StudentRegistration> findStudentListByUserIdList(String musicGroupId, List<Integer> userIdList) {
-        return studentRegistrationDao.findStudentListByUserIdList(musicGroupId,userIdList);
+        return studentRegistrationDao.findStudentListByUserIdList(musicGroupId, userIdList);
     }
 
     @Override
-    public int openPayment(Long id) {
-        StudentRegistration studentRegistration = studentRegistrationDao.get(id);
-        studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
-        return studentRegistrationDao.update(studentRegistration);
+    public int openPayment(String ids) {
+        return studentRegistrationDao.batchOpenPay(ids, PaymentStatusEnum.OPEN);
     }
 }

+ 91 - 89
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java

@@ -1,10 +1,21 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.google.common.collect.Lists;
 import com.ym.mec.biz.dal.dao.StudentWithdrawDao;
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dto.CashAccountDetail;
-import com.ym.mec.biz.dal.dto.WithdrawDto;
 import com.ym.mec.biz.dal.dto.WithdrawInfoDto;
 import com.ym.mec.biz.dal.entity.StudentWithdraw;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
@@ -21,24 +32,9 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.date.DateUtil;
-import com.ym.mec.util.string.IdWorker;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 
 @Service
-public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentWithdraw>  implements StudentWithdrawService {
+public class StudentWithdrawServiceImpl extends BaseServiceImpl<Integer, StudentWithdraw> implements StudentWithdrawService {
 
 	@Autowired
 	private StudentWithdrawDao studentWithdrawDao;
@@ -46,7 +42,7 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 	private SysUserCashAccountDao sysUserCashAccountDao;
 
 	@Override
-	public BaseDAO<String, StudentWithdraw> getDAO() {
+	public BaseDAO<Integer, StudentWithdraw> getDAO() {
 		return studentWithdrawDao;
 	}
 
@@ -61,50 +57,62 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public boolean confirmWithdraw(WithdrawDto withdrawDto) {
+	public boolean confirmWithdraw(Integer id, DealStatusEnum status, String memo, String transNo, TransTypeEnum transType) {
+
+		StudentWithdraw studentWithdraw = get(id);
+
+		if (studentWithdraw == null) {
+			throw new BizException("提现申请记录不存在");
+		}
+
+		Date date = new Date();
+
+		Integer userId = studentWithdraw.getUserId();
+		BigDecimal amount = studentWithdraw.getAmount();
+
+		studentWithdraw.setComment(memo);
+		studentWithdraw.setModifyTime(date);
+		studentWithdraw.setStatus(status);
+		studentWithdraw.setTransNo(transNo);
+
+		studentWithdrawDao.update(studentWithdraw);
+
 		try {
-			SysUserCashAccount sysUserCashAccount = cashAccountService.get(withdrawDto.getUserId().intValue());
-			if (Objects.isNull(sysUserCashAccount)){
+			SysUserCashAccount sysUserCashAccount = cashAccountService.get(userId);
+			if (Objects.isNull(sysUserCashAccount)) {
 				throw new BizException("账户不存在!");
 			}
-			//校验银行账户余额
-			if (sysUserCashAccount.getBalance().compareTo(withdrawDto.getAmount()) < 0) {
-				throw new BizException("余额不足,提现失败!");
+			// 校验银行账户余额
+			if (sysUserCashAccount.getFrozenAmount().compareTo(amount) < 0) {
+				throw new BizException("账户冻结金额异常");
 			}
-			//第三方提现到用户银行卡
-			//用户个人虚拟账户金额减少
-
-			//生成提现记录(缺少银行流水号,交易状态,用户承担的费用,平台承担的费用)
-			Integer withdrawId = saveStudentWithdraw(withdrawDto);
+			sysUserCashAccount.setFrozenAmount(sysUserCashAccount.getFrozenAmount().subtract(amount));
+			
+			if(status == DealStatusEnum.FAilED){
+				sysUserCashAccount.setBalance(sysUserCashAccount.getBalance().add(amount));
+			}
+			sysUserCashAccount.setUpdateTime(date);
+			cashAccountService.update(sysUserCashAccount);
+			
+			SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
+			sysUserCashAccountDetail.setUserId(userId);
+			sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WITHDRAW);
+			sysUserCashAccountDetail.setStatus(status);
+			sysUserCashAccountDetail.setAmount(amount);
+			sysUserCashAccountDetail.setAttribute(id + "");
+			sysUserCashAccountDetail.setComment(memo);
+			sysUserCashAccountDetail.setTransNo(transNo);
+			sysUserCashAccountDetail.setTransType(transType);
+			sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
+			
+			cashAccountDetailService.insert(sysUserCashAccountDetail);
 
-			accountDetailService.addCashAccountDetail(withdrawDto.getUserId(),withdrawDto.getAmount(),withdrawId +"","",
-					PlatformCashAccountDetailTypeEnum.WITHDRAW,TransTypeEnum.FAST_PAYMENT, DealStatusEnum.ING,"");
 		} catch (Exception e) {
 			log.error("用户提现出现异常 {}", e.getMessage(), e);
 			throw new BizException(e.getMessage());
 		}
 		return true;
 	}
-	/**
-	 * 修改用户账户余额,保存账户明细
-	 *
-	 * @param withdrawDto
-	 */
-	private void updateCashAccount(SysUserCashAccount sysUserCashAccount, WithdrawDto withdrawDto) {
-		BigDecimal balance = sysUserCashAccount.getBalance().subtract(withdrawDto.getAmount());
-		SysUserCashAccount account = new SysUserCashAccount();
-		account.setUserId(sysUserCashAccount.getUserId());
-		account.setBalance(balance);
-		account.setUpdateTime(new Date());
-		cashAccountService.update(account);
-		SysUserCashAccountDetail cashAccountDetail = new SysUserCashAccountDetail();
-		cashAccountDetail.setUserId(withdrawDto.getUserId());
-		cashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WITHDRAW);
-		cashAccountDetail.setAmount(withdrawDto.getAmount());
-		cashAccountDetail.setBalance(balance);
-		cashAccountDetail.setCreateTime(new Date());
-		cashAccountDetailService.insert(cashAccountDetail);
-	}
 
 	@Override
 	public PageInfo<WithdrawInfoDto> queryWithdrawPage(CashAccountDetail cashAccountDetail) {
@@ -112,7 +120,7 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 		cashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WITHDRAW.getCode());
 		PageInfo<SysUserCashAccountDetail> accountDetailPageInfo = accountDetailService.queryPage(cashAccountDetail);
 		List<WithdrawInfoDto> dataList = Lists.newArrayList();
-		accountDetailPageInfo.getRows().forEach(data ->{
+		accountDetailPageInfo.getRows().forEach(data -> {
 			WithdrawInfoDto withdrawInfoDto = new WithdrawInfoDto();
 			StudentWithdraw studentWithdraw = studentWithdrawDao.getByUserId(data.getUserId().longValue());
 			withdrawInfoDto.setWithdrawId(studentWithdraw.getWithdrawNo());
@@ -122,9 +130,9 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 			withdrawInfoDto.setTransTypeName(TransTypeEnum.getDescriptionByCode(data.getTransType().getCode()));
 			withdrawInfoDto.setAccountNo(studentWithdraw.getBankCardNo());
 			withdrawInfoDto.setWithdrawStatus(studentWithdraw.getStatus().getMsg());
-			//支付账号
-			dataList.add(withdrawInfoDto);
-		});
+			// 支付账号
+				dataList.add(withdrawInfoDto);
+			});
 		BeanUtils.copyProperties(accountDetailPageInfo, result);
 		result.setRows(dataList);
 		return result;
@@ -132,53 +140,47 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<String, StudentW
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void add(StudentWithdraw withdraw) throws Exception {
-		SysUserCashAccount account = sysUserCashAccountDao.get(withdraw.getUserId());
-		//账户状态正常
-		if(account != null && account.getStatus() == PlatformCashAccountStatusEnum.NORMAL){
-			//提现金额不大于账户可用余额
-			if(withdraw.getAmount().compareTo(account.getBalance()) < 1){
-				//修改账户余额
-				BigDecimal subtract = account.getBalance().subtract(withdraw.getAmount());
-				account.setBalance(subtract);
-				account.setFrozenAmount(account.getFrozenAmount().add(withdraw.getAmount()));
+	public void apply(Integer userId, String bankCardNo, BigDecimal amount) throws Exception {
+		SysUserCashAccount account = sysUserCashAccountDao.getLocked(userId);
+		// 账户状态正常
+		if (account != null && account.getStatus() == PlatformCashAccountStatusEnum.NORMAL) {
+			// 提现金额不大于账户可用余额
+			if (amount.compareTo(account.getBalance()) < 1) {
 				Date date = new Date();
+
+				StudentWithdraw withdraw = new StudentWithdraw();
+				withdraw.setAmount(amount);
+				withdraw.setBankCardNo(bankCardNo);
+				withdraw.setCreateTime(date);
+				withdraw.setModifyTime(date);
+				withdraw.setStatus(DealStatusEnum.ING);
+				withdraw.setUserId(userId);
+				withdraw.setWithdrawNo(System.currentTimeMillis() + "");
+
+				// 修改账户余额
+				BigDecimal subtract = account.getBalance().subtract(amount);
+				account.setBalance(subtract);
+				account.setFrozenAmount(account.getFrozenAmount().add(amount));
 				account.setUpdateTime(date);
 				sysUserCashAccountDao.update(account);
+
+				withdraw.setBalance(subtract);
+				studentWithdrawDao.insert(withdraw);
+
 				SysUserCashAccountDetail cashAccountDetail = new SysUserCashAccountDetail();
 				cashAccountDetail.setUserId(account.getUserId());
 				cashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WITHDRAW);
-				cashAccountDetail.setAmount(withdraw.getAmount());
+				cashAccountDetail.setAmount(amount);
 				cashAccountDetail.setBalance(subtract);
 				cashAccountDetail.setCreateTime(date);
+				cashAccountDetail.setStatus(DealStatusEnum.ING);
 				cashAccountDetailService.insert(cashAccountDetail);
-				withdraw.setWithdrawNo(RandomStringUtils.random(8));
-				studentWithdrawDao.insert(withdraw);
-			}else {
+			} else {
 				throw new Exception("账户余额不足");
 			}
-		}else {
+		} else {
 			throw new Exception("账户状态异常");
 		}
 	}
 
-
-
-	/**
-	 * 保存提现记录
-	 *
-	 * @param withdrawDto
-	 */
-	private Integer saveStudentWithdraw(WithdrawDto withdrawDto) {
-		IdWorker idWorker = new IdWorker(0, 0);
-		StudentWithdraw studentWithdraw = new StudentWithdraw();
-		studentWithdraw.setWithdrawNo(idWorker.nextId());
-		studentWithdraw.setUserId(withdrawDto.getUserId());
-		studentWithdraw.setBankCardNo(withdrawDto.getBankCardNo());
-		studentWithdraw.setAmount(withdrawDto.getAmount());
-		studentWithdraw.setCreateTime(new Date());
-		insert(studentWithdraw);
-		return studentWithdraw.getId();
-	}
-
 }

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

@@ -2,7 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.SysMessageConfigDao;
 import com.ym.mec.biz.dal.entity.SysMessageConfig;
-import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.SysMessageConfigService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -21,8 +21,8 @@ public class SysMessageConfigServiceImpl extends BaseServiceImpl<Integer, SysMes
 	}
 
 	@Override
-	public SysMessageConfig queryByType(MessageType type) {
-		return sysMessageConfigDao.queryByType(type);
+	public SysMessageConfig queryByType(MessageTypeEnum type) {
+		return sysMessageConfigDao.queryByType(type.getCode());
 	}
 	
 }

+ 9 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -5,8 +5,8 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.SysMessageDao;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.entity.SysMessageConfig;
-import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.SendStatusEnum;
 import com.ym.mec.biz.service.SysMessageConfigService;
 import com.ym.mec.biz.service.SysMessageService;
@@ -151,8 +151,8 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	@Async
-	public void sendMessage(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageType type, String receivers, Date triggerTime,
-			Integer readStatus, String url, Object... args) {
+	public void sendMessage(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageTypeEnum type, String receivers, Date triggerTime,
+							Integer readStatus, String url, Object... args) {
 
 		if (StringUtils.isBlank(receivers)) {
 			throw new BizException("接收地址不能为空");
@@ -215,7 +215,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageType messageType, String receiver) {
+	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageTypeEnum messageType, String receiver) {
 		String key1 = getVerificationCode1CacheKey(messageType, receiver);
 		if (redisCache.get(key1) != null) {
 			throw new BizException("请勿频繁操作,获取验证码间隔时间为60秒");
@@ -233,7 +233,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	public String getSendedVerificationCode(MessageType type, String mobileNOOrEmailAddr) {
+	public String getSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr) {
 		if (debugMode == true) {
 			return DEFAULT_CODE + "";
 		}
@@ -243,7 +243,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	public void delSendedVerificationCode(MessageType type, String mobileNOOrEmailAddr) {
+	public void delSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr) {
 		String key = getVerificationCodeCacheKey(type, mobileNOOrEmailAddr);
 		if (StringUtils.isNotBlank(key)) {
 			redisCache.delete(key);
@@ -259,7 +259,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		this.debugMode = debugMode;
 	}
 
-	private int getRandomCode(MessageType type, String mobileNo) {
+	private int getRandomCode(MessageTypeEnum type, String mobileNo) {
 		int min = 100000;
 		int max = 999999;
 		Random random = new Random();
@@ -267,11 +267,11 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		return random.nextInt(max) % (max - min + 1) + min;
 	}
 
-	private static String getVerificationCodeCacheKey(MessageType type, String mobileNOOrEmailAddr) {
+	private static String getVerificationCodeCacheKey(MessageTypeEnum type, String mobileNOOrEmailAddr) {
 		return "verificationCode" + type.name() + mobileNOOrEmailAddr;
 	}
 
-	private static String getVerificationCode1CacheKey(MessageType type, String mobileNOOrEmailAddr) {
+	private static String getVerificationCode1CacheKey(MessageTypeEnum type, String mobileNOOrEmailAddr) {
 		return "verificationCode" + mobileNOOrEmailAddr;
 	}
 

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

@@ -79,9 +79,6 @@
 		SELECT COUNT(*) FROM charge_type WHERE del_flag_ = 0
 	</select>
     <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
-        SELECT id_ `key`,name_ `value` FROM charge_type WHERE id_ IN
-        <foreach item="item" index="index" collection="chargeTypeIds" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+        SELECT id_ `key`,name_ `value` FROM charge_type WHERE FIND_IN_SET(id_,#{chargeTypeIds})
     </select>
 </mapper>

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

@@ -540,6 +540,7 @@
     </sql>
     <resultMap id="MusicGroupCourseScheduleDto" type="com.ym.mec.biz.dal.dto.MusicGroupCourseScheduleDto">
         <result property="courseScheduleId" column="course_schedule_id_"/>
+        <result property="classGroupName" column="course_schedule_name_"/>
         <result property="classDate" column="class_date_"/>
         <result property="startClassTime" column="start_class_time_"/>
         <result property="startClassTimeStr" column="start_class_time_"/>
@@ -554,7 +555,7 @@
     </resultMap>
     <select id="queryMusicGroupCourseSchedule" resultMap="MusicGroupCourseScheduleDto">
         SELECT cs.id_ course_schedule_id_,cs.class_date_,cs.start_class_time_,cs.end_class_time_,cs.class_group_id_,
-        cs.type_ course_schedule_type_,cs.status_ course_schedule_status_,
+        cs.type_ course_schedule_type_,cs.status_ course_schedule_status_,cs.name_ course_schedule_name_,
         IF(cgr.class_group_id_ IS NULL,cs.class_group_id_,cgr.class_group_id_) mix_class_group_id_,
         IF(ISNULL(ta.sign_in_status_),3,ta.sign_in_status_) sign_in_status_,
         IF(ISNULL(ta.sign_out_status_),3,ta.sign_out_status_) sign_out_status_
@@ -646,4 +647,11 @@
         </if>
          AND del_flag_='0'
     </select>
+
+    <!-- 根据合奏班id获取子班及老师 -->
+    <select id="findClassGroupByMixClassGroupId" resultMap="ClassGroupTeachers">
+        SELECT * FROM class_group WHERE id_ IN
+        (SELECT sub_class_group_id_ FROM class_group_relation
+        WHERE class_group_id_ = #{mixClassGroupId}) AND del_flag_ = 0
+    </select>
 </mapper>

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

@@ -25,7 +25,7 @@
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="CooperationOrgan">
-		SELECT * FROM cooperation_organ
+		SELECT * FROM cooperation_organ AND del_flag_ = 0
 		ORDER BY id_
 	</select>
 
@@ -99,6 +99,6 @@
         </where>
 	</select>
     <select id="queryByOrganId" resultMap="CooperationOrgan">
-        SELECT * FROM cooperation_organ WHERE organ_id_ = #{organId}
+        SELECT * FROM cooperation_organ WHERE organ_id_ = #{organId} AND del_flag_ = 0
     </select>
 </mapper>

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

@@ -218,7 +218,6 @@
 		UPDATE course_schedule_teacher_salary set
 			subsidy_ = #{subsidy},
 			expect_salary_ = #{salary},
-			teacher_role_ = #{teacherRole},
 			update_time_ = now()
 		WHERE user_id_ = #{userId} and class_group_id_ = #{classGroupId}
 	</update>

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

@@ -133,14 +133,33 @@
 	</delete>
 
 	<select id="queryPage" resultMap="MusicGroup" parameterType="map">
-		SELECT * FROM music_group ORDER BY update_time_ DESC
+		SELECT * FROM music_group
+		<include refid="musicGroupQueryPageSql"/>
+		ORDER BY update_time_ DESC
 		<include refid="global.limit" />
 	</select>
 
+	<sql id="musicGroupQueryPageSql">
+		<where>
+			<if test="organId != null">
+				AND organ_id_ = #{organId}
+			</if>
+			<if test="musicGroupName != null and musicGroupName != ''">
+				AND name_ LIKE CONCAT('%',#{musicGroupName},'%')
+			</if>
+			<if test="chargeTypeId != null">
+				AND charge_type_id_ = #{chargeTypeId}
+			</if>
+			<if test="musicGroupStatus != null">
+				AND status_ = #{musicGroupStatus}
+			</if>
+		</where>
+	</sql>
+
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM
-		music_group
+		SELECT COUNT(*) FROM music_group
+		<include refid="musicGroupQueryPageSql"/>
 	</select>
 
 	<resultMap type="com.ym.mec.biz.dal.dto.MusicCardDto" id="queryUserMusicGroupsMap">
@@ -172,6 +191,7 @@
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
 		WHERE sr.user_id_ = #{userId}
+		ORDER BY mg.update_time_ DESC LIMIT 1
 	</select>
 
 	<select id="countUserMusicGroups" resultType="int">

+ 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>

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

@@ -264,9 +264,10 @@
         UPDATE student_registration SET class_group_id_ = #{studentRegistration.classGroupId} WHERE user_id_ =
         #{studentRegistration.userId} AND music_group_id_ = #{studentRegistration.musicGroupId}
     </update>
+
     <update id="batchUpdateSubject">
         UPDATE student_registration SET actual_subject_id_ = #{subId},update_time_ = now()
-        WHERE FIND_IN_SET(user_id_,#{userIds}) AND payment_status_ = 0 AND music_group_id_ = #{musicGroupId}
+        WHERE user_id_ = #{userIds} AND payment_status_ = 0 AND music_group_id_ = #{musicGroupId}
     </update>
 
     <select id="queryStudentInfo" resultMap="StudentInfo">
@@ -326,7 +327,7 @@
         <if test="actualSubjectId != null and actualSubjectId !=''">
             AND actual_subject_id_ = #{actualSubjectId}
         </if>
-        AND payment_status_ = 1 AND class_group_id_ IS NULL;
+        AND payment_status_ = 1 AND class_group_id_ IS NULL
     </select>
 
 
@@ -366,4 +367,9 @@
             #{userId}
         </foreach>
     </select>
-</mapper>
+
+    <!-- 批量开启缴费 -->
+    <update id="batchOpenPay">
+        UPDATE student_registration SET payment_status_ = #{paymentStatus},update_time_ = now()
+        WHERE FIND_IN_SET(id_,#{ids}) AND payment_status_ = 0
+    </update></mapper>

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

@@ -104,9 +104,7 @@
 		select count(*) from sys_message_config
 		<include refid="queryCondition" />
 	</select>
-
 	<select id="queryByType" resultMap="SysMessageConfig">
-		select * from sys_message_config
-		where message_type_ = #{messageType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		SELECT * FROM sys_message_config WHERE message_type_ = #{messageType}
 	</select>
 </mapper>

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

@@ -163,7 +163,6 @@
 	</select>
 
 	<select id="queryCountOfUnread" resultType="int">
-		select count(*) from sys_message
-		where user_id_ = #{userId} and read_status_ = 0
+		SELECT COUNT(*) FROM sys_message WHERE user_id_ = #{userId} AND read_status_ = 0 AND type_ = 3
 	</select>
 </mapper>

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

@@ -51,7 +51,7 @@
     <select id="get" resultMap="Teacher">
         SELECT t.*,su.real_name_,su.password_,su.salt_,su.phone_,su.avatar_,
         su.lock_flag_,su.del_flag_,su.wx_openid_,su.qq_openid_,su.user_type_,
-        su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_
+        su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_,su.username_
         FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
         WHERE t.id_ = #{id} AND su.del_flag_ = 0
@@ -244,10 +244,11 @@
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
         LEFT JOIN student_registration sr ON sr.user_id_ = su.id_
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
-        WHERE cgtm.user_id_ = #{teacherId}
+        WHERE cgtm.user_id_ = #{teacherId} AND su.id_ IS NOT NULL
         <if test="search != null">
             AND su.username_ LIKE CONCAT('%',#{search},'%')
         </if>
+        GROUP BY su.id_,s.id_
     </select>
     <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
         select id_ `key`,real_name_ `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds})

+ 5 - 0
mec-education/pom.xml

@@ -24,6 +24,11 @@
 			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-security</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>com.github.penggle</groupId>
+			<artifactId>kaptcha</artifactId>
+			<version>2.3.2</version>
+		</dependency>
 
 		<dependency>
 			<groupId>org.springframework.cloud</groupId>

+ 28 - 0
mec-education/src/main/java/com/ym/mec/education/config/ImageVerifyCodeConfig.java

@@ -0,0 +1,28 @@
+package com.ym.mec.education.config;
+
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Properties;
+
+@Configuration
+public class ImageVerifyCodeConfig {
+    @Bean(name="captchaProducer")
+    public DefaultKaptcha getKaptchaBean(){
+        DefaultKaptcha defaultKaptcha=new DefaultKaptcha();
+        Properties properties=new Properties();
+        properties.setProperty("kaptcha.border", "yes");
+        properties.setProperty("kaptcha.border.color", "105,179,90");
+        properties.setProperty("kaptcha.textproducer.font.color", "blue");
+        properties.setProperty("kaptcha.image.width", "125");
+        properties.setProperty("kaptcha.image.height", "45");
+        properties.setProperty("kaptcha.session.key", "code");
+        properties.setProperty("kaptcha.textproducer.char.length", "4");
+        properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
+        Config config=new Config(properties);
+        defaultKaptcha.setConfig(config);
+        return defaultKaptcha;
+    }
+}

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/config/ResourceServerConfig.java

@@ -25,7 +25,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
 		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
-				.authorizeRequests().antMatchers("/v2/api-docs").permitAll().antMatchers("/api/**").permitAll().anyRequest().authenticated().and().httpBasic();
+				.authorizeRequests().antMatchers("/v2/api-docs","/code/*").permitAll().antMatchers("/api/**").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 112 - 0
mec-education/src/main/java/com/ym/mec/education/controller/SmsCodeController.java

@@ -0,0 +1,112 @@
+package com.ym.mec.education.controller;
+
+import com.google.code.kaptcha.Constants;
+import com.google.code.kaptcha.Producer;
+import com.google.code.kaptcha.servlet.KaptchaServlet;
+import com.ym.mec.biz.service.SmsCodeService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.security.SecurityConstants;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.imageio.ImageIO;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.util.concurrent.TimeUnit;
+
+@RestController
+@RequestMapping("code")
+@Api(tags = "验证码服务")
+public class SmsCodeController extends BaseController {
+
+    @Autowired
+    private SmsCodeService smsCodeService;
+    @Autowired
+    private Producer captchaProducer;
+    @Autowired
+    private RedisTemplate<String,String> redisTemplate;
+
+    @ApiOperation(value = "发送登录短信验证码")
+    @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String")
+    @PostMapping(value = "/sendSms")
+    public Object sendLoginVerifyCode(String mobile) throws Exception {
+        smsCodeService.sendValidCode(mobile);
+        return succeed();
+    }
+
+    @ApiOperation(value = "校验短信验证码")
+    @ApiImplicitParams({ @ApiImplicitParam(name = "phone", value = "手机号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "code", value = "短信验证码", required = true, dataType = "String") })
+    @PostMapping(value = "/verifySmsCode")
+    public Object verifySmsCode(String phone,String code) {
+        if(StringUtils.isEmpty(phone) || StringUtils.isEmpty(code)){
+            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+        }
+        if(smsCodeService.verifyValidCode(phone,code)){
+            return succeed();
+        }
+        return failed("验证码校验失败");
+    }
+
+    @PostMapping(value = "/verifyLoginImage")
+    @ApiOperation("校验登录图形验证码")
+    @ApiImplicitParams({ @ApiImplicitParam(name = "phone", value = "手机号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "code", value = "验证码", required = true, dataType = "String") })
+    public Object verifyImageCode(String phone,String code){
+        if(StringUtils.isEmpty(phone) || StringUtils.isEmpty(code)){
+            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+        }
+        String redisKey = Constants.KAPTCHA_SESSION_KEY + phone;
+        if(redisTemplate.hasKey(redisKey)){
+            if(StringUtils.equals(redisTemplate.opsForValue().get(redisKey),code)){
+                return succeed();
+            }
+        }
+        return failed(SecurityConstants.VERIFY_FAILURE);
+    }
+
+    @GetMapping(value = "/getLoginImage")
+    @ApiOperation("获取登录图片验证码")
+    @ApiImplicitParam(name = "phone", value = "手机号", required = true, dataType = "String")
+    public void getKaptchaImage(HttpServletResponse response,String phone) throws Exception {
+        if(StringUtils.isEmpty(phone)){
+            return;
+        }
+        response.setDateHeader("Expires", 0);
+
+        // Set standard HTTP/1.1 no-cache headers.
+        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
+        // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
+        response.addHeader("Cache-Control", "post-check=0, pre-check=0");
+        // Set standard HTTP/1.0 no-cache header.
+        response.setHeader("Pragma", "no-cache");
+        // return a jpeg
+        response.setContentType("image/jpeg");
+        // create the text for the image
+        String capText = captchaProducer.createText();
+
+        redisTemplate.opsForValue().set(Constants.KAPTCHA_SESSION_KEY + phone,capText,3, TimeUnit.MINUTES);
+        // create the image with the text
+        BufferedImage bi = captchaProducer.createImage(capText);
+        KaptchaServlet kaptchaServlet = new KaptchaServlet();
+        kaptchaServlet.init();
+        ServletOutputStream out = response.getOutputStream();
+        // write the data out
+        ImageIO.write(bi, "jpg", out);
+        try {
+            out.flush();
+        } finally {
+            out.close();
+        }
+    }
+}

+ 2 - 1
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -17,6 +17,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
@@ -180,7 +181,7 @@ public class MusicGroupController extends BaseController {
             return failed("报名信息有误,请核查");
         }
 
-        StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId().toString(), DealStatusEnum.SUCCESS);
+        StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.SUCCESS);
         if (ApplyOrder != null) {
             return failed("您已支付成功,请勿重复支付");
         }

+ 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));
+	}
 }

+ 19 - 24
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -1,31 +1,38 @@
 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.CashAccountDetail;
-import com.ym.mec.biz.dal.entity.StudentWithdraw;
-import com.ym.mec.biz.dal.entity.SysSuggestion;
-import com.ym.mec.biz.dal.entity.SysUserBankCard;
-import com.ym.mec.biz.service.*;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.UploadReturnBean;
-import com.ym.mec.util.upload.UploadUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+
+import java.util.Date;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 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.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.util.Date;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.CashAccountDetail;
+import com.ym.mec.biz.dal.entity.SysSuggestion;
+import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.StudentManageService;
+import com.ym.mec.biz.service.StudentWithdrawService;
+import com.ym.mec.biz.service.SysSuggestionService;
+import com.ym.mec.biz.service.SysUserBankCardService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.biz.service.UploadFileService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.UploadReturnBean;
+import com.ym.mec.util.upload.UploadUtil;
 
 @Api(tags = "学生管理")
 @RestController
@@ -107,18 +114,6 @@ public class StudentManageController extends BaseController {
         return succeed(sysUserCashAccountDetailService.queryPage(queryInfo));
     }
 
-    @ApiOperation(value = "新增提现申请")
-    @PostMapping("/add")
-    public Object add(StudentWithdraw studentWithdraw) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null && sysUser.getId() == null){
-            return failed("获取用户信息失败");
-        }
-        studentWithdraw.setUserId(sysUser.getId());
-        studentWithdrawService.add(studentWithdraw);
-        return succeed();
-    }
-
     @ApiOperation(value = "新增银行卡信息")
     @PostMapping("userBankCard/add")
     public Object add(SysUserBankCard sysUserBankCard) {

+ 8 - 2
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.student.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
@@ -8,6 +9,8 @@ import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.thirdparty.union.NotifyMsg;
+import com.ym.mec.thirdparty.yqpay.Msg;
+import com.ym.mec.thirdparty.yqpay.YqPayUtil;
 import io.swagger.annotations.Api;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -17,11 +20,15 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
 @RequestMapping("studentOrder")
 @Api(tags = "订单回调")
 @RestController
 public class StudentOrderController {
-    private static final Logger log = LoggerFactory.getLogger(StudentOrderController.class);
+    private static final Logger logger = LoggerFactory.getLogger(StudentOrderController.class);
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
@@ -75,5 +82,4 @@ public class StudentOrderController {
     }
 
 
-    //
 }

+ 4 - 5
mec-student/src/main/java/com/ym/mec/student/controller/SysMessageController.java

@@ -3,7 +3,6 @@ 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.entity.SysMessage;
-import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
 import com.ym.mec.biz.service.SysMessageService;
@@ -80,7 +79,7 @@ public class SysMessageController extends BaseController {
 		return succeed(sysMessageService.queryCountOfUnread(sysUser.getId()));
 	}
 
-	@ApiOperation(value = "发送短信验证码")
+	/*@ApiOperation(value = "发送短信验证码")
 	@PostMapping("/sendSmsCode")
 	public Object sendSmsCode(String sendCodeType, String mobileNo) {
 
@@ -107,9 +106,9 @@ public class SysMessageController extends BaseController {
 		}
 		sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo);
 		return succeed();
-	}
+	}*/
 
-	@ApiOperation(value = "发送短信验证码")
+	/*@ApiOperation(value = "发送短信验证码")
 	@PostMapping("/noAuth/sendSmsCode")
 	public Object noAuthSendSmsCode(String sendCodeType, String mobileNo) {
 		MessageType messageType = MessageType.getMessageType(sendCodeType);
@@ -121,7 +120,7 @@ public class SysMessageController extends BaseController {
 		}
 //		sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo);
 		return succeed();
-	}
+	}*/
 
 	@ApiOperation(value = "发送消息")
 	@PostMapping("/sendMessage")

+ 10 - 24
mec-student/src/main/java/com/ym/mec/student/controller/WithdrawController.java

@@ -1,29 +1,22 @@
 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.entity.StudentWithdraw;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.service.StudentWithdrawService;
-import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.math.BigDecimal;
-import java.util.Date;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.service.StudentWithdrawService;
+import com.ym.mec.common.controller.BaseController;
 
-/**
- * @program: mec
- * @description: 提现
- * @author: xw
- * @create: 2019-09-23 17:12
- */
 @RestController
-@RequestMapping("withdraw")
+@RequestMapping("studentWithdraw")
 @Api(tags = "提现服务")
 public class WithdrawController extends BaseController {
 
@@ -39,15 +32,8 @@ public class WithdrawController extends BaseController {
 		if (sysUser == null || sysUser.getId() == null) {
 			return failed("获取用户信息失败");
 		}
-		Date date = new Date();
-		StudentWithdraw studentWithdraw = new StudentWithdraw();
-		studentWithdraw.setUserId(sysUser.getId());
-		studentWithdraw.setAmount(amount);
-		studentWithdraw.setBankCardNo(bankCardNo);
-		studentWithdraw.setModifyTime(date);
-		studentWithdraw.setCreateTime(date);
-		studentWithdraw.setStatus(DealStatusEnum.ING);
-		studentWithdrawService.add(studentWithdraw);
+		studentWithdrawService.apply(sysUser.getId(), bankCardNo, amount);
+		
 		return succeed();
 	}
 }

+ 2 - 3
mec-teacher/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java

@@ -3,7 +3,6 @@ package com.ym.mec.teacher.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.SysMessage;
-import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
 import com.ym.mec.biz.service.SysMessageService;
@@ -79,7 +78,7 @@ public class SysMessageController extends BaseController {
 		}
 		return succeed(sysMessageService.queryCountOfUnread(sysUser.getId()));
 	}
-
+/*
 	@ApiOperation(value = "发送短信验证码")
 	@PostMapping("/sendSmsCode")
 	public Object sendSmsCode(String sendCodeType, String mobileNo) {
@@ -121,7 +120,7 @@ public class SysMessageController extends BaseController {
 		}
 //		sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo);
 		return succeed();
-	}
+	}*/
 
 	@ApiOperation(value = "发送消息")
 	@PostMapping("/sendMessage")

+ 69 - 0
mec-util/src/main/java/com/ym/mec/util/date/DateConvertor.java

@@ -0,0 +1,69 @@
+package com.ym.mec.util.date;
+
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.util.Date;
+
+public class DateConvertor {
+
+	public static LocalDateTime toLocalDateTime(Date date) {
+		Instant instant = date.toInstant();
+		ZoneId zone = ZoneId.systemDefault();
+		return LocalDateTime.ofInstant(instant, zone);
+	}
+
+	public static LocalDate toLocalDate(Date date) {
+		Instant instant = date.toInstant();
+		ZoneId zone = ZoneId.systemDefault();
+		LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
+		return localDateTime.toLocalDate();
+	}
+
+	public static LocalTime toLocalTime(Date date) {
+		Instant instant = date.toInstant();
+		ZoneId zone = ZoneId.systemDefault();
+		LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
+		return localDateTime.toLocalTime();
+	}
+
+	public static Date toDate(LocalDateTime localDateTime) {
+		ZoneId zone = ZoneId.systemDefault();
+		Instant instant = localDateTime.atZone(zone).toInstant();
+		return Date.from(instant);
+	}
+
+	public static Date toDate(LocalDate localDate) {
+		ZoneId zone = ZoneId.systemDefault();
+		Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
+		return Date.from(instant);
+	}
+
+	public static Date toDate(LocalTime localTime) {
+		LocalDate localDate = LocalDate.now();
+		LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
+		ZoneId zone = ZoneId.systemDefault();
+		Instant instant = localDateTime.atZone(zone).toInstant();
+		return Date.from(instant);
+	}
+	
+	public static void main(String[] args) {
+		Date date = new Date();
+		LocalDate localDate = DateConvertor.toLocalDate(date);
+		System.out.println("Date to LocalDate:"+localDate);
+		
+		System.out.println("LocalDate to Date:"+DateConvertor.toDate(localDate));
+		
+		LocalDateTime localDateTime = DateConvertor.toLocalDateTime(date);
+		System.out.println("Date to LocalDateTime:"+ localDateTime);
+		
+		System.out.println("LocalDateTime to Date"+DateConvertor.toDate(localDateTime));
+		
+		LocalTime localTime = DateConvertor.toLocalTime(date);
+		System.out.println("Date to LocalTime:"+localTime);
+		
+		System.out.println("localTime to Date:"+ DateConvertor.toDate(localTime));
+	}
+}

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -225,4 +225,12 @@ public class ClassGroupController extends BaseController {
         return succeed(classGroupService.highClassGroupList(musicGroupId));
     }
 
+    @ApiOperation(value = "合奏子班列表(班级调整)")
+    @PostMapping("/classGroupAndTeacher")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/classGroupAndTeacher')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "classGroupId", value = "班级id", required = true, dataType = "int")})
+    public HttpResponseResult classGroupAndTeacher(int classGroupId) throws Exception {
+        return succeed(classGroupService.classGroupAndTeacher(classGroupId));
+    }
+
 }

+ 2 - 7
mec-web/src/main/java/com/ym/mec/web/controller/GoodsController.java

@@ -10,11 +10,7 @@ import java.util.Date;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.page.GoodsQueryInfo;
@@ -33,8 +29,7 @@ public class GoodsController extends BaseController {
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('goods/add')")
     public Object add(Goods goods){
-        goodsService.insert(goods);
-        return succeed();
+        return succeed(goodsService.insert(goods));
     }
 
     @ApiOperation(value = "删除商品(教材、辅件)")

+ 11 - 5
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
+import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
@@ -15,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDate;
 import java.util.Set;
 
 @RequestMapping("musicGroup")
@@ -55,7 +57,7 @@ public class MusicGroupController extends BaseController {
     @ApiOperation(value = "分页查询乐团列表")
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('musicGroup/queryPage')")
-    public Object queryPage(QueryInfo queryInfo){
+    public Object queryPage(MusicGroupQueryInfo queryInfo){
         return succeed(musicGroupService.queryMusicGroupPage(queryInfo));
     }
 
@@ -82,10 +84,14 @@ public class MusicGroupController extends BaseController {
 
     @ApiOperation(value = "开启乐团缴费功能")
     @PostMapping("/openPay")
-    @PreAuthorize("@pcs.hasPermissions('musicGroup/openPay')")
-    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
-    public Object openPay(String musicGroupId) {
-        return succeed(musicGroupService.openPay(musicGroupId));
+    //@PreAuthorize("@pcs.hasPermissions('musicGroup/openPay')")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "expireDate", value = "截止缴费日期", required = true, dataType = "String")
+    })
+    public Object openPay(String musicGroupId, String expireDate) {
+
+        return succeed(musicGroupService.openPay(musicGroupId,expireDate));
     }
 
 }

+ 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));
+	}
+
+}

+ 10 - 13
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -8,15 +8,12 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 
 import java.util.Date;
+import java.util.Set;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
@@ -47,14 +44,14 @@ public class StudentRegistrationController extends BaseController {
         return succeed();
     }
 
-    @ApiOperation(value = "批量调剂学生报名专业")
+    @ApiOperation(value = "调剂学生报名专业")
     @PostMapping("/batchUpdateSubject")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/batchUpdateSubject')")
-    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "学生编号(多个逗号)", required = true, dataType = "String"),
+    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "学生编号(多个逗号)", required = true, dataType = "Integer"),
             @ApiImplicitParam(name = "subId", value = "声部编号", required = true, dataType = "Integer"),
             @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "Integer")})
-    public Object batchUpdateSubject(String userId,Integer subId,String musicGroupId) {
-        if (StringUtils.isEmpty(userId) || subId == null || StringUtils.isEmpty(musicGroupId)) {
+    public Object batchUpdateSubject(Integer userId,Integer subId,String musicGroupId) throws Exception {
+        if (null == userId || subId == null || StringUtils.isEmpty(musicGroupId)) {
             return failed("参数校验异常");
         }
         return succeed(studentRegistrationService.batchUpdateSubject(userId, subId,musicGroupId));
@@ -115,12 +112,12 @@ public class StudentRegistrationController extends BaseController {
         return succeed(studentRegistrationService.findMusicGroupNoClassGroupStudent(musicGroupId, actualSubjectId));
     }
 
-    @ApiOperation(value = "开启缴费")
+    @ApiOperation(value = "开启缴费(单独学生)")
     @PostMapping("/openPayment")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/openPayment')")
-    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "报名id", required = true, dataType = "int")})
-    public HttpResponseResult openPayment(Long id) {
-        return succeed(studentRegistrationService.openPayment(id));
+    @ApiImplicitParams({@ApiImplicitParam(name = "ids", value = "报名id(不是userId),逗号分隔", required = true, dataType = "String")})
+    public HttpResponseResult openPayment(String ids) {
+        return succeed(studentRegistrationService.openPayment(ids));
     }
 
 }

+ 19 - 19
mec-web/src/main/java/com/ym/mec/web/controller/StudentWithdrawController.java

@@ -7,11 +7,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.ym.mec.biz.dal.dto.WithdrawDto;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.TransTypeEnum;
 import com.ym.mec.biz.service.StudentWithdrawService;
 import com.ym.mec.common.controller.BaseController;
 
@@ -20,22 +21,21 @@ import com.ym.mec.common.controller.BaseController;
 @RestController
 public class StudentWithdrawController extends BaseController {
 
-    @Autowired
-    private StudentWithdrawService studentWithdrawService;
-
-
-    @PostMapping("confirm")
-    @ApiOperation(value = "确认提现")
-    @PreAuthorize("@pcs.hasPermissions('studentWithdraw/confirm')")
-    public Object confirmWithdraw(@RequestBody WithdrawDto withdrawDto) {
-        studentWithdrawService.confirmWithdraw(withdrawDto);
-        return succeed();
-    }
-
-    @ApiOperation(value = "分页查询")
-    @GetMapping("/queryPage")
-    @PreAuthorize("@pcs.hasPermissions('studentWithdraw/queryPage')")
-    public Object queryPage(WithdrawDto queryInfo) {
-        return succeed(studentWithdrawService.queryPage(queryInfo));
-    }
+	@Autowired
+	private StudentWithdrawService studentWithdrawService;
+
+	@PostMapping("confirm")
+	@ApiOperation(value = "确认提现")
+	@PreAuthorize("@pcs.hasPermissions('studentWithdraw/confirm')")
+	public Object confirmWithdraw(Integer id, DealStatusEnum status, String memo, String transNo, TransTypeEnum transType) {
+		studentWithdrawService.confirmWithdraw(id, status, memo, transNo, transType);
+		return succeed();
+	}
+
+	@ApiOperation(value = "分页查询")
+	@GetMapping("/queryPage")
+	@PreAuthorize("@pcs.hasPermissions('studentWithdraw/queryPage')")
+	public Object queryPage(WithdrawDto queryInfo) {
+		return succeed(studentWithdrawService.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("交易不存在");
         }