Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

liweifan 3 éve
szülő
commit
bb77cd63e8

+ 1 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/config/ResourceServerConfig.java

@@ -27,7 +27,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
             .authorizeRequests().antMatchers("/task/**").hasIpAddress("0.0.0.0/0")
                 .and()
                 .authorizeRequests().antMatchers("/wechat/*","/v2/api-docs", "/code/*","/payment/callback/**",
-                 "/order/paySuccess/test")
+                 "/order/paySuccess/test","/order/cancelUserOrder/test")
             .permitAll().anyRequest().permitAll().and().httpBasic();
     }
 

+ 8 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java

@@ -145,4 +145,12 @@ public class OmsPortalOrderController {
         Integer count = portalOrderService.paySuccess(orderId,payType);
         return CommonResult.success(count, "支付成功");
     }
+
+    @ApiOperation("用户取消订单")
+    @GetMapping(value = "/cancelUserOrder/test")
+    @ResponseBody
+    public CommonResult cancelUserOrderTest(@RequestParam Long orderId) {
+        portalOrderService.cancelOrder(orderId, "用户取消订单", null);
+        return CommonResult.success(null);
+    }
 }

+ 2 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -388,6 +388,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             // 发起关单
             userOrderPaymentService.closePayment(cancelOrder.getOrderSn(), message, data);
 
