Explorar o código

Merge remote-tracking branch 'origin/master'

weifanli %!s(int64=3) %!d(string=hai) anos
pai
achega
533d4a8242

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetPurchaseRecord.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -47,10 +49,35 @@ public class MusicSheetPurchaseRecord extends BaseEntity {
     @ApiModelProperty(value = "购买价格")
     private java.math.BigDecimal purchasePrice;  //购买价格
 
+
+	@TableField("original_price_")
+	@ApiModelProperty(value = "原价")
+	private BigDecimal originalPrice;
+
+
+	@TableField("music_sheet_service_fee")
+	@ApiModelProperty("服务费")
+	private BigDecimal musicSheetServiceFee;
+
     @TableField("order_status_")
     @ApiModelProperty(value = "订单状态(1:已完成;0:取消)")
     private YesOrNoEnum orderStatus;  //订单状态(1:已完成;0:取消)
 
+	public BigDecimal getOriginalPrice() {
+		return originalPrice;
+	}
+
+	public void setOriginalPrice(BigDecimal originalPrice) {
+		this.originalPrice = originalPrice;
+	}
+
+	public BigDecimal getMusicSheetServiceFee() {
+		return musicSheetServiceFee;
+	}
+
+	public void setMusicSheetServiceFee(BigDecimal musicSheetServiceFee) {
+		this.musicSheetServiceFee = musicSheetServiceFee;
+	}
 
 	public MusicSheetPurchaseRecord setId(Long id) {
 	    this.id = id;

+ 30 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonPurchaseRecord.java

@@ -8,6 +8,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.math.BigDecimal;
+
 /**
  * 视频课购买记录表
  * @author yzp
@@ -31,20 +33,43 @@ public class VideoLessonPurchaseRecord extends BaseEntity {
 
     @TableField("purchase_time_")
     @ApiModelProperty(value = "购买时间")
-    private java.util.Date purchaseTime;  //购买时间
+    private java.util.Date purchaseTime;
+
+	@TableField("original_price_")
+	@ApiModelProperty(value = "原价")
+	private BigDecimal originalPrice;
+
+	@TableField("expect_price_")
+	@ApiModelProperty(value = "预计价格")
+	private BigDecimal expectPrice;
 
     @TableField("pay_money_")
     @ApiModelProperty(value = "支付金额")
-    private java.math.BigDecimal payMoney;  //支付金额
+    private BigDecimal payMoney;
 
     @TableField("order_no_")
     @ApiModelProperty(value = "订单流水号")
-    private String orderNo;  //订单流水号
+    private String orderNo;
 
     @TableField("order_status_")
-    @ApiModelProperty(value = "订单状态(1:已完成;0:取消)")
-    private Integer orderStatus;  //订单状态(1:已完成;0:取消)
+    @ApiModelProperty(value = "订单状态(1:已完成;0:取消/支付中)")
+    private Integer orderStatus;
+
+	public BigDecimal getOriginalPrice() {
+		return originalPrice;
+	}
+
+	public void setOriginalPrice(BigDecimal originalPrice) {
+		this.originalPrice = originalPrice;
+	}
+
+	public BigDecimal getExpectPrice() {
+		return expectPrice;
+	}
 
+	public void setExpectPrice(BigDecimal expectPrice) {
+		this.expectPrice = expectPrice;
+	}
 
 	public VideoLessonPurchaseRecord setId(Long id) {
 	    this.id = id;
@@ -109,10 +134,8 @@ public class VideoLessonPurchaseRecord extends BaseEntity {
 	    return this.orderStatus;
 	}
 
-
     @Override
     public String toString() {
         return ToStringBuilder.reflectionToString(this);
     }
-
 }

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -890,7 +890,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      */
     @Transactional(rollbackFor = Exception.class)
     public void buyPracticeCourseSuccess(UserOrderDetailVo orderParam) {
-        log.info("学生购买陪练课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
+        log.info("buyPracticeCourseSuccess  param:{}", JSON.toJSONString(orderParam));
         String orderNo = orderParam.getOrderNo();
         List<CourseScheduleStudentPaymentVo> paymentList = paymentDao.selectPaymentList(orderNo);
         if (paymentList.isEmpty()) {
@@ -928,6 +928,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             teacherSalary.setCreateTime(now);
         }
         courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
+        log.info("buyPracticeCourseSuccess ok");
     }
 
     /**
@@ -952,6 +953,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         this.removeByIds(scheduleIds);
         //删除course_group数据
         courseGroupService.removeById(courseGroupId);
+        log.info("buyPracticeCourseFailed ok");
     }
 
     /**

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

@@ -20,6 +20,7 @@ import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.exception.BizException;
 import org.slf4j.Logger;
@@ -30,6 +31,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -57,6 +60,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     private MusicFavoriteService musicFavoriteService;
 
     @Autowired
+    private SysConfigService sysConfigService;
+
+    @Autowired
     private MusicSheetPurchaseRecordService musicSheetPurchaseRecordService;
 
     @Autowired
@@ -356,14 +362,28 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     }
 
     @Override
+    @Transactional
     public void buyMusicSheetSuccess(UserOrderDetailVo userOrderDetailVo) {
+
+
+        // 曲目服务费比例
+        String musicSheetServiceFee= sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHEET_SERVICE_FEE);
+        BigDecimal serviceFee = new BigDecimal(musicSheetServiceFee).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+        //支付金额
+        BigDecimal actualPrice = userOrderDetailVo.getActualPrice();
+
+        //服务费
+        BigDecimal serviceFeeAmount = actualPrice.multiply(serviceFee).setScale(2, RoundingMode.HALF_UP);
+
         // 保存购买记录
         MusicSheetPurchaseRecord musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
         musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId());
         musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo());
-        musicSheetPurchaseRecord.setPurchasePrice(userOrderDetailVo.getExpectPrice());
+        musicSheetPurchaseRecord.setPurchasePrice(actualPrice);
         musicSheetPurchaseRecord.setPurchaseTime(new Date());
         musicSheetPurchaseRecord.setTeacherId(userOrderDetailVo.getMerchId());
+        musicSheetPurchaseRecord.setOriginalPrice(userOrderDetailVo.getOriginalPrice());
+        musicSheetPurchaseRecord.setMusicSheetServiceFee(serviceFeeAmount);
         musicSheetPurchaseRecord.setOrderStatus(YesOrNoEnum.YES);
         musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId());
         musicSheetPurchaseRecordService.save(musicSheetPurchaseRecord);
@@ -372,7 +392,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         UserAccountRecordDto userAccountRecordDto = new UserAccountRecordDto();
         userAccountRecordDto.setUserId(userOrderDetailVo.getMerchId());
         userAccountRecordDto.setFrozenType(FrozenTypeEnum.NONE);
-        userAccountRecordDto.setTransAmount(musicSheetPurchaseRecord.getPurchasePrice());
+
+        //
+        userAccountRecordDto.setTransAmount(actualPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP));
         userAccountRecordDto.setInOrOut(InOrOutEnum.IN);
         userAccountRecordDto.setBizType(AccountBizTypeEnum.MUSIC);
         userAccountRecordDto.setBizId(musicSheetPurchaseRecord.getMusicSheetId());

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

@@ -13,10 +13,12 @@ import com.yonge.cooleshow.biz.dal.dao.VideoLessonPurchaseRecordDao;
 import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
 import com.yonge.cooleshow.biz.dal.service.UserAccountService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.exception.BizException;
 import org.slf4j.Logger;
@@ -27,6 +29,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 /**
@@ -49,6 +52,8 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
     private VideoLessonGroupDao videoLessonGroupDao;
     @Autowired
     private UserAccountService userAccountService;
+    @Autowired
+    private SysConfigService sysConfigService;
 
     public VideoLessonPurchaseRecordDao getDao() {
         return videoLessonPurchaseRecordDao;
@@ -81,15 +86,17 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         purchaseRecord.setOrderNo(orderNo);
         purchaseRecord.setStudentId(studentId);
         purchaseRecord.setOrderStatus(0);
+        purchaseRecord.setOriginalPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));//原价
+        purchaseRecord.setExpectPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));//预计价格
         videoLessonPurchaseRecordDao.insert(purchaseRecord);
 
         OrderCreateRes orderCreateRes = new OrderCreateRes();
         orderCreateRes.setRes(true);
         orderCreateRes.setMerchId(lessonGroup.getTeacherId());
         orderCreateRes.setBizId(orderReqInfo.getCouponId());
-        orderCreateRes.setOriginalPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));
-        orderCreateRes.setExpectPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));
-        orderCreateRes.setActualPrice(purchaseRecord.getPayMoney());
+        orderCreateRes.setOriginalPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));//原价
+        orderCreateRes.setExpectPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice()));//预计价格
+        orderCreateRes.setActualPrice(purchaseRecord.getPayMoney());//实际价格
         orderCreateRes.setGoodNum(lessonGroup.getLessonCount());
         orderCreateRes.setGoodType(GoodTypeEnum.VIDEO);
         HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>();
@@ -105,7 +112,7 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
      */
     @Transactional(rollbackFor = Exception.class)
     public void buyVideoCourseSuccess(UserOrderDetailVo orderParam) {
-        log.info("学生购买视频课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
+        log.info("buyVideoCourseSuccess  param:{}", JSON.toJSONString(orderParam));
         String orderNo = orderParam.getOrderNo();
 
         VideoLessonPurchaseRecord purchaseRecord = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
@@ -114,21 +121,29 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
             throw new BizException("课程组购买记录不存在!");
         }
 
-        //video_lesson_purchase_record中order_status_改为1
+        //支付状态改为1
         videoLessonPurchaseRecordDao.updateStatus(orderNo);
+
+        //查询直播课服务费
+        String videoServiceRateStr = sysConfigService.findConfigValue(SysConfigConstant.VIDEO_LESSON_SERVICE_FEE);
+        BigDecimal liveServiceRate = new BigDecimal(videoServiceRateStr).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+
         //查询组信息
         VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(purchaseRecord.getVideoLessonGroupId());
 
         //记录流水
+        BigDecimal payMoney = purchaseRecord.getPayMoney();//学生支付金额
         UserAccountRecordDto userAccountRecord = new UserAccountRecordDto();
         userAccountRecord.setUserId(lessonGroup.getTeacherId());
-        userAccountRecord.setTransAmount(purchaseRecord.getPayMoney());
+        //扣除手续费后所得金额
+        userAccountRecord.setTransAmount(payMoney.subtract(payMoney.multiply(liveServiceRate)).setScale(2, RoundingMode.HALF_UP));
         userAccountRecord.setInOrOut(InOrOutEnum.IN);
         userAccountRecord.setBizType(AccountBizTypeEnum.VIDEO);
         userAccountRecord.setBizId(lessonGroup.getTeacherId());
         userAccountRecord.setBizName(lessonGroup.getLessonName());
         userAccountRecord.setOrderNo(orderNo);
         userAccountService.accountChange(userAccountRecord);
+        log.info("buyVideoCourseSuccess ok");
     }
 
     /**
@@ -149,6 +164,7 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         //删除video_lesson_purchase_record数据
         videoLessonPurchaseRecordDao.delete(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
                 .eq(VideoLessonPurchaseRecord::getOrderNo, orderNo));
+        log.info("buyVideoCourseFailed ok");
     }
 
     /**

+ 5 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicTagMapper.xml

@@ -104,8 +104,8 @@
             ms.del_flag_ = 0
             <if test="longs != null and longs.size() != 0">
                 and
-                <foreach collection="longs" item="item" open="" close="" >
-                    find_in_set(ms.music_tag_)
+                <foreach collection="longs" item="item" open="(" close=")"  separator="or">
+                    find_in_set(#{item},ms.music_tag_)
                 </foreach>
             </if>
         </where>
@@ -115,10 +115,11 @@
 
         select count(1) from music_album ms
         <where>
+            ms.del_flag_ = 0
             <if test="longs != null and longs.size() != 0">
                 and
-                <foreach collection="longs" item="item" open="" close="" >
-                    find_in_set(ms.album_tag_)
+                <foreach collection="longs" item="item" open="(" close=")"  separator="or">
+                    find_in_set(#{item},ms.album_tag_)
                 </foreach>
             </if>
         </where>