瀏覽代碼

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

zouxuan 4 年之前
父節點
當前提交
008e8ebab0

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SellOrderDao.java

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -110,4 +111,11 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
      * @return
      */
     List<OperatingReport> getOutOrderIncome(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 获取订单的销售成本
+     * @param orderId
+     * @return
+     */
+    BigDecimal getOrderSellCost(@Param("orderId") Long orderId);
 }

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

@@ -33,4 +33,12 @@ public interface SubjectChangeService extends BaseService<Integer, SubjectChange
      * @return
      */
     SubjectChange cancel(Integer id);
+
+    /**
+     *
+     * @param studentId
+     * @param musicGroupId
+     * @return
+     */
+    SubjectChange getStudentOriginal(Integer studentId,String musicGroupId);
 }

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

@@ -1929,7 +1929,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                         }
                         //助教冲突检测
                         if (Objects.isNull(preCourseSchedule.getId())) {
-                            IntegerAndIntegerListDto integerAndIntegerListDto = classGroupTeachingTeacherMap.get(preCourseSchedule.getClassGroupId().longValue());
+                            IntegerAndIntegerListDto integerAndIntegerListDto = classGroupTeachingTeacherMap.get(preCourseSchedule.getClassGroupId());
                             if (Objects.nonNull(integerAndIntegerListDto)) {
                                 preCourseSchedule.setTeachingTeacherIdList(integerAndIntegerListDto.getIds());
                             }
@@ -1940,7 +1940,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                             }
                         }
                         if (Objects.isNull(backCourseSchedule.getId())) {
-                            IntegerAndIntegerListDto integerAndIntegerListDto = classGroupTeachingTeacherMap.get(backCourseSchedule.getClassGroupId().longValue());
+                            IntegerAndIntegerListDto integerAndIntegerListDto = classGroupTeachingTeacherMap.get(backCourseSchedule.getClassGroupId());
                             if (Objects.nonNull(integerAndIntegerListDto)) {
                                 backCourseSchedule.setTeachingTeacherIdList(integerAndIntegerListDto.getIds());
                             }
@@ -2097,12 +2097,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 boolean isTeacherRepeat = false;
                 boolean isStudentRepeat = false;
                 //检测老师冲突
-                if (courseScheduleTeacherMap.containsKey(existCourseSchedule.getId())) {
-                    existCourseSchedule.setTeachingTeacherIdList(courseScheduleTeacherMap.get(existCourseSchedule.getId()).getIds());
-                } else {
-                    existCourseSchedule.setTeachingTeacherIdList(classGroupTeachingTeacherMap.get(existCourseSchedule.getClassGroupId().longValue()).getIds());
-                }
-                newCourseSchedule.setTeachingTeacherIdList(classGroupTeachingTeacherMap.get(newCourseSchedule.getClassGroupId().longValue()).getIds());
+				if (courseScheduleTeacherMap.containsKey(existCourseSchedule.getId())) {
+					existCourseSchedule.setTeachingTeacherIdList(courseScheduleTeacherMap.get(existCourseSchedule.getId()).getIds());
+				} else {
+					existCourseSchedule.setTeachingTeacherIdList(classGroupTeachingTeacherMap.get(existCourseSchedule.getClassGroupId().longValue()).getIds());
+				}
+				newCourseSchedule.setTeachingTeacherIdList(classGroupTeachingTeacherMap.get(newCourseSchedule.getClassGroupId().longValue()).getIds());
 
                 if (!CollectionUtils.isEmpty(newCourseSchedule.getTeachingTeacherIdList())
                         && !CollectionUtils.isEmpty(existCourseSchedule.getTeachingTeacherIdList())) {

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

@@ -180,7 +180,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 rpMap.put("tradeState", "0");
             }
 
-            if (rpMap.containsKey("tradeState")) {
+            if (status.equals("succeeded")) {
                 try {
                     updateOrder(rpMap); //更新订单
                 } catch (Exception e) {
@@ -203,7 +203,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         //关闭或失败的订单查询订单成功,订单改成成功,钱退到余额
         if (order != null && (order.getStatus().equals(DealStatusEnum.CLOSE) || order.getStatus().equals(DealStatusEnum.FAILED)) && status.equals(DealStatusEnum.SUCCESS)) {
             String memo = order.getStatus().equals(DealStatusEnum.CLOSE) ? "关闭订单" : "失败订单";
-            memo = memo+",实际支付成功,退到用户余额";
+            memo = memo + ",实际支付成功,退到用户余额";
             //更新订单状态
             order.setStatus(status);
             order.setTransNo(rpMap.get("orderNo"));
@@ -216,7 +216,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             }
             //增加用户余额
             sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount(),
-                    PlatformCashAccountDetailTypeEnum.REFUNDS, memo+",订单号:"+order.getOrderNo());
+                    PlatformCashAccountDetailTypeEnum.REFUNDS, memo + ",订单号:" + order.getOrderNo());
             return;
         }
 
@@ -262,7 +262,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         }
 
         Calendar beforeTime = Calendar.getInstance();
