Ver Fonte

add:曲目购买记录中间状态

liujunchi há 2 anos atrás
pai
commit
dedb78c2d9

+ 5 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetPurchaseRecord.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -60,8 +61,8 @@ public class MusicSheetPurchaseRecord extends BaseEntity {
 	private BigDecimal musicSheetServiceFee;
 
     @TableField("order_status_")
-    @ApiModelProperty(value = "订单状态(1:已完成;0:取消)")
-    private YesOrNoEnum orderStatus;  //订单状态(1:已完成;0:取消)
+    @ApiModelProperty(value = "订单状态(WAIT_PAY:待支付;PAYING:支付中,PAID:已付款)")
+    private OrderStatusEnum orderStatus;  //订单状态(1:已完成;0:取消)
 
 	public BigDecimal getOriginalPrice() {
 		return originalPrice;
@@ -142,12 +143,12 @@ public class MusicSheetPurchaseRecord extends BaseEntity {
 	    return this.purchasePrice;
 	}
 
-	public MusicSheetPurchaseRecord setOrderStatus(YesOrNoEnum orderStatus) {
+	public MusicSheetPurchaseRecord setOrderStatus(OrderStatusEnum orderStatus) {
 	    this.orderStatus = orderStatus;
 	    return this;
 	}
 
-	public YesOrNoEnum getOrderStatus() {
+	public OrderStatusEnum getOrderStatus() {
 	    return this.orderStatus;
 	}
 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetPurchaseRecordService.java

@@ -18,5 +18,5 @@ public interface MusicSheetPurchaseRecordService extends IService<MusicSheetPurc
      * @param musicSheetId 曲目id
      * @return boolean
      */
-    boolean checkPurchase(Long userId, Long musicSheetId);
+    MusicSheetPurchaseRecord checkPurchase(Long userId, Long musicSheetId);
 }

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -184,4 +184,18 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @param userOrderDetailVo
      */
     void buyMusicSheetSuccess(UserOrderDetailVo userOrderDetailVo);
+
+    /**
+     * 订单生产后,创建记录
+     *
+     * @param userOrderDetailVo
+     */
+    void orderAfterSheet(UserOrderDetailVo userOrderDetailVo);
+
+    /**
+     *  订单取消
+     *
+     * @param userOrderDetailVo
+     */
+    void buyMusicSheetCancel(UserOrderDetailVo userOrderDetailVo);
 }

+ 14 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetPurchaseRecordServiceImpl.java

@@ -9,6 +9,9 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
 
 /**
  * MusicSheetPurchaseRecordService服务实现类
@@ -29,12 +32,16 @@ public class MusicSheetPurchaseRecordServiceImpl extends ServiceImpl<MusicSheetP
     }
 
     @Override
-    public boolean checkPurchase(Long userId, Long musicSheetId) {
-        Integer count = this.lambdaQuery()
-                            .eq(MusicSheetPurchaseRecord::getMusicSheetId, musicSheetId)
-                            .eq(MusicSheetPurchaseRecord::getStudentId, userId)
-                            .eq(MusicSheetPurchaseRecord::getOrderStatus, YesOrNoEnum.YES.getCode())
-                            .count();
-        return count > 0 ;
+    public MusicSheetPurchaseRecord checkPurchase(Long userId, Long musicSheetId) {
+        List<MusicSheetPurchaseRecord> list = this.lambdaQuery()
+                                                  .eq(MusicSheetPurchaseRecord::getMusicSheetId, musicSheetId)
+                                                  .eq(MusicSheetPurchaseRecord::getStudentId, userId)
+                                                  .eq(MusicSheetPurchaseRecord::getOrderStatus,
+                                                      YesOrNoEnum.YES.getCode())
+                                                  .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return null;
+        }
+        return list.get(0);
     }
 }

+ 38 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java

@@ -160,9 +160,13 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
             // 单曲购买 判断购买记录,有记录课播放
             if (ChargeTypeEnum.CHARGE.getCode().equals(detail.getChargeType().getCode())) {
                 // 学生须判断是否能播放曲目
-                boolean b = musicSheetPurchaseRecordService.checkPurchase(sysUser.getId(),detail.getId());
-                if (b) {
-                    detail.setPlay(YesOrNoEnum.YES);
+                MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase(
+                        sysUser.getId(), detail.getId());
+                if (musicSheetPurchaseRecord != null) {
+                    detail.setOrderStatus(musicSheetPurchaseRecord.getOrderStatus());
+                    if (OrderStatusEnum.PAID.getCode().equals(musicSheetPurchaseRecord.getOrderStatus().getCode())) {
+                        detail.setPlay(YesOrNoEnum.YES);
+                    }
                 }
             } else if  (ChargeTypeEnum.VIP.getCode().equals(detail.getChargeType().getCode())) {
                 // 会员 判断是否为会员, 会员可播放
@@ -376,7 +380,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         BigDecimal serviceFeeAmount = actualPrice.multiply(serviceFee).setScale(2, RoundingMode.HALF_UP);
 
         // 保存购买记录
-        MusicSheetPurchaseRecord musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
+        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
+                .checkPurchase(userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId());
+        if (musicSheetPurchaseRecord == null) {
+            musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
+        }
         musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId());
         musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo());
         musicSheetPurchaseRecord.setPurchasePrice(actualPrice);
@@ -384,7 +392,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         musicSheetPurchaseRecord.setTeacherId(userOrderDetailVo.getMerchId());
         musicSheetPurchaseRecord.setOriginalPrice(userOrderDetailVo.getOriginalPrice());
         musicSheetPurchaseRecord.setMusicSheetServiceFee(serviceFeeAmount);
-        musicSheetPurchaseRecord.setOrderStatus(YesOrNoEnum.YES);
+        musicSheetPurchaseRecord.setOrderStatus(OrderStatusEnum.PAID);
         musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId());
         musicSheetPurchaseRecordService.save(musicSheetPurchaseRecord);
 
@@ -393,7 +401,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         userAccountRecordDto.setUserId(userOrderDetailVo.getMerchId());
         userAccountRecordDto.setFrozenType(FrozenTypeEnum.NONE);
 
-        //
         userAccountRecordDto.setTransAmount(actualPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP));
         userAccountRecordDto.setInOrOut(InOrOutEnum.IN);
         userAccountRecordDto.setBizType(AccountBizTypeEnum.MUSIC);
@@ -403,6 +410,31 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         userAccountService.accountChange(userAccountRecordDto);
     }
 
+    @Override
+    public void orderAfterSheet(UserOrderDetailVo userOrderDetailVo) {
+        // 保存购买记录
+        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
+                .checkPurchase(userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId());
+        if (musicSheetPurchaseRecord == null) {
+            musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
+        }
+        musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId());
+        musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo());
+        musicSheetPurchaseRecord.setTeacherId(userOrderDetailVo.getMerchId());
+        musicSheetPurchaseRecord.setOriginalPrice(userOrderDetailVo.getOriginalPrice());
+        musicSheetPurchaseRecord.setOrderStatus(OrderStatusEnum.WAIT_PAY);
+        musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId());
+        musicSheetPurchaseRecordService.save(musicSheetPurchaseRecord);
+    }
+
+    @Override
+    public void buyMusicSheetCancel(UserOrderDetailVo userOrderDetailVo) {
+        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
+                .checkPurchase(userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId());
+        if (musicSheetPurchaseRecord == null) return;
+        musicSheetPurchaseRecordService.removeById(musicSheetPurchaseRecord.getId());
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                        .map(sysUserFeignService::queryUserById)

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -91,6 +91,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 
         /**********订单生成后******************/
 
+
+        //曲目购买
+        orderAfter.put(GoodTypeEnum.MUSIC,musicSheetService::orderAfterSheet);
+
         /**********订单完成后******************/
         //vip开通缴费
         orderSuccess.put(GoodTypeEnum.VIP, memberPriceSettingsService::orderSuccess);
@@ -113,6 +117,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         orderCancel.put(GoodTypeEnum.VIDEO, recordService::buyVideoCourseFailed);
         //直播课购买
         orderCancel.put(GoodTypeEnum.LIVE, courseGroupService::buyLiveCourseCancel);
+
+        // 曲目购买
+        orderCancel.put(GoodTypeEnum.MUSIC,musicSheetService::buyMusicSheetCancel);
     }
 
     @Override

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -21,6 +22,9 @@ public class MusicSheetDetailVo extends MusicSheet {
     @ApiModelProperty("是否能播放(0:否,1:是) 学生端进入云教练判断 试用/完整 播放")
     private YesOrNoEnum play;
 
+    @ApiModelProperty("订单状态(WAIT_PAY:待支付;PAYING:支付中,PAID:已付款)")
+    private OrderStatusEnum orderStatus;
+
     @ApiModelProperty("上传老师名称")
     private String userName;
 
@@ -80,5 +84,13 @@ public class MusicSheetDetailVo extends MusicSheet {
     public void setPlay(YesOrNoEnum play) {
         this.play = play;
     }
+
+    public OrderStatusEnum getOrderStatus() {
+        return orderStatus;
+    }
+
+    public void setOrderStatus(OrderStatusEnum orderStatus) {
+        this.orderStatus = orderStatus;
+    }
 }
 

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -213,7 +213,7 @@
         <result column="url" jdbcType="BOOLEAN" property="url"/>
         <result column="metronomeUrl" jdbcType="BOOLEAN" property="metronomeUrl"/>
         <result column="midiUrl" jdbcType="BOOLEAN" property="midiUrl"/>
-        <result column="mp3Type" jdbcType="BOOLEAN" property="mp3Type"/>
+        <result column="mp3Type" jdbcType="VARCHAR" property="mp3Type"/>
         <result column="remark" jdbcType="VARCHAR" property="remark"/>
         <result column="userName" jdbcType="VARCHAR" property="userName"/>
         <collection property="background" ofType="com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment">