浏览代码

Merge remote-tracking branch 'origin/system_fee' into system_fee

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
zouxuan 4 年之前
父节点
当前提交
29aae7050e
共有 17 个文件被更改,包括 325 次插入34 次删除
  1. 11 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java
  2. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  3. 38 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CloudTeacherOrderDto.java
  4. 18 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupSubjectGoodsAndInfoDto.java
  5. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderDetail.java
  7. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudTeacherOrderQueryInfo.java
  8. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java
  9. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
  10. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  11. 49 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  12. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  13. 21 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  14. 7 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  15. 48 4
      mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
  16. 16 0
      mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java
  17. 16 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

+ 11 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -1,11 +1,12 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
-import com.ym.mec.common.dal.BaseDAO;
+import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
+import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
+import com.ym.mec.common.dal.BaseDAO;
 
 public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
 	
@@ -39,4 +40,11 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
      * @return
      */
     CloudTeacherOrder getStudentCloudTeacherOrder(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
+    
+    /**
+     * 根据订单编号查询订单详情
+     * @param orderId
+     * @return
+     */
+    CloudTeacherOrderDto queryOrderInfoByOrderId(Long orderId);
 }

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

@@ -18,7 +18,7 @@ import java.util.Set;
 public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Student> {
 	
 	Student getLocked(Integer userId);
-
+	
     int lockUser(@Param("userId") Integer userId);
 
     List<Student> findByStudentIds(@Param("studentIds") List<Integer> studentIds);

+ 38 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CloudTeacherOrderDto.java

@@ -0,0 +1,38 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
+import com.ym.mec.biz.dal.entity.MemberRankSetting;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+
+public class CloudTeacherOrderDto {
+
+	private CloudTeacherOrder cloudTeacherOrder;
+	
+	private StudentPaymentOrder studentPaymentOrder;
+	
+	private MemberRankSetting memberRankSetting;
+
+	public CloudTeacherOrder getCloudTeacherOrder() {
+		return cloudTeacherOrder;
+	}
+
+	public void setCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder) {
+		this.cloudTeacherOrder = cloudTeacherOrder;
+	}
+
+	public StudentPaymentOrder getStudentPaymentOrder() {
+		return studentPaymentOrder;
+	}
+
+	public void setStudentPaymentOrder(StudentPaymentOrder studentPaymentOrder) {
+		this.studentPaymentOrder = studentPaymentOrder;
+	}
+
+	public MemberRankSetting getMemberRankSetting() {
+		return memberRankSetting;
+	}
+
+	public void setMemberRankSetting(MemberRankSetting memberRankSetting) {
+		this.memberRankSetting = memberRankSetting;
+	}
+}

+ 18 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupSubjectGoodsAndInfoDto.java

@@ -1,12 +1,18 @@
 package com.ym.mec.biz.dal.dto;
 
-import com.ym.mec.biz.dal.entity.*;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MemberPrivilegesItem;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+
 /**
  * 乐团报名缴费相关信息
  */
