zouxuan 4 rokov pred
rodič
commit
2076cdb02a

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -242,6 +242,20 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * 清空学员会员
      */
     void cleanStudentMember();
+    /**
+     * 清空学员会员
+     */
+    void cleanExperienceStudentMember();
 
     void cleanMember(Integer userId);
+
+    /**
+     * 修改学员会员试用
+     * @param studentIds
+     * @param rankId
+     * @param endTime
+     */
+    int updateMemberExperience(@Param("studentIds") String studentIds,
+                                @Param("rankId") Integer rankId,
+                                @Param("endTime") Date endTime);
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Student.java

@@ -64,6 +64,12 @@ public class Student extends SysUser {
 	private Date membershipStartTime;
 	
 	private Date membershipEndTime;
+
+	private Integer experienceMemberRankSettingId;
+
+	private Date experienceMembershipStartTime;
+
+	private Date experienceMembershipEndTime;
 	
 	private String memberRankImg;
 
@@ -75,6 +81,30 @@ public class Student extends SysUser {
 		this.subjectIdList = subjectIdList;
 	}
 
+	public Integer getExperienceMemberRankSettingId() {
+		return experienceMemberRankSettingId;
+	}
+
+	public void setExperienceMemberRankSettingId(Integer experienceMemberRankSettingId) {
+		this.experienceMemberRankSettingId = experienceMemberRankSettingId;
+	}
+
+	public Date getExperienceMembershipStartTime() {
+		return experienceMembershipStartTime;
+	}
+
+	public void setExperienceMembershipStartTime(Date experienceMembershipStartTime) {
+		this.experienceMembershipStartTime = experienceMembershipStartTime;
+	}
+
+	public Date getExperienceMembershipEndTime() {
+		return experienceMembershipEndTime;
+	}
+
+	public void setExperienceMembershipEndTime(Date experienceMembershipEndTime) {
+		this.experienceMembershipEndTime = experienceMembershipEndTime;
+	}
+
 	public String getActivityCourseDetail() {
 		return activityCourseDetail;
 	}

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

@@ -6,6 +6,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
     SYSTEM_REMIND_EDUCATION_COURSE_TIME("SYSTEM_REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
     STUDENT_MEMBER_RENEW_MESSAGE("STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
+    PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE("PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE", "会员试用提醒"),
     SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE("SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
     PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE("PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
     STUDENT_MEMBER_RENEW_QUIT_MESSAGE("STUDENT_MEMBER_RENEW_QUIT_MESSAGE", "会员续费提醒"),

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import java.text.ParseException;
+import java.util.Date;
 import java.util.List;
 
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
@@ -87,4 +88,11 @@ public interface StudentService extends BaseService<Integer, Student> {
 
     void cleanMember(Integer userId);
 
+    /**
+     * 延长会员试用期
+     * @param studentIds
+     * @param rankId
+     * @param endTime
+     */
+    void updateMemberExperience(String studentIds, Integer rankId, Date endTime);
 }

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

@@ -219,6 +219,9 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     //会员结束前15天提醒学员续费(默认提前15天)
     String PUSH_MEMBER_RENEW = "push_member_renew";
 
+    //试用会员结束前3天提醒学员续费(默认提前3天)
+    String EXPERIENCE_PUSH_MEMBER_RENEW = "experience_push_member_renew";
+
     //会员结束前15天自动创建乐团续费(默认提前15天)
     String AUTO_CREATE_MEMBER_RENEW = "auto_create_member_renew";
 
@@ -239,6 +242,9 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     //乐团问卷调查编号
     String MUSIC_GROUP_TOPIC_ID = "music_group_topic_id";
 
+    //云教练试用时间最晚截止时间
+    String EXPERIENCE_MEMBERSHIP_END_TIME = "experience_membership_end_time";
+
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName

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

@@ -210,13 +210,13 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 			memberName = memberRankSetting.getName();
 		}
 		Date date = new Date();
-		//会员结束前15天提醒学员续
-		/*String pushMemberRenew = sysConfigDao.findConfigValue(SysConfigService.PUSH_MEMBER_RENEW);
-		if(StringUtils.isEmpty(pushMemberRenew)){
-			pushMemberRenew = "15";
-		}
-		List<Integer> studentIds = studentDao.queryPushMemberRenew(pushMemberRenew);
-		if(studentIds.size() > 0){
+		//试用会员结束3天提醒学员缴
+//		String experiencePushMemberRenew = sysConfigDao.findConfigValue(SysConfigService.EXPERIENCE_PUSH_MEMBER_RENEW);
+//		if(StringUtils.isEmpty(experiencePushMemberRenew)){
+//			experiencePushMemberRenew = "3";
+//		}
+//		List<Integer> studentIds = studentDao.queryPushMemberRenew(experiencePushMemberRenew);
+		/*if(studentIds.size() > 0){
 			Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIds,",")));
 			Map<Integer,String> userMap = new HashMap<>(studentIds.size());
 			Map<Integer,String> userMap1 = new HashMap<>(studentIds.size());

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

@@ -1043,6 +1043,8 @@ public class StudentServeServiceImpl implements StudentServeService {
     @Override
     public void cleanStudentMember() {
         studentDao.cleanStudentMember();
+        //试用会员清除
+        studentDao.cleanExperienceStudentMember();
     }
 
     @Override

+ 67 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -8,10 +8,13 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
 import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
 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.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -28,6 +31,8 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
 
     @Autowired
     private StudentDao studentDao;
+    @Autowired
+    private TeacherDao teacherDao;
 
     @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
@@ -41,6 +46,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Autowired
     private PracticeGroupDao practiceGroupDao;
 
+    @Autowired
+    private MemberRankSettingDao memberRankSettingDao;
+
+    @Autowired
+    private SysConfigDao sysConfigDao;
+    @Autowired
+    private SysMessageService sysMessageService;
+
     @Override
     public BaseDAO<Integer, Student> getDAO() {
         return studentDao;
@@ -362,4 +375,58 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     public void cleanMember(Integer userId) {
         studentDao.cleanMember(userId);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMemberExperience(String studentIds, Integer rankId, Date endTime) {
+        //会员是否存在
+        MemberRankSetting memberRankSetting = memberRankSettingDao.get(rankId);
+        if(memberRankSetting == null){
+            throw new BizException("会员信息不存在");
+        }
+        if(StringUtils.isEmpty(studentIds)){
+            throw new BizException("请选择学员");
+        }
+        //学员是否有会员
+        int memberNum = studentDao.getMemberNum(studentIds);
+        if(memberNum > 0){
+            throw new BizException("操作失败:所选部分学员已有会员权限");
+        }
+        //最多到10月1号
+        String configValue = sysConfigDao.findConfigValue(SysConfigService.EXPERIENCE_MEMBERSHIP_END_TIME);
+        if(StringUtils.isNotEmpty(configValue)){
+            Date date = DateUtil.stringToDate(configValue, DateUtil.ISO_EXPANDED_DATE_FORMAT);
+            int i = DateUtil.daysBetween(date, endTime);
+            if(i > 0){
+                throw new BizException("操作失败:会员试用期不可超过{}",configValue);
+            }
+        }
+
+        int i = studentDao.updateMemberExperience(studentIds, rankId, endTime);
+        List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+        if(studentIdList.size() == i){
+            Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(studentIds));
+            Map<Integer,String> userMap = new HashMap<>(studentIdList.size());
+            Map<Integer,String> userMap1 = new HashMap<>(studentIdList.size());
+            for (Integer studentId : studentIdList) {
+                userMap.put(studentId,studentPhoneMap.get(studentId));
+                userMap1.put(studentId,studentId.toString());
+            }
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
+                    MessageTypeEnum.PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE,
+                    userMap,
+                    null,
+                    0,
+                    null,
+                    null);
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+                    MessageTypeEnum.PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE,
+                    userMap1,
+                    null,
+                    0,
+                    null,
+                    "STUDENT");
+        }
+    }
 }

+ 12 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -755,6 +755,7 @@
     <select id="getMemberNum" resultType="int">
         SELECT COUNT(0) FROM student WHERE member_rank_setting_id_ IS NOT NULL AND FIND_IN_SET(user_id_,#{studentIdsStr})
     </select>
+
     <select id="queryPushMemberRenew" resultType="java.lang.Integer">
         SELECT s.user_id_ FROM student s
         LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_ AND cto.status_ IN (1,2)
@@ -780,8 +781,19 @@
         UPDATE student SET member_rank_setting_id_ = NULL,membership_start_time_ = NULL,membership_end_time_ = NULL
         WHERE DATEDIFF(NOW(),membership_end_time_) > 0
     </update>
+    <update id="cleanExperienceStudentMember">
+        UPDATE student SET experience_member_rank_setting_id_ = NULL,experience_membership_start_time_ = NULL,experience_membership_end_time_ = NULL
+        WHERE DATEDIFF(NOW(),experience_membership_end_time_) > 0
+    </update>
     <update id="cleanMember">
         UPDATE student SET member_rank_setting_id_ = NULL,membership_start_time_ = NULL,membership_end_time_ = NULL
         WHERE user_id_ = #{userId}
     </update>
+    <update id="updateMemberExperience">
+        UPDATE student SET
+        member_rank_setting_id_ = #{rankId},membership_start_time_ = NOW(),membership_end_time_ = #{endTime},
+        experience_member_rank_setting_id_ = #{rankId},experience_membership_start_time_ = NOW(),experience_membership_end_time_ = #{endTime}
+        WHERE member_rank_setting_id_ IS NULL AND experience_member_rank_setting_id_ IS NULL
+        AND FIND_IN_SET(user_id_,#{studentIds})
+    </update>
 </mapper>

+ 12 - 1
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.enums.SuggestionType;
+import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -179,7 +180,17 @@ public class StudentManageController extends BaseController {
 		} else {
 			datas.put("homeworkOpenFlag", Integer.parseInt(sysConfig.getParanValue()));
 		}
-
+        //是否是试用会员
+		if(student.getExperienceMemberRankSettingId() == null){
+            datas.put("isExperience", 0);
+        }else {
+            int i = DateUtil.daysBetween(student.getExperienceMembershipEndTime(),student.getMembershipEndTime());
+            if(i > 0){
+                datas.put("isExperience", 0);
+            }else {
+                datas.put("isExperience", 1);
+            }
+        }
 		return succeed(datas);
 	}
 

+ 9 - 4
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -24,10 +24,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Api(tags = "学生管理")
 @RestController
@@ -382,6 +379,14 @@ public class StudentManageController extends BaseController {
         return succeed(studentManageService.getOperatingStudents(queryInfo));
     }
 
+    @ApiOperation(value = "新增会员试用")
+    @PostMapping("/updateMemberExperience")
+    @PreAuthorize("@pcs.hasPermissions('studentManage/updateMemberExperience')")
+    public HttpResponseResult updateMemberExperience(String studentIds, Integer rankId, Date endTime){
+        studentService.updateMemberExperience(studentIds,rankId,endTime);
+        return succeed();
+    }
+
     @ApiOperation(value = "初始化教师编号")
     @GetMapping("/initTeacherId")
     @PreAuthorize("@pcs.hasPermissions('studentManage/initTeacherId')")