Browse Source

Merge remote-tracking branch 'origin/master'

weifanli 3 years ago
parent
commit
b35c78cadc

+ 4 - 0
cooleshow-mall/mall-admin/pom.xml

@@ -40,6 +40,10 @@
             <groupId>com.yonge.cooleshow</groupId>
             <artifactId>mall-security</artifactId>
         </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.yonge.cooleshow</groupId>-->
+<!--            <artifactId>auth-api</artifactId>-->
+<!--        </dependency>-->
         <dependency>
             <groupId>com.aliyun.oss</groupId>
             <artifactId>aliyun-sdk-oss</artifactId>

+ 13 - 0
cooleshow-mall/mall-admin/src/main/resources/bootstrap-dev.yml

@@ -0,0 +1,13 @@
+spring:
+  cloud:
+    nacos:
+      config:
+        server-addr: 47.114.1.200:8848
+        namespace: 6f8374a9-598f-4889-bb17-476070ffb8de
+        group: DEFAULT_GROUP
+        prefix: mall-admin
+        file-extension: yaml
+        refresh:
+          enabled: true
+        enabled: true
+

+ 62 - 0
cooleshow-mall/mall-admin/src/main/resources/logback-spring.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+	<property name="LOG_HOME" value="/mdata/logs/task-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="CONSOLE_LOG_PATTERN"
+			  value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
+
+	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder charset="UTF-8">
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="file"
+			  class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>${LOG_HOME}</FileNamePattern>
+			<MaxHistory>90</MaxHistory>
+			<TimeBasedFileNamingAndTriggeringPolicy
+					class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<MaxFileSize>20MB</MaxFileSize>
+			</TimeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+
+		<encoder>
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<logger name="com.yonge.cooleshow" level="debug" />
+
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+	<!--开发环境:打印控制台 -->
+	<springProfile name="dev">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<springProfile name="test">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<!--生产环境:输出到文件 -->
+	<springProfile name="prod">
+		<root level="WARN">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+</configuration>

+ 12 - 0
cooleshow-mall/mall-portal/src/main/resources/bootstrap-dev.yml

@@ -0,0 +1,12 @@
+spring:
+  cloud:
+    nacos:
+      config:
+        server-addr: 47.114.1.200:8848
+        namespace: 6f8374a9-598f-4889-bb17-476070ffb8de
+        group: DEFAULT_GROUP
+        prefix: mall-portal
+        file-extension: yaml
+        refresh:
+          enabled: true
+        enabled: true

+ 62 - 0
cooleshow-mall/mall-portal/src/main/resources/logback-spring.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+	<property name="LOG_HOME" value="/mdata/logs/task-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="CONSOLE_LOG_PATTERN"
+			  value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
+
+	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder charset="UTF-8">
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="file"
+			  class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>${LOG_HOME}</FileNamePattern>
+			<MaxHistory>90</MaxHistory>
+			<TimeBasedFileNamingAndTriggeringPolicy
+					class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<MaxFileSize>20MB</MaxFileSize>
+			</TimeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+
+		<encoder>
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<logger name="com.yonge.cooleshow" level="debug" />
+
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+	<!--开发环境:打印控制台 -->
+	<springProfile name="dev">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<springProfile name="test">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<!--生产环境:输出到文件 -->
+	<springProfile name="prod">
+		<root level="WARN">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+</configuration>

+ 9 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicAlbumController.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
@@ -48,6 +49,8 @@ public class MusicAlbumController extends BaseController {
 
         musicAlbum.setCreateBy(sysUser.getId());
         musicAlbum.setCreateTime(new Date());
+        musicAlbum.setUpdateBy(sysUser.getId());
+        musicAlbum.setUpdateTime(new Date());
         musicAlbum.setAlbumStatus(YesOrNoEnum.NO);
         return succeed(musicAlbumService.createMusicAlbum(musicAlbum));
     }
