소스 검색

1、陪练课调整
2、付费陪练课可预约时间调整

Joburgess 5 년 전
부모
커밋
8cd8b9f8a5

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

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.PracticeCourseDto;
 import com.ym.mec.biz.dal.dto.PracticeGroupDto;
 import com.ym.mec.biz.dal.entity.PracticeGroup;
+import com.ym.mec.biz.dal.enums.GroupStatusEnum;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -137,4 +138,13 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
      */
     PracticeGroup lockPracticeGroup(@Param("groupId") Integer groupId);
 
+    /**
+     * @describe 获取用户指定状态的陪练课程组
+     * @author Joburgess
+     * @date 2020/2/26
+     * @param userId:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.PracticeGroup>
+     */
+    List<PracticeGroup> findUserStatusPracticeGroups(@Param("userId") Integer userId,
+                                                     @Param("groupStatus")GroupStatusEnum groupStatusEnum);
 }

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

@@ -223,4 +223,23 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	 * @return void
 	 */
 	void updateHistoryPracticeGroupStatus();
+
+	/**
+	 * @describe 获取用户待支付的课程组订单
+	 * @author Joburgess
+	 * @date 2020/2/26
+	 * @param userId:
+	 * @return java.util.Map<java.lang.String,java.lang.Object>
+	 */
+	Map<String, Object> checkExistWaitPayOrder(Integer userId);
+
+	/**
+	 * @describe 取消待支付的订单
+	 * @author Joburgess
+	 * @date 2020/2/26
+	 * @param userId: 用户编号
+	 * @param groupId:
+	 * @return void
+	 */
+	HttpResponseResult cancelWaitPayOrder(Integer userId, Integer groupId);
 }

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

@@ -3052,6 +3052,10 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         sysUserCashAccountDetailService.insert(sysUserExpendCashAccountDetail);
 
         PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
+        if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.CANCEL)){
+            order.setMemo("支付成功,在重新支付时,用户选择取消");
+            studentPaymentOrderDao.update(order);
+        }
         ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(order.getMusicGroupId(), GroupType.PRACTICE.getCode());
 
         practiceGroup.setGroupStatus(GroupStatusEnum.NORMAL);
@@ -3060,7 +3064,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("陪练课[{}]购买协议错误:{}",order.getMusicGroupId(),e.getMessage(),e.getMessage());
         }
 
         Teacher teacher = teacherService.getDetail(practiceGroup.getUserId());
@@ -3261,4 +3265,32 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             practiceGroupDao.batchUpdate(needUpdateGroups);
         }
     }
+
+    @Override
+    public Map<String, Object> checkExistWaitPayOrder(Integer userId) {
+        List<PracticeGroup> userLockGroups = practiceGroupDao.findUserStatusPracticeGroups(userId, GroupStatusEnum.LOCK);
+        Map<String, Object> result=new HashMap<>();
+        if(!CollectionUtils.isEmpty(userLockGroups)){
+            result.put("existWaitPayOrder",1);
+            result.put("groupId", userLockGroups.get(0).getId());
+        }else{
+            result.put("existWaitPayOrder",0);
+        }
+        return result;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+    public HttpResponseResult cancelWaitPayOrder(Integer userId, Integer groupId) {
+        PracticeGroup practiceGroup = practiceGroupDao.get(groupId.longValue());
+        if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.LOCK)){
+            groupService.deleteGroupOtherInfo(groupId.toString(),GroupType.PRACTICE);
+            practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);
+        }else if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)){
+            return BaseController.failed(HttpStatus.CREATED, "该订单已经支付成功");
+        }else if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.CANCEL)){
+            return BaseController.failed(HttpStatus.FAILED_DEPENDENCY, "该课程组已失效,请重新购买");
+        }
+        return BaseController.succeed();
+    }
 }

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

@@ -184,4 +184,7 @@
 	<select id="lockPracticeGroup" resultMap="PracticeGroup">
 		SELECT * FROM practice_group WHERE id_ = #{groupId} FOR UPDATE
 	</select>
+	<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>
 </mapper>

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

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