瀏覽代碼

Merge remote-tracking branch 'origin/master'

Joburgess 4 年之前
父節點
當前提交
0ed49e64ec

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

@@ -45,8 +45,16 @@ public interface SubjectChangeDao extends BaseDAO<Integer, SubjectChange> {
 
     /**
      * 获取更换的乐器辅件
+     *
      * @param musicGroupId
      * @return
      */
     SubjectChange getChangeGoods(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取用户换取的乐器辅件
+     * @param musicGroupId
+     * @return
+     */
+    List<SubjectChange> getStudentGoods(@Param("musicGroupId") String musicGroupId);
 }

+ 65 - 42
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -75,7 +75,7 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                 goodsIdsStr += studentPaymentOrderDetail.getGoodsIdList() + ",";
             }
         }
-        if (StringUtils.isNotBlank(goodsIdsStr)) {
+        if (StringUtils.isBlank(goodsIdsStr)) {
             return null;
         }
         goodsIdsStr = goodsIdsStr.substring(0, goodsIdsStr.length() - 1);
@@ -99,21 +99,22 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
         });
         //乐器更换的
         SubjectChange changeGoods = subjectChangeDao.getChangeGoods(musicGroupId);
+        if (changeGoods == null) {
+            return goodies;
+        }
         String originalGoodsIds = "";
         String changeGoodsIds = "";