-        beforeTime.add(Calendar.MINUTE, -30);// 30分钟之前的时间
+        beforeTime.add(Calendar.MINUTE, -35);// 30分钟之前的时间
         Date beforeDate = beforeTime.getTime();
 
         List<StudentPaymentOrder> ordersOverTime = findOrdersOverTime(orderNoList, DealStatusEnum.ING, beforeDate);

+ 77 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -1,25 +1,19 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.GoodsDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.SubjectChangeDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.SubjectChange;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
 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 org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectChange> implements SubjectChangeService {
@@ -42,6 +36,12 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     private SysConfigDao sysConfigDao;
     @Autowired
     private PayService payService;
+    @Autowired
+    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private SellOrderDao sellOrderDao;
 
     @Override
     public BaseDAO<Integer, SubjectChange> getDAO() {
@@ -198,4 +198,71 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         }
         return subjectChange;
     }
+
+    @Override
+    public SubjectChange getStudentOriginal(Integer studentId, String musicGroupId) {
+        //1、存在历史的更换
+        SubjectChange subjectChange = new SubjectChange();
+        SubjectChange studentLastChange = subjectChangeDao.getStudentLastChange(studentId, musicGroupId);
+        if (studentLastChange != null) {
+            subjectChange.setStudentId(studentLastChange.getStudentId());
+            subjectChange.setOrderId(studentLastChange.getOrderId());
+            subjectChange.setCooperationOrganId(studentLastChange.getCooperationOrganId());
+            subjectChange.setMusicGroupId(studentLastChange.getMusicGroupId());
+            subjectChange.setOriginalCourseFee(studentLastChange.getChangeCourseFee());
+            subjectChange.setKitGroupPurchaseType(studentLastChange.getKitGroupPurchaseType());
+            subjectChange.setOriginalCost(studentLastChange.getChangeCost());
+
+            if (studentLastChange.getChangeMusical() != null) {
+                subjectChange.setOriginalMusical(studentLastChange.getChangeMusical());
+                subjectChange.setOriginalMusicalGoods(goodsDao.get(studentLastChange.getChangeMusical()));
+                subjectChange.setOriginalMusicalPrice(studentLastChange.getOriginalMusicalPrice());
+            }
+
+            if (studentLastChange.getChangeAccessories() != null) {
+                subjectChange.setOriginalAccessories(studentLastChange.getChangeAccessories());
+                subjectChange.setOriginalAccessoriesGoods(goodsDao.findGoodsByIds(studentLastChange.getChangeAccessories()));
+                subjectChange.setOriginalAccessoriesPrice(studentLastChange.getChangeAccessoriesPrice());
+            }
+            return subjectChange;
+        }
+        //2.1不存在历史的更换
+        List<StudentPaymentOrderDetail> details = studentPaymentOrderDetailDao.getStudentApplyDetail(studentId, musicGroupId);
+        if (details.size() <= 0) {
+            return null;
+        }
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        subjectChange.setStudentId(studentId);
+        subjectChange.setOrganId(musicGroup.getOrganId());
+        subjectChange.setCooperationOrganId(musicGroup.getCooperationOrganId());
+        subjectChange.setMusicGroupId(musicGroupId);
+        String accessoriesIds = "";
+        BigDecimal accessoriesPrice = BigDecimal.ZERO;
+        for (StudentPaymentOrderDetail detail : details) {
+            if (detail.getType().equals(OrderDetailTypeEnum.COURSE)) {
+                subjectChange.setOriginalCourseFee(detail.getPrice());
+            } else if (detail.getType().equals(OrderDetailTypeEnum.MUSICAL)) {
+                subjectChange.setKitGroupPurchaseType(detail.getKitGroupPurchaseType());
+                int goodsId = Integer.parseInt(detail.getGoodsIdList());
+                subjectChange.setOriginalMusical(goodsId);
+                subjectChange.setOriginalMusicalGoods(goodsDao.get(goodsId));
+                subjectChange.setOriginalMusicalPrice(detail.getPrice());
+            } else {
+                if (StringUtils.isNotBlank(detail.getGoodsIdList())) {
+                    accessoriesPrice = accessoriesPrice.add(detail.getPrice());
+                    accessoriesIds = accessoriesIds.length() > 0 ? accessoriesIds + "," + detail.getGoodsIdList() : detail.getGoodsIdList();
+                }
+            }
+        }
+        if (StringUtils.isNotBlank(accessoriesIds)) {
+            subjectChange.setOriginalAccessories(accessoriesIds);
+            subjectChange.setOriginalAccessoriesGoods(goodsDao.findGoodsByIds(accessoriesIds));
+            subjectChange.setOriginalAccessoriesPrice(accessoriesPrice);
+        }
+        Long orderId = details.get(0).getPaymentOrderId();
+        //2.2 计算销售成本
+        BigDecimal orderSellCost = sellOrderDao.getOrderSellCost(orderId);
+        subjectChange.setOriginalCost(orderSellCost == null ? BigDecimal.ZERO : orderSellCost);
+        return subjectChange;
+    }
 }

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

