浏览代码

Merge branch 'activity_2020_12'

Joburgess 4 年之前
父节点
当前提交
018cdf4556

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DegreeRegistrationDao.java

@@ -15,6 +15,7 @@ public interface DegreeRegistrationDao extends BaseDAO<Integer, DegreeRegistrati
 
     DegreeRegistration getTotalAmount(Map<String, Object> params);
 
-    DegreeRegistration getWithUserIdAndActivityTag(@Param("userId") Integer userId,
-                                                   @Param("activityTag") String activityTag);
+    DegreeRegistration getWithUserIdAndActivityTag(@Param("degree") DegreeRegistration degree);
+
+    DegreeRegistration getWithSubjectAndLevel(@Param("degree") DegreeRegistration degree);
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -169,6 +169,18 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      */
     Integer findOrderByGroupType(@Param("userId") Integer userId, @Param("sporadicId") Integer sporadicId, @Param("groupType") String groupType, @Param("status") DealStatusEnum status);
 
+    /**
+     * @describe 获取零星订单
+     * @author qnc99
+     * @date 2020/12/5 0005
+     * @param userId:
+     * @param sporadicId:
+     * @param groupType:
+     * @param status:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentPaymentOrder>
+     */
+    List<StudentPaymentOrder> findPaymentOrderByGroupType(@Param("userId") Integer userId, @Param("sporadicId") Integer sporadicId, @Param("groupType") String groupType, @Param("status") DealStatusEnum status);
+
     List<StudentPaymentOrder> findOrderByGroup(@Param("groupId") String groupId,
                                                @Param("groupType") GroupType groupType,
                                                @Param("status") DealStatusEnum status);

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

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.entity.DegreeRegistration;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.page.DegreeQueryInfo;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.Arrays;
@@ -19,7 +20,7 @@ public interface DegreeRegistrationService extends BaseService<Integer, DegreeRe
 
     Set<String> FREE_PRICE_LEVEL = new HashSet<>(Arrays.asList(new String[]{"一级", "二级", "三级"}));
 
-    Map pay(DegreeRegistrationActivityDto degreeRegistration) throws Exception;
+    HttpResponseResult pay(DegreeRegistrationActivityDto degreeRegistration) throws Exception;
 
     Boolean updateStatus(StudentPaymentOrder order);
 

