ソースを参照

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

zouxuan 5 年 前
コミット
ad0347cb90
89 ファイル変更2285 行追加1508 行削除
  1. 11 0
      cms/src/main/java/com/ym/mec/cms/controller/queryinfo/NewsInformationQueryInfo.java
  2. 11 0
      cms/src/main/java/com/ym/mec/cms/dal/entity/SysNewsInformation.java
  3. 2 20
      cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java
  4. 15 2
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  5. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java
  6. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/HfMemberDao.java
  7. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  8. 12 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuitDao.java
  9. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PracticeGroupDao.java
  10. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  11. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java
  12. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  13. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentVisitDao.java
  14. 13 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  15. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  16. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleEndDto.java
  17. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentApplyDto.java
  18. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicalListDetailDto.java
  19. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeGroupStatisDto.java
  20. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeStatisDto.java
  21. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageBaseInfoOfMusicGroupDto.java
  22. 51 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVisitDto.java
  23. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassCourseSchudeleDto.java
  24. 71 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/HfMember.java
  25. 209 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentVisit.java
  26. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/HfMemberQueryInfo.java
  27. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPaymentOrderQueryInfo.java
  28. 118 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVisitQueryInfo.java
  29. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  30. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  31. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/service/HfMemberService.java
  32. 44 3
      mec-biz/src/main/java/com/ym/mec/biz/service/NotifyCallback.java
  33. 2 3
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderDetailService.java
  34. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentVisitService.java
  35. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  36. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/UploadFileService.java
  37. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  38. 8 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  39. 100 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  40. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java
  41. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  42. 144 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/HfMemberSserviceImpl.java
  43. 17 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  44. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  45. 70 62
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  46. 11 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java
  47. 116 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentVisitServiceImpl.java
  48. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  49. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  50. 2 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  51. 26 21
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  52. 170 0
      mec-biz/src/main/resources/config/mybatis/HfMemberMapper.xml
  53. 6 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  54. 4 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml
  55. 17 1
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  56. 2 2
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml
  57. 11 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  58. 6 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml
  59. 14 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  60. 175 0
      mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml
  61. 14 4
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  62. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  63. 6 0
      mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java
  64. 1 0
      mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java
  65. 24 0
      mec-student/src/main/java/com/ym/mec/student/controller/CourseController.java
  66. 1 2
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  67. 27 0
      mec-student/src/main/java/com/ym/mec/student/controller/SystemDateController.java
  68. 9 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  69. 86 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/VisitController.java
  70. 0 134
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/AdapayTools.java
  71. 0 88
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Bill.java
  72. 0 8
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/ConfigInit.java
  73. 13 159
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/CorpMember.java
  74. 0 57
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/MainDemo.java
  75. 0 244
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Member.java
  76. 5 5
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Payment.java
  77. 0 153
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Refund.java
  78. 19 423
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/SettleAccount.java
  79. 17 0
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  80. 9 0
      mec-web/src/main/java/com/ym/mec/web/WebApplication.java
  81. 67 29
      mec-web/src/main/java/com/ym/mec/web/controller/AdapayController.java
  82. 5 4
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  83. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java
  84. 19 3
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  85. 13 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java
  86. 13 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentRouteOrderController.java
  87. 81 0
      mec-web/src/main/java/com/ym/mec/web/controller/VisitController.java
  88. 4 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java
  89. 71 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduVisitController.java

+ 11 - 0
cms/src/main/java/com/ym/mec/cms/controller/queryinfo/NewsInformationQueryInfo.java

@@ -11,6 +11,9 @@ public class NewsInformationQueryInfo extends QueryInfo {
 
 	@ApiModelProperty(value = "类型,1精彩活动,2热门资讯,3banner类型", required = false)
 	private Integer type;
+	
+	@ApiModelProperty(value = "子类型", required = false)
+	private Integer subType;
 
 	@ApiModelProperty(value = "资讯状态", required = false)
 	private NewsStatusEnum status;
@@ -34,6 +37,14 @@ public class NewsInformationQueryInfo extends QueryInfo {
 		this.type = type;
 	}
 
+	public Integer getSubType() {
+		return subType;
+	}
+
+	public void setSubType(Integer subType) {
+		this.subType = subType;
+	}
+
 	public NewsStatusEnum getStatus() {
 		return status;
 	}

+ 11 - 0
cms/src/main/java/com/ym/mec/cms/dal/entity/SysNewsInformation.java

@@ -26,6 +26,9 @@ public class SysNewsInformation {
 	/** 类型 */
 	@ApiModelProperty(value = "类型,1精彩活动,2热门资讯,3banner类型", required = true)
 	private Integer type;
+	
+	@ApiModelProperty(value = "子类型", required = false)
+	private Integer subType;
 
 	/** 状态(1-可见 0-不可见) */
 	@ApiModelProperty(value = "状态(1-可见 0-不可见)", required = true)
@@ -165,6 +168,14 @@ public class SysNewsInformation {
 		this.tenantId = tenantId;
 	}
 
+	public Integer getSubType() {
+		return subType;
+	}
+
+	public void setSubType(Integer subType) {
+		this.subType = subType;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 2 - 20
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java

@@ -106,7 +106,7 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 					info.setLinkUrl(serverContextPath + "/#/auditionActive");
 					info.setCoverImage("https://daya-online.oss-cn-beijing.aliyuncs.com/tempActivity/3_2.png");
 				}
-				pageInfos.getRows().add(0, info);
+				pageInfos.getRows().add(info);
 			}
 		}
 		homeList.put("banner",pageInfos);
@@ -126,25 +126,7 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 		homeList.put("hot",queryHomePage(queryInfo));
 		
 		queryInfo.setType(5);
-		pageInfos = new PageInfo<SysNewsInformation>();
-		SysNewsInformation info = new SysNewsInformation();
-		info.setOrder(1);
-
-		if (queryInfo.getTenantId() == 1 && date.after(startDate) && "18696158274".equals(user.getPhone()) == false) {
-			info.setCreateTime(date);
-			info.setUpdateTime(date);
-			if (isNewer) {
-				info.setLinkUrl(serverContextPath + "/#/auditionActive/1");
-				info.setCoverImage("https://daya-online.oss-cn-beijing.aliyuncs.com/tempActivity/5_1.png");
-			} else {
-				info.setLinkUrl(serverContextPath + "/#/auditionActive/1");
-				info.setCoverImage("https://daya-online.oss-cn-beijing.aliyuncs.com/tempActivity/5_2.png");
-			}
-			pageInfos.getRows().add(0, info);
-		} else {
-			pageInfos = queryHomePage(queryInfo);
-		}
-		homeList.put("flash",pageInfos);
+		homeList.put("flash",queryHomePage(queryInfo));
 		return homeList;
 	}
 	

+ 15 - 2
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -13,6 +13,7 @@
 		<result column="cover_image_" property="coverImage" />
 		<result column="link_url_" property="linkUrl"/>
 		<result column="type_" property="type"/>
+		<result column="sub_type_" property="subType"/>
 		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
@@ -29,6 +30,9 @@
 			<if test="type != null">
 				and type_ = #{type}
 			</if>
+			<if test="subType != null">
+				and sub_type_ = #{subType}
+			</if>
 			<if test="tenantId != null">
 				and tenant_id_ = #{tenantId}
 			</if>
@@ -56,8 +60,8 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.cms.dal.entity.SysNewsInformation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO sys_news_information (id_,title_,content_,cover_image_,type_,status_,create_time_,update_time_,link_url_,href_target_,order_,del_flag_,memo_,tenant_id_)
-		VALUES(#{id},#{title},#{content},#{coverImage},#{type},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now(),#{linkUrl},#{hrefTarget},#{order},0,#{memo},#{tenantId})
+		INSERT INTO sys_news_information (id_,title_,content_,cover_image_,type_,sub_type_,status_,create_time_,update_time_,link_url_,href_target_,order_,del_flag_,memo_,tenant_id_)
+		VALUES(#{id},#{title},#{content},#{coverImage},#{type},#{subType},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now(),#{linkUrl},#{hrefTarget},#{order},0,#{memo},#{tenantId})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -85,6 +89,9 @@
 			<if test="type != null">
 				type_ = #{type},
 			</if>
+			<if test="subType != null">
+				sub_type_ = #{subType},
+			</if>
 			<if test="linkUrl != null">
 				link_url_ = #{linkUrl},
 			</if>
@@ -144,6 +151,9 @@
 		<if test="type != null">
 			and type_ = #{type}
 		</if>
+		<if test="subType != null">
+			and sub_type_ = #{subType}
+		</if>
 		<if test="status != null">
 			and status_ = #{status,
 			typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -175,6 +185,9 @@
 		<if test="type != null">
 			and type_ = #{type}
 		</if>
+		<if test="subType != null">
+			and sub_type_ = #{subType}
+		</if>
 		<if test="status != null">
 			and status_ = #{status,
 			typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}

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

@@ -32,24 +32,24 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
      * @param userID
      * @param password
      */
-    void updatePassword(@Param("userID") Long userID, @Param("password") String password);
+    void updatePassword(@Param("userID") Integer userID, @Param("password") String password);
 
     /**
      * @Author: Joburgess
      * @Date: 2019/9/17
      * 修改用户账户锁定状态
      */
-    int updateUserLockStatus(@Param("userID") Long userID);
+    int updateUserLockStatus(@Param("userID") Integer userID);
 
 
-    void updateUserLock(@Param("userID") Long userID, @Param("status") int status);
+    void updateUserLock(@Param("userID") Integer userID, @Param("status") int status);
 
     /**
      * @Author: Joburgess
      * @Date: 2019/9/25
      * 修改用户离职日期
      */
-    int updateUserDemissionDate(@Param("userID") Long userID);
+    int updateUserDemissionDate(@Param("userID") Integer userID);
     /**
      * 根据手机号查询对象
      * @param phone

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/HfMemberDao.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.HfMember;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface HfMemberDao extends BaseDAO<Integer, HfMember> {
+
+    /**
+     * 根据商户号获取商户信息
+     *
+     * @param memberId
+     * @return
+     */
+    HfMember getByMemberId(@Param("memberId") String memberId);
+
+    /**
+     * 根据名字获取商户信息
+     * @param name
+     * @return
+     */
+    HfMember getByName(@Param("name") String name);
+}

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

@@ -252,4 +252,12 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     List<MusicGroupRegisterDto> getMusicGroupRegisterOrder(@Param("musicGroupIds") List<String> musicGroupIds);
 
     List<MusicGroupRegisterDto> getMusicGroupRegisterTotalMoney(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    /**
+     * 获取老师的乐团列表
+     *
+     * @param teacherId
+     * @return
+     */
+    List<MusicGroup> getTeacherMusicGroup(@Param("teacherId") Integer teacherId);
 }

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

@@ -2,16 +2,25 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.MusicGroupQuit;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface MusicGroupQuitDao extends BaseDAO<Long, MusicGroupQuit> {
 
     /**
+     * @param musicGroupId: 乐团编号
+     * @return int
      * @describe 统计指定乐团退团人数
      * @author Joburgess
      * @date 2019/10/28
-     * @param musicGroupId: 乐团编号
-     * @return int
      */
     int countMusicGroupQuitNum(String musicGroupId);
-	
+
+    /**
+     * 获取用户退出的乐团
+     * @param userId
+     * @return
+     */
+    List<MusicGroupQuit> getUserMusicQuit(@Param("userId") Integer userId);
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PracticeGroupDao.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.entity.PracticeGroup;
 import com.ym.mec.biz.dal.enums.GroupStatusEnum;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
 
 import java.util.Date;
 import java.util.List;
@@ -357,4 +358,15 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
                                         @Param("remindStatus") Integer remindStatus);
 
     List<PracticeCourseDto> getPracticeGroupByIds(@Param("practiceIds") List<Long> practiceIds);
+
+    List<PracticeGroup> getWithIds(@Param("practiceIds") List<Long> practiceIds);
+
+    /**
+     * @describe 获取网管课类型
+     * @author Joburgess
+     * @date 2020.08.20
+     * @param practiceIds:
+     * @return java.util.List<java.util.Map<java.lang.Long,java.lang.String>>
+     */
+    List<Map<Long, String>> getPracticeGroupType(@Param("practiceIds") List<Long> practiceIds);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -306,4 +306,11 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
     List<OrderByTypeExportDto> getOrderByMonthAndType(@Param("organIds") String organIds,
                                                       @Param("orderTypeList") List<OrderTypeEnum> orderTypeList,
                                                       @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 搜索用户
+     * @param search
+     * @return
+     */
+    List<BasicUserDto> getUsers(@Param("search") String search);
 }

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

@@ -1,6 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.dto.musicalListDetailDto;
+import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
@@ -53,7 +53,7 @@ public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPayme
      * @param musicGroupId
      * @return
      */
-    List<musicalListDetailDto> getMusicalListDetail(String musicGroupId);
+    List<MusicalListDetailDto> getMusicalListDetail(String musicGroupId);
 
     /**
      * 获取商品名称列表

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -304,6 +304,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取乐团报名信息和学校信息
+     *
      * @param musicGroupId
      * @param userId
      * @return
@@ -312,6 +313,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取学员所在乐团
+     *
      * @param studentId
      * @return
      */
@@ -321,6 +323,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取乐团下所有学员身上的声部列表
+     *
      * @param musicGroupId
      * @return
      */
@@ -328,8 +331,25 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取学员详情页,包含所在乐团信息
+     *
      * @param studentId
      * @return
      */
     StudentMusicDetailDto getStudentDetail(Integer studentId);
+
+    /**
+     * 获取乐团的学生
+     *
+     * @param musicGroupId
+     * @return
+     */
+    List<StudentRegistration> getMusicGroupStu(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取老师对应乐团的学生
+     * @param musicGroupId
+     * @param teacherId
+     * @return
+     */
+    List<StudentRegistration> getMusicGroupStu4Teacher(@Param("musicGroupId") String musicGroupId, @Param("teacherId") Integer teacherId);
 }

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentVisitDao.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.common.dal.BaseDAO;
+
+import java.util.List;
+import java.util.Map;
+
+
+public interface StudentVisitDao extends BaseDAO<Integer, StudentVisit> {
+
+    /**
+     * 获取访问详情
+     *
+     * @param id
+     * @return
+     */
+    StudentVisitDto getInfo(Integer id);
+
+    /**
+     * 获取访问列表
+     *
+     * @param params
+     * @return
+     */
+    List<StudentVisitDto> getPageList(Map<String, Object> params);
+
+    /**
+     * 获取学生列表
+     *
+     * @param params
+     * @return
+     */
+    List<BasicUserDto> getStudents(Map<String, Object> params);
+
+    /**
+     * 获取学生总数
+     * @param params
+     * @return
+     */
+    Integer getStudentsCount(Map<String, Object> params);
+}

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

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.ConditionDto;
 import com.ym.mec.biz.dal.dto.StudentAttendanceViewDto;
 import com.ym.mec.biz.dal.dto.SubjectApplyDetailDto;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.dal.BaseDAO;
@@ -106,8 +107,8 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      * @param userIds: 用户编号列表
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.String>>
      */
-    List<Map<Integer,String>> findByMusicGroupAndUsers(@Param("musicGroupId") String musicGroupId,
-                                                       @Param("userIds") List<Integer> userIds);
+    List<Map<Integer,String>> findByMusicGroupUserSubject(@Param("musicGroupId") String musicGroupId,
+                                                          @Param("userIds") List<Integer> userIds);
 
     /**
      * @describe
@@ -142,4 +143,14 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
      * @return
      */
     String findNames(String subjectIdList);
+
+
+    /**
+     * 获取学生报名的声部
+     * @param musicGroupId
+     * @param userIds
+     * @return
+     */
+    List<StudentRegistration> getRegisterSubject(@Param("musicGroupId") String musicGroupId,
+                                                 @Param("userIds") List<Integer> userIds);
 }

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

@@ -229,7 +229,7 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @param params
      * @return
      */