+        } else {
+            throw new BizException("订单状态非待支付和支付中,不能取消");
         }
     }
 

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/HomeworkSearch.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.biz.dal.enums.HomeworkStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
@@ -35,6 +36,9 @@ public class HomeworkSearch extends QueryInfo {
     @ApiModelProperty("提交作业状态 0:否,1:是")
     private YesOrNoEnum submit;
 
+    @ApiModelProperty("NOTCOMMIT:未提交 ,NOTREVIEW: 未评价 REVIEWED:已评价")
+    private HomeworkStatusEnum homeworkStatus;
+
     @ApiModelProperty(value = "课程编号ID",hidden = true)
     private Long courseScheduleId;
 
@@ -57,6 +61,14 @@ public class HomeworkSearch extends QueryInfo {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date endTime;
 
+    public HomeworkStatusEnum getHomeworkStatus() {
+        return homeworkStatus;
+    }
+
+    public void setHomeworkStatus(HomeworkStatusEnum homeworkStatus) {
+        this.homeworkStatus = homeworkStatus;
+    }
+
     public Long getCourseScheduleId() {
         return courseScheduleId;
     }

+ 46 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/HomeworkStatusEnum.java

@@ -0,0 +1,46 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-06-17
+ */
+public enum HomeworkStatusEnum implements BaseEnum<String,HomeworkStatusEnum> {
+
+    NOTCOMMIT( "未提交"),
+    NOTREVIEW( "未评价"),
+    REVIEWED( "已评价"),
+
+    ;
+    @EnumValue
+    private String code;
+    private String msg;
+
+    HomeworkStatusEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public static GenderEnum valueOf(Integer code) {
+        GenderEnum[] values = GenderEnum.values();
+        for (GenderEnum value : values) {
+            if(value.getCode().equals(code)){
+                return value;
+            }
+        }
+        return null;
+    }
+}

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

@@ -66,8 +66,7 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
 
 	@Override
     public CourseHomeworkVo detail(Long id) {
-        CourseHomeworkVo detail = baseMapper.detail(id);
-        return detail;
+        return baseMapper.detail(id);
     }
     
     @Override
@@ -377,7 +376,7 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
         CourseScheduleHomeworkVo courseScheduleHomeworkVo = baseMapper
                 .selectCourseHomeworkByCourseId(query.getCourseId());
         if (courseScheduleHomeworkVo == null) {
-            return courseScheduleHomeworkVo;
+            return new CourseScheduleHomeworkVo();
         }
         // 课程组的群聊
         ImGroup imGroup = imGroupService.getByCourseGroupId(courseScheduleHomeworkVo.getCourseGroupId());

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

@@ -37,7 +37,7 @@ import java.util.stream.Collectors;
 @Service
 public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum> implements MusicAlbumService {
 
-    private final static Logger log = LoggerFactory.getLogger(MusicAlbumServiceImpl.class);
+    private static final Logger log = LoggerFactory.getLogger(MusicAlbumServiceImpl.class);
 
     @Autowired
     private MusicAlbumDao musicAlbumDao;
@@ -97,7 +97,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectAlbumDetailPage(page,query);
         albumDetailVo.setMusicSheetList(PageUtil.pageInfo(musicSheetVoIPage));
 
-        albumDetailVo.setMusicSheetCount(Long.valueOf(musicSheetVoIPage.getTotal()).intValue());
+        albumDetailVo.setMusicSheetCount((int) musicSheetVoIPage.getTotal());
         return albumDetailVo;
     }
 

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

@@ -21,7 +21,7 @@ import java.util.List;
 @Service
 public class MusicFavoriteServiceImpl extends ServiceImpl<MusicFavoriteDao,MusicFavorite> implements MusicFavoriteService {
 
-    private final static Logger log = LoggerFactory.getLogger(MusicFavoriteServiceImpl.class);
+    private static final Logger log = LoggerFactory.getLogger(MusicFavoriteServiceImpl.class);
 
     @Autowired
     private MusicFavoriteDao musicFavoriteDao;

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

@@ -1,15 +1,13 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.yonge.cooleshow.biz.dal.entity.MusicSheetPurchaseRecord;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.MusicSheetPurchaseRecordDao;
-import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
-import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheetPurchaseRecord;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetPurchaseRecordService;
 import org.slf4j.Logger;
 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.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
@@ -23,7 +21,7 @@ import java.util.List;
 @Service
 public class MusicSheetPurchaseRecordServiceImpl extends ServiceImpl<MusicSheetPurchaseRecordDao,MusicSheetPurchaseRecord> implements MusicSheetPurchaseRecordService {
 
-    private final static Logger log = LoggerFactory.getLogger(MusicSheetPurchaseRecordServiceImpl.class);
+    private static final Logger log = LoggerFactory.getLogger(MusicSheetPurchaseRecordServiceImpl.class);
 
     @Autowired
     private MusicSheetPurchaseRecordDao musicSheetPurchaseRecordDao;

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

@@ -75,9 +75,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     private StudentService studentService;
 
     @Autowired
-    private SysMessageConfigService sysMessageConfigService;
-
-    @Autowired
     private MusicSheetAuthRecordService musicSheetAuthRecordService;
 
     @Autowired
@@ -188,25 +185,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         if (ChargeTypeEnum.FREE.getCode().equals(detail.getChargeType().getCode())) {
             detail.setPlay(YesOrNoEnum.YES);
         }  else if (SysUserType.STUDENT.getCode().equals(userType.getCode())) {
-            detail.setPlay(YesOrNoEnum.NO);
-            // 单曲购买 判断购买记录,有记录课播放
-            if (ChargeTypeEnum.CHARGE.getCode().equals(detail.getChargeType().getCode())) {
-                // 学生须判断是否能播放曲目
-                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())) {
-                // 会员 判断是否为会员, 会员可播放
-                StudentVo studentVo = studentService.detail(sysUser.getId());
-                if (studentVo != null && YesOrNoEnum.YES.getCode().equals(studentVo.getIsVip().getCode())) {
-                    detail.setPlay(YesOrNoEnum.YES);
-                }
-            }
+            setStudentMusicSheet(sysUser.getId(), detail);
         } else {
             detail.setPlay(YesOrNoEnum.YES);
         }
@@ -217,6 +196,34 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         return detail;
     }
 
+    /**
+     * 设置学生曲目信息
+     *
+     * @param studentId 学生id
+     * @param detail 曲目详情
+     */
+    private void setStudentMusicSheet(Long studentId, MusicSheetDetailVo detail) {
+        detail.setPlay(YesOrNoEnum.NO);
+        // 单曲购买 判断购买记录,有记录课播放
+        if (ChargeTypeEnum.CHARGE.getCode().equals(detail.getChargeType().getCode())) {
+            // 学生须判断是否能播放曲目
+            MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase(
+                    studentId, 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())) {
+            // 会员 判断是否为会员, 会员可播放
+            StudentVo studentVo = studentService.detail(studentId);
+            if (studentVo != null && YesOrNoEnum.YES.getCode().equals(studentVo.getIsVip().getCode())) {
+                detail.setPlay(YesOrNoEnum.YES);
+            }
+        }
+    }
+
     @Override
     public IPage<MusicSheetVo> selectStudentPage(IPage<MusicSheetVo> page, StudentMusicSheetSearch query) {
         IPage<MusicSheetVo> musicSheetVoIPage = page.setRecords(baseMapper.selectStudentMusicPage(page, query));
@@ -337,11 +344,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     private void sendMusicSheetAuditMessage(TeacherMusicSheetAuditReq param, MusicSheet musicSheet, Map<Long, String> receivers) {
         if (AuthStatusEnum.PASS.getCode().equals(param.getAuthStatus().getCode())) {
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.MUSIC_SHEET_AUTH_PASS,
-                                               receivers, null, 0, null, ClientEnum.TEACHER.getCode(), musicSheet.getMusicSheetName());
+                           receivers, null, 0, null, ClientEnum.TEACHER.getCode(), musicSheet.getMusicSheetName());
         } else if (AuthStatusEnum.UNPASS.getCode().equals(param.getAuthStatus().getCode())){
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.MUSIC_SHEET_AUTH_UNPASS,
-                                               receivers, null, 0, null, ClientEnum.TEACHER.getCode(), musicSheet.getMusicSheetName(),
-                                               param.getRemark());
+                   receivers, null, 0, null, ClientEnum.TEACHER.getCode(), musicSheet.getMusicSheetName(),
+                   param.getRemark());
         }
     }
 
