Bläddra i källkod

曲目批量启用/停用

liujunchi 3 år sedan
förälder
incheckning
c0a3fad305

+ 18 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -196,6 +196,24 @@ public class MusicSheetController extends BaseController {
         return status(musicSheetService.state(id,reasonDto.getReason()));
     }
 
+
+    /**
+     * 批量启用/停用
+     */
+    @PostMapping("/stateList")
+    @ApiOperation(value = "批量启用/停用")
+    @PreAuthorize("@pcs.hasPermissions('music/sheet/stateList')")
+    public HttpResponseResult<Boolean> stateList(@RequestBody ReasonDto reasonDto) {
+        if (StringUtil.isEmpty(reasonDto.getMusicSheetIds())) {
+            return failed("参数不能为空");
+        }
+        if (reasonDto.getState() == null) {
+            return failed("启用/禁用状态不能为空");
+        }
+
+        return status(musicSheetService.stateList(reasonDto));
+    }
+
     /**
      * 学生详情-乐谱
      */

+ 23 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ReasonDto.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto;
 
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -15,6 +16,28 @@ public class ReasonDto {
     @ApiModelProperty("曲目下架原因")
     private String  reason;
 
+    @ApiModelProperty("曲目id集合 逗号隔开")
+    private String musicSheetIds;
+
+    @ApiModelProperty("启用: 1 ,停用 : 0")
+    private YesOrNoEnum state;
+
+    public YesOrNoEnum getState() {
+        return state;
+    }
+
+    public void setState(YesOrNoEnum state) {
+        this.state = state;
+    }
+
+    public String getMusicSheetIds() {
+        return musicSheetIds;
+    }
+
+    public void setMusicSheetIds(String musicSheetIds) {
+        this.musicSheetIds = musicSheetIds;
+    }
+
     public String getReason() {
         return reason;
     }

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

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.ReasonDto;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetExport;
@@ -283,4 +284,12 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @return
      */
     Boolean top(Long musicSheetId);
+
+    /**
+     * 批量启用/停用
+     *
+     * @param reasonDto
+     * @return
+     */
+    Boolean stateList(ReasonDto reasonDto);
 }

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

@@ -5,12 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.*;
+import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
-import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
-import com.yonge.cooleshow.biz.dal.dto.MusicSheetExport;
-import com.yonge.cooleshow.biz.dal.dto.MusicSheetPayDto;
-import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
 import com.yonge.cooleshow.biz.dal.dto.search.*;
@@ -926,6 +924,36 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         return this.saveOrUpdate(musicSheet);
     }
 
+    @Override
+    public Boolean stateList(ReasonDto reasonDto) {
+        List<Long> idList = WrapperUtil.toLongList(reasonDto.getMusicSheetIds());
+
+        Collection<MusicSheet> musicSheets = this.listByIds(idList);
+        List<MusicSheet> musicSheetList = musicSheets.stream()
+                                              .filter(musicSheet -> !musicSheet.getState().equals(reasonDto.getState()))
+                                              .collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(musicSheetList)) {
+            return true;
+        }
+        this.lambdaUpdate()
+            .in(MusicSheet::getId,musicSheetList.stream().map(MusicSheet::getId).collect(Collectors.toList()))
+            .set(MusicSheet::getState,reasonDto.getState())
+            .update();
+
+        // 发送推送
+        if (reasonDto.getState().equals(YesOrNoEnum.YES)){
+            return true;
+        }
+        for (MusicSheet musicSheet : musicSheetList) {
+             if (SourceTypeEnum.TEACHER.equals(musicSheet.getSourceType())) {
+                 sendOutSaleMessage(reasonDto.getReason(),musicSheet);
+             }
+        }
+
+        return true;
+
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                 .map(sysUserFeignService::queryUserById)