@@ -38,6 +44,9 @@ public class MusicGroupSubjectGoodsAndInfoDto {
 
     @ApiModelProperty(value = "乐团云教练+价格",required = false)
     private BigDecimal cloudTeacherPlusFee;
+    
+    @ApiModelProperty(value = "会员权益",required = false)
+    private List<MemberPrivilegesItem> memberPrivilegesItemList;
 
     public Map getCourseScheduleInfo() {
         return CourseScheduleInfo;
@@ -110,4 +119,12 @@ public class MusicGroupSubjectGoodsAndInfoDto {
     public void setCloudTeacherPlusFee(BigDecimal cloudTeacherPlusFee) {
         this.cloudTeacherPlusFee = cloudTeacherPlusFee;
     }
+
+	public List<MemberPrivilegesItem> getMemberPrivilegesItemList() {
+		return memberPrivilegesItemList;
+	}
+
+	public void setMemberPrivilegesItemList(List<MemberPrivilegesItem> memberPrivilegesItemList) {
+		this.memberPrivilegesItemList = memberPrivilegesItemList;
+	}
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java

@@ -102,6 +102,8 @@ public class CloudTeacherOrder {
     private Date updateTime;
 
     private String musicGroupId;
+    
+    private StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 
     public Long getId() {
         return id;
@@ -251,4 +253,12 @@ public class CloudTeacherOrder {
     public void setMusicGroupId(String musicGroupId) {
         this.musicGroupId = musicGroupId;
     }
+
+	public StudentPaymentOrder getStudentPaymentOrder() {
+		return studentPaymentOrder;
+	}
+
+	public void setStudentPaymentOrder(StudentPaymentOrder studentPaymentOrder) {
+		this.studentPaymentOrder = studentPaymentOrder;
+	}
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderDetail.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 
@@ -59,6 +60,8 @@ public class StudentPaymentOrderDetail {
 
 	@ApiModelProperty(value = "子商品列表",required = false)
 	private List<Goods> childGoodsList;
+	
+	private CloudTeacherOrderDto cloudTeacherOrderDto;
 
 	public void setId(Long id){
 		this.id = id;
@@ -176,4 +179,12 @@ public class StudentPaymentOrderDetail {
 	public void setIsRenew(Integer isRenew) {
 		this.isRenew = isRenew;
 	}
+
+	public CloudTeacherOrderDto getCloudTeacherOrderDto() {
+		return cloudTeacherOrderDto;
+	}
+
+	public void setCloudTeacherOrderDto(CloudTeacherOrderDto cloudTeacherOrderDto) {
+		this.cloudTeacherOrderDto = cloudTeacherOrderDto;
+	}
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudTeacherOrderQueryInfo.java

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.dal.page;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class CloudTeacherOrderQueryInfo extends QueryInfo {
+
+	@ApiModelProperty(value = "交易状态(0-待生效 1-生效中 2-已生效 3-已退)", required = false)
+	private Integer status;
+
+	@ApiModelProperty(value = "学生编号", required = false)
+	private Integer studentId;
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public Integer getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(Integer studentId) {
+		this.studentId = studentId;
+	}
+}

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
 import com.ym.mec.biz.dal.entity.CloudTeacher;
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -68,5 +69,12 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
 	 * @return
 	 */
 	CloudTeacherOrder queryByOrderId(Long orderId);
+    
+    /**
+     * 根据订单编号查询订单详情
+     * @param orderId
+     * @return
+     */
+    CloudTeacherOrderDto queryOrderInfoByOrderId(Long orderId);
 
 }

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

@@ -86,4 +86,6 @@ public interface StudentService extends BaseService<Integer, Student> {
     void updateStudentServiceTag(Integer studentId,List<Integer> studentIds,Integer serviceTag);
 
     List<String> getStudentNames(List<Integer> studentIdList);
+
+    Student getLocked(Integer userId);
 }

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

@@ -1,9 +1,12 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.service.CloudTeacherOrderService;
+import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -28,6 +31,9 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     private CourseScheduleDao courseScheduleDao;
     @Autowired
     private CloudTeacherDao cloudTeacherDao;
+    
+    @Autowired
+    private StudentService studentService;
 
 
     @Override
@@ -80,6 +86,25 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         Date startTime = null;
         Date endTime = null;
         Date endBaseTime = null;
+        
+        PeriodEnum periodEnum = PeriodEnum.MONTH;
+		switch (cloudTeacherOrder.getType()) {
+		case 1:
+			periodEnum = PeriodEnum.DAY;
+			break;
+		case 2:
+			periodEnum = PeriodEnum.MONTH;
+			break;
+		case 3:
+			periodEnum = PeriodEnum.YEAR;
+			break;
+
+		default:
+			break;
+		}
+        //更新student表信息
+        studentService.updateMemberRank(cloudTeacherOrder.getStudentId(), cloudTeacherOrder.getLevel(), periodEnum, cloudTeacherOrder.getTime());
+        
         if (cloudTeacher == null) {
             cloudTeacher = new CloudTeacher();
             startTime = DateUtil.trunc(nowDate);
@@ -172,4 +197,9 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
 	public CloudTeacherOrder queryByOrderId(Long orderId) {
 		return cloudTeacherOrderDao.queryByOrderId(orderId);
 	}
+
+	@Override
+	public CloudTeacherOrderDto queryOrderInfoByOrderId(Long orderId) {
+		return cloudTeacherOrderDao.queryOrderInfoByOrderId(orderId);
+	}
 }

+ 49 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -40,7 +40,9 @@ import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.date.DateUtil;
 
 @Service
 public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, MemberRankSetting> implements MemberRankSettingService {
@@ -74,6 +76,9 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 	@Autowired
 	private CloudTeacherOrderService cloudTeacherOrderService;
 
+	@Autowired
+	private IdGeneratorService idGeneratorService;
+
 	private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
 	@Override
@@ -221,8 +226,12 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 				}
 			}
 		}
-
-		Map result = studentPaymentOrderService.createOrder(studentPaymentOrder, null, "BUY_MEMBER");
+		String orderNo = idGeneratorService.generatorId("payment") + "";
+		studentPaymentOrder.setOrderNo(orderNo);
+		studentPaymentOrder.setCreateTime(date);
+		studentPaymentOrder.setUpdateTime(date);
+		studentPaymentOrder.setVersion(0);
+		studentPaymentOrderService.insert(studentPaymentOrder);
 
 		// 订单明细
 		cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
@@ -231,11 +240,11 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
 		cloudTeacherOrder.setStatus(0);
 		cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
+		cloudTeacherOrder.setCreateTime(date);
+		cloudTeacherOrder.setUpdateTime(date);
 		cloudTeacherOrderService.insert(cloudTeacherOrder);
 
-		if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
-			orderCallback(studentPaymentOrder);
-		}
+		Map result = studentPaymentOrderService.createOrder(studentPaymentOrder, null, "BUY_MEMBER");
 
 		return result;
 	}
@@ -243,15 +252,18 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 	@Override
 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 	public boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
+
+		Integer userId = studentPaymentOrder.getUserId();
+
+		Student student = studentService.getLocked(userId);
+		if (student == null) {
+			throw new BizException("学员信息不存在");
+		}
+		
 		Date nowDate = new Date();
 		// 更新订单信息
 		studentPaymentOrder.setUpdateTime(nowDate);
-		int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
-		if (updateCount <= 0) {
-			throw new BizException("订单更新失败");
-		}
-
-		Integer userId = studentPaymentOrder.getUserId();
+		studentPaymentOrderService.update(studentPaymentOrder);
 
 		if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
 
@@ -267,9 +279,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
 			// 查询会员订单信息
 			CloudTeacherOrder cloudTeacherOrder = cloudTeacherOrderService.queryByOrderId(studentPaymentOrder.getId());
-			cloudTeacherOrder.setStatus(1);
+			cloudTeacherOrder.setStatus(2);
 			cloudTeacherOrder.setUpdateTime(nowDate);
-			cloudTeacherOrderService.update(cloudTeacherOrder);
 
 			PeriodEnum periodEnum = PeriodEnum.MONTH;
 			switch (cloudTeacherOrder.getType()) {
@@ -287,6 +298,31 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 				break;
 			}
 
+			if (student.getMemberRankSettingId() == null || nowDate.after(student.getMembershipEndTime())) {
+				cloudTeacherOrder.setStartTime(nowDate);
+				if (cloudTeacherOrder.getType() == 1) {
+					cloudTeacherOrder.setEndTime(DateUtil.addDays(nowDate, cloudTeacherOrder.getTime()));
+				} else if (cloudTeacherOrder.getType() == 2) {
+					cloudTeacherOrder.setEndTime(DateUtil.addMonths(nowDate, cloudTeacherOrder.getTime()));
+				} else if (cloudTeacherOrder.getType() == 3) {
+					cloudTeacherOrder.setEndTime(DateUtil.addYears(nowDate, cloudTeacherOrder.getTime()));
+				} else {
+					throw new BizException("不支持的周期类型");
+				}
+			} else {
+				cloudTeacherOrder.setStartTime(DateUtil.addDays(student.getMembershipEndTime(), 1));
+				if (cloudTeacherOrder.getType() == 1) {
+					cloudTeacherOrder.setEndTime(DateUtil.addDays(student.getMembershipEndTime(), cloudTeacherOrder.getTime()));
+				} else if (cloudTeacherOrder.getType() == 2) {
+					cloudTeacherOrder.setEndTime(DateUtil.addMonths(student.getMembershipEndTime(), cloudTeacherOrder.getTime()));
+				} else if (cloudTeacherOrder.getType() == 3) {
+					cloudTeacherOrder.setEndTime(DateUtil.addYears(student.getMembershipEndTime(), cloudTeacherOrder.getTime()));
+				} else {
+					throw new BizException("不支持的周期类型");
+				}
+			}
+
+			cloudTeacherOrderService.update(cloudTeacherOrder);
 			// 添加会员有效时长
 			studentService.updateMemberRank(userId, Integer.parseInt(studentPaymentOrder.getMusicGroupId()), periodEnum, cloudTeacherOrder.getTime());
 

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.MusicGroupGoodsAndDiscountDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,6 +19,7 @@ import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dto.MusicGroupRegRespDto;
 import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.MemberRankPrivilegesService;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
 import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
@@ -60,6 +62,9 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     @Autowired
     private OrganizationCloudTeacherFeeDao organizationCloudTeacherFeeDao;
 
+	@Autowired
+	private MemberRankPrivilegesService memberRankPrivilegesService;
+
     @Override
     public BaseDAO<Integer, MusicGroupSubjectPlan> getDAO() {
         return musicGroupSubjectPlanDao;
@@ -127,10 +132,13 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         musicGroupSubjectGoodsAndInfo.setMusicGroupPaymentCalender(musicGroupRegCalender);
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
         musicGroupSubjectGoodsAndInfo.setMusicGroup(musicGroup);
-        if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE) || musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
+        if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.MEMBER_FEE)) {
             OrganizationCloudTeacherFee cloudTeacherFee = organizationCloudTeacherFeeDao.getByOrganId(musicGroup.getOrganId());
             musicGroupSubjectGoodsAndInfo.setCloudTeacherFee(cloudTeacherFee.getPrice());
             musicGroupSubjectGoodsAndInfo.setCloudTeacherPlusFee(cloudTeacherFee.getPlusPrice());
+            if(musicGroupRegCalender != null) {
+            	musicGroupSubjectGoodsAndInfo.setMemberPrivilegesItemList(memberRankPrivilegesService.queryByMemberRankId(musicGroupRegCalender.getMemberRankSettingId()));
+            }
         }
         return musicGroupSubjectGoodsAndInfo;
     }

+ 21 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -41,6 +41,7 @@ import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.page.SporadicOrderQueryInfo;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.biz.service.ChildrenDayReserveService;
+import com.ym.mec.biz.service.CloudTeacherOrderService;
 import com.ym.mec.biz.service.DegreeRegistrationService;
 import com.ym.mec.biz.service.MemberRankSettingService;
 import com.ym.mec.biz.service.MusicGroupService;
@@ -124,6 +125,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private PayService payService;
     @Autowired
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
+    
+    @Autowired
+    private CloudTeacherOrderService cloudTeacherOrderService;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -143,15 +147,19 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 			throw new BizException("支付金额不正确,请重试");
 		}
 
-		String orderNo = idGeneratorService.generatorId("payment") + "";
-
 		Date date = new Date();
-		studentPaymentOrder.setOrderNo(orderNo);
-		studentPaymentOrder.setCreateTime(date);
 		studentPaymentOrder.setUpdateTime(date);
-		studentPaymentOrder.setVersion(0);
-
-		insert(studentPaymentOrder);
+		
+		StudentPaymentOrder orignStudentPaymentOrder = get(studentPaymentOrder.getId());
+		if(orignStudentPaymentOrder == null){
+
+			String orderNo = idGeneratorService.generatorId("payment") + "";
+			studentPaymentOrder.setOrderNo(orderNo);
+			studentPaymentOrder.setCreateTime(date);
+			studentPaymentOrder.setUpdateTime(date);
+			studentPaymentOrder.setVersion(0);
+			insert(studentPaymentOrder);
+		}
 		
 		if(details != null && details.size() > 0){
 			for(StudentPaymentOrderDetail spod : details){
@@ -169,9 +177,10 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
             studentPaymentOrder.setRoutingOrganId(studentPaymentOrder.getOrganId());
             studentPaymentOrder.setUpdateTime(date);
+            studentPaymentOrder.setPayTime(date);
             update(studentPaymentOrder);
             
-			studentPaymentRouteOrderService.addRouteOrder(orderNo, studentPaymentOrder.getOrganId(), balance);
+			studentPaymentRouteOrderService.addRouteOrder(studentPaymentOrder.getOrderNo(), studentPaymentOrder.getOrganId(), balance);
 			
 			callOrderCallBack(studentPaymentOrder);
 			
@@ -184,7 +193,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 			return notifyMap;
 		}
 
-		Map<String, Object> payMap = payService.getPayMap(cashAmount, balance, orderNo, baseApiUrl + "/api-student/studentOrder/notify", baseApiUrl
+		Map<String, Object> payMap = payService.getPayMap(cashAmount, balance, studentPaymentOrder.getOrderNo(), baseApiUrl + "/api-student/studentOrder/notify", baseApiUrl
 				+ "/api-student/studentOrder/paymentResult?orderNo=" + studentPaymentOrder.getOrderNo(), studentPaymentOrder.getMemo(), studentPaymentOrder.getMemo(), studentPaymentOrder.getOrganId(), payReceiver);
 
 		studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
@@ -639,6 +648,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 if (StringUtils.isNotBlank(childGoodIds)) {
                     studentPaymentOrderDetail.setChildGoodsList(goodsDao.findGoodsByIds(childGoodIds));
                 }
+                if(studentPaymentOrderDetail.getType() == OrderDetailTypeEnum.CLOUD_TEACHER ||studentPaymentOrderDetail.getType() == OrderDetailTypeEnum.CLOUD_TEACHER_PLUS){
+                	studentPaymentOrderDetail.setCloudTeacherOrderDto(cloudTeacherOrderService.queryOrderInfoByOrderId(studentPaymentOrderDetail.getPaymentOrderId()));
+                }
             }
         }
         return orders;

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