@@ -662,7 +669,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
             if (musicTags == null || musicTags.equals("")) {
                 errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), "曲目标签不能为空"));
             }  else {
-                List<String> stringList = Arrays.asList(musicTags.split(",|,"));
+                String[] stringList = musicTags.split("[,,]");
                 List<MusicTag> childrenMusicTag = new ArrayList<>();
                 for (MusicTagVo musicTagVo : musicTagVoList) {
                     childrenMusicTag.addAll(musicTagVo.getChildren());
@@ -708,10 +715,10 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
             if (!StringUtil.isEmpty(sheetExport.getAudioFileUrls())) {
 
                 List<MusicSheetAccompaniment> background = new ArrayList<>();
-                String[] audioFileUrls = sheetExport.getAudioFileUrls().split(",|,");
-                for (int i = 0; i < audioFileUrls.length; i++) {
+                String[] audioFileUrls = sheetExport.getAudioFileUrls().split("[,,]");
+                for (String audioFileUrl : audioFileUrls) {
                     MusicSheetAccompaniment musicSheetAccompaniment = new MusicSheetAccompaniment();
-                    musicSheetAccompaniment.setAudioFileUrl(audioFileUrls[i]);
+                    musicSheetAccompaniment.setAudioFileUrl(audioFileUrl);
                     background.add(musicSheetAccompaniment);
                 }
                 musicSheetDto.setBackground(background);

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

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.biz.dal.enums.HomeworkStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -40,6 +41,9 @@ public class CourseHomeworkVo{
 	private Integer classNum;
 
 
+	@ApiModelProperty("NOTCOMMIT:未提交 ,NOTREVIEW: 未评价 REVIEWED:已评价")
+	private HomeworkStatusEnum homeworkStatus;
+
 	@ApiModelProperty("上课日期")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@@ -85,6 +89,14 @@ public class CourseHomeworkVo{
 	@ApiModelProperty("作业提交时间")
 	private Date submitTime;
 
+	public HomeworkStatusEnum getHomeworkStatus() {
+		return homeworkStatus;
+	}
+
+	public void setHomeworkStatus(HomeworkStatusEnum homeworkStatus) {
+		this.homeworkStatus = homeworkStatus;
+	}
+
 	public Long getStudentId() {
 		return studentId;
 	}

+ 32 - 9
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml

@@ -91,19 +91,29 @@
     </select>
 
     <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo">
-        select distinct
-        cs.id_ AS courseId,
+        select distinct cs.id_              AS courseId,
         cs.course_group_id_ AS courseGroupId,
-        cs.class_date_ AS classDate,
-        cs.class_num_ as classNum,
-        cs.start_time_ AS startTime,
-        cs.end_time_ AS endTime,
-        cs.type_ as type,
-        ch.create_time_ as decorateTime
+        cs.class_date_      AS classDate,
+        cs.class_num_       as classNum,
+        cs.start_time_      AS startTime,
+        cs.end_time_        AS endTime,
+        cs.type_            as type,
+        ch.create_time_     as decorateTime,
+        (case when a.commitNum &gt; a.repliedNum then 'NOTREVIEW'
+        when a.studentNum &gt; a.commitNum then 'NOTCOMMIT'
+        else 'REVIEWED' end ) as homeworkStatus
         from course_schedule cs
         left join course_homework ch on ch.course_schedule_id_ = cs.id_
         left join student_course_homework sch on ch.id_ = sch.course_homework_id_
         left join course_schedule_student_payment cssp on cssp.course_id_ = cs.id_
+        left join (select cssp.course_id_,
+                count(cssp.id_) as studentNum,
+                sum(if(sch.attachments_ is null or sch.attachments_ = '',0,1)) as commitNum,
+                sum(if(sch.teacher_replied_ is null or sch.teacher_replied_ = '',0,1)) as repliedNum
+                from course_schedule_student_payment cssp
+                left join student_course_homework sch on sch.student_id_ = cssp.user_id_ and
+                sch.course_schedule_id_ = cssp.course_id_
+                group by  cssp.course_id_) a on a.course_id_ = cs.id_
         <where>
             <if test="param.decorate != null">
                 <if test="param.decorate.code == 0">
@@ -148,6 +158,19 @@
             <if test="param.endTime != null">
                 and #{param.endTime} &gt; ch.create_time_
             </if>
+            <if test="param.homeworkStatus != null">
+                <choose>
+                    <when test="param.homeworkStatus  == 'NOTREVIEW'">
+                        and a.commitNum &gt; a.repliedNum
+                    </when>
+                    <when test="param.homeworkStatus  == 'NOTCOMMIT'">
+                        and a.studentNum &gt; a.commitNum
+                    </when>
+                    <otherwise>
+                        and a.commitNum = a.repliedNum and a.studentNum = a.commitNum
+                    </otherwise>
+                </choose>
+            </if>
         </where>
         order by cs.start_time_
         <if test="param.date == null or param.date == ''">
@@ -177,7 +200,7 @@
         ,cs.course_group_id_ as courseGroupId
         ,if(ch.id_ is null,0,1) as decorateHomework
         ,if(sch.attachments_ is null or sch.attachments_ = '',0,1) as submitHomework
-        ,if(sch.teacher_replied_ is null or sch.attachments_ = '',0,1) as reviewHomework
+        ,if(sch.teacher_replied_ is null or sch.teacher_replied_ = '',0,1) as reviewHomework
         from course_schedule cs
         left join course_homework ch on ch.course_schedule_id_ = cs.id_
         left join student_course_homework sch on ch.id_ = sch.course_homework_id_