yonge 4 lat temu
rodzic
commit
3b15fea47e

+ 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;
+	}
+}

+ 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;
+	}
 }

+ 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;
+	}
+}

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

@@ -70,4 +70,6 @@ public interface StudentService extends BaseService<Integer, Student> {
      * 更新学员会员信息
      */
     void updateMemberRank(Integer userId, Integer rankSettingId, PeriodEnum periodEnum, int quantityPerPeriod);
+
+    Student getLocked(Integer userId);
 }

+ 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());
 

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

@@ -143,15 +143,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 +173,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 +189,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"));

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

@@ -306,14 +306,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:
@@ -324,4 +324,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         student.setUpdateTime(nowDate);
         this.update(student);
     }
+
+	@Override
+	public Student getLocked(Integer userId) {
+		return studentDao.getLocked(userId);
+	}
 }

+ 41 - 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">

+ 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));
+    }
 
 }