@@ -307,14 +307,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         } else {
         	switch (periodEnum) {
     		case DAY:
-            	student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
+            	student.setMembershipEndTime(DateUtil.addDays(student.getMembershipEndTime(), quantityPerPeriod));
     			break;
     		case MONTH:
     		case YEAR_HALF:
             	student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
     			break;
     		case YEAR:
-            	student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), quantityPerPeriod));
+            	student.setMembershipEndTime(DateUtil.addYears(student.getMembershipEndTime(), quantityPerPeriod));
     			break;
 
     		default:
@@ -381,4 +381,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     public List<String> getStudentNames(List<Integer> studentIdList) {
         return studentDao.getStudentNames(studentIdList);
     }
+
+	@Override
+	public Student getLocked(Integer userId) {
+		return studentDao.getLocked(userId);
+	}
 }

+ 48 - 4
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -22,6 +22,25 @@
         <result column="update_time_" property="updateTime"/>
         <result column="music_group_id_" property="musicGroupId"/>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.dto.CloudTeacherOrderDto" id="CloudTeacherOrderDto">
+    	<id column="id_" property="cloudTeacherOrder.id"/>
+        <result column="organ_id_" property="cloudTeacherOrder.organId"/>
+        <result column="student_id_" property="cloudTeacherOrder.studentId"/>
+        <result column="type_" property="cloudTeacherOrder.type"/>
+        <result column="level_" property="cloudTeacherOrder.level"/>
+        <result column="time_" property="cloudTeacherOrder.time"/>
+        <result column="amount_" property="cloudTeacherOrder.amount"/>
+        <result column="refund_amount_" property="cloudTeacherOrder.refundAmount"/>
+        <result column="status_" property="cloudTeacherOrder.status"/>
+        <result column="start_time_" property="cloudTeacherOrder.startTime"/>
+        <result column="end_time_" property="cloudTeacherOrder.endTime"/>
+        <result column="order_id_" property="cloudTeacherOrder.orderId"/>
+        <result column="trans_status_" property="studentPaymentOrder.status"/>
+        <result column="expect_amount_" property="studentPaymentOrder.expectAmount"/>
+        <result column="name_" property="memberRankSetting.name"/>
+        <result column="icon_" property="memberRankSetting.icon"/>
+    </resultMap>
 
     <select id="get" resultMap="CloudTeacherOrder">
         <!--@mbg.generated-->