@@ -73,7 +76,10 @@ public class MusicAlbumController extends BaseController {
         if (musicAlbum.getId()==null){
             return failed("缺少ID");
         }
-
+        MusicAlbum service = musicAlbumService.getById(musicAlbum.getId());
+        if (YesOrNoEnum.YES.getCode().equals(service.getAlbumStatus().getCode())) {
+            return failed("启用状态不许修改");
+        }
         musicAlbum.setUpdateBy(sysUser.getId());
         musicAlbum.setUpdateTime(new Date());
         return succeed(musicAlbumService.updateMusicAlbum(musicAlbum));
@@ -93,9 +99,9 @@ public class MusicAlbumController extends BaseController {
     /**
      * 启用/停用
      */
-    @PostMapping("/state")
+    @PostMapping("/state/{id}")
     @ApiOperation(value = "启用/停用", notes = "传入id")
-    public HttpResponseResult<Boolean> state(@ApiParam(value = "专辑编号", required = true) @RequestParam Long id) {
+    public HttpResponseResult<Boolean> state(@ApiParam(value = "专辑编号", required = true)  @PathVariable Long id) {
         if (StringUtil.isEmpty(id)) {
             return failed("参数不能为空");
         }

+ 19 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -14,6 +14,7 @@ import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
 import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.service.MusicTagService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
@@ -51,6 +52,8 @@ public class MusicSheetController extends BaseController {
 	@Autowired
 	private MusicSheetService musicSheetService;
 
+    @Autowired
+    private MusicTagService musicTagService;
 
     /**
      * 查询单条
@@ -81,6 +84,14 @@ public class MusicSheetController extends BaseController {
             return failed("曲目声部不能为空");
         }
 
+        String musicTag = musicSheetDto.getMusicTag();
+        List<Long> musicTagList = StringUtil.toLongList(musicTag);
+
+        //  一级曲谱标签只能选一个二级
+        if (!musicTagService.checkParentDifferent(musicTagList)) {
+            return failed("每个一级标签只能选一个二级标签");
+        }
+
         musicSheetDto.setUserId(sysUser.getId());
         musicSheetDto.setAuditStatus(AuthStatusEnum.PASS);
         musicSheetDto.setDelFlag(false);
@@ -96,6 +107,8 @@ public class MusicSheetController extends BaseController {
             BeanUtils.copyProperties(musicSheetDto, musicSheet);
             musicSheet.setCreateBy(sysUser.getId());
             musicSheet.setCreateTime(new Date());
+            musicSheet.setUpdateTime(new Date());
+            musicSheet.setUpdateBy(sysUser.getId());
             musicSheet.setState(YesOrNoEnum.NO);
             musicSheetService.save(musicSheet);
         }
@@ -130,6 +143,10 @@ public class MusicSheetController extends BaseController {
         if (musicSheet.getId()==null){
             return failed("缺少ID");
         }
+        MusicSheet service = musicSheetService.getById(musicSheet.getId());
+        if (YesOrNoEnum.YES.getCode().equals(service.getState().getCode())) {
+            return failed("启用状态不许修改");
+        }
 
         musicSheet.setUpdateBy(sysUser.getId());
         musicSheet.setUpdateTime(new Date());
@@ -157,9 +174,9 @@ public class MusicSheetController extends BaseController {
     /**
      * 启用/停用
      */
-    @PostMapping("/state")
+    @PostMapping("/state/{id}")
     @ApiOperation(value = "启用/停用", notes = "传入id")
-    public HttpResponseResult<Boolean> state(@ApiParam(value = "曲目编号", required = true) @RequestParam Long id) {
+    public HttpResponseResult<Boolean> state(@ApiParam(value = "曲目编号", required = true)  @PathVariable Long id) {
         if (StringUtil.isEmpty(id)) {
             return failed("参数不能为空");
         }

+ 17 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicTagController.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.admin.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.MusicTagSaveDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
+import com.yonge.cooleshow.biz.dal.entity.MusicTag;
 import com.yonge.cooleshow.biz.dal.service.MusicTagService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
@@ -64,6 +65,12 @@ public class MusicTagController extends BaseController {
 	@PostMapping(value = "/save",  consumes="application/json", produces="application/json")
 	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
 	public HttpResponseResult<Boolean> save(@Validated(MusicTagSaveDto.Create.class) @RequestBody MusicTagSaveDto musicTagSaveDto) {
+		if (musicTagSaveDto.getParentTagId() != null && musicTagSaveDto.getParentTagId() != 0) {
+			MusicTag musicTag = musicTagService.getById(musicTagSaveDto.getParentTagId());
+			if (musicTag.getParentTagId() != 0) {
+				return failed("标签只能有两级");
+			}
+		}
 		return succeed(musicTagService.createMusicTag(musicTagSaveDto));
 	}
 
@@ -73,15 +80,21 @@ public class MusicTagController extends BaseController {
 	@PostMapping(value =  "/update",  consumes="application/json", produces="application/json")
 	@ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
 	public HttpResponseResult<Boolean> update(@Validated(MusicTagSaveDto.Update.class) @RequestBody MusicTagSaveDto musicTagSaveDto) {
+		if (musicTagSaveDto.getParentTagId() != null && musicTagSaveDto.getParentTagId() != 0) {
+			MusicTag musicTag = musicTagService.getById(musicTagSaveDto.getParentTagId());
+			if (musicTag.getParentTagId() != 0) {
+				return failed("标签只能有两级");
+			}
+		}
 		return succeed(musicTagService.updateMusicTag(musicTagSaveDto));
 	}
 
  	/**
 	 * 删除
 	 */
-	@PostMapping("/remove")
+	@PostMapping("/remove/{id}")
 	@ApiOperation(value = "逻辑删除", notes = "传入id")
-	public HttpResponseResult<Boolean> remove(@ApiParam(value = "标签编号", required = true) @RequestParam Long id) {
+	public HttpResponseResult<Boolean> remove(@ApiParam(value = "标签编号", required = true) @PathVariable Long id) {
         if (StringUtil.isEmpty(id)) {
 			return failed("参数不能为空");
 		}
@@ -91,9 +104,9 @@ public class MusicTagController extends BaseController {
 	/**
 	 * 启用/停用
 	 */
-	@PostMapping("/state")
+	@PostMapping("/state/{id}")
 	@ApiOperation(value = "启用/停用", notes = "传入id")
-	public HttpResponseResult<Boolean> state(@ApiParam(value = "标签编号", required = true) @RequestParam Long id) {
+	public HttpResponseResult<Boolean> state(@ApiParam(value = "标签编号", required = true)  @PathVariable Long id) {
 		if (StringUtil.isEmpty(id)) {
 			return failed("参数不能为空");
 		}

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicTagService.java

@@ -66,4 +66,12 @@ public interface MusicTagService extends IService<MusicTag>  {
 	 * @return list
 	 */
     List<MusicTagVo> selectMusicTagTree();
+
+	/**
+	 * 检查每个二级标签都在不同的一级标签下
+	 *
+	 * @param musicTagIdList 二级标签id集合
+	 * @return boolean
+	 */
+    boolean checkParentDifferent(List<Long> musicTagIdList);
 }

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

@@ -70,6 +70,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         BeanUtils.copyProperties(musicSheetDto, musicSheet);
         //保存主表
         musicSheet.setCreateBy(sysUser.getId());
+        musicSheet.setUpdateBy(sysUser.getId());
+        musicSheet.setUpdateTime(new Date());
         musicSheet.setState(YesOrNoEnum.NO);
         musicSheet.setCreateTime(new Date());
         int count = musicSheetDao.insert(musicSheet);

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

@@ -18,6 +18,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -97,10 +98,20 @@ public class MusicTagServiceImpl extends ServiceImpl<MusicTagDao, MusicTag> impl
         musicTag.setId(musicTagId);
         if (tag.getState().getCode().equals(YesOrNoEnum.NO.getCode())) {
             musicTag.setState(YesOrNoEnum.YES);
+            return this.updateById(musicTag);
         } else {
-            musicTag.setState(YesOrNoEnum.NO);
+            // 一级停用,二级也停用
+            if (musicTag.getParentTagId() == null || musicTag.getParentTagId() ==0) {
+                return this.lambdaUpdate()
+                    .eq(MusicTag::getParentTagId,musicTagId)
+                    .or(wrapper -> wrapper.eq(MusicTag::getId,musicTagId))
+                    .set(MusicTag::getState,YesOrNoEnum.NO)
+                    .update();
+            } else {
+                musicTag.setState(YesOrNoEnum.NO);
+                return this.updateById(musicTag);
+            }
         }
-        return this.updateById(musicTag);
     }
 
     @Override
@@ -122,7 +133,9 @@ public class MusicTagServiceImpl extends ServiceImpl<MusicTagDao, MusicTag> impl
         }
         musicTag.setName(musicTagSaveDto.getName());
         musicTag.setCreateTime(new Date());
+        musicTag.setUpdateTime(new Date());
         musicTag.setCreateBy(sysUser.getId());
+        musicTag.setUpdateBy(sysUser.getId());
         return this.save(musicTag);
     }
 
@@ -199,5 +212,16 @@ public class MusicTagServiceImpl extends ServiceImpl<MusicTagDao, MusicTag> impl
         return tree;
     }
 
+    @Override
+    public boolean checkParentDifferent(List<Long> musicTagIdList) {
+
+        if (CollectionUtils.isEmpty(musicTagIdList)) {
+            return true;
+        }
+        List<MusicTag> list = this.lambdaQuery().in(MusicTag::getId, musicTagIdList).list();
+        return list.size() == musicTagIdList.size();
+
+    }
+
 
 }