Pārlūkot izejas kodu

Merge branch 'feature/1022_vip' of http://git.dayaedu.com/yonge/mec into feature/1022_vip

刘俊驰 8 mēneši atpakaļ
vecāks
revīzija
4bc41c0b49

+ 2 - 2
mec-application/src/main/java/com/ym/mec/student/controller/CloudCoachPaymentProgramController.java

@@ -36,12 +36,12 @@ public class CloudCoachPaymentProgramController extends BaseController {
     public Object get(Long id){
         CloudCoachPaymentProgram cloudCoachPaymentProgram = cloudCoachPaymentProgramService.get(id);
         if(cloudCoachPaymentProgram == null){
-            throw new BizException("云教练缴费项目不存在,请联系指导老师");
+            throw new BizException("学练宝缴费项目不存在,请联系指导老师");
         }
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         StudentCloudCoachPaymentDetails studentCloudCoachPaymentDetails = studentCloudCoachPaymentDetailsService.findByUserId(id, sysUser.getId());
         if(studentCloudCoachPaymentDetails == null){
-            throw new BizException("您不在当前云教练缴费项目中,请联系指导老师");
+            throw new BizException("您不在当前学练宝缴费项目中,请联系指导老师");
         }
         MemberRankSetting memberRankSetting = memberRankSettingService.get(cloudCoachPaymentProgram.getMemberRankSettingId());
         cloudCoachPaymentProgram.setMemberIntro(memberRankSetting.getIntro());

+ 25 - 9
mec-application/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
@@ -229,7 +230,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号", "乐团名称", "合作单位", "乐团状态",
-                    "收费模式", "收费类型", "乐团主管", "成团人数", "在读人数",  "会员人数",  "非会员人数", "申请时间", "成团时间", "清单状态", "收费标准"}, new String[]{
+                    "收费模式", "收费类型", "乐团主管", "成团人数", "在读人数",  "学练宝人数",  "非会员人数", "申请时间", "成团时间", "清单状态", "收费标准"}, new String[]{
                     "organName", "id", "name", "cooperationOrganName", "status.msg", "courseViewType.msg", "chargeTypeName",
                     "educationalTeacherName", "groupMemberNum", "payNum", "memberNum", "notMemberNum"
                     , "createTime", "billStartDate", "hasVerifyMusicalList?'已确认':'未确认'", "chargeStandard"}, rows);
@@ -916,7 +917,7 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
                     "家长联系电话", "VIP老师", "网管老师", "声部老师", "合奏老师", "是否激活", "是否有课", "是否有网管课", "网管课剩余课时", "VIP课剩余课时", "课程余额(元)", "账户余额(元)",
-                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用云教练", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"}, new String[]{
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用学练宝", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"}, new String[]{
                     "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone","vipTeacherName", "practiceTeacherName", "normalTeacherName", "mixTeacherName",
                     "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg", "noStartPracticeCourseNum", "noStartVipCourseNum", "courseBalance", "balance", "musicGroupName",
                     "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "recordUserId == null ? '否' : '是'",
@@ -1113,7 +1114,7 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名", "声部", "购买乐器", "乐器采购方式", "乐器金额", "购买教辅", "教辅金额", "课程金额", "云教练金额", "乐保金额", "订单总价"}, new String[]{
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名", "声部", "购买乐器", "乐器采购方式", "乐器金额", "购买教辅", "教辅金额", "课程金额", "学练宝金额", "乐保金额", "订单总价"}, new String[]{
                     "organName", "musicGroupName", "userId", "username", "subjectName", "musicalName", "kitGroupPurchaseTypeEnum.msg",
                     "musicalAmount", "accessoriesName", "accessoriesAmount", "courseAmount", "cloudTeacherAmount", "maintenanceAmount", "orderAmount"}, musicalList);
             response.setContentType("application/octet-stream");