@@ -97,15 +116,33 @@
     </select>
 
     <!-- 分页查询 -->
-    <select id="queryPage" resultMap="CloudTeacherOrder" parameterType="map">
-        SELECT * FROM cloud_teacher_order
+    <select id="queryPage" resultMap="CloudTeacherOrderDto" parameterType="map">
+        SELECT cto.*,spo.status_ trans_status_,spo.expect_amount_,mrs.name_,mrs.icon_ FROM cloud_teacher_order cto 
+        left join student_payment_order spo on cto.organ_id_ = spo.id_
+        left join member_rank_setting mrs on mrs.id_ = cto.level_
+        where spo.type_ = 'MEMBER'
+        <if test="status != null">
+        	and cto.status_ = #{status}
+        </if>
+        <if test="studentId != null">
+        	and cto.student_id_ = #{studentId}
+        </if>
+        order by spo.pay_time_ desc,spo.id_ desc
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-        SELECT COUNT(*)
-        FROM cloud_teacher_order
+        SELECT COUNT(cto.id_)
+        FROM cloud_teacher_order cto left join student_payment_order spo on cto.organ_id_ = spo.id_
+        where spo.type_ = 'MEMBER'
+        <if test="status != null">
+        	and cto.status_ = #{status}
+        </if>
+        <if test="studentId != null">
+        	and cto.student_id_ = #{studentId}
+        </if>
+        order by cto.create_time_ desc
     </select>
 
     <select id="getNoStartCloudTeacherOrder" resultMap="CloudTeacherOrder">