+ 29 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -9,8 +9,11 @@ import com.ym.mec.biz.dal.dto.DegreeRegistrationActivityDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.common.constant.CommonConstants;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
@@ -28,6 +31,7 @@ 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.collection.MapUtil;
+import org.springframework.util.CollectionUtils;
 
 @Service
 public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, DegreeRegistration> implements DegreeRegistrationService {
@@ -45,6 +49,9 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
     private StudentPaymentOrderService studentPaymentOrderService;
 
     @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
+
+    @Autowired
     private SysConfigDao sysConfigDao;
 
     @Autowired
@@ -66,10 +73,11 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public Map pay(DegreeRegistrationActivityDto degreeRegistration) throws Exception {
+    public HttpResponseResult pay(DegreeRegistrationActivityDto degreeRegistration) throws Exception {
         Student student = studentDao.getLocked(degreeRegistration.getUserId());
 
-        DegreeRegistration degree = degreeRegistrationDao.getWithUserIdAndActivityTag(degreeRegistration.getUserId(), ACTIVITY_TAG);
+        degreeRegistration.setActivityTag(ACTIVITY_TAG);
+        DegreeRegistration degree = degreeRegistrationDao.getWithSubjectAndLevel(degreeRegistration);
 
         Date nowDate = new Date();
 
@@ -118,9 +126,20 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
                 degreeRegistration.setUpdateTime(nowDate);
                 degreeRegistrationDao.insert(degreeRegistration);
             } else if (degree.getStatus().equals(2)) {
-                degreeRegistration.setMoney(BigDecimal.ZERO);
-                degreeRegistration.setTheoryMoney(BigDecimal.ZERO);
+                throw new BizException("您已报考过选择的考级项目");
             } else {
+                if (!degreeRegistration.getIsRepay() && degree.getStatus().equals(1)) {
+                    List<StudentPaymentOrder> orders = studentPaymentOrderDao.findPaymentOrderByGroupType(degreeRegistration.getUserId(), degreeRegistration.getSporadicId(), "SPORADIC", DealStatusEnum.ING);
+                    if (orders != null && orders.size() > 0) {
+                        List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentPaymentOrderDetailDao.getOrderDetail(orders.get(0).getId());
+                        Map<String, Object> result = new HashMap<>();
+                        result.put("degree", degreeRegistration);
+                        if(!CollectionUtils.isEmpty(studentPaymentOrderDetails)){
+                            result.put("additionCourseInfo", studentPaymentOrderDetails.get(0).getGoodsIdList());
+                        }
+                        return BaseController.failed(HttpStatus.CONTINUE, result, "");
+                    }
+                }
                 degreeRegistration.setMoney(degree.getMoney());
                 degreeRegistration.setTheoryMoney(degree.getTheoryMoney());
                 degreeRegistration.setId(degree.getId());
@@ -135,7 +154,6 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         }
 
         BigDecimal additionCoursePrice = new BigDecimal("0");
-        Map<CourseSchedule.CourseScheduleType, Integer> typeCourseTime = new HashMap<>();
         if(Objects.nonNull(degreeRegistration.getAdditionCourseInfo())){
             Map<CourseSchedule.CourseScheduleType, Integer> additionCourseInfo = degreeRegistration.getAdditionCourseInfo();
             PracticeGroupSellPrice practiceGroupSellPrice = practiceGroupSellPriceDao.get(degreeRegistration.getOrganId());
@@ -174,15 +192,12 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
                 switch (courseScheduleTypeIntegerEntry.getKey()){
                     case VIP:
                         additionCoursePrice = additionCoursePrice.add(vipUnitPrice.multiply(courseTime));
-                        typeCourseTime.put(courseScheduleTypeIntegerEntry.getKey(), courseScheduleTypeIntegerEntry.getValue()*12);
                         break;
                     case PRACTICE:
                         additionCoursePrice = additionCoursePrice.add(practiceUnitPrice.multiply(courseTime));
-                        typeCourseTime.put(courseScheduleTypeIntegerEntry.getKey(), courseScheduleTypeIntegerEntry.getValue()*12);
                         break;
                     case HIGH:
                         additionCoursePrice = additionCoursePrice.add(highUnitPrice.multiply(courseTime));
-                        typeCourseTime.put(courseScheduleTypeIntegerEntry.getKey(), courseScheduleTypeIntegerEntry.getValue()*10);
                         break;
                 }
             }
@@ -198,7 +213,7 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 
         OrderTypeEnum type = OrderTypeEnum.DEGREE_REGISTRATION;
 
-        Integer userId = degreeRegistration.getId();
+        Integer userId = degreeRegistration.getUserId();
         String channelType = "";
         StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
         studentPaymentOrder.setUserId(userId);
@@ -226,13 +241,15 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
             notifyMap.put("channelType", channelType);
             notifyMap.put("orderNo", "");
             studentPaymentOrderService.updateOrder(notifyMap);
-            return notifyMap;
+            return BaseController.failed(HttpStatus.CREATED, "恭喜您,支付成功!");
         }
 
         if(BigDecimal.ZERO.compareTo(additionCoursePrice)<0){
             StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
             studentPaymentOrderDetail.setType(OrderDetailTypeEnum.DEGREE_REGISTRATION);
-            studentPaymentOrderDetail.setGoodsIdList(JSON.toJSONString(typeCourseTime));
+            if(Objects.nonNull(degreeRegistration.getAdditionCourseInfo())){
+                studentPaymentOrderDetail.setGoodsIdList(JSON.toJSONString(degreeRegistration.getAdditionCourseInfo()));
+            }
             studentPaymentOrderDetail.setPrice(additionCoursePrice);
             studentPaymentOrderDetail.setRemitFee(BigDecimal.ZERO);
             studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
@@ -261,7 +278,7 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
         studentPaymentOrder.setUpdateTime(nowDate);
         studentPaymentOrderService.update(studentPaymentOrder);
-        return payMap;
+        return BaseController.succeed(payMap);
     }
 
     @Override

+ 22 - 1
mec-biz/src/main/resources/config/mybatis/DegreeRegistrationMapper.xml

@@ -226,6 +226,27 @@
     <select id="getWithUserIdAndActivityTag" resultMap="DegreeRegistration">
         select *
         from degree_registration
-        where user_id_ = #{userId} AND activity_tag_=#{activityTag}
+        where
+            user_id_ = #{degree.userId}
+            AND activity_tag_=#{degree.activityTag}
+            <if test="degree.subject!=null and degree.subject!=''">
+                AND subject_ = #{degree.subject}
+            </if>
+            <if test="degree.sporadicId!=null">
+                AND sporadic_id_ = #{degree.sporadicId}
+            </if>
+            <if test="degree.theoryLevel!=null">
+                AND theory_level_ = #{degree.theoryLevel}
+            </if>
+    </select>
+
+    <select id="getWithSubjectAndLevel" resultMap="DegreeRegistration">
+        select *
+        from degree_registration
+        where
+        user_id_ = #{degree.userId}
+        AND activity_tag_=#{degree.activityTag}
+        AND subject_ = #{degree.subject}
+        AND (sporadic_id_ = #{degree.sporadicId} OR theory_level_ = #{degree.theoryLevel})
     </select>
 </mapper>

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -458,6 +458,15 @@
             AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
     </select>
+    <select id="findPaymentOrderByGroupType" resultMap="StudentPaymentOrder">
+        SELECT * FROM student_payment_order
+        WHERE group_type_ = #{groupType}
+        AND user_id_ = #{userId}
+        AND music_group_id_ = #{sporadicId}
+        <if test="status != null">
+            AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+    </select>
     <select id="queryExpectAmount" resultType="java.util.Map">
         SELECT spo.expect_amount_ 'value',spo.id_ 'key'
         FROM student_payment_order spo

+ 4 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java

@@ -49,6 +49,10 @@ public class BaseController {
 		return getResponseData(false, statusCode, null, msg);
 	}
 
+	public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, T data, String msg) {
+		return getResponseData(false, statusCode, data, msg);
+	}
+
 	private static <T> HttpResponseResult<T> getResponseData(boolean status, HttpStatus statusCode, T data, String message) {
 		HttpResponseResult<T> obj = new HttpResponseResult<T>();
 		obj.setStatus(status);

+ 9 - 21
mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java

@@ -92,19 +92,7 @@ public class DegreeController extends BaseController {
             return failed("该分部暂未参与此活动");
         }
 
-        DegreeRegistration degree = degreeRegistrationDao.getWithUserIdAndActivityTag(user.getId(), DegreeRegistrationService.ACTIVITY_TAG);
-
-        if (!degreeRegistration.getIsRepay() && degree != null && degree.getStatus().equals(1)) {
-            Integer ingOrder = studentPaymentOrderService.findOrderByGroupType(degree.getId(), degreeRegistration.getSporadicId(), "SPORADIC", DealStatusEnum.ING);
-            if (ingOrder != null && ingOrder > 0) {
-                return failed(HttpStatus.CONTINUE, "您有待支付的订单");
-            }
-        }
-        Map payMap = degreeRegistrationService.pay(degreeRegistration);
-        if (payMap.containsKey("tradeState")) {
-            return failed(HttpStatus.CREATED, "恭喜您,支付成功!");
-        }
-        return succeed(payMap);
+        return degreeRegistrationService.pay(degreeRegistration);
     }
 
 
@@ -138,20 +126,20 @@ public class DegreeController extends BaseController {
 
         Map<String, Object> result = new HashMap<>();
 
-        DegreeRegistration degreeRegistration = degreeRegistrationDao.getWithUserIdAndActivityTag(user.getId(), DegreeRegistrationService.ACTIVITY_TAG);
+//        DegreeRegistration degreeRegistration = degreeRegistrationDao.getWithUserIdAndActivityTag(user.getId(), DegreeRegistrationService.ACTIVITY_TAG);
 
         Student student = studentDao.get(user.getId());
         result.put("userInfo", user);
         result.put("isNewUser", student.getIsNewUser());
         result.put("organs", organizationDao.getActivityOrgans());
         result.put("sporadicChargeInfo", sporadicChargeInfoService.queryDetailPage(queryInfo));
-        if(Objects.isNull(degreeRegistration)||degreeRegistration.getStatus()==0){
-            result.put("isApplied", 0);
-        }else if(degreeRegistration.getStatus()==1){
-            result.put("isApplied", 1);
-        }else if(degreeRegistration.getStatus()==2){
-            result.put("isApplied", 2);
-        }
+//        if(Objects.isNull(degreeRegistration)||degreeRegistration.getStatus()==0){
+//            result.put("isApplied", 0);
+//        }else if(degreeRegistration.getStatus()==1){
+//            result.put("isApplied", 1);
+//        }else if(degreeRegistration.getStatus()==2){
+//            result.put("isApplied", 2);
+//        }
         return succeed(result);
     }
 }