@@ -346,4 +346,10 @@
         FROM sell_order
         WHERE order_id_ = #{orderId}
     </delete>
+
+    <select id="getOrderSellCost" resultType="decimal">
+        SELECT SUM(sell_cost_ * num_)
+        FROM sell_order
+        WHERE order_id_ = #{orderId}
+    </select>
 </mapper>

+ 33 - 15
mec-biz/src/main/resources/config/mybatis/SubjectChangeMapper.xml

@@ -15,12 +15,15 @@
         <result column="original_musical_price_" property="originalMusicalPrice"/>
         <result column="original_accessories_" property="originalAccessories"/>
         <result column="original_accessories_price_" property="originalAccessoriesPrice"/>
-        <result column="kit_group_purchase_type_" property="kitGroupPurchaseType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="original_cost_" property="originalCost"/>
+        <result column="kit_group_purchase_type_" property="kitGroupPurchaseType"
+                typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="change_course_fee_" property="changeCourseFee"/>
         <result column="change_musical_" property="changeMusical"/>
         <result column="change_musical_price_" property="changeMusicalPrice"/>
         <result column="change_accessories_" property="changeAccessories"/>
         <result column="change_accessories_price_" property="changeAccessoriesPrice"/>
+        <result column="change_cost_" property="changeCost"/>
         <result column="goods_margin_" property="goodsMargin"/>
         <result column="course_margin_" property="courseMargin"/>
         <result column="cost_margin_" property="costMargin"/>
@@ -35,11 +38,12 @@
     </resultMap>
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
-        id_,student_id_,organ_id_,cooperation_organ_id_, music_group_id_,original_course_fee_, original_musical_, original_musical_price_,
-        original_accessories_,
-        original_accessories_price_,kit_group_purchase_type_, change_course_fee_, change_musical_, change_musical_price_,
-        change_accessories_, change_accessories_price_, goods_margin_, course_margin_,cost_margin_,sell_amount_,order_id_,order_no_,trans_no_, status_,
-        sell_time_,create_time_, update_time,version_
+        id_,student_id_,organ_id_,cooperation_organ_id_, music_group_id_,original_course_fee_, original_musical_,
+        original_musical_price_,
+        original_accessories_,original_accessories_price_,kit_group_purchase_type_, change_course_fee_, change_musical_,
+        original_cost_,change_musical_price_,change_accessories_, change_accessories_price_,change_cost_, goods_margin_,
+        course_margin_,cost_margin_,sell_amount_,order_id_,order_no_,trans_no_, status_,sell_time_,create_time_,
+        update_time,version_
     </sql>
     <select id="get" parameterType="java.lang.Integer" resultMap="SubjectChange">
         <!--@mbg.generated-->
@@ -56,14 +60,19 @@
     <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.SubjectChange"
             useGeneratedKeys="true">
         <!--@mbg.generated-->