-    List<musicGroupStudentApplyDto> queryMusicGroupStudentApply(Map<String, Object> params);
+    List<MusicGroupStudentApplyDto> queryMusicGroupStudentApply(Map<String, Object> params);
 
     /**
      * COUNT乐团学员报名列表

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleEndDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.PracticeGroup;
 import com.ym.mec.biz.dal.enums.SignInStatusEnum;
 import com.ym.mec.biz.dal.enums.SignOutStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -41,6 +42,16 @@ public class CourseScheduleEndDto extends CourseSchedule {
 
     private String settlementTime;
 
+    private PracticeGroup practiceGroup;
+
+    public PracticeGroup getPracticeGroup() {
+        return practiceGroup;
+    }
+
+    public void setPracticeGroup(PracticeGroup practiceGroup) {
+        this.practiceGroup = practiceGroup;
+    }
+
     public String getSettlementTime() {
         return settlementTime;
     }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/musicGroupStudentApplyDto.java → mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentApplyDto.java

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.dto;
 import java.math.BigDecimal;
 import java.util.Date;
 
-public class musicGroupStudentApplyDto {
+public class MusicGroupStudentApplyDto {
     private Integer userId;
 
     private String userName;

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/musicalListDetailDto.java → mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicalListDetailDto.java

@@ -4,7 +4,7 @@ import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 
 import java.math.BigDecimal;
 
-public class musicalListDetailDto {
+public class MusicalListDetailDto {
     private Long paymentOrderId;
 
     private Integer userId;
@@ -27,6 +27,8 @@ public class musicalListDetailDto {
 
     private BigDecimal orderAmount;
 
+    private String subjectName;
+
     public Long getPaymentOrderId() {
         return paymentOrderId;
     }
@@ -114,4 +116,12 @@ public class musicalListDetailDto {
     public void setOrderAmount(BigDecimal orderAmount) {
         this.orderAmount = orderAmount;
     }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
 }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/practiceGroupStatisDto.java → mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeGroupStatisDto.java

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.dto;
 import java.math.BigDecimal;
 import java.util.List;
 
-public class practiceGroupStatisDto {
+public class PracticeGroupStatisDto {
     private List<PracticeGroupsDto> practiceGroupsDtoList;
     private BigDecimal totalMoney;
     private Integer totalNum = 0;
@@ -17,7 +17,7 @@ public class practiceGroupStatisDto {
     private BigDecimal monthBuyMoney = BigDecimal.ZERO;
     private BigDecimal monthRenewMoney= BigDecimal.ZERO;
 
-    public practiceGroupStatisDto() {
+    public PracticeGroupStatisDto() {
     }
 
     public List<PracticeGroupsDto> getPracticeGroupsDtoList() {

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/practiceStatisDto.java → mec-biz/src/main/java/com/ym/mec/biz/dal/dto/PracticeStatisDto.java

@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import java.math.BigDecimal;
 import java.util.List;
 
-public class practiceStatisDto {
+public class PracticeStatisDto {
     @ApiModelProperty(value = "个分部数据", required = false)
     private List<Practice4OrganDto> practice4OrganDtoList;
     @ApiModelProperty(value = "体验人数", required = false)

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageBaseInfoOfMusicGroupDto.java

@@ -35,6 +35,9 @@ public class StudentManageBaseInfoOfMusicGroupDto {
     @ApiModelProperty(value = "加入乐团时间",required = false)
     private Date joinMusicGroupDate;
 
+    @ApiModelProperty(value = "退出乐团时间",required = false)
+    private Date quitMusicGroupDate;
+
     @ApiModelProperty(value = "科目ID",required = false)
     private Integer subjectId;
 
@@ -138,4 +141,12 @@ public class StudentManageBaseInfoOfMusicGroupDto {
     public void setKitPurchaseMethod(KitPurchaseMethodEnum kitPurchaseMethod) {
         this.kitPurchaseMethod = kitPurchaseMethod;
     }
+
+    public Date getQuitMusicGroupDate() {
+        return quitMusicGroupDate;
+    }
+
+    public void setQuitMusicGroupDate(Date quitMusicGroupDate) {
+        this.quitMusicGroupDate = quitMusicGroupDate;
+    }
 }

+ 51 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVisitDto.java

@@ -0,0 +1,51 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import io.swagger.annotations.ApiModelProperty;
+
+public class StudentVisitDto extends StudentVisit {
+
+    @ApiModelProperty(value = "乐团名称",required = false)
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "老师名字",required = false)
+    private String teacherName;
+
+    @ApiModelProperty(value = "分部名称",required = false)
+    private String organName;
+
+    @ApiModelProperty(value = "学生名字",required = false)
+    private String studentName;
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassCourseSchudeleDto.java

@@ -60,6 +60,17 @@ public class TeacherClassCourseSchudeleDto {
 
     private TeachModeEnum teachMode;
 
+    @ApiModelProperty(value = "能否进行调整")
+    private int enableAdjustInToday;
+
+    public int getEnableAdjustInToday() {
+        return enableAdjustInToday;
+    }
+
+    public void setEnableAdjustInToday(int enableAdjustInToday) {
+        this.enableAdjustInToday = enableAdjustInToday;
+    }
+
     public TeachModeEnum getTeachMode() {
         return teachMode;
     }

+ 71 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/HfMemberDto.java → mec-biz/src/main/java/com/ym/mec/biz/dal/entity/HfMember.java

@@ -1,16 +1,21 @@
-package com.ym.mec.biz.dal.dto;
+package com.ym.mec.biz.dal.entity;
 
 import io.swagger.annotations.ApiModelProperty;
 import org.springframework.web.multipart.MultipartFile;
 
-public class HfMemberDto {
+import java.util.Date;
+
+public class HfMember {
+    @ApiModelProperty(value = "id",required = true)
+    private Integer Id;
+
     @ApiModelProperty(value = "商户号",required = true)
     private String memberId;
 
     @ApiModelProperty(value = "公司名称",required = true)
     private String name;
 
-    @ApiModelProperty(value = "省份编号",required = true)
+    @ApiModelProperty(value = "省份编号(https://cdn.cloudpnr.com/adapayresource/documents/Adapay%E7%9C%81%E5%B8%82%E7%BC%96%E7%A0%81%EF%BC%88%E5%9B%9B%E4%BD%8D%EF%BC%89.json)",required = true)
     private String provCode;
 
     @ApiModelProperty(value = "城市编号",required = true)
@@ -46,12 +51,34 @@ public class HfMemberDto {
     @ApiModelProperty(value = "银行卡号",required = true)
     private String cardNo;
 
-    @ApiModelProperty(value = "银行编码",required = true)
+    @ApiModelProperty(value = "银行编码(https://docs.adapay.tech/api/appendix.html#bank-code)",required = true)
     private String bankCode;
 
     @ApiModelProperty(value = "证照文件",required = true)
     private MultipartFile multipartFile;
 
+    @ApiModelProperty(value = "状态(pending:处理中,succeeded:成功,failed:失败)",required = true)
+    private String status;
+
+    @ApiModelProperty(value = "创建时间",required = true)
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间",required = true)
+    private Date updateTime;
+
+    private String settleAccountId;
+
+    @ApiModelProperty(value = "备注",required = true)
+    private String memo;
+
+    public Integer getId() {
+        return Id;
+    }
+
+    public void setId(Integer id) {
+        Id = id;
+    }
+
     public String getMemberId() {
         return memberId;
     }
@@ -179,4 +206,44 @@ public class HfMemberDto {
     public void setMultipartFile(MultipartFile multipartFile) {
         this.multipartFile = multipartFile;
     }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getSettleAccountId() {
+        return settleAccountId;
+    }
+
+    public void setSettleAccountId(String settleAccountId) {
+        this.settleAccountId = settleAccountId;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
 }

+ 209 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentVisit.java

@@ -0,0 +1,209 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.common.enums.BaseEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.PastOrPresent;
+import javax.validation.constraints.Positive;
+import java.util.Date;
+
+public class StudentVisit {
+
+    public enum VisiterTypeEnum implements BaseEnum<String, com.ym.mec.biz.dal.enums.TeachModeEnum> {
+        TEACHER("TEACHER", "指导老师"), EDU_TEACHER("EDU_TEACHER", "教务老师");
+
+        private String code;
+
+        private String msg;
+
+        VisiterTypeEnum(String code, String msg) {
+            this.code = code;
+            this.msg = 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 this.code;
+        }
+    }
+
+    private Integer id;
+
+    /**
+     * 乐团id
+     */
+    @ApiModelProperty(value = "乐团id", required = true)
+    private String musicGroupId;
+
+    /**
+     * 分部id
+     */
+    @ApiModelProperty(value = "分部id", required = false)
+    private Integer organId;
+
+    /**
+     * 学生id
+     */
+    @ApiModelProperty(value = "学生id", required = true)
+    @Positive(message = "学生id必须大于0")
+    private Integer studentId;
+
+    /**
+     * 老师id
+     */
+    @ApiModelProperty(value = "老师id", required = true)
+    @Positive(message = "老师id必须大于0")
+    private Integer teacherId;
+
+    /**
+     * 老师类型
+     */
+    @ApiModelProperty(value = "老师类型", required = false)
+    private VisiterTypeEnum visiterType;
+
+    /**
+     * 回访类型
+     */
+    @ApiModelProperty(value = "回访类型", required = true)
+    @NotBlank(message = "回访类型不能为空")
+    private String type;
+
+    /**
+     * 回访目的
+     */
+    @ApiModelProperty(value = "回访目的", required = true)
+    private String purpose;
+
+    /**
+     * 学生情况
+     */
+    @ApiModelProperty(value = "学生近况", required = true)
+    private String overview;
+
+    /**
+     * 家长反馈
+     */
+    @ApiModelProperty(value = "家长反馈", required = true)
+    private String feedback;
+
+    /**
+     * 回访日期
+     */
+    @ApiModelProperty(value = "回访日期", required = true)
+    @PastOrPresent(message = "回访日期不能大于当天")
+    private Date visitTime;
+
+    /**
+     * 添加时间
+     */
+    private Date createTime;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public VisiterTypeEnum getVisiterType() {
+        return visiterType;
+    }
+
+    public void setVisiterType(VisiterTypeEnum visiterType) {
+        this.visiterType = visiterType;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getPurpose() {
+        return purpose;
+    }
+
+    public void setPurpose(String purpose) {
+        this.purpose = purpose;
+    }
+
+    public String getOverview() {
+        return overview;
+    }
+
+    public void setOverview(String overview) {
+        this.overview = overview;
+    }
+
+    public String getFeedback() {
+        return feedback;
+    }
+
+    public void setFeedback(String feedback) {
+        this.feedback = feedback;
+    }
+
+    public Date getVisitTime() {
+        return visitTime;
+    }
+
+    public void setVisitTime(Date visitTime) {
+        this.visitTime = visitTime;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/HfMemberQueryInfo.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class HfMemberQueryInfo extends QueryInfo {
+
+    private String name;
+
+    private String memberId;
+
+    private String status;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(String memberId) {
+        this.memberId = memberId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPaymentOrderQueryInfo.java

@@ -4,6 +4,7 @@ import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 public class StudentPaymentOrderQueryInfo extends QueryInfo {
 
@@ -52,6 +53,8 @@ public class StudentPaymentOrderQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "商户订单号",required = false)
     private String transNo;
 
+    private List<Integer> userIds;
+
     private boolean isExport = false;
 
     public boolean getIsExport() {
@@ -181,4 +184,12 @@ public class StudentPaymentOrderQueryInfo extends QueryInfo {
     public void setTransNo(String transNo) {
         this.transNo = transNo;
     }
+
+    public List<Integer> getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(List<Integer> userIds) {
+        this.userIds = userIds;
+    }
 }

+ 118 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVisitQueryInfo.java

@@ -0,0 +1,118 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class StudentVisitQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "老师或老师id搜索", required = false)
+    private String teacher;
+
+    @ApiModelProperty(value = "学生姓名或id搜索", required = false)
+    private String student;
+
+    private Integer teacherId;
+
+    private Integer studentId;
+
+    @ApiModelProperty(value = "分部id", required = false)
+    private String organId;
+
+    @ApiModelProperty(value = "访问者角色(TEACHER EDU_TEACHER)", required = false)
+    private StudentVisit.VisiterTypeEnum visiterType;
+
+    @ApiModelProperty(value = "回访类型", required = false)
+    private String type;
+
+    @ApiModelProperty(value = "回访目的", required = false)
+    private String purpose;
+
+    @ApiModelProperty(value = "回访日期开始时间", required = false)
+    private Date startTime;
+
+    @ApiModelProperty(value = "回访日期结束时间", required = false)
+    private Date endTime;
+
+    public String getTeacher() {
+        return teacher;
+    }
+
+    public void setTeacher(String teacher) {
+        this.teacher = teacher;
+    }
+
+    public String getStudent() {
+        return student;
+    }
+
+    public void setStudent(String student) {
+        this.student = student;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public StudentVisit.VisiterTypeEnum getVisiterType() {
+        return visiterType;
+    }
+
+    public void setVisiterType(StudentVisit.VisiterTypeEnum visiterType) {
+        this.visiterType = visiterType;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getPurpose() {
+        return purpose;
+    }
+
+    public void setPurpose(String purpose) {
+        this.purpose = purpose;
+    }
+}

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

@@ -335,6 +335,9 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 */
 	PageInfo queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
 
+
+	PageInfo queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
+
 	/**
 	 * @describe 获取点名详情界面头部信息
 	 * @author Joburgess

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

@@ -24,7 +24,7 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
      * @Date: 2019/9/17
      * 员工操作
      */
-    void employeeOperate(Long employeeId, EmployeeOperateEnum operate);
+    void employeeOperate(Integer employeeId, EmployeeOperateEnum operate);
 
     /**
      * 新增员工

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/HfMemberService.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.HfMember;
+import com.ym.mec.common.service.BaseService;
+
+import java.io.File;
+import java.util.Map;
+
+public interface HfMemberService extends BaseService<Integer, HfMember> {
+
+    Map<String,Object> createMember(HfMember member, File file) throws Exception;
+
+    Map<String,Object> updateMember(HfMember member, File file) throws Exception;
+
+    Map<String,Object> createSettleAccount(String memberId, String cardNo, String bankCode) throws Exception;
+}

+ 44 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/NotifyCallback.java

@@ -4,12 +4,15 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.huifu.adapay.Adapay;
 import com.huifu.adapay.notify.MQTTCallbackHandler;
+import com.ym.mec.biz.dal.dao.HfMemberDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.entity.HfMember;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.TenantPaymentOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.thirdparty.adapay.ConfigInit;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -26,15 +29,25 @@ public class NotifyCallback implements MQTTCallbackHandler {
     @Autowired
     private TenantPaymentOrderService tenantPaymentOrderService;
     @Autowired
-    private SysConfigDao sysConfigDao;
+    private HfMemberDao hfMemberDao;
 
     private static NotifyCallback notifyCallback;
 
+    @Value("${spring.profiles.active:dev}")
+    private String profiles;
+
+    @Value("${spring.application.name}")
+    private String appName;
+
     @PostConstruct
     public void init() {
         notifyCallback = this;
-        String baseUrl = notifyCallback.sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
-        Adapay.setDeviceID(baseUrl);
+        if (!profiles.equals("prod") && !appName.equals("student-server")) {
+            Adapay.debug = true;
+            // prodMode 模式,默认为生产模式,false可以使用mock模式
+            Adapay.prodMode = false;
+        }
+        Adapay.setDeviceID(appName);
     }
 
     /**
@@ -189,11 +202,39 @@ public class NotifyCallback implements MQTTCallbackHandler {
     @Override
     public void corpMemberSuccessMessageArrived(String corpMember) throws Exception {
         System.out.println(String.format("receive corpMember   msg=%s", corpMember));
+        JSONObject corpMemberObj = JSON.parseObject(corpMember);
+        if (!corpMemberObj.getString("app_id").equals(ConfigInit.appId)) {
+            return;
+        }
+        String memberId = corpMemberObj.getString("member_id");
+        HfMember hfMember = notifyCallback.hfMemberDao.getByMemberId(memberId);
+        if (hfMember == null || !hfMember.getStatus().equals("pending")) {
+            return;
+        }
+        hfMember.setStatus("succeeded");
+        hfMember.setMemo(corpMemberObj.getString("audit_desc"));
+        if (corpMemberObj.containsKey("audit_state") && corpMemberObj.getString("audit_state").equals("E")) {
+            JSONObject accounts = JSON.parseObject(corpMemberObj.get("settle_accounts").toString());
+            hfMember.setSettleAccountId(accounts.getString("id"));
+        }
+        notifyCallback.hfMemberDao.update(hfMember);
     }
 
     @Override
     public void corpMemberFailedMessageArrived(String corpMember) throws Exception {
         System.out.println(String.format("receive corpMember  msg=%s", corpMember));
+        JSONObject corpMemberObj = JSON.parseObject(corpMember);
+        if (!corpMemberObj.getString("app_id").equals(ConfigInit.appId)) {
+            return;
+        }
+        String memberId = corpMemberObj.getString("member_id");
+        HfMember hfMember = notifyCallback.hfMemberDao.getByMemberId(memberId);
+        if (hfMember == null || !hfMember.getStatus().equals("pending")) {
+            return;
+        }
+        hfMember.setStatus("failed");
+        hfMember.setMemo(corpMemberObj.getString("audit_desc"));
+        notifyCallback.hfMemberDao.update(hfMember);
     }
 
     @Override

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

@@ -1,12 +1,11 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.biz.dal.dto.musicalListDetailDto;
+import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.BaseService;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -63,7 +62,7 @@ public interface StudentPaymentOrderDetailService extends BaseService<Long, Stud
      * @param musicGroupId
      * @return
      */
-    List<musicalListDetailDto> getMusicalListDetail(String musicGroupId);
+    List<MusicalListDetailDto> getMusicalListDetail(String musicGroupId);
 
     /**
      * 获取订单的乐器信息

+ 63 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentVisitService.java

@@ -0,0 +1,63 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+
+public interface StudentVisitService extends BaseService<Integer, StudentVisit> {
+
+
+    /**
+     * 添加访问记录
+     * @param studentVisit
+     * @return
+     */
+    StudentVisit addVisit(StudentVisit studentVisit);
+    /**
+     * 获取访问详情
+     *
+     * @param id
+     * @return
+     */
+    StudentVisitDto getInfo(Integer id);
+
+    /**
+     * 获取访问列表
+     *
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<StudentVisitDto> getPageList(StudentVisitQueryInfo queryInfo);
+
+    /**
+     * 获取老师对应乐团的学生
+     *
+     * @param musicGroupId
+     * @param teacherId
+     * @return
+     */
+    List<StudentRegistration> getMusicGroupStu(String musicGroupId, Integer teacherId);
+
+    /**
+     * 获取老师的乐团
+     * @param teacherId
+     * @return
+     */
+    List<MusicGroup> getMusicGroup(Integer teacherId);
+
+
+    /**
+     * 获取学生列表
+     *
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<BasicUserDto> getStudents(StudentVisitQueryInfo queryInfo);
+}

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

@@ -139,7 +139,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @param queryInfo
      * @return
      */
-    PageInfo<musicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo);
+    PageInfo<MusicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo);
 
     /**
      * 获取分部下教师

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

@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.thirdparty.storage.StoragePluginContext;
-import com.ym.mec.thirdparty.storage.provider.AliyunOssStoragePlugin;
+import com.ym.mec.thirdparty.storage.provider.KS3StoragePlugin;
 import com.ym.mec.util.upload.UploadUtil;
 
 /** 
@@ -68,7 +68,7 @@ public class UploadFileService {
 		}
 
 		//String url = storagePlugin.uploadFile(staticFloder + folder, file);
-		String url = storagePluginContext.uploadFile(AliyunOssStoragePlugin.PLUGIN_NAME,staticFloder + folder, file);
+		String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME,staticFloder + folder, file);
 
 		FileUtils.deleteQuietly(file);
 

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

@@ -1776,11 +1776,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
 
-        Integer schoolId = musicGroup.getSchoolId();
+        Integer schoolId = teachMode.equals(TeachModeEnum.ONLINE)? null : musicGroup.getSchoolId();
 
         List<Subject> subjectList = subjectService.findBySubjectByIdList(classGroup.getSubjectIdList());
 
-        String subjectNames = subjectList.stream().map(subject -> subject.getName()).collect(Collectors.joining("/"));
+        String subjectNames = subjectList.stream().map(Subject::getName).collect(Collectors.joining("/"));
 
         //1、更新班级关联老师信息
         List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();

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

@@ -58,7 +58,7 @@ import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.thirdparty.eseal.ESealPlugin;
 import com.ym.mec.thirdparty.storage.StoragePluginContext;
-import com.ym.mec.thirdparty.storage.provider.AliyunOssStoragePlugin;
+import com.ym.mec.thirdparty.storage.provider.KS3StoragePlugin;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.freemarker.FreemarkerTemplateEngine;
 import com.ym.mec.util.money.MoneyUtil;
@@ -236,7 +236,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
 		dateStrOss = "users/" + dateStrOss + "/" + DateUtil.getHour(date);
-		String pdfFilePath = storagePluginContext.uploadFile(AliyunOssStoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
+		String pdfFilePath = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();
 		sysUserContracts.setCreateTime(date);
@@ -381,7 +381,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
 		dateStrOss = "musicCourses/" + dateStrOss + "/" + DateUtil.getHour(date);
-		String pdfFilePath = storagePluginContext.uploadFile(AliyunOssStoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
+		String pdfFilePath = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();
 		sysUserContracts.setCreateTime(date);
@@ -544,7 +544,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
 		dateStrOss = "vipCourses/" + dateStrOss + "/" + DateUtil.getHour(date);
-		String pdfFilePath = storagePluginContext.uploadFile(AliyunOssStoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
+		String pdfFilePath = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();
 		sysUserContracts.setCreateTime(date);
@@ -711,7 +711,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
 		dateStrOss = "goods/" + dateStrOss + "/" + DateUtil.getHour(date);
-		String pdfFilePath = storagePluginContext.uploadFile(AliyunOssStoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
+		String pdfFilePath = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();
 		sysUserContracts.setCreateTime(date);
@@ -879,7 +879,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		} catch (IOException e) {
 			throw new BizException("生成pdf协议失败", e);
 		}
-		/*String organCode = "91440300326364429H";
+		String organCode = "91440300326364429H";
 		SysUserTsign organTsign = sysUserTsignService.queryByCardNo(organCode);
 		if (organTsign == null) {
 			throw new BizException("甲方未创建签章");
@@ -889,12 +889,12 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		if (sysUserTsign != null) {
 			eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
-		}*/
+		}
 
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
 		dateStrOss = "practice/" + dateStrOss + "/" + DateUtil.getHour(date);
-		String pdfFilePath = storagePluginContext.uploadFile(AliyunOssStoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
+		String pdfFilePath = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();
 		sysUserContracts.setCreateTime(date);

+ 100 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1252,7 +1252,17 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         } else {
             allCourseSchedules = courseSchedules;
         }
-        //所有课程的班级编号
+
+        //所有课程编号
+		List<Long> allCourseScheduleIds = allCourseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
+        //所有课程学员签到记录
+		List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(allCourseScheduleIds);
+		//课程请假学员字典
+		Map<Long, Set<Integer>> courseLeaveStudentMap = studentAttendances.stream()
+				.filter(e -> StudentAttendanceStatusEnum.LEAVE.equals(e.getStatus()))
+				.collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId, Collectors.mapping(StudentAttendance::getUserId, Collectors.toSet())));
+
+		//所有课程的班级编号
         List<Integer> classGroupIds = allCourseSchedules
                 .stream()
                 .map(CourseSchedule::getClassGroupId)
@@ -1359,12 +1369,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                         if (CollectionUtils.isEmpty(preClassGroupStudents) || CollectionUtils.isEmpty(backClassGroupStudents)) {
                             continue;
                         }
-                        //当前课程所在班级的学生编号列表
-                        List<Integer> preClassGroupStudentIds = preClassGroupStudents.stream()
+                        //课程对应请假学员编号集合
+						Set<Integer> preLeaveStudentIds = courseLeaveStudentMap.get(preCourseSchedule.getId());
+                        if(null == preLeaveStudentIds){
+                        	preLeaveStudentIds = Collections.EMPTY_SET;
+						}
+						Set<Integer> backLeaveStudentIds = courseLeaveStudentMap.get(backCourseSchedule.getId());
+						if(null == backLeaveStudentIds){
+							backLeaveStudentIds = Collections.EMPTY_SET;
+						}
+
+						//当前课程所在班级的学生编号列表
+						Set<Integer> finalPreLeaveStudentIds = preLeaveStudentIds;
+						List<Integer> preClassGroupStudentIds = preClassGroupStudents.stream()
+								.filter(e->!finalPreLeaveStudentIds.contains(e.getUserId()))
                                 .map(ClassGroupStudentMapper::getUserId)
                                 .collect(Collectors.toList());
                         //后面一节课程所在班级的学生编号列表
-                        Set<Integer> backClassGroupStudentIds = backClassGroupStudents.stream()
+						Set<Integer> finalBackLeaveStudentIds = backLeaveStudentIds;
+						Set<Integer> backClassGroupStudentIds = backClassGroupStudents.stream()
+								.filter(e->!finalBackLeaveStudentIds.contains(e.getUserId()))
                                 .map(ClassGroupStudentMapper::getUserId)
                                 .collect(Collectors.toSet());
                         List<Integer> repeatStudentIds = preClassGroupStudentIds.stream()
@@ -3466,7 +3490,69 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         return pageInfo;
     }
 