@@ -1174,7 +1175,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业",
-                    "实际专业", "联系电话", "学员缴费状态", "乐器购买方式", "缴费中/审核中", "是否购买云教练"}, new String[]{
+                    "实际专业", "联系电话", "学员缴费状态", "乐器购买方式", "缴费中/审核中", "是否购买学练宝"}, new String[]{
                     "studentName", "parentsName", "currentGrade", "currentClass", "gender.description",
                     "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc",
                     "kitGroupPurchaseTypeEnum.msg", "payingStatusStr", "hasCloudTeacher==1?'有':'没有'"}, studentApplyDetail);
@@ -1243,6 +1244,22 @@ public class ExportController extends BaseController {
             MusicGroup musicGroup = musicGroupDao.get(queryInfo.getMusicGroupId());
             Map<Integer, String> gradeList = organizationService.getGradeList(musicGroup.getOrganId());
             for (MusicGroupStudentsDto row : musicGroupStudentsDtoPageInfo.getRows()) {
+                List<CloudTeacherOrderWrapper.StudentMemberDetail> orderList = row.getCloudTeacherOrderList();
+                if (!CollectionUtils.isEmpty(orderList)) {
+                    StringBuffer remark = new StringBuffer();
+                    for (CloudTeacherOrderWrapper.StudentMemberDetail studentMemberDetail : orderList) {
+                        if (StringUtils.isNotEmpty(remark)) {
+                            remark.append("\r\n");
+                        }
+                        remark.append(studentMemberDetail.getMemberRankName());
+                        remark.append(" ");
+                        remark.append(DateUtil.dateToString(studentMemberDetail.getEndTime(), DateUtil.DEFAULT_PATTERN));
+                        remark.append("(");
+                        remark.append(studentMemberDetail.getRemainingDays());
+                        remark.append("天)");
+                    }
+                    row.setRemark(remark.toString());
+                }
                 if (StringUtils.isNotEmpty(row.getCurrentGrade())) {
                     String grade = gradeList.get(Integer.parseInt(row.getCurrentGrade()));
                     if (StringUtils.isNotEmpty(grade)) {
@@ -1264,7 +1281,7 @@ public class ExportController extends BaseController {
                 } else if (row.getStudentStatus().equals("APPLY")) {
                     row.setStudentStatus("报名");
                 } else {
-                    row.setStudentStatus("" + row.getStudentStatus());
+                    row.setStudentStatus(row.getStudentStatus());
                 }
                 if (row.getIsActive()) {
                     row.setActiveName("是");
@@ -1279,13 +1296,12 @@ public class ExportController extends BaseController {
                 }
             }
             String[] header = {"学员编号", "学员姓名", "性别", "联系电话", "入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活",
-                    "VIP/网管是否有课", "关心包", "加油包", "欠费金额(元)", "退团原因", "会员截止时间", "会员剩余天数"};
+                    "VIP/网管是否有课", "关心包", "加油包", "欠费金额(元)", "退团原因", "学练宝截止时间(剩余天数)"};
             String[] body = {"userId", "realName", "gender", "phone", "registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc"
                     , "courseFee", "activeName", "hasCourse ? '是' : '否'"
                     , "carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'"
                     , "comeOnPackage == null || comeOnPackage == 0 ? '不可用'' : comeOnPackage == 1 ? '可用' : '已使用'"
-                    , "noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason",
-                    "membershipEndTime", "membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'"};
+                    , "noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason","remark"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, musicGroupStudentsDtoPageInfo.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1547,7 +1563,7 @@ public class ExportController extends BaseController {
         OutputStream ouputStream = null;
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
-                    new String[]{"布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "学生编号", "提交训练", "提交训练时间", "是否评价", "是否有vip", "及时评价", "是否云教练布置"},
+                    new String[]{"布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "学生编号", "提交训练", "提交训练时间", "是否评价", "是否有vip", "及时评价", "是否学练宝布置"},
                     new String[]{"createTime", "expireDate", "title", "teacherName", "organName",
                             "user.username", "userId", "statusStr", "submitTime", "isRepliedStr", "existVipCourseStr", "isRepliedTimelyStr", "musicScoreId"}, rows);
             response.setContentType("application/octet-stream");

+ 15 - 15
mec-application/src/main/resources/exportColumnMapper.ini

@@ -11,11 +11,11 @@ headColumns = ["分部", "合作单位", "乐团","学员编号", "学员姓名"
 fieldColumns = ["organName", "cooperationOrganName", "musicGroupName","userId", "username", "phone","subjectName","currentClass", "realName", "isReserve == true ?'是':'否'","gradeLeave","theoryLevel","buyVipFlag == true ?'是':'否'","buyTheoryCourseFlag == true ?'是':'否'"]
 
 [2021双十一学员购买详情]
-headColumns = ["学员编号", "学员姓名","订单号", "交易金额","交易时间", "订单创建时间", "购买课程", "赠送会员"]
+headColumns = ["学员编号", "学员姓名","订单号", "交易金额","交易时间", "订单创建时间", "购买课程", "赠送学练宝"]
 fieldColumns = ["userId", "username", "orderNo","amount", "payTime", "createTime","type","giveMember==0?'否':'是'"]
 
 [分部2021双11活动统计导出]
-headColumns = ["分部", "总成交金额","总购买人数", "人均购买金额","20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数","40节1v2成交金额", "40节1v2成交人数", "小组课成交金额", "小组课成交人数", "赠送会员人数"]
+headColumns = ["分部", "总成交金额","总购买人数", "人均购买金额","20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数","40节1v2成交金额", "40节1v2成交人数", "小组课成交金额", "小组课成交人数", "赠送学练宝人数"]
 fieldColumns = ["organName", "totalBuyAmount", "totalBuyNum","avgBuyAmount", "vip1V120Amount", "vip1V120Num","vip1V140Amount", "vip1V140Num", "vip1V220Amount", "vip1V220Num","vip1V240Amount" ,"vip1V240Num","musicTheoryAmount","musicTheoryNum","giveMemberNum"]
 
 [学生个人账户余额导出]
@@ -43,7 +43,7 @@ headColumns = ["分部编号", "分部名称", "课程组类型", "课程组编
 fieldColumns = ["organId", "organName", "groupType.desc", "groupId", "groupName", "username", "userId", "courseScheduleId", "courseScheduleName", "classDate", "startClassTime", "endClassTime", "guideTeacherName", "guideTeacherId" , "educationalTeacherName", "educationalTeacherId", "actualTeacherName", "actualTeacherId", "studentAttendanceStatus.msg"]
 
 [缴费记录导出]
-headColumns = ["学员编号", "学员姓名", "学员声部", "学员状态", "手机号","缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间","会员金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"]
+headColumns = ["学员编号", "学员姓名", "学员声部", "学员状态", "手机号","缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间","学练宝金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"]
 fieldColumns = ["userId", "sysUser.username", "studentRegistration.subjectName", "studentRegistration.musicGroupStatus.msg", "sysUser.phone", "startPaymentDateMgpc", "deadlinePaymentDateMgpc", "openFlag.msg", "paymentStatus.desc", "payTime", "cloudAmount", "musicalAmount", "courseAmount", "accessoriesAmount", "maintenanceAmount", "activityAmount"]
 
 [业务管理--审核列表导出]
@@ -75,8 +75,8 @@ headColumns = ["课程组编号", "课程组名称", "分部", "指导老师", "
 fieldColumns = ["musicGroupId", "courseGroupName", "organName", "teacherName", "settlementStatus.msg", "expectRewardAmount", "settlementDate", "memo"]
 
 [导出学员列表]
-headColumns = ["分部", "学员编号", "学员姓名", "性别", "家长姓名","家长联系电话", "是否激活", "是否有课", "是否有网管课","网管课剩余课时","VIP课剩余课时", "课程余额(元)", "账户余额(元)","所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用学练宝", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"]
-fieldColumns = ["organName", "userId", "username", "gender.description", "parentsName", "parentsPhone", "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg","noStartPracticeCourseNum","noStartVipCourseNum", "courseBalance", "balance", "musicGroupName", "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "recordUserId == null ? '否' : '是'", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'", "experienceMembershipEndTime","membershipEndTime == null ? '未试用' : membershipDay >= 0 ? membershipDay : '已失效'"]
+headColumns = ["分部", "学员编号", "学员姓名", "性别", "家长姓名","家长联系电话", "是否激活", "是否有课", "是否有网管课","网管课剩余课时","VIP课剩余课时", "课程余额(元)", "账户余额(元)","所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用学练宝", "学练宝截止日期", "学练宝剩余天数", "学练宝试用结束日期", "学练宝试用剩余天数"]
+fieldColumns = ["organName", "userId", "username", "gender.description", "parentsName", "parentsPhone", "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg","noStartPracticeCourseNum","noStartVipCourseNum", "courseBalance", "balance", "musicGroupName", "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "recordUserId == null ? '否' : '是'", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '学练宝已过期'", "experienceMembershipEndTime","membershipEndTime == null ? '未试用' : membershipDay >= 0 ? membershipDay : '已失效'"]
 
 [导出陪练课列表]
 headColumns = ["课程组编号", "课程组名称", "课程组类型", "分部", "教务老师", "指导老师", "班级人数","当前课次", "总课次", "剩余课次", "开课时间", "结束时间", "课程组状态", "是否续费", "备注"]
@@ -131,8 +131,8 @@ headColumns = ["分部", "学员编号", "学生姓名", "年级", "课程余额
 fieldColumns = ["organName","userId", "username", "grade","courseBalance", "subjectName", "normalClassTeacherId", "normalClassTeacherName", "beforeClassNum", "vipTotalNum", "vipOverNum", "vipNotStartNum", "vipOverTeacherId", "vipOverTeacherName", "vipNotStartTeacherId", "vipNotStartTeacherName" , "practiceOverNum", "practiceNotStartNum", "practiceOverTeacherId", "practiceOverTeacherName", "practiceNotStartTeacherId", "practiceNotStartTeacherName","teacherId","teacherName"]
 
 [乐团导出学员列表]
-headColumns = ["学员编号", "学员姓名", "性别", "联系电话","入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活","VIP/网管是否有课","关心包","加油包", "欠费金额(元)", "退团原因", "会员截止时间", "会员剩余天数"]
-fieldColumns = ["userId", "realName", "gender", "phone","registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc" ,"courseFee", "activeName", "hasCourse ? '是' : '否'" ,"carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'" ,"comeOnPackage == null || comeOnPackage == 0 ? '不可用' : comeOnPackage == 1 ? '可用' : '已使用'" ,"noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'"]
+headColumns = ["学员编号", "学员姓名", "性别", "联系电话","入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活","VIP/网管是否有课","关心包","加油包", "欠费金额(元)", "退团原因", "学练宝截止时间", "学练宝剩余天数"]
+fieldColumns = ["userId", "realName", "gender", "phone","registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc" ,"courseFee", "activeName", "hasCourse ? '是' : '否'" ,"carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'" ,"comeOnPackage == null || comeOnPackage == 0 ? '不可用' : comeOnPackage == 1 ? '可用' : '已使用'" ,"noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '学练宝已过期'"]
 
 [评论列表导出]
 headColumns = ["分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏", "小组", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"]
@@ -215,7 +215,7 @@ headColumns = ["分部", "老师编号", "老师姓名", "服务周期", "课后
 fieldColumns = ["organName", "teacherId", "teacherName", "dateRange", "homeworkNum", "exerciseNum", "actualExercisesNum", "exercisesReplyNum", "expectExercisesNum>actualExercisesNum?'异常':'正常'", "exercisesReplyNum>exercisesMessageNum?'异常':'正常'", "submitRate", "remindDate", "operatorName"]
 
 [首页异常统计导出]
-headColumns = ["分部", "基础技能班学员数量异常", "乐团巡查事项异常", "未在班级学员数", "欠费学员数","申请退团学员数", "预计课酬较低", "课程时间安排异常", "乐团巡查未计划", "乐团巡查任务未提交","回访任务未完成", "课程考勤异常", "课程异常", "服务指标异常", "异常请假", "会员过期学员数", "总计"]
+headColumns = ["分部", "基础技能班学员数量异常", "乐团巡查事项异常", "未在班级学员数", "欠费学员数","申请退团学员数", "预计课酬较低", "课程时间安排异常", "乐团巡查未计划", "乐团巡查任务未提交","回访任务未完成", "课程考勤异常", "课程异常", "服务指标异常", "异常请假", "学练宝过期学员数", "总计"]
 fieldColumns = ["organName", "highClassStudentLessThanThreeNum", "musicPatrolItem", "noClassMusicGroupStudentInfo", "studentNotPayment", "studentApplyForQuitMusicGroup", "teacherExpectSalaryBeLow", "courseTimeError", "inspectionItem", "inspectionItemPlan", "studentVisit", "teacherExceptionAttendance", "teacherNotAClass", "teacherServeError", "studentErrorLeave", "noMemberStudentNum", "total"]
 
 [运营预警导出]
@@ -235,15 +235,15 @@ headColumns = ["编号", "姓名", "手机号", "微信","声部", "所在城市
 fieldColumns = ["id", "realName", "mobileNo", "wechatNo", "subjectName", "liveCity", "intentionCity", "sourceFrom", "nextVisitDateStr", "entryDateStr", "position.msg","organName","status.desc", "idCard", "age", "gender?'男':'女'", "bankCardNo","bankAddress","emergencyContactName", "emergencyContactRelation", "emergencyContactPhone", "updateTime", "hrbpName","resignationDateStr"]
 
 [分部云教练学员数据预览导出]
-headColumns = ["排名", "分部", "学员总数", "目标人数", "活跃人数", "使用人数", "新增使用人数", "使用比例", "付费会员数", "付费会员占比"]
+headColumns = ["排名", "分部", "学员总数", "目标人数", "活跃人数", "使用人数", "新增使用人数", "使用比例", "付费学练宝数", "付费学练宝占比"]
 fieldColumns = ["index","organName", "totalStudentNum", "targetNum", "cloudStudyLivelyStudentNum", "cloudStudyUseStudentNum", "newCloudStudyStudentNum", "cloudStudyUseStudentDuty+'%'", "vipStudentNum", "vipStudentDuty+'%'"]
 
 [分部云教练学员数据详情导出]
-headColumns = ["分部", "在读人数", "生效待激活总人数", "会员占比", "生效会员", "待激活", "覆盖率", "复购率","近一个月活跃人数", "今日使用人数"]
+headColumns = ["分部", "在读人数", "生效待激活总人数", "学练宝占比", "生效学练宝", "待激活", "覆盖率", "复购率","近一个月活跃人数", "今日使用人数"]
 fieldColumns = ["organName", "totalStudentNum", "vipStudentNum", "vipStudentRate+'%'", "effectiveVipStudentNum", "waitActivateVipStudentNum", "buyRate+'%'", "againBuyRate+'%'", "activeStudentNum", "cloudStudyTodayUseStudentNum"]
 
 [分部云教练学员训练数据导出]
-headColumns = ["分部", "学员编号", "学员","年级","班级", "手机号", "是否新用户", "是否激活", "是否会员", "训练总时长", "连续训练天数", "乐团", "乐团主管", "所属学校", "声部", "声部老师",  "是否有小课","训练次数", "训练天数", "训练平均时长", "会员有效期", "是否服务", "是否运营", "是否学练宝活动目标学员", "活动消费金额", "关心包", "加油包", "未上课数", "vip课剩余课时", "网管课剩余课时"]
+headColumns = ["分部", "学员编号", "学员","年级","班级", "手机号", "是否新用户", "是否激活", "是否学练宝", "训练总时长", "连续训练天数", "乐团", "乐团主管", "所属学校", "声部", "声部老师",  "是否有小课","训练次数", "训练天数", "训练平均时长", "会员有效期", "是否服务", "是否运营", "是否学练宝活动目标学员", "活动消费金额", "关心包", "加油包", "未上课数", "vip课剩余课时", "网管课剩余课时"]
 fieldColumns = ["organName","studentId", "studentName","currentGradeNum","currentClass", "phone", "newUser?'是':'否'", "enable?'是':'否'", "memberFlag?'是':'否'", "cloudStudyUseTime+'分钟'", "cloudStudyRunningDays+'天'", "musicGroupNames", "educationName", "schoolNames","subjectName","subjectTeacherName",  "hasVipGroup>0?'是':'否'", "cloudStudyUseNum+'次'", "cloudStudyUseDays+'天'",         "cloudStudyUseAvgTime+'分钟'", "membershipEndTime", "serviceTag>0?'是':'否'", "operatingTag>0?'是':'否'","countFlag == null?'否':countFlag == 1?'是':'否'","activeAmount",         "carePackage>0?carePackage>1?'已使用':'可用':'不可用'", "comeOnPackage>0?comeOnPackage>1?'已使用':'可用':'不可用'",         "notStartCourseNum", "notStartVipCourseNum", "notStartPracticeCourseNum"]
 
 [分部云教练活动统计数据导出]
@@ -323,11 +323,11 @@ headColumns = ["分部", "在读人数", "应有课耗", "实际课耗","课耗
 fieldColumns = ["organName","normalNum","courseConsumerNum","courseSum","courseConsumerRate+'%'","num5","num4","num3","num2","num1","num0","standRate+'%'"]
 
 [云教练统计导出]
-headColumns = ["分部", "会员人数","练习人数","练习率","<10分钟","10~60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(会员)","平均练习时长(练习)","练习达标占比"]
+headColumns = ["分部", "学练宝人数","练习人数","练习率","<10分钟","10~60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(学练宝)","平均练习时长(练习)","练习达标占比"]
 fieldColumns = ["organName","normalNum","trainStudentNum","trainRate+'%'","train0","train1","train2","train3","train4","avgTrainTime","trainAvgTrainTime","trainStandRate+'%'"]
 
 [云教练统计详情导出]
-headColumns = ["声部老师", "会员人数","练习人数","练习率","<60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(会员)","平均练习时长(练习)","练习达标占比"]
+headColumns = ["声部老师", "学练宝人数","练习人数","练习率","<60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(学练宝)","平均练习时长(练习)","练习达标占比"]
 fieldColumns = ["teacherName","normalNum","trainStudentNum","trainRate+'%'","train1","train2","train3","train4","avgTrainTime","trainAvgTrainTime","trainStandRate+'%'"]
 
 [班级列表导出]
@@ -403,9 +403,9 @@ headColumns = ["分部","乐团编号","乐团名称","学员编号","学员名
 fieldColumns = ["organName","musicGroupId","musicGroupName","studentId","studentName"]
 
 [云课堂统计导出]
-headColumns = ["分部名称","会员人数","无练习人数","0-10分钟","10-60分钟","60-120分钟","120-240分钟",">240分钟","平均时长(分钟)"]
+headColumns = ["分部名称","学练宝人数","无练习人数","0-10分钟","10-60分钟","60-120分钟","120-240分钟",">240分钟","平均时长(分钟)"]
 fieldColumns = ["organizationName","memberNum","noPlayNum","playTimeLess10","playTimeLess60","playTimeLess120","playTimeLess240","playTimeRather240","avgPlayTime"]
 
 [云课堂统计详情导出]
-headColumns = ["声部老师","会员人数","无练习人数","0-10分钟","10-60分钟","60-120分钟","120-240分钟",">240分钟","平均时长(分钟)"]
+headColumns = ["声部老师","学练宝人数","无练习人数","0-10分钟","10-60分钟","60-120分钟","120-240分钟",">240分钟","平均时长(分钟)"]
 fieldColumns = ["teacherName","memberNum","noPlayNum","playTimeLess10","playTimeLess60","playTimeLess120","playTimeLess240","playTimeRather240","avgPlayTime"]

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

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum CalenderBaseServiceEnum implements BaseEnum<String, CalenderBaseServiceEnum> {
-	COURSE("课程"), MEMBER("会员"), MUSIC_REPAIR("乐保"), ACTIVITY("活动");
+	COURSE("课程"), MEMBER("学练宝"), MUSIC_REPAIR("乐保"), ACTIVITY("活动");
 
 	private String code;
 

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

@@ -128,4 +128,7 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
 
     //获取用户生效中的云教练详情列表
     List<CloudTeacherOrderWrapper.StudentMemberDetail> getEffectiveCloudTeacherOrder(List<Integer> userIds);
+
+    //获取会员全名称
+    Map<Integer,String> queryMemberName(List<Integer> memberRankIds);
 }

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -89,6 +89,9 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             dataList = cloudTeacherOrderDao.queryRecord(params);
+            List<Integer> memberRankIds = dataList.stream().map(CloudTeacherStudent::getMemberRankId).distinct().collect(Collectors.toList());
+            Map<Integer, String> memberNameMap = queryMemberName(memberRankIds);
+            dataList.forEach(e -> e.setMemberName(memberNameMap.get(e.getMemberRankId())));
         }
         if (count == 0) {
             dataList = new ArrayList<>();
@@ -555,4 +558,26 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         }
         return studentMemberDetails;
     }
+
+    @Override
+    public Map<Integer, String> queryMemberName(List<Integer> memberRankIds) {
+        List<MemberRankSetting> memberRankSettings = memberRankSettingDao.selectBatchIds(memberRankIds);
+        if (CollectionUtils.isEmpty(memberRankSettings)) {
+            return new HashMap<>();
+        }
+        List<Integer> parentRankIds = memberRankSettings.stream().map(MemberRankSetting::getParentId).filter(parentId -> parentId != 0).collect(Collectors.toList());
+        List<MemberRankSetting> parentMemberRankSettings = memberRankSettingDao.selectBatchIds(parentRankIds);
+        Map<Integer, MemberRankSetting> memberRankSettingMap = memberRankSettings.stream().collect(Collectors.toMap(MemberRankSetting::getId, memberRankSetting -> memberRankSetting));
+        Map<Integer, MemberRankSetting> parentMemberRankSettingMap = parentMemberRankSettings.stream().collect(Collectors.toMap(MemberRankSetting::getId, memberRankSetting -> memberRankSetting));
+        Map<Integer, String> memberNameMap = new HashMap<>();
+        memberRankSettingMap.forEach((k, v) -> {
+            MemberRankSetting parentRank = parentMemberRankSettingMap.get(v.getParentId());
+            if (parentRank != null) {
+                memberNameMap.put(k, parentRank.getName() + "-" + v.getName());
+            } else {
+                memberNameMap.put(k, v.getName());
+            }
+        });
+        return memberNameMap;
+    }
 }

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

@@ -462,7 +462,8 @@
             tor.order_no_ as orderNo,
             tor.trans_no_ as transNo,
             tor.created_time_ as orderTime,
-            cto.pay_amount_ as amount
+            cto.pay_amount_ as amount,
+            cto.level_ as memberRankId
         FROM tenant_order_record tor
         LEFT JOIN cloud_teacher_order cto ON tor.id_ = cto.platform_order_id_
         LEFT JOIN student s ON cto.student_id_ = s.user_id_
@@ -475,6 +476,9 @@
             <if test="orderNo != null and orderNo != ''">
                 AND tor.order_no_ LIKE CONCAT('%', #{orderNo}, '%')
             </if>
+            <if test="memberRankId != null">
+                AND cto.level_ = #{memberRankId}
+            </if>
             <if test="startTime != null">
                 <![CDATA[ AND tor.created_time_ >= #{startTime} ]]>
             </if>