-        if (changeGoods != null) {
-            if (StringUtils.isNotBlank(changeGoods.getMusicGroupName())) {
-                originalGoodsIds += StringUtils.isNotBlank(originalGoodsIds) ? "," + changeGoods.getMusicGroupName() : changeGoods.getMusicGroupName();
-            }
-            if (StringUtils.isNotBlank(changeGoods.getOriginalAccessories())) {
-                originalGoodsIds += StringUtils.isNotBlank(originalGoodsIds) ? "," + changeGoods.getOriginalAccessories() : changeGoods.getOriginalAccessories();
-            }
-            if (StringUtils.isNotBlank(changeGoods.getTransNo())) {
-                changeGoodsIds += StringUtils.isNotBlank(changeGoodsIds) ? "," + changeGoods.getTransNo() : changeGoods.getTransNo();
-            }
-            if (StringUtils.isNotBlank(changeGoods.getChangeAccessories())) {
-                changeGoodsIds += StringUtils.isNotBlank(changeGoodsIds) ? "," + changeGoods.getChangeAccessories() : changeGoods.getChangeAccessories();
-            }
+        if (StringUtils.isNotBlank(changeGoods.getMusicGroupName())) {
+            originalGoodsIds += StringUtils.isNotBlank(originalGoodsIds) ? "," + changeGoods.getMusicGroupName() : changeGoods.getMusicGroupName();
+        }
+        if (StringUtils.isNotBlank(changeGoods.getOriginalAccessories())) {
+            originalGoodsIds += StringUtils.isNotBlank(originalGoodsIds) ? "," + changeGoods.getOriginalAccessories() : changeGoods.getOriginalAccessories();
+        }
+        if (StringUtils.isNotBlank(changeGoods.getTransNo())) {
+            changeGoodsIds += StringUtils.isNotBlank(changeGoodsIds) ? "," + changeGoods.getTransNo() : changeGoods.getTransNo();
+        }
+        if (StringUtils.isNotBlank(changeGoods.getChangeAccessories())) {
+            changeGoodsIds += StringUtils.isNotBlank(changeGoodsIds) ? "," + changeGoods.getChangeAccessories() : changeGoods.getChangeAccessories();
         }
         if (StringUtils.isNotBlank(changeGoodsIds)) {
             String[] changGoodsIdsArr = changeGoodsIds.split(",");
@@ -241,35 +242,57 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     @Override
     public List<MusicalListDetailDto> getMusicalListDetail(String musicGroupId) {
         List<MusicalListDetailDto> musicalListDetailDtos = studentPaymentOrderDetailDao.getMusicalListDetail(musicGroupId);
-        if (musicalListDetailDtos != null && musicalListDetailDtos.size() > 0) {
-            List<Long> paymentOrderNo = musicalListDetailDtos.stream().map(MusicalListDetailDto::getPaymentOrderId).collect(Collectors.toList());
-            List<Integer> userIds = musicalListDetailDtos.stream().map(MusicalListDetailDto::getUserId).collect(Collectors.toList());
-            //商品名称
-            MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-            Organization organization = organizationDao.get(musicGroup.getOrganId());
-            Map<Long, String> goodsNameMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsNames(paymentOrderNo));
-            Map<Integer, String> usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUsernameByIds(userIds));
-            Map<Long, BigDecimal> actualAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDao.queryActualAmount(paymentOrderNo));
-            Map<Long, BigDecimal> musicalAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "MUSICAL"));
-            Map<Long, BigDecimal> accessoriesAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "ACCESSORIES"));
-            Map<Long, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "COURSE"));
-            Map<Long, String> purchaseTypeMap = MapUtil.convertIntegerMap(studentRegistrationDao.queryPurchaseTypeMap(musicGroupId));
-            Map<Integer, String> userSubjectMap = subjectDao.getRegisterSubject(musicGroupId, userIds).stream().collect(Collectors.toMap(StudentRegistration::getUserId, StudentRegistration::getSubjectName));
-            musicalListDetailDtos.forEach(e -> {
-                e.setGoodsNames(goodsNameMap.get(e.getPaymentOrderId()));
-                e.setMusicGroupName(musicGroup.getName());
-                e.setUsername(usernameMap.get(e.getUserId()));
-                e.setOrganName(organization.getName());
-                e.setMusicalAmount(musicalAmountMap.get(e.getPaymentOrderId()));
-                e.setAccessoriesAmount(accessoriesAmountMap.get(e.getPaymentOrderId()));
-                e.setOrderAmount(actualAmountMap.get(e.getPaymentOrderId()));
-                e.setCourseAmount(courseAmountMap.get(e.getPaymentOrderId()));
-                e.setSubjectName(userSubjectMap.get(e.getUserId()));
-                String s = purchaseTypeMap.get(e.getUserId().longValue());
-                if (StringUtils.isNotEmpty(s)) {
-                    e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(purchaseTypeMap.get(e.getUserId().longValue())));
+        if (musicalListDetailDtos.size() <= 0) {
+            return musicalListDetailDtos;
+        }
+        List<Long> paymentOrderNo = musicalListDetailDtos.stream().map(MusicalListDetailDto::getPaymentOrderId).collect(Collectors.toList());
+        List<Integer> userIds = musicalListDetailDtos.stream().map(MusicalListDetailDto::getUserId).collect(Collectors.toList());
+        //商品名称
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        Organization organization = organizationDao.get(musicGroup.getOrganId());
+        Map<Long, String> goodsNameMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsNames(paymentOrderNo));
+        Map<Integer, String> usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUsernameByIds(userIds));
+        Map<Long, BigDecimal> actualAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDao.queryActualAmount(paymentOrderNo));
+        Map<Long, BigDecimal> musicalAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "MUSICAL"));
+        Map<Long, BigDecimal> accessoriesAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "ACCESSORIES"));
+        Map<Long, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "COURSE"));
+        Map<Long, String> purchaseTypeMap = MapUtil.convertIntegerMap(studentRegistrationDao.queryPurchaseTypeMap(musicGroupId));
+        Map<Integer, String> userSubjectMap = subjectDao.getRegisterSubject(musicGroupId, userIds).stream().collect(Collectors.toMap(StudentRegistration::getUserId, StudentRegistration::getSubjectName));
+
+        musicalListDetailDtos.forEach(e -> {
+            e.setGoodsNames(goodsNameMap.get(e.getPaymentOrderId()));
+            e.setMusicGroupName(musicGroup.getName());
+            e.setUsername(usernameMap.get(e.getUserId()));
+            e.setOrganName(organization.getName());
+            e.setMusicalAmount(musicalAmountMap.get(e.getPaymentOrderId()));
+            e.setAccessoriesAmount(accessoriesAmountMap.get(e.getPaymentOrderId()));
+            e.setOrderAmount(actualAmountMap.get(e.getPaymentOrderId()));
+            e.setCourseAmount(courseAmountMap.get(e.getPaymentOrderId()));
+            e.setSubjectName(userSubjectMap.get(e.getUserId()));
+            String s = purchaseTypeMap.get(e.getUserId().longValue());
+            if (StringUtils.isNotEmpty(s)) {
+                e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(purchaseTypeMap.get(e.getUserId().longValue())));
+            }
+        });
+        List<SubjectChange> studentGoodies = subjectChangeDao.getStudentGoods(musicGroupId);
+        if (studentGoodies.size() <= 0) {
+            return musicalListDetailDtos;
+        }
+        for (MusicalListDetailDto musicalListDetailDto : musicalListDetailDtos) {
+            for (SubjectChange studentGoods : studentGoodies) {
+                if (!musicalListDetailDto.getUserId().equals(studentGoods.getStudentId())) continue;
+                String goodsNames = "";
+                if (studentGoods.getChangeMusicalGoods() != null) {
+                    goodsNames += studentGoods.getChangeMusicalGoods().getName();
                 }
-            });
+                if (studentGoods.getChangeAccessoriesGoods() != null) {
+                    String accessoriesNames = studentGoods.getChangeAccessoriesGoods().stream().map(Goods::getName).collect(Collectors.joining(","));
+                    goodsNames = StringUtils.isNotBlank(goodsNames) ? "," + accessoriesNames : accessoriesNames;
+                }
+                musicalListDetailDto.setGoodsNames(goodsNames);
+                musicalListDetailDto.setMusicalAmount(studentGoods.getChangeMusicalPrice());
+                musicalListDetailDto.setAccessoriesAmount(studentGoods.getChangeAccessoriesPrice());
+            }
         }
         return musicalListDetailDtos;
     }

+ 18 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -155,6 +155,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentGoodsSell.setOrganId(student.getOrganId());
         studentGoodsSell.setTotalAmount(amount);
         studentGoodsSell.setGoodsJson(JSONObject.toJSONString(goodsSellDtos));
