浏览代码

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

zouxuan 5 年之前
父节点
当前提交
c33f32bf6b

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

@@ -147,4 +147,26 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
      */
     List<PracticeGroup> findUserStatusPracticeGroups(@Param("userId") Integer userId,
                                                      @Param("groupStatus")GroupStatusEnum groupStatusEnum);
+
+    /**
+     * @describe 获取用户指定日期的未成功订单
+     * @author Joburgess
+     * @date 2020/3/2
+     * @param userId:
+     * @param date:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.PracticeGroup>
+     */
+    List<PracticeGroup> findUserLockPracticeGroupWithDate(@Param("userId") Integer userId,
+                                                          @Param("date") Date date);
+
+    /**
+     * @describe 获取用户指定日期及之前的未成功订单
+     * @author Joburgess
+     * @date 2020/3/2
+     * @param userId:
+     * @param date:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.PracticeGroup>
+     */
+    List<PracticeGroup> findUserLockPracticeGroupWithDateBefore(@Param("userId") Integer userId,
+                                                                @Param("date") Date date);
 }

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

@@ -231,7 +231,7 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	 * @param userId:
 	 * @return java.util.Map<java.lang.String,java.lang.Object>
 	 */
-	Map<String, Object> checkExistWaitPayOrder(Integer userId);
+	Map<String, Object> checkExistWaitPayOrder(Integer userId, Long groupId);
 
 	/**
 	 * @describe 取消待支付的订单

+ 14 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -379,7 +379,20 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         params.put("vipGroupStatus", null);
         List<Group> groups = groupDao.searchGroups(params);
         if(!CollectionUtils.isEmpty(groups)){
-            params.put("groups", groups);
+            Map<GroupType, List<Group>> groupTypeGroupsMap = groups.stream().collect(Collectors.groupingBy(Group::getGroupType));
+            List<Integer> classGroupIds=new ArrayList<>();
+            for (Map.Entry<GroupType, List<Group>> groupTypeListEntry : groupTypeGroupsMap.entrySet()) {
+                List<String> groupIds = groupTypeListEntry.getValue().stream().map(Group::getId).collect(Collectors.toList());
+                List<ClassGroup> classGroups = classGroupDao.findByMusicGroupsAndType(groupIds, groupTypeListEntry.getKey().getCode());
+                if(!CollectionUtils.isEmpty(classGroups)){
+                    List<Integer> tempClassGroupIds=classGroups.stream().map(ClassGroup::getId).collect(Collectors.toList());
+                    classGroupIds.addAll(tempClassGroupIds);
+                }
+            }
+            if(CollectionUtils.isEmpty(classGroupIds)){
+                return pageInfo;
+            }
+            params.put("classGroupIds", classGroupIds);
         }else{
             return pageInfo;
         }

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

@@ -3321,9 +3321,23 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     }
 
     @Override
-    public Map<String, Object> checkExistWaitPayOrder(Integer userId) {
-        List<PracticeGroup> userLockGroups = practiceGroupDao.findUserStatusPracticeGroups(userId, GroupStatusEnum.LOCK);
+    public Map<String, Object> checkExistWaitPayOrder(Integer userId, Long groupId) {
+        List<PracticeGroup> userLockGroups;
         Map<String, Object> result=new HashMap<>();
+        if(Objects.nonNull(groupId)){
+            PracticeGroup practiceGroup = practiceGroupDao.get(groupId);
+            if(Objects.isNull(practiceGroup)||!practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)||Objects.isNull(practiceGroup.getBuyMonths())){
+                result.put("existWaitPayOrder",0);
+                return result;
+            }
+            Date date = DateUtil.addSeconds(practiceGroup.getCoursesExpireDate(), 1);
+            userLockGroups=practiceGroupDao.findUserLockPracticeGroupWithDate(userId,date);
+        }else{
+            LocalDate localDate=LocalDate.now();
+            localDate=localDate.plusDays(1);
+            Date date = Date.from(localDate.atStartOfDay(DateUtil.zoneId).toInstant());
+            userLockGroups=practiceGroupDao.findUserLockPracticeGroupWithDateBefore(userId, date);
+        }
         if(!CollectionUtils.isEmpty(userLockGroups)){
             result.put("existWaitPayOrder",1);
             result.put("groupId", userLockGroups.get(0).getId());

+ 43 - 42
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -876,6 +876,45 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
 		BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
 
+		if(Objects.isNull(vipGroupActivity.getType())){
+			throw new BizException("此活动未设置活动类型");
+		}
+
+		//课程购买费用计算
+		BigDecimal totalPrice;
+		switch (vipGroupActivity.getType()){
+			case BASE_ACTIVITY:
+				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
+				break;
+			case DISCOUNT:
+				BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1());
+				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
+				totalPrice=totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
+				break;
+			case GIVE_CLASS:
+				if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))<0){
+
+				}else if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
+					if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
+						offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+					}
+					offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
+				}else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){
+					if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
+						onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+					}
+					onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
+				}else{
+					throw new BizException("请指定赠送课程类型!");
+				}
+				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
+				break;
+			default:
+				throw new BizException("活动类型错误!");
+		}
+		totalPrice=totalPrice.setScale(0,BigDecimal.ROUND_CEILING);
+		results.put("totalPrice",totalPrice);
+
 		//教师课酬线上单课酬计算
 		if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
 			if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
@@ -895,7 +934,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
 						break;
 					case RATIO_DISCOUNT:
-						results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
+//						results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
+						results.put("onlineTeacherSalary",totalPrice.divide(totalClassNum, RoundingMode.HALF_UP).multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
 						break;
 					case FIXED_SALARY:
 						results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
@@ -924,11 +964,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						}else{
 							teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
 						}
-//                        teacherOfflineSalary=teacherOfflineSalary.multiply(classTimeDuty);
 						results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
 						break;
 					case RATIO_DISCOUNT:
-						results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
+//						results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
+						results.put("offlineTeacherSalary",totalPrice.divide(totalClassNum, RoundingMode.HALF_UP).multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
 						break;
 					case FIXED_SALARY:
 						results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
@@ -941,45 +981,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			results.put("offlineTeacherSalary", new BigDecimal(0));
 		}
 
-		if(Objects.isNull(vipGroupActivity.getType())){
-			throw new BizException("此活动未设置活动类型");
-		}
-
-		if(computeTotalPrice){
-			//课程购买费用计算
-			BigDecimal totalPrice;
-			switch (vipGroupActivity.getType()){
-				case BASE_ACTIVITY:
-					totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
-					break;
-				case DISCOUNT:
-					BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1());
-					totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
-					totalPrice=totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
-					break;
-				case GIVE_CLASS:
-					if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))<0){
-
-					}else if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
-						if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
-							offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
-						}
-						offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
-					}else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){
-						if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
-							onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
-						}
-						onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
-					}else{
-						throw new BizException("请指定赠送课程类型!");
-					}
-					totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
-					break;
-				default:
-					throw new BizException("活动类型错误!");
-			}
-			results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
-		}
         return results;
     }
 

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

@@ -482,10 +482,10 @@
         LEFT JOIN school s ON cs.schoole_id_=s.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        <if test="groups != null and organIdList!=null">
-            AND cs.music_group_id_ IN
-            <foreach collection="groups" item="group" open="(" close=")" separator=",">
-                #{group.id}
+        <if test="classGroupIds != null and organIdList!=null">
+            AND cs.class_group_id_ IN
+            <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+                #{classGroupId}
             </foreach>
         </if>
         AND cs.id_ IS NOT NULL
@@ -512,10 +512,10 @@
         <if test="type!=null">
             AND cg.group_type_ = #{type}
         </if>
-        <if test="groups != null and organIdList!=null">
-            AND cs.music_group_id_ IN
-            <foreach collection="groups" item="group" open="(" close=")" separator=",">
-                #{group.id}
+        <if test="classGroupIds != null and organIdList!=null">
+            AND cs.class_group_id_ IN
+            <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+                #{classGroupId}
             </foreach>
         </if>
         <if test="musicGroupId!=null">

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

@@ -42,6 +42,17 @@
         </where>
     </sql>
 
+    <sql id="searchPracticeGroupsCondition">
+        <where>
+            <if test="search!=null">
+                AND (g.id_ = #{search} OR g.name_ LIKE CONCAT( '%', #{search}, '%' ))
+            </if>
+            <if test="organIdList!=null">
+                AND FIND_IN_SET(g.organ_id_,#{organIdList})
+            </if>
+        </where>
+    </sql>
+
     <delete id="deleteGroup">
         DELETE FROM
         <if test="groupType!=null and groupType=='MUSIC'.toString()">
@@ -65,7 +76,12 @@
         ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'VIP' group_type_
         FROM vip_group g
         LEFT JOIN organization o ON g.organ_id_ = o.id_
-        <include refid="searchVipGroupsCondition"/> );
+        <include refid="searchVipGroupsCondition"/> )
+        UNION
+        ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'PRACTICE' group_type_
+        FROM practice_group g
+        LEFT JOIN organization o ON g.organ_id_ = o.id_
+        <include refid="searchPracticeGroupsCondition"/> );
     </select>
     <select id="findByGroupIds" resultMap="Group">
       ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'MUSIC' group_type_

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

@@ -187,4 +187,10 @@
 	<select id="findUserStatusPracticeGroups" resultMap="PracticeGroup">
 		SELECT * FROM practice_group WHERE  student_id_=#{userId} AND group_status_=#{groupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
+    <select id="findUserLockPracticeGroupWithDate" resultMap="PracticeGroup">
+		SELECT * FROM practice_group WHERE student_id_=#{userId} AND courses_start_date_=#{date} AND group_status_='LOCK'
+    </select>
+	<select id="findUserLockPracticeGroupWithDateBefore" resultMap="PracticeGroup">
+		SELECT * FROM practice_group WHERE student_id_=#{userId} AND courses_start_date_&lt;=#{date} AND group_status_='LOCK'
+	</select>
 </mapper>

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

@@ -261,12 +261,12 @@ public class PracticeGroupController extends BaseController {
 
     @ApiOperation("检测用户是否存在待支付的课程组订单")
     @GetMapping(value = "/checkExistWaitPayOrder")
-    public HttpResponseResult checkExistWaitPayOrder(){
+    public HttpResponseResult checkExistWaitPayOrder(Long groupId){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return succeed(practiceGroupService.checkExistWaitPayOrder(sysUser.getId()));
+        return succeed(practiceGroupService.checkExistWaitPayOrder(sysUser.getId(),groupId));
     }
 
     @ApiOperation("取消待支付的订单")

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

@@ -147,7 +147,7 @@ public class TaskController extends BaseController {
 	//练习报告定时推送
 	@GetMapping("/pushStudyReport")
 	public void pushStudyReport(){
-		practiceGroupService.pushStudyReport(null, "ALL");
+		practiceGroupService.pushStudyReport(null, "JIGUANG");
 	}
 
 }