@@ -158,4 +195,11 @@
         SELECT cto.* FROM cloud_teacher_order cto
         WHERE order_id_ = #{orderId}
     </select>
+    
+    <select id="queryOrderInfoByOrderId" resultMap="CloudTeacherOrderDto">
+        SELECT cto.*,spo.status_ trans_status_,spo.expect_amount_,mrs.name_,mrs.icon_ FROM cloud_teacher_order cto 
+        left join student_payment_order spo on cto.organ_id_ = spo.id_
+        left join member_rank_setting mrs on mrs.id_ = cto.level_
+        where spo.type_ = 'MEMBER' and order_id_ = #{orderId}
+    </select>
 </mapper>

+ 16 - 0
mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java

@@ -17,6 +17,8 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.MemberRankSetting;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
+import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
+import com.ym.mec.biz.service.CloudTeacherOrderService;
 import com.ym.mec.biz.service.MemberFeeSettingService;
 import com.ym.mec.biz.service.MemberRankPrivilegesService;
 import com.ym.mec.biz.service.MemberRankSettingService;
@@ -35,6 +37,9 @@ public class MemberRankController extends BaseController {
 
 	@Autowired
 	private MemberRankPrivilegesService memberRankPrivilegesService;
+	
+	@Autowired
+	private CloudTeacherOrderService cloudTeacherOrderService;
 
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
@@ -66,5 +71,16 @@ public class MemberRankController extends BaseController {
 
 		return succeed(memberRankSettingService.buy(sysUser.getId(), memberRankId, periodEnum, amount, isUseBalance));
 	}
+	
+    @ApiOperation(value = "查询订单列表")
+    @GetMapping("/queryOrderPage")
+    public Object queryOrderPage(CloudTeacherOrderQueryInfo queryInfo) {
+    	SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		queryInfo.setStudentId(user.getId());
+        return succeed(cloudTeacherOrderService.queryPage(queryInfo));
+    }
 
 }

+ 16 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -74,11 +74,14 @@ import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.entity.TenantPaymentOrder;
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
+import com.ym.mec.biz.service.CloudTeacherOrderService;
 import com.ym.mec.biz.service.LuckDrawCountService;
+import com.ym.mec.biz.service.MemberRankPrivilegesService;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.SporadicChargeInfoService;
 import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
@@ -142,6 +145,12 @@ public class StudentOrderController extends BaseController {
     private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
     @Autowired
     private ChildrenDayDegreeDetailDao childrenDayDegreeDetailDao;
+    
+    @Autowired
+    private CloudTeacherOrderService cloudTeacherOrderService;
+
+	@Autowired
+	private MemberRankPrivilegesService memberRankPrivilegesService;
 
 
     @Value("${spring.profiles.active:dev}")
@@ -224,6 +233,11 @@ public class StudentOrderController extends BaseController {
                 musicGroupRegCalender.setMusicGroupPaymentCalenderCourseSettingsList(courseSettings);
             }
             orderDetail.put("calender", musicGroupRegCalender);
+            
+            //判断是否是系统收费
+            if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
+            	 orderDetail.put("member", cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId()));
+            }
         } else if (orderByOrderNo.getGroupType().equals(GroupType.VIP)) {
             VipBuyResultDto vipBuyResultInfo = vipGroupService.findVipBuyResultInfo(Integer.valueOf(orderByOrderNo.getMusicGroupId()));
             orderDetail.put("detail", vipBuyResultInfo);
@@ -249,6 +263,8 @@ public class StudentOrderController extends BaseController {
             orderDetail.put("detail", replacementInstrumentActivityDao.getInfo(Integer.parseInt(orderByOrderNo.getMusicGroupId())));
         } else if (orderByOrderNo.getGroupType().equals(GroupType.DEGREE)) {
             orderDetail.put("detail", childrenDayDegreeDetailDao.getByOrderId(orderByOrderNo.getId()));
+        }else if (orderByOrderNo.getGroupType().equals(GroupType.MEMBER)) {
+            orderDetail.put("detail", cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId()));
         }
         return succeed(orderDetail);
     }