+        String orderNo = idGeneratorService.generatorId("payment") + "";
+        studentGoodsSell.setOrderNo(orderNo);
         studentGoodsSellDao.insert(studentGoodsSell);
 
         if (studentGoodsSell.getType() == 1) {
@@ -162,7 +164,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             MapUtil.populateMap(repairInfoMap, studentGoodsSell);
             return repairInfoMap;
         }
-        String orderNo = idGeneratorService.generatorId("payment") + "";
+
         StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
         studentPaymentOrder.setUserId(studentId);
         studentPaymentOrder.setGroupType(GroupType.GOODS_SELL);
@@ -255,19 +257,21 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         StudentPaymentOrder studentPaymentOrder = null;
         if(StringUtils.isNotEmpty(orderNo1)){
             studentPaymentOrder = studentPaymentOrderService.findOrderByOrderNo(orderNo1);
-            if(studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS){
-                throw new BizException("该订单已支付");
-            }
-            //关闭老订单
-            if(studentPaymentOrder.getBalancePaymentAmount() != null){
-                studentGoodsSell.setIsUseBalancePayment(true);
-            }else {
-                studentGoodsSell.setIsUseBalancePayment(false);
-            }
-            studentPaymentOrder.setStatus(DealStatusEnum.CLOSE);
-            studentPaymentOrderService.update(studentPaymentOrder);
-            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
-                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
+            if(studentPaymentOrder != null){
+                if(studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS){
+                    throw new BizException("该订单已支付");
+                }
+                //关闭老订单
+                if(studentPaymentOrder.getBalancePaymentAmount() != null){
+                    studentGoodsSell.setIsUseBalancePayment(true);
+                }else {
+                    studentGoodsSell.setIsUseBalancePayment(false);
+                }
+                studentPaymentOrder.setStatus(DealStatusEnum.CLOSE);
+                studentPaymentOrderService.update(studentPaymentOrder);
+                if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                    sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
+                }
             }
         }
         studentGoodsSellDao.update(studentGoodsSell);

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

@@ -265,7 +265,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             if (studentLastChange.getChangeMusical() != null) {
                 subjectChange.setOriginalMusical(studentLastChange.getChangeMusical());
                 subjectChange.setOriginalMusicalGoods(goodsDao.get(studentLastChange.getChangeMusical()));
-                subjectChange.setOriginalMusicalPrice(studentLastChange.getOriginalMusicalPrice());
+                subjectChange.setOriginalMusicalPrice(studentLastChange.getChangeMusicalPrice());
             }
 
             if (studentLastChange.getChangeAccessories() != null) {

+ 29 - 3
mec-biz/src/main/resources/config/mybatis/SubjectChangeMapper.xml

@@ -190,7 +190,7 @@
         FROM subject_change
         WHERE student_id_ = #{studentId}
           AND music_group_id_ = #{musicGroupId}
-          AND status_ = 'SUCCESSED'
+          AND status_ = 2
         ORDER BY create_time_ DESC
         LIMIT 1
     </select>
@@ -254,11 +254,37 @@
     </select>
 
     <select id="getChangeGoods" resultMap="SubjectChange">
-        SELECT GROUP_CONCAT(original_musical_) musicGroupName,GROUP_CONCAT(original_accessories_) original_accessories_,
-        GROUP_CONCAT(change_musical_) trans_no_,GROUP_CONCAT(change_accessories_) change_accessories_
+        SELECT GROUP_CONCAT(original_musical_)     musicGroupName,
+               GROUP_CONCAT(original_accessories_) original_accessories_,
+               GROUP_CONCAT(change_musical_)       trans_no_,
+               GROUP_CONCAT(change_accessories_)   change_accessories_
         FROM subject_change
         WHERE music_group_id_ = #{musicGroupId}
           AND status_ = 2
         GROUP BY music_group_id_
     </select>
+    <resultMap id="SubjectChangeDto" type="com.ym.mec.biz.dal.entity.SubjectChange" extends="SubjectChange">
+        <collection property="changeMusicalGoods" ofType="com.ym.mec.biz.dal.entity.Goods">
+            <result property="id" column="musical_id_"/>
+            <result property="name" column="musical_name_"/>
+        </collection>
+        <collection property="changeAccessoriesGoods" ofType="com.ym.mec.biz.dal.entity.Goods">
+            <result property="id" column="accessories_id_"/>
+            <result property="name" column="accessories_name_"/>
+        </collection>
+    </resultMap>
+
+    <select id="getStudentGoods" resultMap="SubjectChangeDto">
+        SELECT sc.*, m.id_ musical_id_, m.name_ musical_name_, a.id_ accessories_id_, a.name_ accessories_name_
+        FROM subject_change sc
+                 LEFT JOIN goods m ON m.id_ = sc.change_musical_
+                 LEFT JOIN goods a ON FIND_IN_SET(a.id_, sc.change_accessories_)
+        WHERE sc.id_ IN (
+            SELECT MAX(id_)
+            FROM subject_change
+            WHERE music_group_id_ = #{musicGroupId}
+              AND status_ = 2
+            GROUP BY student_id_
+        )
+    </select>
 </mapper>