-    @Override
+	@Override
+	public PageInfo queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (null == user) {
+			throw new BizException("请登录");
+		}
+		if(!queryInfo.getFindTotal()){
+			queryInfo.setUserId(user.getId().longValue());
+		}
+		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+
+		if (Objects.isNull(queryInfo.getDate())) {
+			queryInfo.setDate(new Date());
+		}
+
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<TeacherClassCourseSchudeleDto> dataList = null;
+		int count = 0;
+		if (Objects.isNull(queryInfo.getOnlyHistory()) || queryInfo.getOnlyHistory() == 0) {
+			count = courseScheduleDao.countTeacherClassCourseSchedule(params);
+		} else {
+			count = courseScheduleDao.countTeacherHistoryClassCourseSchedule(params);
+		}
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			if (Objects.isNull(queryInfo.getOnlyHistory()) || queryInfo.getOnlyHistory() == 0) {
+				dataList = courseScheduleDao.queryTeacherClassCourseSchedule(params);
+			} else {
+				dataList = courseScheduleDao.queryTeacherHistoryClassCourseSchedule(params);
+			}
+
+			List<Integer> classGroupIds = dataList.stream().map(e->e.getClassGroupId().intValue()).collect(Collectors.toList());
+			List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds, ClassGroupStudentStatusEnum.NORMAL);
+			Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
+
+			List<Long> allCourseScheduleIds = dataList.stream().map(TeacherClassCourseSchudeleDto::getCourseScheduleId).collect(Collectors.toList());
+			SysConfig advanceLeaveHoursConfig = sysConfigService.findByParamName(SysConfigService.ADVANCE_LEAVE_HOURS);
+			Integer advanceLeaveHours=advanceLeaveHoursConfig.getParanValue(Integer.class);
+			List<Map<Long, Integer>> courseLeaveStudentNumMaps = studentAttendanceDao.countCourseLeaveStudentNumWithFourHoursAgo(allCourseScheduleIds, advanceLeaveHours);
+			Map<Long,Long> courseLeaveStudentNumMap = MapUtil.convertIntegerMap((courseLeaveStudentNumMaps));
+
+			dataList.forEach(e -> {
+				e.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(e.getClassGroupId().intValue(),new Date()));
+				e.setTotalClassTimes(courseScheduleDao.countCurrentCourseTime(e.getCourseScheduleId()));
+
+				Long leaveStudentNum = courseLeaveStudentNumMap.get(e.getCourseScheduleId());
+				Long normalStudentNum = classGroupStudentNumMap.get(e.getClassGroupId());
+				if(Objects.nonNull(leaveStudentNum)&&Objects.nonNull(normalStudentNum)&&leaveStudentNum.intValue()==normalStudentNum.intValue()){
+					e.setEnableAdjustInToday(1);
+				}
+			});
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
     public CourseAttendanceDetailHeadInfoDto findCourseAttendanceDetailHeadInfo(Long courseScheduleId) {
         if (Objects.isNull(courseScheduleId)) {
             throw new BizException("请指定课程");
@@ -3743,6 +3829,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			List<Map<Long, String>> coursesSettlementTimeMaps = courseScheduleTeacherSalaryDao.getCoursesSettlementTime(courseScheduleIds);
 			Map<Long, String> coursesSettlementTimeMap = MapUtil.convertIntegerMap(coursesSettlementTimeMaps);
 
+			List<Long> practiceIds = results.stream().filter(e -> PRACTICE.equals(e.getGroupType())).map(e -> Long.valueOf(e.getMusicGroupId())).collect(Collectors.toList());
+			Map<Long, PracticeGroup> idPracticeMap=new HashMap<>();
+			if(!CollectionUtils.isEmpty(practiceIds)){
+				List<PracticeGroup> practiceGroups = practiceGroupDao.getWithIds(practiceIds);
+                idPracticeMap = practiceGroups.stream().collect(Collectors.toMap(PracticeGroup::getId, e->e));
+			}
+
 			//获取班级声部名称
             List<Map<Integer, String>> classGroupSubjectNameMaps = classGroupDao.findClassGroupSubjectNameMaps(courseScheduleIds);
             Map<Integer, String> classGroupSubjectNameMap = MapUtil.convertIntegerMap(classGroupSubjectNameMaps);
@@ -3751,6 +3844,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				result.setTeacherName(nameIdMap.get(result.getActualTeacherId()));
 				result.setSubjectName(classGroupSubjectNameMap.get(result.getId()));
 				result.setStudentId(studentIdMap.get(result.getId()));
+				result.setPracticeGroup(idPracticeMap.get(Long.valueOf(result.getMusicGroupId())));
 //				List<TeacherAttendance> courseTeacherAttendances = courseTeacherAttendanceMap.get(result.getId());
 				/*if(!CollectionUtils.isEmpty(courseTeacherAttendances)){
 					TeacherAttendance teacherAttendance=courseTeacherAttendances.get(0);
@@ -3769,6 +3863,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 //					result.setIsCallNames(YesOrNoEnum.NO);
 //				}
 				result.setSettlementTime(coursesSettlementTimeMap.get(result.getId()));
+				result.setIsSettlement(Objects.isNull(result.getSettlementTime())?0:1);
 			}
         }
         pageInfo.setRows(results);

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

@@ -22,6 +22,8 @@ import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.string.MessageFormatter;
+
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -575,7 +577,7 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         try {
             contractService.transferPracticeCoursesContract(order.getUserId(),classGroup.getTotalClassTimes(),practiceGroup.getCoursesStartDate(),practiceGroup.getCoursesExpireDate(),order.getExpectAmount());
         } catch (Exception e) {
-            LOGGER.error("网管课[{}]购买协议错误:{}",order.getMusicGroupId(),e.getMessage(),e.getMessage());
+            LOGGER.error(MessageFormatter.arrayFormat("网管课[{}]购买协议错误:{}",order.getMusicGroupId(),e.getMessage()),e);
         }
 
         try {

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

@@ -142,15 +142,15 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	}
 
 	@Override
-	public void employeeOperate(Long employeeId, EmployeeOperateEnum operate) {
-		Employee employee = employeeDao.get(employeeId.intValue());
+	public void employeeOperate(Integer employeeId, EmployeeOperateEnum operate) {
+		Employee employee = employeeDao.get(employeeId);
 		switch (operate){
 			case RESET_PASSWORD:
 				employeeDao.updatePassword(employeeId,new BCryptPasswordEncoder().encode(ParamEnum.INIT_PASSWORD.getCode().toString()));
 				break;
 			case LOCK_UNLOCK:
-				SysUser sysUser = sysUserFeignService.queryUserById(employee.getUserId());
-				if(employee.getDemissionDate() != null && sysUser.getLockFlag() == 1){
+				SysUser sysUser = sysUserFeignService.queryUserById(employeeId);
+				if(employee != null && employee.getDemissionDate() != null && sysUser.getLockFlag() == 1){
 					throw new BizException("操作失败:离职员工不允许解冻");
 				}
 				employeeDao.updateUserLockStatus(employeeId);

+ 144 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/HfMemberSserviceImpl.java

@@ -0,0 +1,144 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.HfMemberDao;
+import com.ym.mec.biz.dal.entity.HfMember;
+import com.ym.mec.biz.service.HfMemberService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.adapay.CorpMember;
+import com.ym.mec.thirdparty.adapay.SettleAccount;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.File;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class HfMemberSserviceImpl extends BaseServiceImpl<Integer, HfMember> implements HfMemberService {
+    @Autowired
+    private HfMemberDao hfMemberDao;
+
+    @Override
+    public BaseDAO<Integer, HfMember> getDAO() {
+        return hfMemberDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> createMember(HfMember member, File file) throws Exception {
+        HfMember hasMember = hfMemberDao.getByMemberId(member.getMemberId());
+        if (hasMember != null) {
+            throw new BizException("商户号不能与已有商户相同,请核查");
+        }
+        hasMember = hfMemberDao.getByName(member.getName());
+        if (hasMember != null) {
+            throw new BizException("公司名与已有公司名相同,请核查");
+        }
+
+        Date nowDate = new Date();
+        member.setCreateTime(nowDate);
+        member.setUpdateTime(nowDate);
+        member.setStatus("pending");
+        insert(member);
+
+        HashMap<String, Object> memberParams = new HashMap<>();
+        memberParams.put("order_no", "corp_mem_" + System.currentTimeMillis());
+        memberParams.put("member_id", member.getMemberId());
+        memberParams.put("name", member.getName());
+        memberParams.put("prov_code", member.getProvCode());
+        memberParams.put("area_code", member.getAreaCode());
+        memberParams.put("social_credit_code", member.getSocialCreditCode());
+        memberParams.put("social_credit_code_expires", member.getSocialCreditCodeExpires());
+        memberParams.put("business_scope", member.getBusinessScope());
+        memberParams.put("legal_person", member.getLegalPerson());
+        memberParams.put("legal_cert_id", member.getLegalCertId());
+        memberParams.put("legal_cert_id_expires", member.getLegalCertIdExpires());
+        memberParams.put("legal_mp", member.getLegalMp());
+        memberParams.put("address", member.getAddress());
+        memberParams.put("zip_code", member.getZipCode());
+        memberParams.put("bank_code", member.getBankCode());
+        memberParams.put("bank_acct_type", "1");
+        memberParams.put("card_no", member.getCardNo());
+        memberParams.put("card_name", member.getName());
+        return CorpMember.executeCreateMember(memberParams, file);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> updateMember(HfMember member, File file) throws Exception {
+        HfMember hfMember = hfMemberDao.get(member.getId());
+        if (hfMember == null) {
+            throw new BizException("商户不存在请核对");
+        }
+
+        if (!hfMember.getStatus().equals("failed")) {
+            throw new BizException("商户不是审核失败状态不能修改");
+        }
+
+        Date nowDate = new Date();
+        member.setUpdateTime(nowDate);
+        member.setStatus("pending");
+        if (update(member) <= 0) {
+            throw new BizException("更新商户信息失败,请重试");
+        }
+        HashMap<String, Object> memberParams = new HashMap<>();
+        memberParams.put("order_no", "corp_mem_" + System.currentTimeMillis());
+        memberParams.put("member_id", member.getMemberId());
+        memberParams.put("name", member.getName());
+        memberParams.put("prov_code", member.getProvCode());
+        memberParams.put("area_code", member.getAreaCode());
+        memberParams.put("social_credit_code", member.getSocialCreditCode());
+        memberParams.put("social_credit_code_expires", member.getSocialCreditCodeExpires());
+        memberParams.put("business_scope", member.getBusinessScope());
+        memberParams.put("legal_person", member.getLegalPerson());
+        memberParams.put("legal_cert_id", member.getLegalCertId());
+        memberParams.put("legal_cert_id_expires", member.getLegalCertIdExpires());
+        memberParams.put("legal_mp", member.getLegalMp());
+        memberParams.put("address", member.getAddress());
+        memberParams.put("zip_code", member.getZipCode());
+        memberParams.put("bank_code", member.getBankCode());
+        memberParams.put("bank_acct_type", "1");
+        memberParams.put("card_no", member.getCardNo());
+        memberParams.put("card_name", member.getName());
+        return CorpMember.executeCreateMember(memberParams, file);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> createSettleAccount(String memberId, String cardNo, String bankCode) throws Exception {
+        HfMember hfMember = hfMemberDao.getByMemberId(memberId);
+        if (!hfMember.getStatus().equals("succeeded")) {
+            throw new BizException("商户审核通过,才能绑定结算卡");
+        }
+        hfMember.setCardNo(cardNo);
+        hfMember.setBankCode(bankCode);
+
+        //删除结算账户
+        if (StringUtils.isNotBlank(hfMember.getSettleAccountId())) {
+            SettleAccount.executeDeleteSettleAccount(hfMember.getSettleAccountId(), memberId);
+        }
+
+        Map<String, Object> accountInfo = new HashMap<String, Object>();
+        accountInfo.put("card_id", cardNo);
+        accountInfo.put("card_name", hfMember.getName());
+        accountInfo.put("tel_no", hfMember.getLegalMp());
+        accountInfo.put("bank_code", bankCode);
+        accountInfo.put("bank_acct_type", "1");
+        accountInfo.put("prov_code", hfMember.getProvCode());
+        accountInfo.put("area_code", hfMember.getAreaCode());
+
+        //创建结算账户
+        Map<String, Object> objectMap = SettleAccount.executeCreateSettleAccount(memberId, accountInfo);
+
+        hfMember.setSettleAccountId(objectMap.get("id").toString());
+        if (hfMemberDao.update(hfMember) <= 0) {
+            throw new BizException("绑卡失败,请重试");
+        }
+        return objectMap;
+    }
+}

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

@@ -2268,23 +2268,23 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, event, sysUser.getId(), ""));
         musicGroup.setStatus(MusicGroupStatusEnum.PREPARE);
         musicGroupDao.update(musicGroup);
-        if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
-            //给家长发送乐团基础训练课短信
-            //获取所有乐团学员列表
-            List<StudentRegistration> students = studentRegistrationDao.queryStudentByMusicGroupId(musicGroupId);
-            if (students != null && students.size() > 0) {
-                // 获取所有家长电话
-                Set<String> parentsPhones = students.stream().map(StudentRegistration::getParentsPhone).collect(Collectors.toSet());
-                // 获取对应家长的用户编号
-                Map<Integer, String> userIds = MapUtil.convertMybatisMap(studentRegistrationDao.findParentId(StringUtils.join(parentsPhones, ",")));
-                userIds = JSONObject.parseObject(JSONObject.toJSONString(userIds), HashMap.class);
-                if (userIds != null && userIds.size() > 0) {
-                    String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
-                    String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
-                    sysMessageService.batchSendMessage(MessageSender.YIMEI, MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE, userIds, null, 0, "", "", musicGroup.getName(), studentApplyUrl, serverPhone);
-                }
-            }
-        }
+//        if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType() == CooperationOrgan.OwnershipType.OWN) {
+//            //给家长发送乐团基础训练课短信
+//            //获取所有乐团学员列表
+//            List<StudentRegistration> students = studentRegistrationDao.queryStudentByMusicGroupId(musicGroupId);
+//            if (students != null && students.size() > 0) {
+//                // 获取所有家长电话
+//                Set<String> parentsPhones = students.stream().map(StudentRegistration::getParentsPhone).collect(Collectors.toSet());
+//                // 获取对应家长的用户编号
+//                Map<Integer, String> userIds = MapUtil.convertMybatisMap(studentRegistrationDao.findParentId(StringUtils.join(parentsPhones, ",")));
+//                userIds = JSONObject.parseObject(JSONObject.toJSONString(userIds), HashMap.class);
+//                if (userIds != null && userIds.size() > 0) {
+//                    String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
+//                    String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
+//                    sysMessageService.batchSendMessage(MessageSender.YIMEI, MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE, userIds, null, 0, "", "", musicGroup.getName(), studentApplyUrl, serverPhone);
+//                }
+//            }
+//        }
         Set<Integer> roleIds = new HashSet<>(1);
         roleIds.add(SysUserRole.SECTION_MANAGER);
         sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId()), MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_MARKING, "", musicGroup.getName());

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

@@ -28,6 +28,8 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
+import com.ym.mec.util.string.MessageFormatter;
+
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -3263,7 +3265,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         try {
             contractService.transferPracticeCoursesContract(order.getUserId(), classGroup.getTotalClassTimes(), practiceGroup.getCoursesStartDate(), practiceGroup.getCoursesExpireDate(), order.getExpectAmount());
         } catch (Exception e) {
-            LOGGER.error("网管课[{}]购买协议错误:{}", order.getMusicGroupId(), e.getMessage(), e.getMessage());
+            LOGGER.error(MessageFormatter.arrayFormat("网管课[{}]购买协议错误:{}", order.getMusicGroupId(), e.getMessage()), e);
         }
 
         try {

+ 70 - 62
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -4,10 +4,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
@@ -67,6 +64,8 @@ public class StudentManageServiceImpl implements StudentManageService {
     private StudentDao studentDao;
     @Autowired
     private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
+    @Autowired
+    private MusicGroupQuitDao musicGroupQuitDao;
 
     @Override
     public PageInfo<StudentManageListDto> findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
@@ -78,35 +77,35 @@ public class StudentManageServiceImpl implements StudentManageService {
         params.put("offset", pageInfo.getOffset());
         int count = 0;
         Set<Integer> paramUserIds = null;
-        if(hasPracticeCourse != null){
+        if (hasPracticeCourse != null) {
             //是否有陪练课
-            if(hasPracticeCourse){
+            if (hasPracticeCourse) {
                 paramUserIds = studentManageDao.queryHasPracticeCourse(params);
-            }else {
+            } else {
                 paramUserIds = studentManageDao.queryNotPracticeCourse(params);
             }
-            if(paramUserIds.size() == 0){
+            if (paramUserIds.size() == 0) {
                 return pageInfo;
             }
-            params.put("userIds",paramUserIds);
+            params.put("userIds", paramUserIds);
         }
-        if(hasCourse != null){
-            if(hasCourse){
+        if (hasCourse != null) {
+            if (hasCourse) {
                 paramUserIds = studentManageDao.queryHasCourse(params);
                 count = studentManageDao.countHasCourse(params);
-            }else {
+            } else {
                 paramUserIds = studentManageDao.queryNotCourse(params);
                 count = studentManageDao.countNotCourse(params);
             }
-            if(paramUserIds.size() == 0){
+            if (paramUserIds.size() == 0) {
                 return pageInfo;
             }
             params.remove("offset");
-            params.put("userIds",paramUserIds);
-        }else {
+            params.put("userIds", paramUserIds);
+        } else {
             count = studentManageDao.countStudentByOrganId(params);
         }
-        if(queryInfo.getIsExport() && count > 50000){
+        if (queryInfo.getIsExport() && count > 50000) {
             throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
         }
         List<StudentManageListDto> dataList = null;
@@ -118,21 +117,21 @@ public class StudentManageServiceImpl implements StudentManageService {
             List<SysUserCashAccount> byUserIds = sysUserCashAccountDao.findByUserIds(userIds);
             Map<Integer, SysUserCashAccount> collect = byUserIds.stream()
                     .collect(Collectors.toMap(SysUserCashAccount::getUserId, sysUserCashAccount -> sysUserCashAccount));
-            Map<Integer,Integer> hasPracticeCourseMap = MapUtil.convertIntegerMap(studentManageDao.getHasPracticeCourse(userIds));
+            Map<Integer, Integer> hasPracticeCourseMap = MapUtil.convertIntegerMap(studentManageDao.getHasPracticeCourse(userIds));
             //获取用户分部
-            Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+            Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
             //获取所在乐团
-            Map<Integer,String> musicGroupNames = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicNames(userIds));
+            Map<Integer, String> musicGroupNames = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicNames(userIds));
             //获取所在vip
-            Map<Integer,String> vipGroupNames = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipNames(userIds));
+            Map<Integer, String> vipGroupNames = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipNames(userIds));
             //获取所在乐团状态
-            Map<Integer,String> musicGroupStatus = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicStatus(userIds));
+            Map<Integer, String> musicGroupStatus = MapUtil.convertMybatisMap(musicGroupDao.queryUserMusicStatus(userIds));
             //获取所在vip状态
-            Map<Integer,String> vipGroupStatus = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipStatus(userIds));
+            Map<Integer, String> vipGroupStatus = MapUtil.convertMybatisMap(vipGroupDao.queryUserVipStatus(userIds));
             //获取所在声部
-            Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(studentManageDao.querySubjectNames(userIds));
+            Map<Integer, String> subjectNames = MapUtil.convertMybatisMap(studentManageDao.querySubjectNames(userIds));
             //学员是否有课
-            Map<Integer,Integer> hasCourseMap = MapUtil.convertMybatisMap(studentManageDao.queryHasCourseMap(userIds));
+            Map<Integer, Integer> hasCourseMap = MapUtil.convertMybatisMap(studentManageDao.queryHasCourseMap(userIds));
             dataList.forEach(e -> {
                 e.setOrganName(organNames.get(e.getOrganId()));
                 e.setMusicGroupName(musicGroupNames.get(e.getUserId().longValue()));
@@ -140,7 +139,7 @@ public class StudentManageServiceImpl implements StudentManageService {
                 e.setSubjectName(subjectNames.get(e.getUserId().longValue()));
                 e.setMusicGroupStatus(musicGroupStatus.get(e.getUserId().longValue()));
                 e.setVipGroupStatus(vipGroupStatus.get(e.getUserId()));
-                e.setHasCourse(hasCourseMap.get(e.getUserId())==null?YesOrNoEnum.NO:YesOrNoEnum.YES);
+                e.setHasCourse(hasCourseMap.get(e.getUserId()) == null ? YesOrNoEnum.NO : YesOrNoEnum.YES);
                 /*if(hasCourse == null){
                     Integer course = studentManageDao.getHasCourse(e.getUserId());
                     e.setHasCourse(course==null?YesOrNoEnum.NO:course==0?YesOrNoEnum.NO:YesOrNoEnum.YES);
@@ -151,8 +150,8 @@ public class StudentManageServiceImpl implements StudentManageService {
                         e.setHasCourse(YesOrNoEnum.NO);
                     }
                 }*/
-                e.setHasPracticeCourse(hasPracticeCourseMap.get(e.getUserId()) == null?YesOrNoEnum.NO:YesOrNoEnum.YES);
-                if(collect.get(e.getUserId()) != null){
+                e.setHasPracticeCourse(hasPracticeCourseMap.get(e.getUserId()) == null ? YesOrNoEnum.NO : YesOrNoEnum.YES);
+                if (collect.get(e.getUserId()) != null) {
                     e.setCourseBalance(collect.get(e.getUserId()).getCourseBalance());
                 }
             });
@@ -171,19 +170,19 @@ public class StudentManageServiceImpl implements StudentManageService {
         MapUtil.populateMap(params, queryInfo);
 
         Teacher teacher = teacherDao.get(queryInfo.getTeacherId());
-        if(Objects.isNull(teacher)){
+        if (Objects.isNull(teacher)) {
             return null;
         }
-        List<Integer> organIds=new ArrayList<>();
-        if(Objects.nonNull(teacher.getTeacherOrganId())){
+        List<Integer> organIds = new ArrayList<>();
+        if (Objects.nonNull(teacher.getTeacherOrganId())) {
             organIds.add(teacher.getTeacherOrganId());
         }
-        if(StringUtils.isNotBlank(teacher.getFlowOrganRange())){
+        if (StringUtils.isNotBlank(teacher.getFlowOrganRange())) {
             List<Integer> flowOrganRangeIds = Arrays.stream(teacher.getFlowOrganRange().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
             organIds.addAll(flowOrganRangeIds);
         }
 
-        if(CollectionUtils.isEmpty(organIds)){
+        if (CollectionUtils.isEmpty(organIds)) {
             return null;
         }
 
@@ -212,11 +211,20 @@ public class StudentManageServiceImpl implements StudentManageService {
     public List<StudentManageBaseInfoOfMusicGroupDto> findStudentMusicGroupsByUserId(Integer userId) {
         List<StudentManageBaseInfoOfMusicGroupDto> musicGroups = studentManageDao.findStudentMusicGroupsByUserId(userId);
         //获取学员报名时所选乐器
-        if(musicGroups != null && musicGroups.size() > 0){
-            for (StudentManageBaseInfoOfMusicGroupDto e:musicGroups) {
-                e.setUserGoodsDtos(studentPaymentOrderDao.findGoodsIds(e.getMusicGroupId(),e.getUserId()));
+        if (musicGroups.size() > 0) {
+            for (StudentManageBaseInfoOfMusicGroupDto e : musicGroups) {
+                e.setUserGoodsDtos(studentPaymentOrderDao.findGoodsIds(e.getMusicGroupId(), e.getUserId()));
+            }
+        }
+        List<MusicGroupQuit> userMusicQuits = musicGroupQuitDao.getUserMusicQuit(userId);
+        for (StudentManageBaseInfoOfMusicGroupDto musicGroup : musicGroups) {
+            for (MusicGroupQuit userMusicQuit : userMusicQuits) {
+                if (musicGroup.getMusicGroupId().equals(userMusicQuit.getMusicGroupId())) {
+                    musicGroup.setQuitMusicGroupDate(userMusicQuit.getQuitDate());
+                }
             }
         }
+
         return musicGroups;
     }
 
@@ -313,7 +321,7 @@ public class StudentManageServiceImpl implements StudentManageService {
 
         List<MusicGroupStudentsDto> dataList = null;
         int count = studentManageDao.countMusicGroupStudent(params);
-        if(queryInfo.getIsExport() && count > 50000){
+        if (queryInfo.getIsExport() && count > 50000) {
             throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
         }
         if (count > 0) {
@@ -334,13 +342,13 @@ public class StudentManageServiceImpl implements StudentManageService {
 
     @Override
     public Object musicGroupStudentsSum(String musicGroupId) {
-        Map<String,Integer> resultMap = new HashMap<>(3);
+        Map<String, Integer> resultMap = new HashMap<>(3);
         //乐团在读人数
-        resultMap.put("studying",studentManageDao.countStudyNum(musicGroupId));
+        resultMap.put("studying", studentManageDao.countStudyNum(musicGroupId));
         //退团人数
-        resultMap.put("quit",studentManageDao.countQuitNum(musicGroupId));
+        resultMap.put("quit", studentManageDao.countQuitNum(musicGroupId));
         //新增人数
-        resultMap.put("add",studentManageDao.countAddNum(musicGroupId));
+        resultMap.put("add", studentManageDao.countAddNum(musicGroupId));
         return resultMap;
     }
 
@@ -366,7 +374,7 @@ public class StudentManageServiceImpl implements StudentManageService {
 
     @Override
     public List<ConditionDto> queryStudentClassGroup(String musicGroupId, Integer teacherId) {
-        return classGroupDao.queryStudentClassGroup(musicGroupId,teacherId);
+        return classGroupDao.queryStudentClassGroup(musicGroupId, teacherId);
     }
 
     @Override
@@ -396,7 +404,7 @@ public class StudentManageServiceImpl implements StudentManageService {
             teacherIds.addAll(dataList.stream().map(e -> e.getEduTeacherId()).collect(Collectors.toSet()));
             List<Map<Integer, String>> maps = teacherDao.queryNameByIds(StringUtils.join(teacherIds, ","));
             Map<Integer, String> teacherNameMap = MapUtil.convertMybatisMap(maps);
-            dataList.forEach(e->{
+            dataList.forEach(e -> {
                 e.setTeacherName(teacherNameMap.get(e.getTeacherId()));
                 e.setEduTeacherName(teacherNameMap.get(e.getEduTeacherId()));
             });
@@ -411,14 +419,14 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int studentRegister(SysUser sysUser) {
-        if(sysUser == null || StringUtils.isEmpty(sysUser.getPhone())){
+        if (sysUser == null || StringUtils.isEmpty(sysUser.getPhone())) {
             throw new BizException("参数校验失败");
         }
         SysUser sysUser1 = sysUserFeignService.queryUserByMobile(sysUser.getPhone());
-        if(sysUser1 != null){
-            if(sysUser1.getUserType().contains("STUDENT")){
+        if (sysUser1 != null) {
+            if (sysUser1.getUserType().contains("STUDENT")) {
                 throw new BizException("手机号已被占用");
-            }else {
+            } else {
                 sysUser.setId(sysUser1.getId());
                 sysUser.setUserType(sysUser1.getUserType() + ",STUDENT");
                 teacherDao.updateUser(sysUser);
@@ -444,21 +452,21 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Transactional(rollbackFor = Exception.class)
     public int studentUpdate(SysUser sysUser) {
         Integer userId = sysUser.getId();
-        if(userId == null || StringUtils.isEmpty(sysUser.getPhone())){
+        if (userId == null || StringUtils.isEmpty(sysUser.getPhone())) {
             throw new BizException("参数校验失败");
         }
         SysUser sysUser1 = sysUserFeignService.queryUserByMobile(sysUser.getPhone());
-        if(sysUser1 != null && !userId.equals(sysUser1.getId())){
+        if (sysUser1 != null && !userId.equals(sysUser1.getId())) {
             throw new BizException("手机号已被占用");
         }
         teacherDao.updateUser(sysUser);
         Student student = new Student(userId, studentRegistrationDao.getSubjectIds(userId));
         student.setOperatingTag(sysUser.getOperatingTag());
-    	student.setOperatingTempTag(0);
-        student.setServiceTag(sysUser.getServiceTag()==0?2:1);
+        student.setOperatingTempTag(0);
+        student.setServiceTag(sysUser.getServiceTag() == 0 ? 2 : 1);
         student.setTeacherId(sysUser.getTeacherId());
         studentService.upSet(student);
-        if(new Integer(2).equals(student.getServiceTag())){
+        if (new Integer(2).equals(student.getServiceTag())) {
             studentExtracurricularExercisesSituationDao.deleteByStudent(sysUser.getId());
         }
         return userId;
@@ -493,17 +501,17 @@ public class StudentManageServiceImpl implements StudentManageService {
     public Map<String, Integer> sumStudentAttendance(Integer courseScheduleId) {
         Map<String, Integer> sum = new HashMap<>(5);
         Integer studentNum = scheduleStudentPaymentDao.countStudentNum(courseScheduleId);
-        sum.put("studentNum",studentNum);
+        sum.put("studentNum", studentNum);
         Integer signInNum = studentManageDao.countStudentSignInNum(courseScheduleId, "NORMAL");
-        sum.put("signInNum",signInNum);
+        sum.put("signInNum", signInNum);
         Integer leaveNum = studentManageDao.countStudentSignInNum(courseScheduleId, "LEAVE");
-        sum.put("leaveNum",leaveNum);
-        studentNum = studentNum==null?0:studentNum;
-        signInNum = signInNum==null?0:signInNum;
-        leaveNum = leaveNum==null?0:leaveNum;
-        sum.put("truantNum",studentNum-signInNum-leaveNum);
-        sum.put("homeworkNum",studentManageDao.countHomeworkNum(courseScheduleId));
-        sum.put("repliedNum",studentManageDao.countRepliedNum(courseScheduleId));
+        sum.put("leaveNum", leaveNum);
+        studentNum = studentNum == null ? 0 : studentNum;
+        signInNum = signInNum == null ? 0 : signInNum;
+        leaveNum = leaveNum == null ? 0 : leaveNum;
+        sum.put("truantNum", studentNum - signInNum - leaveNum);
+        sum.put("homeworkNum", studentManageDao.countHomeworkNum(courseScheduleId));
+        sum.put("repliedNum", studentManageDao.countRepliedNum(courseScheduleId));
         return sum;
     }
 
@@ -517,7 +525,7 @@ public class StudentManageServiceImpl implements StudentManageService {
 
         List<Student4operating> dataList = new ArrayList<>();
 
-        if(count > 0){
+        if (count > 0) {
             pageInfo.setTotal(count);
             dataList = studentDao.getOperatingStudents(params);
         }
@@ -527,6 +535,6 @@ public class StudentManageServiceImpl implements StudentManageService {
 
     @Override
     public List<BasicUserDto> queryCanAddStudent(String musicGroupId, Long musicGroupPaymentCalenderId) {
-        return studentManageDao.queryCanAddStudent(musicGroupId,musicGroupPaymentCalenderId);
+        return studentManageDao.queryCanAddStudent(musicGroupId, musicGroupPaymentCalenderId);
     }
 }

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

@@ -9,14 +9,12 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.musicalListDetailDto;
+import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
-import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
@@ -45,6 +43,8 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     private StudentPaymentOrderDao studentPaymentOrderDao;
     @Autowired
     private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
+    private SubjectDao subjectDao;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrderDetail> getDAO() {
@@ -172,11 +172,11 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     }
 
     @Override
-    public List<musicalListDetailDto> getMusicalListDetail(String musicGroupId) {
-        List<musicalListDetailDto> musicalListDetailDtos = studentPaymentOrderDetailDao.getMusicalListDetail(musicGroupId);
+    public List<MusicalListDetailDto> getMusicalListDetail(String musicGroupId) {
+        List<MusicalListDetailDto> musicalListDetailDtos = studentPaymentOrderDetailDao.getMusicalListDetail(musicGroupId);
         if(musicalListDetailDtos != null && musicalListDetailDtos.size() > 0){
-            List<Long> paymentOrderNo = musicalListDetailDtos.stream().map(e -> e.getPaymentOrderId()).collect(Collectors.toList());
-            List<Integer> userIds = musicalListDetailDtos.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+            List<Long> paymentOrderNo = musicalListDetailDtos.stream().map(MusicalListDetailDto::getPaymentOrderId).collect(Collectors.toList());
+            List<Integer> userIds = musicalListDetailDtos.stream().map(MusicalListDetailDto::getUserId).collect(Collectors.toList());
             //商品名称
             MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
             Organization organization = organizationDao.get(musicGroup.getOrganId());
@@ -187,6 +187,7 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
             Map<Long, BigDecimal> accessoriesAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo,"ACCESSORIES"));
             Map<Long, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo,"COURSE"));
             Map<Long, String> purchaseTypeMap = MapUtil.convertIntegerMap(studentRegistrationDao.queryPurchaseTypeMap(musicGroupId));
+            Map<Integer, String> userSubjectMap = subjectDao.getRegisterSubject(musicGroupId, userIds).stream().collect(Collectors.toMap(StudentRegistration::getUserId, StudentRegistration::getSubjectName));
             musicalListDetailDtos.forEach(e->{
                 e.setGoodsNames(goodsNameMap.get(e.getPaymentOrderId()));
                 e.setMusicGroupName(musicGroup.getName());
@@ -196,9 +197,10 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                 e.setAccessoriesAmount(accessoriesAmountMap.get(e.getPaymentOrderId()));
                 e.setOrderAmount(actualAmountMap.get(e.getPaymentOrderId()));
                 e.setCourseAmount(courseAmountMap.get(e.getPaymentOrderId()));
-                String s = purchaseTypeMap.get(e.getUserId());
+                e.setSubjectName(userSubjectMap.get(e.getUserId()));
+                String s = purchaseTypeMap.get(e.getUserId().longValue());
                 if(StringUtils.isNotEmpty(s)){
-                    e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(purchaseTypeMap.get(e.getUserId())));
+                    e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(purchaseTypeMap.get(e.getUserId().longValue())));
                 }
             });
         }

+ 116 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentVisitServiceImpl.java

@@ -0,0 +1,116 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.PageInfoDegree;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.biz.service.StudentVisitService;
+import com.ym.mec.common.dal.BaseDAO;
+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.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class StudentVisitServiceImpl extends BaseServiceImpl<Integer, StudentVisit> implements StudentVisitService {
+
+    @Autowired
+    private StudentVisitDao studentVisitDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private StudentRepairDao studentRepairDao;
+    @Autowired
+    private TeacherDao teacherDao;
+
+
+    @Override
+    public BaseDAO<Integer, StudentVisit> getDAO() {
+        return studentVisitDao;
+    }
+
+    @Override
+    public StudentVisit addVisit(StudentVisit studentVisit) {
+        SysUser user = teacherDao.getUser(studentVisit.getStudentId());
+        studentVisit.setOrganId(user.getOrganId());
+        studentVisit.setCreateTime(new Date());
+        studentVisitDao.insert(studentVisit);
+        return studentVisit;
+    }
+
+    @Override
+    public StudentVisitDto getInfo(Integer id) {
+        return studentVisitDao.getInfo(id);
+    }
+
+    @Override
+    public PageInfo<StudentVisitDto> getPageList(StudentVisitQueryInfo queryInfo) {
+        if (queryInfo.getEndTime() != null) {
+            queryInfo.setEndTime(DateUtil.getLastTimeWithDay(queryInfo.getEndTime()));
+        }
+        PageInfo<StudentVisitDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<StudentVisitDto> dataList = new ArrayList<>();
+        int count = this.findCount(params);
+
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentVisitDao.getPageList(params);
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public List<StudentRegistration> getMusicGroupStu(String musicGroupId, Integer teacherId) {
+        return studentRegistrationDao.getMusicGroupStu4Teacher(musicGroupId, teacherId);
+    }
+
+    @Override
+    public List<MusicGroup> getMusicGroup(Integer teacherId) {
+        return musicGroupDao.getTeacherMusicGroup(teacherId);
+    }
+
+    @Override
+    public PageInfo<BasicUserDto> getStudents(StudentVisitQueryInfo queryInfo) {
+        PageInfo<BasicUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<BasicUserDto> dataList = new ArrayList<>();
+        int count = studentVisitDao.getStudentsCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentVisitDao.getStudents(params);
+            Set<Integer> userIds = dataList.stream().map(BasicUserDto::getUserId).collect(Collectors.toSet());
+            List<MusicGroup> musicGroups = studentRepairDao.getUserMusicGroup(userIds);
+            Map<Integer, List<MusicGroup>> userMusicGroup = musicGroups.stream().collect(Collectors.groupingBy(MusicGroup::getRepairUserId));
+            for (BasicUserDto basicUserDto : dataList) {
+                if (!userMusicGroup.containsKey(basicUserDto.getUserId())) {
+                    continue;
+                }
+                MusicGroup musicGroup = userMusicGroup.get(basicUserDto.getUserId()).get(0);
+                basicUserDto.setMusicGroupId(musicGroup.getId());
+                basicUserDto.setMusicGroupName(musicGroup.getName());
+            }
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+}

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

@@ -339,12 +339,12 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	}
 
 	@Override
-	public PageInfo<musicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo) {
-		PageInfo<musicGroupStudentApplyDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+	public PageInfo<MusicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo) {
+		PageInfo<MusicGroupStudentApplyDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 
-		List<musicGroupStudentApplyDto> dataList = null;
+		List<MusicGroupStudentApplyDto> dataList = null;
 		int count = teacherDao.countMusicGroupStudentApply(params);
 		if (count > 0) {
 			pageInfo.setTotal(count);

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

@@ -24,6 +24,7 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.string.MessageFormatter;
 
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -1560,7 +1561,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		try {
 			contractService.transferVipGroupCoursesContract(userId,vipGroupId);
 		} catch (Exception e) {
-			LOGGER.error("小课[{}]购买协议错误:{}",vipGroupId,e.getMessage(),e.getMessage());
+			LOGGER.error(MessageFormatter.arrayFormat("小课[{}]购买协议错误:{}", vipGroupId, e.getMessage()), e);
 		}
 	}
 

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

@@ -255,7 +255,8 @@
         LIMIT 1
     </select>
     <select id="findByClassGroups" resultMap="ClassGroupStudentMapper">
-        SELECT * FROM class_group_student_mapper WHERE class_group_id_ IN
+        SELECT * FROM class_group_student_mapper
+        WHERE class_group_id_ IN
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>

+ 26 - 21
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2177,9 +2177,13 @@
         FROM course_schedule cs
                  LEFT JOIN course_schedule_student_payment cssp ON cs.id_ = cssp.course_schedule_id_
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+          <if test="groupType != null">
           AND cs.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-          AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) > NOW()
+          </if>
+          <if test="groupId != null">
           AND cs.music_group_id_ = #{groupId}
+          </if>
+          AND CONCAT(cs.class_date_, ' ', cs.start_class_time_) > NOW()
           AND cssp.user_id_ = #{userId}
     </select>
 
@@ -2281,27 +2285,28 @@
 
     <select id="endFindCourseSchedules" resultMap="CourseScheduleEndDto">
         SELECT
-        cs.id_,
-        cs.group_type_,
-        cs.music_group_id_,
-        cs.class_group_id_,
-        cs.status_,
-        cs.name_,
-        CONCAT(cs.class_date_,' ',cs.start_class_time_) course_start_time_,
-        CONCAT(cs.class_date_,' ',cs.end_class_time_) course_end_time_,
-        cs.actual_teacher_id_,
-        cs.teach_mode_,
-        cs.type_,
-        cs.schoole_id_,
-        s.name_ schoole_name_,
-        o.name_ organ_name_,
-        CASE WHEN COUNT(sa.id_) > 0 THEN 1 ELSE 0 END isCallNames
+            cs.id_,
+            cs.group_type_,
+            cs.music_group_id_,
+            cs.class_group_id_,
+            cs.status_,
+            cs.name_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) course_start_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) course_end_time_,
+            cs.actual_teacher_id_,
+            cs.teach_mode_,
+            cs.type_,
+            cs.schoole_id_,
+            s.name_ schoole_name_,
+            o.name_ organ_name_,
+            CASE WHEN COUNT(sa.id_) > 0 THEN 1 ELSE 0 END isCallNames
         FROM
-        course_schedule cs
-        LEFT JOIN school s ON cs.schoole_id_=s.id_
-        LEFT JOIN organization o ON cs.organ_id_=o.id_
-        LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
-        <include refid="endFindCourseSchedulesCondition"/>
+            course_schedule cs
+            LEFT JOIN school s ON cs.schoole_id_=s.id_
+            LEFT JOIN organization o ON cs.organ_id_=o.id_
+            LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
+            <include refid="endFindCourseSchedulesCondition"/>
         GROUP BY cs.id_
         ORDER BY course_start_time_,cs.id_
         <include refid="global.limit"/>

+ 170 - 0
mec-biz/src/main/resources/config/mybatis/HfMemberMapper.xml

@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.HfMemberDao">
+    <resultMap id="hfMember" type="com.ym.mec.biz.dal.entity.HfMember">
+        <id column="id_" property="id"/>
+        <result column="name_" property="name"/>
+        <result column="member_id_" property="memberId"/>
+        <result column="prov_code_" property="provCode"/>
+        <result column="area_code_" property="areaCode"/>
+        <result column="social_credit_code_" property="socialCreditCode"/>
+        <result column="social_credit_code_expires_" property="socialCreditCodeExpires"/>
+        <result column="business_scope_" property="businessScope"/>
+        <result column="legal_person_" property="legalPerson"/>
+        <result column="legal_cert_id_" property="legalCertId"/>
+        <result column="legal_cert_id_expires_" property="legalCertIdExpires"/>
+        <result column="legal_mp_" property="legalMp"/>
+        <result column="address_" property="address"/>
+        <result column="zip_code_" property="zipCode"/>
+        <result column="card_no_" property="cardNo"/>
+        <result column="bank_code_" property="bankCode"/>
+        <result column="settle_account_id_" property="settleAccountId"/>
+        <result column="status_" property="status"/>
+        <result column="memo_" property="memo"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id_, name_, member_id_, prov_code_, area_code_, social_credit_code_, social_credit_code_expires_,
+        business_scope_, legal_person_, legal_cert_id_, legal_cert_id_expires_, legal_mp_,
+        address_, zip_code_, card_no_, bank_code_,settle_account_id_,status_, create_time_, update_time_
+    </sql>
+    <select id="get" parameterType="java.lang.Integer" resultMap="hfMember">
+        <!--@mbg.generated-->
+        select
+        <include refid="Base_Column_List"/>
+        from hf_member
+        where id_ = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="delete" parameterType="java.lang.Integer">
+        <!--@mbg.generated-->
+        delete from hf_member
+        where id_ = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.HfMember"
+            useGeneratedKeys="true">
+        <!--@mbg.generated-->
+        insert into hf_member (name_, member_id_, prov_code_,
+        area_code_, social_credit_code_, social_credit_code_expires_,
+        business_scope_, legal_person_, legal_cert_id_,
+        legal_cert_id_expires_, legal_mp_, address_,
+        zip_code_, card_no_, bank_code_,status_,
+        create_time_, update_time_)
+        values (#{name}, #{memberId}, #{provCode},
+        #{areaCode}, #{socialCreditCode}, #{socialCreditCodeExpires},
+        #{businessScope}, #{legalPerson}, #{legalCertId},
+        #{legalCertIdExpires}, #{legalMp}, #{address},
+        #{zipCode}, #{cardNo}, #{bankCode},#{status},
+        #{createTime}, #{updateTime})
+    </insert>
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.HfMember">
+        <!--@mbg.generated-->
+        update hf_member
+        <set>
+            <if test="name != null">
+                name_ = #{name},
+            </if>
+            <if test="memberId != null">
+                member_id_ = #{memberId},
+            </if>
+            <if test="provCode != null">
+                prov_code_ = #{provCode},
+            </if>
+            <if test="areaCode != null">
+                area_code_ = #{areaCode},
+            </if>
+            <if test="socialCreditCode != null">
+                social_credit_code_ = #{socialCreditCode},
+            </if>
+            <if test="socialCreditCodeExpires != null">
+                social_credit_code_expires_ = #{socialCreditCodeExpires},
+            </if>
+            <if test="businessScope != null">
+                business_scope_ = #{businessScope},
+            </if>
+            <if test="legalPerson != null">
+                legal_person_ = #{legalPerson},
+            </if>
+            <if test="legalCertId != null">
+                legal_cert_id_ = #{legalCertId},
+            </if>
+            <if test="legalCertIdExpires != null">
+                legal_cert_id_expires_ = #{legalCertIdExpires},
+            </if>
+            <if test="legalMp != null">
+                legal_mp_ = #{legalMp},
+            </if>
+            <if test="address != null">
+                address_ = #{address},
+            </if>
+            <if test="zipCode != null">
+                zip_code_ = #{zipCode},
+            </if>
+            <if test="cardNo != null">
+                card_no_ = #{cardNo},
+            </if>
+            <if test="bankCode != null">
+                bank_code_ = #{bankCode},
+            </if>
+            <if test="settleAccountId != null">
+                settle_account_id_ = #{settleAccountId},
+            </if>
+            <if test="memo != null">
+                memo_ = #{memo},
+            </if>
+            <if test="status != null">
+                status_ = #{status},
+            </if>
+            <if test="createTime != null">
+                create_time_ = #{createTime},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime},
+            </if>
+        </set>
+        where id_ = #{id,jdbcType=INTEGER}
+    </update>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="hfMember" parameterType="map">
+        SELECT * FROM hf_member
+        <include refid="queryPageSql"/>
+        ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <sql id="queryPageSql">
+        <where>
+            <if test="name != null">
+                AND name_ LIKE CONCAT( '%', #{name}, '%' )
+            </if>
+            <if test="memberId != null">
+                AND member_id_ = #{memberId}
+            </if>
+            <if test="status != null">
+                AND status_ = #{status}
+            </if>
+        </where>
+    </sql>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*) FROM hf_member
+        <include refid="queryPageSql"/>
+    </select>
+
+    <select id="getByMemberId" resultMap="hfMember">
+        SELECT *
+        FROM hf_member
+        WHERE member_id_ = #{memberId}
+        LIMIT 1
+    </select>
+
+    <select id="getByName" resultMap="hfMember">
+        SELECT *
+        FROM hf_member
+        WHERE name_ = #{name}
+        LIMIT 1
+    </select>
+</mapper>

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

@@ -570,4 +570,10 @@
         AND type_ = 'APPLY'
         GROUP BY music_group_id_
     </select>
+
+    <select id="getTeacherMusicGroup" resultMap="MusicGroup">
+        SELECT mg.* FROM course_schedule cs
+        LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
+        WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.group_type_ = 'MUSIC' GROUP BY mg.id_
+    </select>
 </mapper>

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml

@@ -92,4 +92,8 @@
 		FROM music_group_quit
 		WHERE music_group_id_=#{musicGroupId} AND status_='APPROVED'
 	</select>
+
+	<select id="getUserMusicQuit" resultMap="MusicGroupQuit">
+		SELECT * FROM music_group_quit WHERE user_id_=#{userId} AND status_='APPROVED' ORDER BY id_ ASC
+	</select>
 </mapper>

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

@@ -570,7 +570,7 @@
             </if>
     </select>
     <select id="findEnableAssignTeachers" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
-        SELECT su.id_ userId,su.username_ userName,su.avatar_ avatar
+        SELECT su.id_ userId,su.real_name_ userName,su.avatar_ avatar
         FROM teacher t
           LEFT JOIN sys_user su ON t.id_=su.id_
         WHERE
@@ -707,4 +707,20 @@
             #{id}
         </foreach>
     </select>
+
+    <select id="getWithIds" resultMap="PracticeGroup">
+        SELECT * FROM practice_group
+        WHERE id_ IN
+        <foreach collection="practiceIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
+
+    <select id="getPracticeGroupType" resultType="map">
+        SELECT id_ AS 'key', type_ AS 'value' FROM practice_group
+        WHERE id_ IN
+        <foreach collection="practiceIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

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

@@ -121,7 +121,7 @@
         AND spo.status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         AND spo.type_ = 'APPLY'
     </select>
-    <resultMap id="musicalListDetailDtoMap" type="com.ym.mec.biz.dal.dto.musicalListDetailDto">
+    <resultMap id="musicalListDetailDtoMap" type="com.ym.mec.biz.dal.dto.MusicalListDetailDto">
         <result property="paymentOrderId" column="payment_order_id_"/>
         <result property="username" column="username_"/>
         <result property="userId" column="user_id_"/>
@@ -137,7 +137,7 @@
     <select id="getMusicalListDetail" resultMap="musicalListDetailDtoMap">
         SELECT MAX(spo.id_) payment_order_id_,spo.user_id_  FROM student_payment_order spo
         LEFT JOIN student_registration sr ON spo.user_id_ = sr.user_id_
-        WHERE spo.music_group_id_ = #{musicGroupId}
+        WHERE spo.music_group_id_ = #{musicGroupId} AND spo.status_ = 'SUCCESS'
         AND sr.music_group_id_ = #{musicGroupId} AND sr.music_group_status_!='QUIT'
         GROUP BY spo.user_id_
     </select>

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

@@ -204,6 +204,12 @@
 
     <sql id="queryPaymentOrder">
         <where>
+            <if test="userIds != null">
+                AND spo.user_id_ IN
+                <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+                    #{userId}
+                </foreach>
+            </if>
             <if test="organId != null">
                 AND FIND_IN_SET(spo.organ_id_,#{organId})
             </if>
@@ -687,4 +693,9 @@
         ]]></if>
         AND spo.actual_amount_ > 0
     </select>
+
+    <select id="getUsers" resultType="com.ym.mec.biz.dal.dto.BasicUserDto">
+            SELECT username_ name ,id_ userId,phone_ phone FROM sys_user
+            WHERE id_ = #{search} OR username_ LIKE CONCAT('%',#{search},'%') OR phone_ LIKE CONCAT('%',#{search},'%')
+    </select>
 </mapper>

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -110,6 +110,12 @@
 
     <sql id="queryPaymentOrder">
         <where>
+            <if test="userIds != null">
+                AND spo.user_id_ IN
+                <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+                    #{userId}
+                </foreach>
+            </if>
             <if test="organId != null">
                 AND FIND_IN_SET(spo.organ_id_,#{organId})
             </if>

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

@@ -495,7 +495,7 @@
         update_time_ = now()
         WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = '0'
     </update>
-    
+
     <select id="queryStudentNum" resultType="map">
         SELECT count(distinct sr.user_id_) total_num_,sum(case when sr.create_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) new_num_,sum(case when sr.music_group_status_ = 'QUIT' and sr.update_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) quit_num_
         FROM student_registration sr left join music_group mg on sr.music_group_id_ = mg.id_
@@ -633,4 +633,17 @@
         LEFT JOIN sys_user su ON su.id_ = s.user_id_
         WHERE s.user_id_ = #{studentId}
     </select>
+
+    <select id="getMusicGroupStu" resultMap="StudentRegistration">
+        SELECT sr.user_id_,s.username_ name_,sr.music_group_status_ FROM student_registration sr
+        LEFT JOIN sys_user s on sr.user_id_ = s.id_
+        WHERE music_group_id_ = #{musicGroupId}
+    </select>
+
+    <select id="getMusicGroupStu4Teacher" resultMap="StudentRegistration">
+        SELECT s.id_ user_id_,s.username_ name_ FROM course_schedule cs
+        LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+        LEFT JOIN sys_user s ON s.id_ = cssp.user_id_
+        WHERE cs.music_group_id_ = #{musicGroupId} AND cs.actual_teacher_id_ = #{teacherId} AND cs.group_type_ = 'MUSIC' GROUP BY s.id_
+    </select>
 </mapper>

+ 175 - 0
mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml

@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.StudentVisitDao">
+    <resultMap id="StudentVisit" type="com.ym.mec.biz.dal.dto.StudentVisitDto">
+        <id column="id_" property="id"/>
+        <result column="music_group_id_" property="musicGroupId"/>
+        <result column="musicGroupName" property="musicGroupName"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="organName" property="organName"/>
+        <result column="student_id_" property="studentId"/>
+        <result column="studentName" property="studentName"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="teacherName" property="teacherName"/>
+        <result column="visiter_type_" property="visiterType"/>
+        <result column="type_" property="type"/>
+        <result column="purpose_" property="purpose"/>
+        <result column="overview_" property="overview"/>
+        <result column="feedback_" property="feedback"/>
+        <result column="visit_time_" property="visitTime"/>
+        <result column="create_time_" property="createTime"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id_, music_group_id_, organ_id_, student_id_, teacher_id_, visiter_type_, type_, purpose_, overview_, feedback_,
+        visit_time_, create_time_
+    </sql>
+    <select id="get" parameterType="java.lang.Integer" resultMap="StudentVisit">
+        select
+        <include refid="Base_Column_List"/>
+        from student_visit
+        where id_ = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="delete" parameterType="java.lang.Integer">
+        <!--@mbg.generated-->
+        delete from student_visit
+        where id_ = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.StudentVisit"
+            useGeneratedKeys="true">
+        <!--@mbg.generated-->
+        insert into student_visit (music_group_id_, organ_id_, student_id_, teacher_id_, visiter_type_,
+        type_, purpose_, overview_,
+        feedback_, visit_time_, create_time_
+        )
+        values (#{musicGroupId,jdbcType=VARCHAR}, #{organId,jdbcType=INTEGER}, #{studentId,jdbcType=INTEGER},
+        #{teacherId,jdbcType=INTEGER},#{visiterType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{type,jdbcType=VARCHAR}, #{purpose,jdbcType=VARCHAR}, #{overview,jdbcType=VARCHAR},
+        #{feedback,jdbcType=VARCHAR}, #{visitTime}, #{createTime}
+        )
+    </insert>
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentVisit">
+        <!--@mbg.generated-->
+        update student_visit
+        <set>
+            <if test="musicGroupId != null">
+                music_group_id_ = #{musicGroupId,jdbcType=VARCHAR},
+            </if>
+            <if test="studentId != null">
+                student_id_ = #{studentId,jdbcType=INTEGER},
+            </if>
+            <if test="teacherId != null">
+                teacher_id_ = #{teacherId,jdbcType=INTEGER},
+            </if>
+            <if test="type != null">
+                type_ = #{type,jdbcType=VARCHAR},
+            </if>
+            <if test="purpose != null">
+                purpose_ = #{purpose,jdbcType=VARCHAR},
+            </if>
+            <if test="overview != null">
+                overview_ = #{overview,jdbcType=VARCHAR},
+            </if>
+            <if test="feedback != null">
+                feedback_ = #{feedback,jdbcType=VARCHAR},
+            </if>
+            <if test="visitTime != null">
+                visit_time_ = #{visitTime},
+            </if>
+            <if test="createTime != null">
+                create_time_ = #{createTime},
+            </if>
+        </set>
+        where id_ = #{id,jdbcType=INTEGER}
+    </update>
+
+    <select id="queryPage" resultMap="StudentVisit">
+        SELECT * FROM student_visit sv
+        <include refid="queryPageSql"/>
+        ORDER BY sv.id_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="getPageList" resultMap="StudentVisit">
+        SELECT sv.*,t.real_name_ teacherName,o.name_ organName,s.username_ studentName,mg.name_ musicGroupName FROM
+        student_visit sv
+        LEFT JOIN sys_user t ON sv.teacher_id_ = t.id_
+        LEFT JOIN organization o ON sv.organ_id_ = o.id_
+        LEFT JOIN sys_user s ON s.id_ = sv.student_id_
+        LEFT JOIN music_group mg ON sv.music_group_id_ = mg.id_
+        <include refid="queryPageSql"/>
+        ORDER BY sv.id_ DESC
+        <include refid="global.limit"/>
+    </select>
+    <sql id="queryPageSql">
+        <where>
+            <if test="teacher != null and teacher != ''">
+                AND (t.id_ = #{teacher} OR t.real_name_ LIKE CONCAT('%',#{teacher},'%'))
+            </if>
+            <if test="student != null and student != ''">
+                AND (s.id_ = #{student} OR s.username_ LIKE CONCAT('%',#{student},'%'))
+            </if>
+            <if test="teacherId !=null">
+                AND sv.teacher_id_ = #{teacherId}
+            </if>
+            <if test="organId != null and organId != ''">
+                AND FIND_IN_SET(sv.organ_id_,#{organId})
+            </if>
+            <if test="visiterType != null">
+                AND sv.visiter_type_ = #{visiterType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="type != null">
+                AND sv.type_ = #{type}
+            </if>
+            <if test="purpose != null">
+                AND sv.purpose_ = #{purpose}
+            </if>
+            <if test="startTime != null">
+                AND sv.visit_time_ >= #{startTime}
+            </if>
+            <if test="endTime != null">
+                AND sv.visit_time_ &lt;= #{endTime}
+            </if>
+        </where>
+    </sql>
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*) FROM student_visit sv
+        LEFT JOIN sys_user t ON sv.teacher_id_ = t.id_
+        LEFT JOIN sys_user s ON s.id_ = sv.student_id_
+        <include refid="queryPageSql"/>
+    </select>
+
+    <select id="getInfo" resultMap="StudentVisit">
+        SELECT sv.*, t.real_name_ teacherName, o.name_ organName, s.username_ studentName, mg.name_ musicGroupName
+        FROM student_visit sv
+                 LEFT JOIN sys_user t ON sv.teacher_id_ = t.id_
+                 LEFT JOIN organization o ON sv.organ_id_ = o.id_
+                 LEFT JOIN sys_user s ON s.id_ = sv.student_id_
+                 LEFT JOIN music_group mg ON sv.music_group_id_ = mg.id_
+        WHERE sv.id_ = #{id}
+    </select>
+
+
+    <select id="getStudents" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
+        SELECT s.id_ user_id_,s.username_,s.avatar_ head_url_,s.gender_,s.phone_ FROM course_schedule cs
+        LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+        LEFT JOIN sys_user s ON s.id_ = cssp.user_id_
+        WHERE cs.actual_teacher_id_ = #{teacherId}
+        <if test="student != null and student != ''">
+            AND (s.phone_ LIKE CONCAT('%',#{student},'%') OR s.username_ LIKE CONCAT('%',#{student},'%'))
+        </if>
+        AND s.del_flag_ = 0
+        GROUP BY s.id_
+    </select>
+
+    <select id="getStudentsCount" resultType="int">
+        SELECT COUNT(DISTINCT s.id_) FROM course_schedule cs
+        LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+        LEFT JOIN sys_user s ON s.id_ = cssp.user_id_
+        WHERE cs.actual_teacher_id_ = #{teacherId}
+        <if test="student != null and student != ''">
+            AND (s.phone_ LIKE CONCAT('%',#{student},'%') OR s.username_ LIKE CONCAT('%',#{student},'%'))
+        </if>
+        AND s.del_flag_ = 0
+    </select>
+</mapper>

+ 14 - 4
mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -20,7 +20,7 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="Subject">
-		SELECT * FROM subject WHERE id_ = #{id} 
+		SELECT * FROM subject WHERE id_ = #{id}
 	</select>
 
     <!-- 全查询 -->
@@ -164,10 +164,10 @@
         SELECT * FROM `subject` WHERE del_flag_ = 0 AND FIND_IN_SET(id_,#{subjectIdList})
     </select>
 
-    <select id="findByMusicGroupAndUsers" resultType="map">
+    <select id="findByMusicGroupUserSubject" resultType="map">
         SELECT
-            sr.user_id_ AS 'key',
-            s.name_ AS 'value'
+            sr.user_id_ AS `key`,
+            s.name_ AS `value`
         FROM
             student_registration sr
             LEFT JOIN `subject` s ON sr.actual_subject_id_=s.id_
@@ -229,4 +229,14 @@
           #{subjectId}
       </foreach>
     </select>
+
+    <select id="getRegisterSubject" resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">
+        SELECT sr.user_id_, s.name_ subject_name_ FROM student_registration sr
+        LEFT JOIN subject s ON sr.actual_subject_id_=s.id_
+        WHERE sr.music_group_id_=#{musicGroupId} AND s.del_flag_ = 0 AND sr.music_group_status_ != 'QUIT'
+        AND sr.user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -639,7 +639,7 @@
     <select id="queryNameById" resultType="java.lang.String">
         select real_name_ FROM sys_user s WHERE id_ = #{userId} LIMIT 1
     </select>
-    <resultMap id="musicGroupStudentApplyDto" type="com.ym.mec.biz.dal.dto.musicGroupStudentApplyDto">
+    <resultMap id="musicGroupStudentApplyDto" type="com.ym.mec.biz.dal.dto.MusicGroupStudentApplyDto">
         <result property="userId" column="user_id_"/>
         <result property="userName" column="username_"/>
         <result property="currentClass" column="current_class_"/>

+ 6 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java

@@ -6,12 +6,15 @@ import com.ym.mec.thirdparty.exception.ThirdpartyException;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.context.support.DefaultMessageSourceResolvable;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.AccessDeniedException;
+import org.springframework.validation.BindException;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.stream.Collectors;
 
 @ControllerAdvice
 public class BaseController {
@@ -74,6 +77,9 @@ public class BaseController {
 			return failed(e.getMessage());
 		} else if (e instanceof AccessDeniedException) {
 			return failed("禁止访问");
+		}else if(e instanceof BindException){
+			String errors = ((BindException) e).getFieldErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining("\n"));
+			return failed(errors);
 		}
 		return failed("系统繁忙");
 	}

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

@@ -36,6 +36,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 				"/repair/payRepair",
 				"/degree/*",
 				"/practiceGroup/queryOrderInfo",
+				"/systemDate/query",
 				"/organization/getOrgans").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 

+ 24 - 0
mec-student/src/main/java/com/ym/mec/student/controller/CourseController.java

@@ -1,15 +1,22 @@
 package com.ym.mec.student.controller;
 
+import java.util.List;
+
+import com.timevale.tgtext.text.pdf.PdfStructTreeController.returnType;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dto.StudentCourseInfoDto;
 import com.ym.mec.biz.dal.dto.UserMusicGroupQueryInfo;
 import com.ym.mec.biz.dal.page.GroupNoticeQueryInfo;
 import com.ym.mec.biz.dal.page.StudentPayLogQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ImGroupNoticeService;
 import com.ym.mec.common.controller.BaseController;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -27,6 +34,9 @@ public class CourseController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private ImGroupNoticeService imGroupNoticeService;
+    
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
 
     @ApiOperation("获取学生所购买课程列表")
     @GetMapping(value = "/queryUserMusicGroups")
@@ -38,6 +48,20 @@ public class CourseController extends BaseController {
         return succeed(classGroupService.queryCoursePage(queryInfo,sysUser.getId()));
     }
 
+    @ApiOperation("获取学生所购买课程列表")
+    @GetMapping(value = "/queryRemainCourseNum")
+    public Object queryRemainCourseNum(){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("获取用户信息失败");
+        }
+        List<StudentCourseInfoDto> list = courseScheduleDao.findUserSurplusCourseInfoByGroup(null, null, sysUser.getId());
+        if(list == null){
+        	return succeed(0);
+        }
+        return succeed(list.size());
+    }
+
     @ApiOperation("获取学员所有聊天群组")
     @GetMapping(value = "/queryUserGroups")
     public Object queryUserGroups(String search){

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

@@ -6,7 +6,6 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.service.*;
-import com.ym.mec.biz.service.impl.PayServiceImpl;
 import com.ym.mec.thirdparty.adapay.ConfigInit;
 import com.ym.mec.thirdparty.adapay.Payment;
 import com.ym.mec.util.date.DateUtil;
@@ -519,7 +518,7 @@ public class StudentOrderController extends BaseController {
         }
         practiceGroups = practiceGroups.stream().sorted(Comparator.comparingDouble(PracticeGroupsDto::getBuyScale).reversed()).collect(Collectors.toList());
 
-        practiceGroupStatisDto practiceGroupStatisDto = new practiceGroupStatisDto();
+        PracticeGroupStatisDto practiceGroupStatisDto = new PracticeGroupStatisDto();
         practiceGroupStatisDto.setPracticeGroupsDtoList(practiceGroups);
         practiceGroupStatisDto.setTotalMoney(totalMoney);
         practiceGroupStatisDto.setTotalNum(totalNum);

+ 27 - 0
mec-student/src/main/java/com/ym/mec/student/controller/SystemDateController.java

@@ -0,0 +1,27 @@
+package com.ym.mec.student.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.Date;
+
+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.common.controller.BaseController;
+
+/** 
+ * 系统时间
+ */
+@RestController
+@Api(tags = "获取系统时间")
+@RequestMapping(value = "systemDate")
+public class SystemDateController extends BaseController {
+
+	@ApiOperation(value = "查询参数")
+	@GetMapping(value = "query")
+	public Object query() {
+		return succeed(new Date());
+	}
+}

+ 9 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -141,6 +141,15 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(scheduleService.queryTeacherClassCourseSchedule(queryInfo));
     }
 
+    @ApiOperation(value = "获取老师指定班级的排课")
+    @GetMapping("/queryTeacherVipClassCourseSchedule")
+    public Object queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo){
+        Map<String,Object> result = new HashMap<>();
+        result.put("rows",scheduleService.queryTeacherVipClassCourseSchedule(queryInfo));
+        result.put("appealHoursRange",4);
+        return succeed(result);
+    }
+
     @ApiOperation(value = "获取点名详情头部信息")
     @GetMapping("/findCourseAttendanceDetailHeadInfo")
     public Object findCourseAttendanceDetailHeadInfo(Long courseScheduleId){

+ 86 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/VisitController.java

@@ -0,0 +1,86 @@
+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.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.biz.service.StudentVisitService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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 java.util.List;
+
+@Api(tags = "回访服务(老师)")
+@RequestMapping("visit")
+@RestController
+public class VisitController extends BaseController {
+
+    @Autowired
+    private StudentVisitService studentVisitService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "回访列表")
+    @GetMapping("/queryPage")
+    public HttpResponseResult<PageInfo<StudentVisitDto>> queryPage(StudentVisitQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(studentVisitService.getPageList(queryInfo));
+    }
+
+    @ApiOperation(value = "添加回访")
+    @PostMapping(value = "/add")
+    public HttpResponseResult<StudentVisit> add(StudentVisit studentVisit) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        studentVisit.setTeacherId(sysUser.getId());
+        studentVisit.setVisiterType(StudentVisit.VisiterTypeEnum.TEACHER);
+        studentVisitService.addVisit(studentVisit);
+        return succeed(studentVisit);
+    }
+
+
+    @ApiOperation(value = "回访详情")
+    @GetMapping(value = "/getInfo")
+    public HttpResponseResult<StudentVisitDto> getInfo(Integer id) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        StudentVisitDto info = studentVisitService.getInfo(id);
+        if (!info.getTeacherId().equals(sysUser.getId())) {
+            failed("请勿非法访问");
+        }
+        return succeed(studentVisitService.getInfo(id));
+    }
+
+    @ApiOperation(value = "获取乐团列表")
+    @GetMapping(value = "/getMusicGroup")
+    public HttpResponseResult<List<MusicGroup>> getMusicGroup() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        return succeed(studentVisitService.getMusicGroup(sysUser.getId()));
+    }
+
+    @ApiOperation(value = "获取乐团老师教的学生列表")
+    @GetMapping(value = "/getMusicGroupStu")
+    public HttpResponseResult<List<StudentRegistration>> getMusicGroupStu(String musicGroupId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        return succeed(studentVisitService.getMusicGroupStu(musicGroupId, sysUser.getId()));
+    }
+
+    @ApiOperation(value = "获取老师教的学生列表(带分页)")
+    @GetMapping("/getStudents")
+    public HttpResponseResult<PageInfo<BasicUserDto>> getStudents(StudentVisitQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(studentVisitService.getStudents(queryInfo));
+    }
+}

+ 0 - 134
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/AdapayTools.java

@@ -1,134 +0,0 @@
-package com.ym.mec.thirdparty.adapay;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.alibaba.fastjson.JSON;
-import com.huifu.adapay.model.Bill;
-import com.huifu.adapay.model.Login;
-
-/**
- * @author yingyong.wang
- */
-public class AdapayTools extends ConfigInit {
-
-    /**
-     * 获取银联用户号
-     *
-     * @throws Exception 异常
-     */
-    public static void executeToolsTest(String appId, String merchantKey) throws Exception {
-        Map<String, Object> unionParam = new HashMap<String, Object>(2);
-        unionParam.put("order_no", "20190912");
-        unionParam.put("app_id", appId);
-        unionParam.put("user_auth_code", "20190912");
-        unionParam.put("app_up_identifier", "20190912");
-        Map<String, Object> result = com.huifu.adapay.model.AdapayTools.unionUserId(unionParam, merchantKey);
-
-        String errorCode = (String) result.get("error_code");
-
-        if (null != errorCode) {
-
-            System.out.println("对账单下载,请求参数:" + JSON.toJSONString(unionParam));
-            System.out.println("对账单下载,返回参数:" + JSON.toJSONString(result));
-
-        } else {
-            System.out.println("对账单下载,成功");
-        }
-
-    }
-
-    /**
-     * 获取银联用户号
-     *
-     * @throws Exception 异常
-     */
-    public static void executeToolsTest(String appId) throws Exception {
-
-        Map<String, Object> unionParam = new HashMap<String, Object>(2);
-        unionParam.put("order_no", "jsdk_payment_" + System.currentTimeMillis());
-        unionParam.put("app_id", appId);
-        unionParam.put("user_auth_code", "5yRGbi+IRda5khIQoQf1Hw==");
-        unionParam.put("app_up_identifier", "CloudPay");
-        Map<String, Object> result = com.huifu.adapay.model.AdapayTools.unionUserId(unionParam);
-        System.out.println("获取银联云闪付用户标识:" + JSON.toJSONString(result));
-        String errorCode = (String) result.get("error_code");
-
-        if (null != errorCode) {
-
-            System.out.println("获取银联云闪付用户标识,请求参数:" + JSON.toJSONString(unionParam));
-            System.out.println("获取银联云闪付用户标识,返回参数:" + JSON.toJSONString(result));
-
-        } else {
-            System.out.println("获取银联云闪付用户标识,成功");
-        }
-
-    }
-
-
-    /**
-     * 钱包登录申请
-     *
-     * @throws Exception 异常
-     */
-    public static void executeLoginTest(String appId, String merchantKey) throws Exception {
-        Map<String, Object> queryParams = new HashMap<String, Object>(5);
-        queryParams.put("ip", "127.0.0.1");
-        queryParams.put("member_id", "0");
-        //queryParams.put("member_id", "iris1234_14151");
-        queryParams.put("app_id", appId);
-        Map<String, Object> login = Login.login(queryParams, merchantKey);
-        if (login != null && "succeeded".equals(login.get("status"))) {
-            String formString = login.get("redirect_url").toString();
-            System.out.println("跳转地址:" + formString);
-        }
-
-    }
-
-    /**
-     * 钱包登录申请
-     *
-     * @throws Exception 异常
-     */
-    public static void executeLoginTest(String appId) throws Exception {
-        Map<String, Object> queryParams = new HashMap<String, Object>(5);
-        queryParams.put("ip", "127.0.0.1");
-        queryParams.put("member_id", "0");
-        //queryParams.put("member_id", "iris1234_14151");
-        queryParams.put("app_id", appId);
-        Map<String, Object> login = Login.login(queryParams);
-        if (login != null && "succeeded".equals(login.get("status"))) {
-            String formString = login.get("redirect_url").toString();
-            System.out.println("跳转地址:" + formString);
-        }
-
-    }
-
-    /**
-     * 执行一个下载对账文件操作
-     *
-     * @return 下载链接
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeBillDownLoad() throws Exception {
-
-
-        Map<String, Object> downloadParam = new HashMap<String, Object>(2);
-        downloadParam.put("bill_date", "20190912");
-
-        Map<String, Object> download = Bill.download(downloadParam);
-
-        String errorCode = (String) download.get("error_code");
-
-        if (null != errorCode) {
-
-            System.out.println("对账单下载,请求参数:" + JSON.toJSONString(downloadParam));
-            System.out.println("对账单下载,返回参数:" + JSON.toJSONString(download));
-
-        } else {
-            System.out.println("对账单下载,成功");
-        }
-        return download;
-    }
-
-}

+ 0 - 88
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Bill.java

@@ -1,88 +0,0 @@
-package com.ym.mec.thirdparty.adapay;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.alibaba.fastjson.JSON;
-
-/**
- * @author yingyong.wang
- */
-public class Bill extends ConfigInit {
-
-    /**
-     * 运行账单下载接口
-     * @throws Exception 异常
-     */
-    public static void executeBillTest(String merchantKey) throws Exception{
-        Bill demo = new Bill();
-        
-        Map<String, Object> download = demo.executeBillDownLoad(merchantKey);
-       
-    }
-
-    /**
-     * 运行账单下载接口
-     * @throws Exception 异常
-     */
-    public static void executeBillTest() throws Exception{
-        Bill demo = new Bill();
-        
-        Map<String, Object> download = demo.executeBillDownLoad();
-       
-    }
-
-    /**
-     * 执行一个下载对账文件操作
-     * @return 下载链接
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeBillDownLoad(String merchantKey) throws Exception {
-        System.out.println("=======execute download begin=======");
-
-        Map<String, Object> downloadParam = new  HashMap<String, Object>(2);
-        downloadParam.put("bill_date", "20190912");
-        Map<String, Object> download = com.huifu.adapay.model.Bill.download(downloadParam, merchantKey);
-        
-        String errorCode = (String)download.get("error_code");
-        
-        if(null != errorCode){
-
-            System.out.println("对账单下载,请求参数:" + JSON.toJSONString(downloadParam));
-            System.out.println("对账单下载,返回参数:" + JSON.toJSONString(download));
-
-        }else{
-            System.out.println("对账单下载,成功");
-        }
-        
-
-        return download;
-    }
-
-    /**
-     * 执行一个下载对账文件操作
-     * @return 下载链接
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeBillDownLoad() throws Exception {
-        
-
-        Map<String, Object> downloadParam = new  HashMap<String, Object>(2);
-        downloadParam.put("bill_date", "20190912");
-        
-        Map<String, Object> download = com.huifu.adapay.model.Bill.download(downloadParam);
-        
-        String errorCode = (String)download.get("error_code");
-        
-        if(null != errorCode){
-
-            System.out.println("对账单下载,请求参数:" + JSON.toJSONString(downloadParam));
-            System.out.println("对账单下载,返回参数:" + JSON.toJSONString(download));
-
-        }else{
-            System.out.println("对账单下载,成功");
-        }
-        return download;
-    }
-    
-}

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

@@ -32,14 +32,6 @@ public class ConfigInit {
         } else {
             return instance;
         }
-
-        Adapay.debug = true;
-
-        /**
-         * prodMode 模式,默认为生产模式,false可以使用mock模式
-         */
-        Adapay.prodMode = true;
-
         /**
          *添加商户配置,一个商户只需要 添加一次,添加以后在内存中。
          */

+ 13 - 159
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/CorpMember.java

@@ -4,69 +4,12 @@ import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.alibaba.fastjson.JSON;
+import com.huifu.adapay.core.exception.BaseAdaPayException;
 
 /**
- * @author 
+ * @author
  */
-public class CorpMember extends ConfigInit {
-
-    /**
-     * 运行 CorpMember 类接口
-     *
-     * @throws Exception 异常
-     */
-    public static void executeCorpMemberTest(String merchantKey, String app_id) throws Exception {
-        CorpMember demo = new CorpMember();
-        Map<String, Object> member = demo.executeCreateMember(merchantKey, app_id);
-        demo.executeQueryMember(merchantKey, (String) member.get("member_id"), app_id);
-
-    }
-
-
-    /**
-     * 创建 CorpMember
-     *
-     * @return 创建的CorpMember 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeCreateMember(String merchantKey, String app_id) throws Exception {
-        System.out.println("=======execute Create CorpMember begin=======");
-        Map<String, Object> memberParams = new HashMap<String, Object>(2);
-        memberParams.put("member_id", "jsdk_member_" + System.currentTimeMillis());
-        memberParams.put("app_id", app_id);
-        memberParams.put("order_no", "jsdk_order_" + System.currentTimeMillis());
-        memberParams.put("social_credit_code_expires", "1111");
-        memberParams.put("business_scope", "123");
-
-        memberParams.put("name", "中国测试有限公司");
-        memberParams.put("prov_code", "0011");
-        memberParams.put("area_code", "1100");
-        memberParams.put("social_credit_code", "201932658452655");
-        memberParams.put("legal_person", "张测试");
-        memberParams.put("legal_cert_id", "321485199014234852");
-        memberParams.put("legal_cert_id_expires", "20220112");
-        memberParams.put("legal_mp", "13958465215");
-        memberParams.put("address", "中国上海");
-        memberParams.put("zip_code", "225485");
-        memberParams.put("telphone", "41164452");
-        memberParams.put("email", "ceshi@qq.com");
-        memberParams.put("bank_code", "652142");
-        memberParams.put("bank_acct_type", "1");
-        memberParams.put("card_no", "622546895642156");
-        memberParams.put("card_name", "中国测试有限公司");
-        File file = new File("/Users/will/Project/Adapay/AdapayJava/AdapayDemo/src/main/java/com/huifu/adapay/demo/归档.zip");
-        
-        System.out.println("创建企业用户,请求参数:" + JSON.toJSONString(memberParams) );
-        Map<String, Object> member = com.huifu.adapay.model.CorpMember.create(memberParams, file, merchantKey);
-        System.out.println("创建企业用户,返回参数:" + JSON.toJSONString(member) );
-
-
-        System.out.println("=======execute Create CorpMember end=======");
-
-        return member;
-
-    }
+public class CorpMember {
 
     /**
      * 查询 CorpMember
@@ -75,102 +18,11 @@ public class CorpMember extends ConfigInit {
      * @return 查询的 CorpMember 对象
      * @throws Exception 异常
      */
-    public Map<String, Object> executeQueryMember(String merchantKey, String member_id,String app_id) throws Exception {
-        System.out.println("=======execute query CorpMember begin=======");
+    public static Map<String, Object> executeQueryMember(String member_id) throws Exception {
         Map<String, Object> memberParams = new HashMap<String, Object>(2);
         memberParams.put("member_id", member_id);
-        memberParams.put("app_id", app_id);
-        System.out.println("查询企业用户,请求参数:"+JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.CorpMember.query(memberParams, merchantKey);
-        System.out.println("查询企业用户,返回参数:"+JSON.toJSONString(member));
-
-        System.out.println("=======execute query CorpMember end=======");
-
-        return member;
-    }
-
-    /**
-     * 运行 CorpMember 类接口
-     *
-     * @throws Exception 异常
-     */
-    public static void executeCorpMemberTest( String app_id) throws Exception {
-        CorpMember demo = new CorpMember();
-        //Map<String, Object> member = demo.executeCreateMember();
-        //demo.executeQueryMember( (String) member.get("member_id"), app_id);
-
-    }
-
-
-    /**
-     * 创建 CorpMember
-     *
-     * @return 创建的CorpMember 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeCreateMember( Map<String,Object> info) throws Exception {
-        System.out.println("=======execute Create CorpMember begin=======");
-        Map<String, Object> memberParams = new HashMap<String, Object>();
-        memberParams.put("app_id", appId);
-        memberParams.putAll(info);
-
-        String path= "C:/Users/river/Desktop/mec/mec-thirdparty/libs/test.zip";
-
-        File file = new File(path);
-        System.out.println("创建企业用户,请求参数:" + JSON.toJSONString(memberParams) );
-        Map<String, Object> member = com.huifu.adapay.model.CorpMember.create(memberParams, file);
-        System.out.println("创建企业用户,返回参数:" + JSON.toJSONString(member) );
-
-
-        System.out.println("=======execute Create CorpMember end=======");
-
-        return member;
-
-    }
-
-    /**
-     * 创建 CorpMember
-     *
-     * @return 创建的CorpMember 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeCreateMember( Map<String,Object> info,String path) throws Exception {
-        System.out.println("=======execute Create CorpMember begin=======");
-        Map<String, Object> memberParams = new HashMap<String, Object>();
-        memberParams.put("app_id", appId);
-        memberParams.putAll(info);
-
-        File file = new File(path);
-        System.out.println("创建企业用户,请求参数:" + JSON.toJSONString(memberParams) );
-        Map<String, Object> member = com.huifu.adapay.model.CorpMember.create(memberParams, file);
-        System.out.println("创建企业用户,返回参数:" + JSON.toJSONString(member) );
-
-
-        System.out.println("=======execute Create CorpMember end=======");
-
-        return member;
-
-    }
-
-    /**
-     * 查询 CorpMember
-     *
-     * @param member_id 待查询的member_id
-     * @return 查询的 CorpMember 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeQueryMember( String member_id) throws Exception {
-        System.out.println("=======execute query CorpMember begin=======");
-        Map<String, Object> memberParams = new HashMap<String, Object>(2);
-        memberParams.put("member_id", member_id);
-        memberParams.put("app_id", appId);
-        System.out.println("查询企业用户,请求参数1:"+JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.CorpMember.query(memberParams);
-        System.out.println("查询企业用户,返回参数:"+JSON.toJSONString(member));
-
-        System.out.println("=======execute query CorpMember end=======");
-
-        return member;
+        memberParams.put("app_id", ConfigInit.appId);
+        return com.huifu.adapay.model.CorpMember.query(memberParams);
     }
 
     /**
@@ -179,15 +31,17 @@ public class CorpMember extends ConfigInit {
      * @return 创建的CorpMember 对象
      * @throws Exception 异常
      */
-    public Map<String, Object> executeCreateMember(Map<String,Object> info,File file) throws Exception {
-        System.out.println("=======execute Create CorpMember begin=======");
+    public static Map<String, Object> executeCreateMember(Map<String, Object> info, File file) throws Exception {
         Map<String, Object> memberParams = new HashMap<String, Object>();
-        memberParams.put("app_id", appId);
+        memberParams.put("app_id", ConfigInit.appId);
         memberParams.putAll(info);
 
-        System.out.println("创建企业用户,请求参数:" + JSON.toJSONString(memberParams) );
         Map<String, Object> member = com.huifu.adapay.model.CorpMember.create(memberParams, file);
-        System.out.println("创建企业用户,返回参数:" + JSON.toJSONString(member) );
+        String error_code = (String) member.get("error_code");
+        if (null != error_code) {
+            String errorMsg = (String) member.get("error_msg");
+            throw new BaseAdaPayException(errorMsg);
+        }
         return member;
     }
 

+ 0 - 57
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/MainDemo.java

@@ -1,57 +0,0 @@
-package com.ym.mec.thirdparty.adapay;
-
-import java.util.HashMap;
-import java.util.Map;
-
-
-public class MainDemo {
-
-
-    public static void main(String[] args) throws Exception {
-        //多商户测试
-        //testMultiMerchant();
-
-        testMerchant();
-
-    }
-
-
-    public static void testMerchant() throws Exception {
-
-        HashMap<String, Object> memberParams = new HashMap<>();
-        memberParams.put("member_id", "W004201");
-        memberParams.put("order_no", "corp_mem_" + System.currentTimeMillis());
-
-        memberParams.put("social_credit_code", "91420106303461541T");
-        memberParams.put("social_credit_code_expires", "20440730");
-        memberParams.put("business_scope", "教育资讯、投资资讯");
-        memberParams.put("name", "武汉大雅乐盟教育咨询有限公司");
-        memberParams.put("prov_code", "0042");
-        memberParams.put("area_code", "4201");
-        memberParams.put("legal_person", "李松");
-        memberParams.put("legal_cert_id", "420106196811210837");
-        memberParams.put("legal_cert_id_expires", "20990730");
-        memberParams.put("legal_mp", "13958465215");//法人手机号
-        memberParams.put("address", "武昌区水果湖汉街武汉中央文化旅游区K3地块第2幢34层2号");
-        memberParams.put("zip_code", "430000");
-        //memberParams.put("telphone", "41164452");
-        // memberParams.put("email", "ceshi@qq.com");
-        memberParams.put("bank_code", "03020000");
-        memberParams.put("bank_acct_type", "1");
-        memberParams.put("card_no", "‘8111501011700649152");
-        memberParams.put("card_name", "武汉大雅");
-        //new CorpMember().executeCreateMember(memberParams);
-
-//        new CorpMember().executeQueryMember("W004201");
-
-
-        //Payment.closePayment("002112020062916385810123596334923411456");
-        //Map<String, Object> payment = Payment.queryPayment("002112020062914502410123569011751485440");
-
-
-        // 运行支付类接口
-        //String pamentId = Payment.executePaymentTest("default");
-
-    }
-
-}

+ 0 - 244
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Member.java

@@ -1,244 +0,0 @@
-package com.ym.mec.thirdparty.adapay;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.alibaba.fastjson.JSON;
-
-
-/**
- * @author yingyong.wang
- */
-public class Member extends ConfigInit {
-
-
-    /**
-     * 运行 member 类接口
-     * @throws Exception 异常
-     */
-    public static Map<String, Object> executeMemberTest(String merchantKey, String app_id) throws Exception{
-        Member demo = new Member();
-        Map<String, Object> member = demo.executeCreateMember(merchantKey, app_id);
-        demo.executeQueryMember(merchantKey, (String)member.get("member_id"),app_id);
-        demo.executeUpdateMember(merchantKey, (String)member.get("member_id"),app_id);
-        demo.executeQueryMember(merchantKey, (String)member.get("member_id"),app_id);
-        demo.executeListMember(merchantKey, app_id);
-        return member;
-    }
-
-
-    /**
-     * 创建 member
-     * @return 创建的member 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeCreateMember(String merchantKey, String app_id) throws Exception {
-        System.out.println("=======execute CreateMember begin=======");
-        Map<String, Object> memberParams = new  HashMap<String, Object>(2);
-        memberParams.put("member_id", "jsdk_member_"+System.currentTimeMillis());
-        memberParams.put("app_id",app_id);
-        memberParams.put("location", "上海市徐汇区宜山路");
-        memberParams.put("email", "123@163.com");
-        memberParams.put("gender", "MALE");
-        memberParams.put("tel_no", "13153333333");
-        memberParams.put("nickname", "nick_name");
-        System.out.println("创建用户,请求参数:" + JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.Member.create(memberParams, merchantKey);
-        System.out.println("创建用户,返回参数:" + JSON.toJSONString(member));
-        System.out.println("=======execute CreateMember end=======");
-        
-        return member;
-    
-    }
-
-    /**
-     * 查询 member
-     * @param member_id 待查询的member_id
-     * @return 创建的member 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeQueryMember(String merchantKey, String member_id,String app_id) throws Exception {
-        System.out.println("=======execute queryMember begin=======");
-        Map<String, Object> memberParams = new  HashMap<String, Object>(2);
-        memberParams.put("member_id", member_id);
-        memberParams.put("app_id", app_id);
-        System.out.println("查询用户,请求参数:" + JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.Member.query(memberParams, merchantKey);
-        System.out.println("查询用户,返回参数:" + JSON.toJSONString(member));
-
-
-        System.out.println("=======execute queryMember end=======");
-        
-        return member;
-    
-    }
-
-
-    /**
-     * 更新 member
-     * @param member_id 待更新的member_id
-     * @return 更新的member 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeUpdateMember(String merchantKey, String member_id,String app_id) throws Exception {
-        System.out.println("=======execute update Member begin=======");
-        Map<String, Object> memberParams = new  HashMap<String, Object>(2);
-        memberParams.put("member_id", member_id);
-        memberParams.put("app_id", app_id);
-        memberParams.put("location", "上海市徐汇区宜山路1");
-        memberParams.put("email", "1234@163.com");
-        memberParams.put("gender", "MALE");
-        memberParams.put("tel_no", "13153333333");
-        memberParams.put("nickname", "nick_name2");
-
-        System.out.println("更新用户,请求参数:"+JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.Member.update(memberParams, merchantKey);
-        System.out.println("更新用户,返回参数:"+JSON.toJSONString(member));
-
-        System.out.println("=======execute update Member end=======");
-        
-        return member;
-    
-    }
-
-    /**
-     * 查询 member list
-     * @param app_id app_id
-     * @return 查询的member list
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeListMember(String merchantKey, String app_id) throws Exception {
-        System.out.println("=======execute list Member begin=======");
-        Map<String, Object> memberParams = new  HashMap<String, Object>(2);
-        memberParams.put("page_index", "1");
-        memberParams.put("app_id", app_id);
-        memberParams.put("page_size", "20");
-        memberParams.put("created_gte", String.valueOf(System.currentTimeMillis() - 5 * 60 * 1000));
-        memberParams.put("created_lte", String.valueOf(System.currentTimeMillis()));
-        System.out.println("查询用户列表,请求参数:"+JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.Member.queryList(memberParams, merchantKey);
-        System.out.println("查询用户列表,返回参数:"+JSON.toJSONString(member));
-
-
-        System.out.println("=======execute list Member end=======");
-        
-        return member;
-    
-    }
-
-     /**
-     * 运行 member 类接口
-     * @throws Exception 异常
-     */
-    public static Map<String, Object> executeMemberTest( String app_id) throws Exception{
-        Member demo = new Member();
-        Map<String, Object> member = demo.executeCreateMember( app_id);
-        demo.executeQueryMember( (String)member.get("member_id"),app_id);
-        demo.executeUpdateMember( (String)member.get("member_id"),app_id);
-        demo.executeQueryMember( (String)member.get("member_id"),app_id);
-        demo.executeListMember( app_id);
-        return member;
-    }
-
-
-    /**
-     * 创建 member
-     * @return 创建的member 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeCreateMember( String app_id) throws Exception {
-        System.out.println("=======execute CreateMember begin=======");
-        Map<String, Object> memberParams = new  HashMap<String, Object>(2);
-        memberParams.put("member_id", "0021677");
-        memberParams.put("app_id",app_id);
-        memberParams.put("location", "上海市徐汇区宜山路");
-        memberParams.put("email", "123@163.com");
-        memberParams.put("gender", "MALE");
-        memberParams.put("tel_no", "13153333333");
-        memberParams.put("nickname", "nick_name");
-        System.out.println("创建用户,请求参数:" + JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.Member.create(memberParams);
-        System.out.println("创建用户,返回参数:" + JSON.toJSONString(member));
-        System.out.println("=======execute CreateMember end=======");
-        
-        return member;
-    
-    }
-
-    /**
-     * 查询 member
-     * @param member_id 待查询的member_id
-     * @return 创建的member 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeQueryMember( String member_id,String app_id) throws Exception {
-        System.out.println("=======execute queryMember begin=======");
-        Map<String, Object> memberParams = new  HashMap<String, Object>(2);
-        memberParams.put("member_id", member_id);
-        memberParams.put("app_id", app_id);
-        System.out.println("查询用户,请求参数:" + JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.Member.query(memberParams);
-        System.out.println("查询用户,返回参数:" + JSON.toJSONString(member));
-
-
-        System.out.println("=======execute queryMember end=======");
-        
-        return member;
-    
-    }
-
-
-    /**
-     * 更新 member
-     * @param member_id 待更新的member_id
-     * @return 更新的member 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeUpdateMember( String member_id,String app_id) throws Exception {
-        System.out.println("=======execute update Member begin=======");
-        Map<String, Object> memberParams = new  HashMap<String, Object>(2);
-        memberParams.put("member_id", member_id);
-        memberParams.put("app_id", app_id);
-        memberParams.put("location", "上海市徐汇区宜山路1");
-        memberParams.put("email", "1234@163.com");
-        memberParams.put("gender", "MALE");
-        memberParams.put("tel_no", "13153333333");
-        memberParams.put("nickname", "nick_name2");
-
-        System.out.println("更新用户,请求参数:"+JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.Member.update(memberParams);
-        System.out.println("更新用户,返回参数:"+JSON.toJSONString(member));
-
-        System.out.println("=======execute update Member end=======");
-        
-        return member;
-    
-    }
-
-    /**
-     * 查询 member list
-     * @param app_id app_id
-     * @return 查询的member list
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeListMember( String app_id) throws Exception {
-        System.out.println("=======execute list Member begin=======");
-        Map<String, Object> memberParams = new  HashMap<String, Object>(2);
-        memberParams.put("page_index", "1");
-        memberParams.put("app_id", app_id);
-        memberParams.put("page_size", "20");
-        memberParams.put("created_gte", String.valueOf(System.currentTimeMillis() - 5 * 60 * 1000));
-        memberParams.put("created_lte", String.valueOf(System.currentTimeMillis()));
-        System.out.println("查询用户列表,请求参数:"+JSON.toJSONString(memberParams));
-        Map<String, Object> member = com.huifu.adapay.model.Member.queryList(memberParams);
-        System.out.println("查询用户列表,返回参数:"+JSON.toJSONString(member));
-
-
-        System.out.println("=======execute list Member end=======");
-        
-        return member;
-    
-    }
-
-
-}

+ 5 - 5
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Payment.java

@@ -8,7 +8,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.huifu.adapay.core.exception.BaseAdaPayException;
 import org.springframework.util.DigestUtils;
 
-public class Payment extends ConfigInit {
+public class Payment {
     /**
      * 执行一个支付交易
      *
@@ -16,7 +16,7 @@ public class Payment extends ConfigInit {
      * @throws Exception 异常
      */
     public static Map<String, Object> executePayment(Map<String, Object> paymentParams) throws Exception {
-        paymentParams.put("app_id", appId);
+        paymentParams.put("app_id", ConfigInit.appId);
 
         //调用sdk方法,创建支付,得到支付对象
         Map<String, Object> payment = new HashMap<>();
@@ -118,20 +118,20 @@ public class Payment extends ConfigInit {
 
     public static Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String sellerNo, List<Map<String, Object>> tempRoutingList) throws Exception {
         Map<String, Object> paymentParams = new LinkedHashMap<>();
-        paymentParams.put("appId", appId);
+        paymentParams.put("appId", ConfigInit.appId);
         paymentParams.put("amount", amount.setScale(2, BigDecimal.ROUND_HALF_UP));
         paymentParams.put("orderNo", orderNo);
 //        paymentParams.put("notifyUrl", notifyUrl);
 //        paymentParams.put("returnUrl", returnUrl);
         paymentParams.put("orderSubject", orderSubject);
         paymentParams.put("orderBody", orderBody);
-        paymentParams.put("wxAppId", wxAppId);
+        paymentParams.put("wxAppId", ConfigInit.wxAppId);
 
         String originalStr = JSONObject.toJSONString(paymentParams);
         String sign = DigestUtils.md5DigestAsHex(originalStr.getBytes());
 
         paymentParams.put("sign", sign);
-        paymentParams.remove(appId);
+        paymentParams.remove("appId");
         return paymentParams;
     }
 }

+ 0 - 153
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Refund.java

@@ -1,153 +0,0 @@
-package com.ym.mec.thirdparty.adapay;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.alibaba.fastjson.JSON;
-
-public class Refund extends ConfigInit {
-
-    /**
-     * 运行退款类接口
-     *
-     * @throws Exception 异常
-     */
-    public static void executeRefundTest(String merchantKey, String paymentId) throws Exception {
-        Refund demo = new Refund();
-        //退款接口
-        Map<String, Object> refund = demo.executeRefund(merchantKey, paymentId);
-        //退款查询接口(通过pamentId查询)
-        demo.queryByPaymentId(merchantKey, paymentId);
-        //退款查询接口(通过refundId查询)
-        demo.queryByRefundId(merchantKey, (String) refund.get("id"));
-    }
-
-    /**
-     * 执行一个退款交易
-     *
-     * @param paymentId 要退款的原支付paymentId
-     * @return 创建的退款对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeRefund(String merchantKey, String paymentId) throws Exception {
-        System.out.println("=======execute refund begin=======");
-        Map<String, Object> refundParams = new HashMap<String, Object>(2);
-        refundParams.put("refund_amt", "0.01");
-        refundParams.put("app_id", "your appid");
-        refundParams.put("refund_order_no", "jsdk_refund_"+System.currentTimeMillis());
-        System.out.println("退款请求参数:" + JSON.toJSONString(refundParams));
-        Map<String, Object> refund = com.huifu.adapay.model.Refund.create(paymentId, refundParams, merchantKey);
-        System.out.println("退款返回参数:" + JSON.toJSONString(refund));
-        System.out.println("=======execute refund end=======");
-        
-        return refund;
-    }
-
-    /**
-     * 根据原支付id查询一个退款交易
-     *
-     * @param paymentId 要查询退款的原支付paymentId
-     * @return 查询的退款对象,可能含多个退款明细RefundDetail
-     * @throws Exception 异常
-     */
-    public Map<String, Object> queryByPaymentId(String merchantKey, String paymentId) throws Exception {
-        System.out.println("=======query refund by paymentId begin=======");
-        Map<String, Object> refundParams = new  HashMap<String, Object>(1);
-        refundParams.put("payment_id", paymentId);
-        System.out.println("通过原支付ID查询退款交易,请求参数:" + JSON.toJSONString(refundParams));
-        Map<String, Object> refund = com.huifu.adapay.model.Refund.query(refundParams, merchantKey);
-        System.out.println("通过原支付ID查询退款交易,返回参数:" + JSON.toJSONString(refund));
-        System.out.println("=======query refund by paymentId end=======");
-        return refund;
-    }
-
-    /**
-     * 根据退款refundId查询一个退款交易
-     *
-     * @param refundId 要查询的退款refundId
-     * @return 查询的退款对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> queryByRefundId(String merchantKey, String refundId) throws Exception {
-        System.out.println("=======query refund by refundid begin=======");
-        Map<String, Object> refundParams = new  HashMap<String, Object>(1);
-        refundParams.put("refund_id", refundId);
-        System.out.println("通过refundId查询退款交易,请求参数:" + JSON.toJSONString(refundParams));
-        Map<String, Object> refund = com.huifu.adapay.model.Refund.query(refundParams, merchantKey);
-        System.out.println("通过refundId查询退款交易,返回参数:" + JSON.toJSONString(refund));
-        System.out.println("=======query refund by refundid end=======");
-        return refund;
-    }
-
-    /**
-     * 运行退款类接口
-     *
-     * @throws Exception 异常
-     */
-    public static void executeRefundTest( String paymentId) throws Exception {
-        Refund demo = new Refund();
-        //退款接口
-        Map<String, Object> refund = demo.executeRefund( paymentId);
-        //退款查询接口(通过pamentId查询)
-        demo.queryByPaymentId( paymentId);
-        //退款查询接口(通过refundId查询)
-        demo.queryByRefundId( (String) refund.get("id"));
-    }
-
-    /**
-     * 执行一个退款交易
-     *
-     * @param paymentId 要退款的原支付paymentId
-     * @return 创建的退款对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeRefund( String paymentId) throws Exception {
-        System.out.println("=======execute refund begin=======");
-        Map<String, Object> refundParams = new HashMap<String, Object>(2);
-        refundParams.put("refund_amt", "0.01");
-        refundParams.put("app_id", "your appid");
-        refundParams.put("refund_order_no", "jsdk_refund_"+System.currentTimeMillis());
-        System.out.println("退款请求参数:" + JSON.toJSONString(refundParams));
-        Map<String, Object> refund = com.huifu.adapay.model.Refund.create(paymentId, refundParams);
-        System.out.println("退款返回参数:" + JSON.toJSONString(refund));
-        System.out.println("=======execute refund end=======");
-        
-        return refund;
-    }
-
-    /**
-     * 根据原支付id查询一个退款交易
-     *
-     * @param paymentId 要查询退款的原支付paymentId
-     * @return 查询的退款对象,可能含多个退款明细RefundDetail
-     * @throws Exception 异常
-     */
-    public Map<String, Object> queryByPaymentId( String paymentId) throws Exception {
-        System.out.println("=======query refund by paymentId begin=======");
-        Map<String, Object> refundParams = new  HashMap<String, Object>(1);
-        refundParams.put("payment_id", paymentId);
-        System.out.println("通过原支付ID查询退款交易,请求参数:" + JSON.toJSONString(refundParams));
-        Map<String, Object> refund = com.huifu.adapay.model.Refund.query(refundParams);
-        System.out.println("通过原支付ID查询退款交易,返回参数:" + JSON.toJSONString(refund));
-        System.out.println("=======query refund by paymentId end=======");
-        return refund;
-    }
-
-    /**
-     * 根据退款refundId查询一个退款交易
-     *
-     * @param refundId 要查询的退款refundId
-     * @return 查询的退款对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> queryByRefundId( String refundId) throws Exception {
-        System.out.println("=======query refund by refundid begin=======");
-        Map<String, Object> refundParams = new  HashMap<String, Object>(1);
-        refundParams.put("refund_id", refundId);
-        System.out.println("通过refundId查询退款交易,请求参数:" + JSON.toJSONString(refundParams));
-        Map<String, Object> refund = com.huifu.adapay.model.Refund.query(refundParams);
-        System.out.println("通过refundId查询退款交易,返回参数:" + JSON.toJSONString(refund));
-        System.out.println("=======query refund by refundid end=======");
-        return refund;
-    }
-}

+ 19 - 423
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/SettleAccount.java

@@ -3,454 +3,50 @@ package com.ym.mec.thirdparty.adapay;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.alibaba.fastjson.JSON;
+import com.huifu.adapay.core.exception.BaseAdaPayException;
 
-/**
- * @author yingyong.wang
- */
-public class SettleAccount extends ConfigInit {
-
-    /**
-     * 运行结算账户类接口
-     *
-     * @throws Exception 异常
-     */
-    public static void executeSettleAccountTest(String merchantKey, String app_id, String member_id) throws Exception {
-        SettleAccount demo = new SettleAccount();
-        // 创建结算账户
-        Map<String, Object> settlecount = demo.executeCreateSettleAccount(merchantKey, app_id, member_id);
-        String settleCount_id = (String) settlecount.get("id");
-
-
-        // 查询结算账户
-        demo.executeQuerySettleAccount(merchantKey, settleCount_id, app_id, member_id);
-
-        // 查询结算账户明细列表
-        demo.executeQuerySettleDetails(merchantKey, app_id, member_id, settleCount_id);
-        // 删除结算账户
-        demo.executeDeleteSettleAccount(merchantKey, settleCount_id, app_id, member_id);
-
-        member_id = "user_test_10001";
-        settleCount_id = "0023056905335360";
-
-        demo.executeModifySettleAccount(merchantKey, settleCount_id, app_id, member_id);
-
-        demo.executeDrawCash(merchantKey, app_id, member_id);
-
-        demo.executeQueryBalance(merchantKey, app_id, member_id, settleCount_id);
-    }
-
-    /**
-     * 运行查询结算明细列表接口
-     *
-     * @throws Exception 异常
-     */
-//    public static void executeQuerySettleDetailTest(String merchantKey, String appId, String memberId, String settleAccountId, String beginDate, String endDate) throws Exception {
-//        SettleAccountDemo demo = new SettleAccountDemo();
-//        demo.executeQuerySettleDetails(merchantKey, appId, memberId, settleAccountId, beginDate, endDate);
-//    }
-
-
-    /**
-     * 创建 settleCount
-     *
-     * @return 创建的settleCount 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeCreateSettleAccount(String merchantKey, String app_id, String member_id) throws Exception {
-        System.out.println("=======execute Create SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>(2);
-        Map<String, Object> accountInfo = new HashMap<String, Object>(2);
-        accountInfo.put("card_id", "6222021703001692221");
-        accountInfo.put("card_name", "袁电茜");
-        accountInfo.put("cert_id", "310109200006062491");
-        accountInfo.put("cert_type", "00");
-        accountInfo.put("tel_no", "18888888881");
-        accountInfo.put("bank_code", "03060000");
-        accountInfo.put("bank_acct_type", "1");
-        accountInfo.put("prov_code", "0031");
-        accountInfo.put("area_code", "3100");
-        settleCountParams.put("member_id", member_id);
-        settleCountParams.put("app_id", app_id);
-        settleCountParams.put("channel", "bank_account");
-        settleCountParams.put("account_info", accountInfo);
-        System.out.println("创建结算账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.create(settleCountParams, merchantKey);
-        System.out.println("创建结算账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute Create SettleAccount end=======");
-
-        return settleCount;
-
-    }
-
-    /**
-     * 查询 SettleAccount
-     *
-     * @param settleCount_id 待查询的settleCount_id
-     * @param app_id         app_id
-     * @return 查询的settleCount 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeQuerySettleAccount(String merchantKey, String settleCount_id, String app_id, String member_id) throws Exception {
-        System.out.println("=======execute query SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>(2);
-        settleCountParams.put("settle_account_id", settleCount_id);
-        settleCountParams.put("member_id", member_id);
-        settleCountParams.put("app_id", app_id);
-        System.out.println("查询结算账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.query(settleCountParams, merchantKey);
-        System.out.println("查询结算账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute query SettleAccount end=======");
-
-        return settleCount;
-    }
+public class SettleAccount {
 
     /**
      * 删除 SettleAccount
      *
      * @param settleCount_id 待删除的settleCount_id
-     * @param app_id         app_id
      * @return delete的settleCount 对象
      * @throws Exception 异常
      */
-    public Map<String, Object> executeDeleteSettleAccount(String merchantKey, String settleCount_id, String app_id, String member_id) throws Exception {
-        System.out.println("=======execute delete SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>(2);
+    public static Map<String, Object> executeDeleteSettleAccount(String settleCount_id, String member_id) throws Exception {
+        Map<String, Object> settleCountParams = new HashMap<String, Object>(3);
         settleCountParams.put("settle_account_id", settleCount_id);
         settleCountParams.put("member_id", member_id);
-        settleCountParams.put("app_id", app_id);
-        System.out.println("删除结算账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.delete(settleCountParams, merchantKey);
-        System.out.println("删除结算账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute delete SettleAccount end=======");
-
-        return settleCount;
-    }
-
-    /**
-     * 查询结算明细列表
-     *
-     * @param merchantKey
-     * @param app_id          app_id
-     * @param member_id       待查询的member_id
-     * @param settleAccountId 待查询的settleAccountId
-     * @return
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeQuerySettleDetails(String merchantKey, String app_id, String member_id,
-                                                         String settleAccountId) throws Exception {
-        System.out.println("=======execute query settle details begin=======");
-        Map<String, Object> querySettleDetailParams = new HashMap<String, Object>(2);
-        querySettleDetailParams.put("app_id", app_id);
-        querySettleDetailParams.put("member_id", member_id);
-        querySettleDetailParams.put("settle_account_id", settleAccountId);
-        querySettleDetailParams.put("begin_date", "20191008");
-        querySettleDetailParams.put("end_date", "20191010");
-        System.out.println("查询结算明细列表,请求参数:" + JSON.toJSONString(querySettleDetailParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.querySettleDetails(querySettleDetailParams, merchantKey);
-        System.out.println("查询结算明细列表,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute query settle details end=======");
-
+        settleCountParams.put("app_id", ConfigInit.appId);
+        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.delete(settleCountParams);
+        String error_code = (String) settleCount.get("error_code");
+        if (null != error_code) {
+            String errorMsg = (String) settleCount.get("error_msg");
+            throw new BaseAdaPayException(errorMsg);
+        }
         return settleCount;
     }
 
 
     /**
-     * 运行结算账户类接口
-     *
-     * @throws Exception 异常
-     */
-    public static void executeSettleAccountTest(String app_id, String member_id) throws Exception {
-        SettleAccount demo = new SettleAccount();
-        // 创建结算账户
-        Map<String, Object> settlecount = demo.executeCreateSettleAccount(app_id, member_id);
-        String settleCount_id = (String) settlecount.get("id");
-        // 查询结算账户
-        demo.executeQuerySettleAccount(settleCount_id, app_id, member_id);
-
-        // 查询结算账户明细列表
-        demo.executeQuerySettleDetails(app_id, member_id, settleCount_id);
-        // 删除结算账户
-        demo.executeDeleteSettleAccount(settleCount_id, app_id, member_id);
-        member_id = "user_test_10001";
-        settleCount_id = "0023056905335360";
-
-        demo.executeModifySettleAccount(settleCount_id, app_id, member_id);
-
-    }
-
-    /**
-     * 运行查询结算明细列表接口
-     *
-     * @throws Exception 异常
-     */
-//    public static void executeQuerySettleDetailTest( String appId, String memberId, String settleAccountId, String beginDate, String endDate) throws Exception {
-//        SettleAccountDemo demo = new SettleAccountDemo();
-//        demo.executeQuerySettleDetails( appId, memberId, settleAccountId, beginDate, endDate);
-//    }
-
-
-    /**
      * 创建 settleCount
      *
      * @return 创建的settleCount 对象
      * @throws Exception 异常
      */
-    public Map<String, Object> executeCreateSettleAccount(String app_id, String member_id) throws Exception {
-        System.out.println("=======execute Create SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>(2);
-        Map<String, Object> accountInfo = new HashMap<String, Object>(2);
-        accountInfo.put("card_id", "6222021703001692221");
-        accountInfo.put("card_name", "袁电茜");
-        accountInfo.put("cert_id", "310109200006062491");
-        accountInfo.put("cert_type", "00");
-        accountInfo.put("tel_no", "18888888881");
-        accountInfo.put("bank_code", "03060000");
-        accountInfo.put("bank_acct_type", "1");
-        accountInfo.put("prov_code", "0031");
-        accountInfo.put("area_code", "3100");
+    public static Map<String, Object> executeCreateSettleAccount(String member_id, Map<String, Object> accountInfo) throws Exception {
+        Map<String, Object> settleCountParams = new HashMap<String, Object>(4);
         settleCountParams.put("member_id", member_id);
-        settleCountParams.put("app_id", app_id);
+        settleCountParams.put("app_id", ConfigInit.appId);
         settleCountParams.put("channel", "bank_account");
         settleCountParams.put("account_info", accountInfo);
-        System.out.println("创建结算账户,请求参数:" + JSON.toJSONString(settleCountParams));
         Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.create(settleCountParams);
-        System.out.println("创建结算账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute Create SettleAccount end=======");
-
-        return settleCount;
-
-    }
-
-    /**
-     * 查询 SettleAccount
-     *
-     * @param settleCount_id 待查询的settleCount_id
-     * @param app_id         app_id
-     * @return 查询的settleCount 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeQuerySettleAccount(String settleCount_id, String app_id, String member_id) throws Exception {
-        System.out.println("=======execute query SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>(2);
-        settleCountParams.put("settle_account_id", settleCount_id);
-        settleCountParams.put("member_id", member_id);
-        settleCountParams.put("app_id", app_id);
-        System.out.println("查询结算账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.query(settleCountParams);
-        System.out.println("查询结算账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute query SettleAccount end=======");
-
-        return settleCount;
-    }
-
-    /**
-     * 修改 SettleAccount
-     *
-     * @param settleCount_id 待修改的settleCount_id
-     * @param app_id         app_id
-     * @return 修改的settleCount 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeModifySettleAccount(String settleCount_id, String app_id, String member_id) throws Exception {
-        System.out.println("=======execute modify SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>(2);
-        settleCountParams.put("settle_account_id", settleCount_id);
-        settleCountParams.put("member_id", member_id);
-        settleCountParams.put("app_id", app_id);
-
-        settleCountParams.put("min_amt", "0.10");
-        settleCountParams.put("remained_amt", "0.10");
-        System.out.println("修改结算账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.modify(settleCountParams);
-        System.out.println("修改结算账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute modify SettleAccount end=======");
-
-        return settleCount;
-    }
-
-    /**
-     * 修改 SettleAccount
-     *
-     * @param settleCount_id 待修改的settleCount_id
-     * @param app_id         app_id
-     * @return 修改的settleCount 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeModifySettleAccount(String merchantKey, String settleCount_id, String app_id, String member_id) throws Exception {
-        System.out.println("=======execute modify SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>(2);
-        settleCountParams.put("settle_account_id", settleCount_id);
-        settleCountParams.put("member_id", member_id);
-        settleCountParams.put("app_id", app_id);
-        settleCountParams.put("min_amt", "");
-        settleCountParams.put("remained_amt", "");
-
-        System.out.println("修改结算账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.modify(settleCountParams, merchantKey);
-        System.out.println("修改结算账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute modify SettleAccount end=======");
-
-        return settleCount;
-    }
-
-
-    /**
-     * 删除 SettleAccount
-     *
-     * @param settleCount_id 待删除的settleCount_id
-     * @param app_id         app_id
-     * @return delete的settleCount 对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeDeleteSettleAccount(String settleCount_id, String app_id, String member_id) throws Exception {
-        System.out.println("=======execute delete SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>(2);
-        settleCountParams.put("settle_account_id", settleCount_id);
-        settleCountParams.put("member_id", member_id);
-        settleCountParams.put("app_id", app_id);
-        System.out.println("删除结算账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.delete(settleCountParams);
-        System.out.println("删除结算账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute delete SettleAccount end=======");
-
-        return settleCount;
-    }
-
-    /**
-     * 查询结算明细列表
-     *
-     * @param app_id          app_id
-     * @param member_id       待查询的member_id
-     * @param settleAccountId 待查询的settleAccountId
-     * @return
-     * @throws Exception 异常
-     */
-    public Map<String, Object> executeQuerySettleDetails(String app_id, String member_id,
-                                                         String settleAccountId) throws Exception {
-        System.out.println("=======execute query settle details begin=======");
-        Map<String, Object> querySettleDetailParams = new HashMap<String, Object>(2);
-        querySettleDetailParams.put("app_id", app_id);
-        querySettleDetailParams.put("member_id", member_id);
-        querySettleDetailParams.put("settle_account_id", settleAccountId);
-        querySettleDetailParams.put("begin_date", "20191008");
-        querySettleDetailParams.put("end_date", "20191010");
-        System.out.println("查询结算明细列表,请求参数:" + JSON.toJSONString(querySettleDetailParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.querySettleDetails(querySettleDetailParams);
-        System.out.println("查询结算明细列表,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute query settle details end=======");
-
-        return settleCount;
-    }
-
-    /**
-     * 取现
-     *
-     * @param merchantKey
-     * @param app_id
-     * @param member_id
-     * @return
-     * @throws Exception
-     */
-    public static Map<String, Object> executeDrawCash(String merchantKey, String app_id, String member_id) throws Exception {
-        System.out.println("=======execute modify SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>();
-
-        settleCountParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis());
-        settleCountParams.put("cash_amt", "0.01");
-        settleCountParams.put("member_id", "user_00008");
-        settleCountParams.put("app_id", app_id);
-        // settleCountParams.put("settle_account_id", "0008919797515968");
-        settleCountParams.put("cash_type", "T1");
-        settleCountParams.put("notify_url", "");
-
-        System.out.println("取现接口,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.drawCash(settleCountParams,merchantKey);
-        System.out.println("取现接口返回参数" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute modify SettleAccount end=======");
-
-        return settleCount;
-    }
-
-    /**
-     * 查询余额
-     *
-     * @param merchantKey
-     * @param app_id
-     * @param member_id
-     * @param settleCount_id
-     * @return
-     * @throws Exception
-     */
-    public static Map<String, Object> executeQueryBalance(String merchantKey, String app_id, String member_id, String settleCount_id) throws Exception {
-        System.out.println("=======execute modify SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>();
-
-        settleCountParams.put("app_id", app_id);
-        settleCountParams.put("member_id", "user_00008");
-        settleCountParams.put("settle_account_id", "0035172521665088");
-
-
-        System.out.println("查询余额账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.queryBalance(settleCountParams,merchantKey);
-        System.out.println("查询余额账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute modify SettleAccount end=======");
-
-        return settleCount;
-    }
-    /**
-     * 取现
-     *
-
-     * @param app_id
-     * @param member_id
-     * @return
-     * @throws Exception
-     */
-    public static Map<String, Object> executeDrawCash(String app_id, String member_id) throws Exception {
-        System.out.println("=======execute modify SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>();
-
-        settleCountParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis());
-        settleCountParams.put("cash_amt", "0.01");
-        settleCountParams.put("member_id", "user_00008");
-        settleCountParams.put("app_id", app_id);
-        // settleCountParams.put("settle_account_id", "0008919797515968");
-        settleCountParams.put("cash_type", "T1");
-        settleCountParams.put("notify_url", "");
-
-        System.out.println("取现接口,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.drawCash(settleCountParams);
-        System.out.println("取现接口返回参数" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute modify SettleAccount end=======");
-
-        return settleCount;
-    }
-
-    /**
-     * 查询余额
-     *
-
-     * @param app_id
-     * @param member_id
-     * @param settleCount_id
-     * @return
-     * @throws Exception
-     */
-    public static Map<String, Object> executeQueryBalance( String app_id, String member_id, String settleCount_id) throws Exception {
-        System.out.println("=======execute modify SettleAccount begin=======");
-        Map<String, Object> settleCountParams = new HashMap<String, Object>();
-
-        settleCountParams.put("app_id", app_id);
-        settleCountParams.put("member_id", "user_00008");
-        settleCountParams.put("settle_account_id", "0035172521665088");
-
-
-        System.out.println("查询余额账户,请求参数:" + JSON.toJSONString(settleCountParams));
-        Map<String, Object> settleCount = com.huifu.adapay.model.SettleAccount.queryBalance(settleCountParams);
-        System.out.println("查询余额账户,返回参数:" + JSON.toJSONString(settleCount));
-        System.out.println("=======execute modify SettleAccount end=======");
-
+        String error_code = (String) settleCount.get("error_code");
+        if (null != error_code) {
+            String errorMsg = (String) settleCount.get("error_msg");
+            throw new BaseAdaPayException(errorMsg);
+        }
         return settleCount;
     }
 

+ 17 - 0
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -997,6 +997,23 @@ public class DateUtil {
 	}
 
 	/**
+	 * @describe 获取指定时间在当天最后的时间
+	 * @author Joburgess
+	 * @date 2020/1/16
+	 * @param date: 时间
+	 * @return java.util.Date
+	 */
+	public static Date getLastTimeWithDay(Date date){
+		Calendar calendar=Calendar.getInstance();
+		calendar.setTime(date);
+		calendar.set(Calendar.HOUR_OF_DAY,23);
+		calendar.set(Calendar.MINUTE, 59);
+		calendar.set(Calendar.SECOND, 59);
+		calendar.set(Calendar.MILLISECOND,999);
+		return calendar.getTime();
+	}
+
+	/**
 	 * @describe 根据日期获取所在周的周一
 	 * @author Joburgess
 	 * @date 2019/10/25

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/WebApplication.java

@@ -2,6 +2,9 @@ package com.ym.mec.web;
 
 import javax.servlet.Filter;
 
+import com.huifu.adapay.model.MerConfig;
+import com.ym.mec.biz.service.NotifyCallback;
+import com.ym.mec.thirdparty.adapay.ConfigInit;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -55,4 +58,10 @@ public class WebApplication {
 		registration.setOrder(1);
 		return registration;
 	}
+
+	@Bean
+	public static void startMqtt() {
+		MerConfig merConfig = ConfigInit.merConfig;
+		new NotifyCallback();
+	}
 }

+ 67 - 29
mec-web/src/main/java/com/ym/mec/web/controller/AdapayController.java

@@ -1,9 +1,13 @@
 package com.ym.mec.web.controller;
 
 import com.alibaba.fastjson.JSONArray;
-import com.ym.mec.biz.dal.dto.HfMemberDto;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.entity.HfMember;
+import com.ym.mec.biz.dal.page.HfMemberQueryInfo;
+import com.ym.mec.biz.service.HfMemberService;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.thirdparty.adapay.ConfigInit;
 import com.ym.mec.thirdparty.adapay.CorpMember;
 import com.ym.mec.common.controller.BaseController;
@@ -14,6 +18,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.io.IOUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+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;
@@ -29,11 +34,25 @@ import java.util.*;
 @RestController
 public class AdapayController extends BaseController {
 
+    @Autowired
+    private HfMemberService hfMemberService;
+    @Autowired
+    private SysConfigDao sysConfigDao;
+
+    @ApiOperation(value = "企业用户列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('adapay/queryPage')")
+    public HttpResponseResult<PageInfo<HfMember>> queryPage(HfMemberQueryInfo queryInfo) {
+        return succeed(hfMemberService.queryPage(queryInfo));
+    }
 
     @ApiOperation("新建企业用户")
     @PostMapping(value = "createMember")
-    public HttpResponseResult createMember(HfMemberDto member) throws Exception {
-
+    @PreAuthorize("@pcs.hasPermissions('adapay/createMember')")
+    public HttpResponseResult<Map<String, Object>> createMember(HfMember member) throws Exception {
+        if (member.getMultipartFile().isEmpty()) {
+            return failed("证件压缩文件必传");
+        }
         File file = new File("/var/tmp/" + member.getMultipartFile().getOriginalFilename());
         InputStream inputStream = member.getMultipartFile().getInputStream();
 
@@ -43,42 +62,61 @@ public class AdapayController extends BaseController {
             }
             FileOutputStream fos = new FileOutputStream(file);
             IOUtils.copy(inputStream, fos);
+            return succeed(hfMemberService.createMember(member, file));
+        } catch (Exception e) {
+            return failed(e.getMessage());
+        } finally {
+            IOUtils.closeQuietly(inputStream);
+            boolean delete = file.delete();
+        }
+    }
 
-            HashMap<String, Object> memberParams = new HashMap<>();
-            memberParams.put("order_no", "corp_mem_" + System.currentTimeMillis());
-            memberParams.put("member_id", member.getMemberId());
-            memberParams.put("name", member.getName());
-            memberParams.put("prov_code", member.getProvCode());
-            memberParams.put("area_code", member.getAreaCode());
-            memberParams.put("social_credit_code", member.getSocialCreditCode());
-            memberParams.put("social_credit_code_expires", member.getSocialCreditCodeExpires());
-            memberParams.put("business_scope", member.getBusinessScope());
-            memberParams.put("legal_person", member.getLegalPerson());
-            memberParams.put("legal_cert_id", member.getLegalCertId());
-            memberParams.put("legal_cert_id_expires", member.getLegalCertIdExpires());
-            memberParams.put("legal_mp", member.getLegalMp());
-            memberParams.put("address", member.getAddress());
-            memberParams.put("zip_code", member.getZipCode());
-            memberParams.put("bank_code", member.getBankCode());
-            memberParams.put("bank_acct_type", "1");
-            memberParams.put("card_no", member.getCardNo());
-            memberParams.put("card_name", member.getName());
-            return succeed(new CorpMember().executeCreateMember(memberParams, file));
-        } catch (IOException e) {
-            throw new BizException("文件上传失败,请重试");
+    @ApiOperation("修改企业用户(状态是failed才能修改)")
+    @PostMapping(value = "updateMember")
+    @PreAuthorize("@pcs.hasPermissions('adapay/updateMember')")
+    public HttpResponseResult<Map<String, Object>> updateMember(HfMember member) throws Exception {
+        if (member.getMultipartFile().isEmpty()) {
+            return failed("证件压缩文件必传");
+        }
+        File file = new File("/var/tmp/" + member.getMultipartFile().getOriginalFilename());
+        InputStream inputStream = member.getMultipartFile().getInputStream();
+
+        try {
+            if (!file.getParentFile().exists()) {
+                file.getParentFile().mkdirs();
+            }
+            FileOutputStream fos = new FileOutputStream(file);
+            IOUtils.copy(inputStream, fos);
+            return succeed(hfMemberService.updateMember(member, file));
+        } catch (Exception e) {
+            return failed(e.getMessage());
         } finally {
             IOUtils.closeQuietly(inputStream);
-            file.deleteOnExit();
+            boolean delete = file.delete();
+        }
+    }
+
+
+    @ApiOperation("绑定结算账户(succeeded 状态才能使用)")
+    @PostMapping(value = "createSettleAccount")
+    @PreAuthorize("@pcs.hasPermissions('adapay/createSettleAccount')")
+    public HttpResponseResult<Map<String, Object>> createSettleAccount(String memberId, String cardNo, String bankCode) throws Exception {
+        try {
+            return succeed(hfMemberService.createSettleAccount(memberId, cardNo, bankCode));
+        } catch (Exception e) {
+            return failed(e.getMessage());
         }
     }
 
     @ApiOperation("查询企业用户信息")
     @GetMapping(value = "getMemberInfo")
-    public HttpResponseResult getMemberInfo(String memberId) throws Exception {
-        return succeed(new CorpMember().executeQueryMember(memberId));
+    @PreAuthorize("@pcs.hasPermissions('adapay/getMemberInfo')")
+    public HttpResponseResult<Map<String, Object>> getMemberInfo(String memberId) throws Exception {
+        return succeed(CorpMember.executeQueryMember(memberId));
     }
 
-    @ApiOperation("查询企业用户信息")
+
+    @ApiOperation("导出对账单")
     @GetMapping(value = "exportBill")
     @PreAuthorize("@pcs.hasPermissions('adapay/exportBill')")
     public void exportBill(Date startTime, Date endTime, HttpServletResponse response) throws Exception {

+ 5 - 4
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -90,15 +90,16 @@ public class CourseScheduleController extends BaseController {
             if(CollectionUtils.isEmpty(classGroupTeacherMappers)){
                 throw new BizException("乐团老师设置有误");
             }
+            if(Objects.isNull(courseSchedule.getTeachMode())){
+                courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
+            }
+            Integer schoolId = courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE) ? null : musicGroup.getSchoolId();
             courseSchedule.setTeacherId(classGroupTeacherMappers.get(0).getUserId());
             courseSchedule.setActualTeacherId(classGroupTeacherMappers.get(0).getUserId());
-            courseSchedule.setSchoolId(musicGroup.getSchoolId());
+            courseSchedule.setSchoolId(schoolId);
             courseSchedule.setMusicGroupId(musicGroup.getId());
             courseSchedule.setGroupType(GroupType.MUSIC);
             courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-            if(Objects.isNull(courseSchedule.getTeachMode())){
-                courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
-            }
             courseSchedule.setOrganId(musicGroup.getOrganId());
         });
 

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

@@ -69,7 +69,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "员工操作")
     @PostMapping("/employeeOperate")
     @PreAuthorize("@pcs.hasPermissions('employee/employeeOperate')")
-    public Object employeeOperate(Long employeeId, EmployeeOperateEnum operate){
+    public Object employeeOperate(Integer employeeId, EmployeeOperateEnum operate){
         employeeService.employeeOperate(employeeId,operate);
         return succeed();
     }

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

@@ -708,14 +708,14 @@ public class ExportController extends BaseController {
     @PostMapping("order/musicalListDetailExport")
     @PreAuthorize("@pcs.hasPermissions('order/musicalListDetailExport')")
     public void musicalListDetailExport(HttpServletResponse response, String musicGroupId) throws IOException {
-        List<musicalListDetailDto> musicalList = studentPaymentOrderDetailService.getMusicalListDetail(musicGroupId);
+        List<MusicalListDetailDto> musicalList = studentPaymentOrderDetailService.getMusicalListDetail(musicGroupId);
         if (musicalList.size() > 50000) {
             throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名", "购买商品", "采购方式", "乐器金额", "教辅金额", "课程金额", "订单总价"}, new String[]{
-                    "organName", "musicGroupName", "userId", "username", "goodsNames", "kitGroupPurchaseTypeEnum.msg", "musicalAmount", "accessoriesAmount", "courseAmount", "orderAmount"}, musicalList);
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名","声部", "购买商品", "采购方式", "乐器金额", "教辅金额", "课程金额", "订单总价"}, new String[]{
+                    "organName", "musicGroupName", "userId", "username","subjectName", "goodsNames", "kitGroupPurchaseTypeEnum.msg", "musicalAmount", "accessoriesAmount", "courseAmount", "orderAmount"}, musicalList);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             response.flushBuffer();
@@ -810,6 +810,14 @@ public class ExportController extends BaseController {
                 queryInfo.setOrganId(employee.getOrganIdList());
             }
         }
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() <= 0) {
+                userIds.add(0);
+            }
+            queryInfo.setUserIds(userIds);
+        }
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         queryInfo.setIsExport(true);
@@ -1869,6 +1877,14 @@ public class ExportController extends BaseController {
                 queryInfo.setOrganId(employee.getOrganIdList());
             }
         }
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() <= 0) {
+                userIds.add(0);
+            }
+            queryInfo.setUserIds(userIds);
+        }
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         queryInfo.setIsExport(true);

+ 13 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java

@@ -3,7 +3,9 @@ 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.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.page.SporadicOrderQueryInfo;
@@ -28,6 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RequestMapping("order")
 @Api(tags = "订单服务")
@@ -44,6 +47,8 @@ public class StudentPaymentOrderController extends BaseController {
     private EmployeeDao employeeDao;
     @Autowired
     private SysConfigDao sysConfigDao;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
 
     @ApiOperation(value = "获取订单列表")
     @GetMapping("/queryPage")
@@ -66,6 +71,14 @@ public class StudentPaymentOrderController extends BaseController {
                 }
             }
         }
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() <= 0) {
+                userIds.add(0);
+            }
+            queryInfo.setUserIds(userIds);
+        }
 
         PageInfo<StudentPaymentOrder> studentPaymentOrderPageInfo = studentPaymentOrderService.OrderQueryPage(queryInfo);
 

+ 13 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentRouteOrderController.java

@@ -3,7 +3,9 @@ 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.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -30,6 +32,7 @@ import org.springframework.web.bind.annotation.RestController;
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RequestMapping("routeOrder")
 @Api(tags = "分润订单服务")
@@ -42,6 +45,8 @@ public class StudentPaymentRouteOrderController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private EmployeeDao employeeDao;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
 
     @ApiOperation(value = "财务订单列表")
     @GetMapping("/finance")
@@ -64,6 +69,14 @@ public class StudentPaymentRouteOrderController extends BaseController {
                 }
             }
         }
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() <= 0) {
+                userIds.add(0);
+            }
+            queryInfo.setUserIds(userIds);
+        }
 
         PageInfo<StudentPaymentRouteOrderDto> studentPaymentRouteOrderPageInfo = studentPaymentRouteOrderService.OrderQueryPage(queryInfo);
         return succeed(studentPaymentRouteOrderPageInfo);

+ 81 - 0
mec-web/src/main/java/com/ym/mec/web/controller/VisitController.java

@@ -0,0 +1,81 @@
+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.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.biz.service.StudentVisitService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+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 java.util.Arrays;
+import java.util.List;
+
+@Api(tags = "回访服务")
+@RequestMapping("visit")
+@RestController
+public class VisitController extends BaseController {
+
+    @Autowired
+    private StudentVisitService studentVisitService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+    @ApiOperation(value = "回访列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('visit/queryPage')")
+    public HttpResponseResult<PageInfo<StudentVisitDto>> queryPage(StudentVisitQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+                return failed("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                    return failed("非法请求");
+                }
+            }
+        }
+        return succeed(studentVisitService.getPageList(queryInfo));
+    }
+
+    @ApiOperation(value = "添加回访")
+    @PostMapping(value = "/add")
+    @PreAuthorize("@pcs.hasPermissions('visit/add')")
+    public HttpResponseResult<StudentVisit> add(@Validated StudentVisit studentVisit) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        studentVisit.setTeacherId(sysUser.getId());
+        studentVisit.setVisiterType(StudentVisit.VisiterTypeEnum.EDU_TEACHER);
+        return succeed(studentVisitService.addVisit(studentVisit));
+    }
+
+
+    @ApiOperation(value = "回访详情")
+    @GetMapping(value = "/getInfo")
+    @PreAuthorize("@pcs.hasPermissions('visit/getInfo')")
+    public HttpResponseResult<StudentVisitDto> getInfo(Integer id) {
+        return succeed(studentVisitService.getInfo(id));
+    }
+}

+ 4 - 1
mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java

@@ -4,6 +4,7 @@ package com.ym.mec.web.controller.education;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.StudentRepair;
 import com.ym.mec.biz.dal.page.RepairStudentQueryInfo;
@@ -11,10 +12,12 @@ import com.ym.mec.biz.service.StudentRepairService;
 import com.ym.mec.biz.service.SubjectService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.snaker.engine.access.Page;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -45,7 +48,7 @@ public class EduRepairController extends BaseController {
 
     @ApiOperation("获取学生列表")
     @GetMapping(value = "/getStudents")
-    public HttpResponseResult getStudents(RepairStudentQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<BasicUserDto>> getStudents(RepairStudentQueryInfo queryInfo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");

+ 71 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduVisitController.java

@@ -0,0 +1,71 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.biz.service.StudentVisitService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "回访服务(教务)")
+@RequestMapping("eduVisit")
+@RestController
+public class EduVisitController extends BaseController {
+
+    @Autowired
+    private StudentVisitService studentVisitService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+
+    @ApiOperation(value = "回访列表")
+    @GetMapping("/queryPage")
+    public HttpResponseResult<PageInfo<StudentVisitDto>> queryPage(StudentVisitQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(studentVisitService.getPageList(queryInfo));
+    }
+
+    @ApiOperation(value = "添加回访")
+    @PostMapping(value = "/add")
+    public HttpResponseResult<StudentVisit> add(StudentVisit studentVisit) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        studentVisit.setTeacherId(sysUser.getId());
+        studentVisit.setVisiterType(StudentVisit.VisiterTypeEnum.EDU_TEACHER);
+        return succeed(studentVisitService.addVisit(studentVisit));
+    }
+
+
+    @ApiOperation(value = "回访详情")
+    @GetMapping(value = "/getInfo")
+    public HttpResponseResult<StudentVisitDto> getInfo(Integer id) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        StudentVisitDto info = studentVisitService.getInfo(id);
+        if (!info.getTeacherId().equals(sysUser.getId())) {
+            failed("请勿非法访问");
+        }
+        return succeed(studentVisitService.getInfo(id));
+    }
+
+    @ApiOperation(value = "获取乐团学生")
+    @GetMapping(value = "/getMusicGroupStu")
+    public HttpResponseResult<List<StudentRegistration>> getMusicGroupStu(String musicGroupId) {
+        return succeed(studentRegistrationDao.getMusicGroupStu(musicGroupId));
+    }
+}