-        insert into subject_change (student_id_,organ_id_,cooperation_organ_id_,music_group_id_,original_course_fee_, original_musical_,
-        original_musical_price_,original_accessories_,original_accessories_price_,kit_group_purchase_type_,
+        insert into subject_change (student_id_,organ_id_,cooperation_organ_id_,music_group_id_,original_course_fee_,
+        original_musical_,
+        original_musical_price_,original_accessories_,original_accessories_price_,original_cost_,kit_group_purchase_type_,
         change_course_fee_, change_musical_, change_musical_price_,
-        change_accessories_, change_accessories_price_, goods_margin_, course_margin_,cost_margin_,sell_amount_,order_id_,
+        change_accessories_, change_accessories_price_, change_cost_,goods_margin_,
+        course_margin_,cost_margin_,sell_amount_,order_id_,
         order_no_,trans_no_,status_,sell_time_, create_time_, update_time,version_)
-        values (#{studentId},#{organId},#{cooperationOrganId},#{musicGroupId},#{originalCourseFee}, #{originalMusical}, #{originalMusicalPrice},
-        #{originalAccessories}, #{originalAccessoriesPrice},#{kitGroupPurchaseType},#{changeCourseFee}, #{changeMusical},
-        #{changeMusicalPrice}, #{changeAccessories}, #{changeAccessoriesPrice}, #{goodsMargin}, #{courseMargin},#{costMargin}
+        values (#{studentId},#{organId},#{cooperationOrganId},#{musicGroupId},#{originalCourseFee}, #{originalMusical},
+        #{originalMusicalPrice},
+        #{originalAccessories}, #{originalAccessoriesPrice},#{originalCost},#{kitGroupPurchaseType},#{changeCourseFee},
+        #{changeMusical},
+        #{changeMusicalPrice}, #{changeAccessories}, #{changeAccessoriesPrice},#{changeCost}, #{goodsMargin},
+        #{courseMargin},#{costMargin}
         #{sellAmount},#{orderId},#{orderNo},#{transNo},#{status},#{sellTime}, #{createTime}, #{updateTime},0)
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.SubjectChange">
@@ -94,6 +103,9 @@
             <if test="originalAccessoriesPrice != null">
                 original_accessories_price_ = #{originalAccessoriesPrice},
             </if>
+            <if test="originalCost != null">
+                original_cost_ = #{originalCost},
+            </if>
             <if test="changeCourseFee != null">
                 change_course_fee_ = #{changeCourseFee},
             </if>
@@ -109,6 +121,9 @@
             <if test="changeAccessoriesPrice != null">
                 change_accessories_price_ = #{changeAccessoriesPrice},
             </if>
+            <if test="changeCost != null">
+                change_cost_ = #{changeCost},
+            </if>
             <if test="goodsMargin != null">
                 goods_margin_ = #{goodsMargin},
             </if>
@@ -155,13 +170,16 @@
     </select>
 
     <select id="getChangeInfo" resultMap="SubjectChange">
-        SELECT sc.*,su.username_ studentName
+        SELECT sc.*, su.username_ studentName
         FROM subject_change sc
-        LEFT jOIN sys_user su ON su.id_=sc.student_id_
+                 LEFT jOIN sys_user su ON su.id_ = sc.student_id_
         WHERE sc.id_ = #{id}
     </select>
 
     <select id="getMusicGroupWaitPay" resultMap="SubjectChange">
-        SELECT * FROM subject_change WHERE music_group_id_ = #{musicGroupId} AND status_ = 0
+        SELECT *
+        FROM subject_change
+        WHERE music_group_id_ = #{musicGroupId}
+          AND status_ = 0
     </select>
 </mapper>

+ 12 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SubjectChangeController.java

@@ -44,6 +44,18 @@ public class SubjectChangeController extends BaseController {
         return succeed(studentRegistrationService.getStudentApplyDetail(studentId, musicGroupId));
     }
 
+    @ApiOperation(value = "获取更换前的详情")
+    @GetMapping("/getStudentOriginal")
+    @PreAuthorize("@pcs.hasPermissions('subjectChange/getStudentOriginal')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "studentId", value = "学生编号", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
+    public HttpResponseResult<SubjectChange> getStudentOriginal(Integer studentId, String musicGroupId) {
+        if (studentId == null || StringUtils.isEmpty(musicGroupId)) {
+            return failed("参数校验异常");
+        }
+        return succeed(subjectChangeService.getStudentOriginal(studentId, musicGroupId));
+    }
+
     @ApiOperation(value = "获取乐团声部费用信息及乐器和辅件")
     @GetMapping("/getSubjectGoodsAndInfo")
     @PreAuthorize("@pcs.hasPermissions('subjectChange/getSubjectGoodsAndInfo')")