yonge преди 3 години
родител
ревизия
a0be763e1d
променени са 17 файла, в които са добавени 909 реда и са изтрити 6 реда
  1. 3 3
      cooleshow-user/pom.xml
  2. 2 2
      cooleshow-user/user-admin/pom.xml
  3. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/AdminApplication.java
  4. 55 0
      cooleshow-user/user-admin/src/main/resources/logback-spring.xml
  5. 30 0
      cooleshow-user/user-biz/pom.xml
  6. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/AppVersionInfoDao.java
  7. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java
  8. 133 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/AppVersionInfo.java
  9. 150 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Subject.java
  10. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/YesOrNoEnum.java
  11. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SubjectQueryInfo.java
  12. 15 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AppVersionInfoService.java
  13. 32 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SubjectService.java
  14. 59 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/AppVersionInfoServiceImpl.java
  15. 93 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java
  16. 111 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/AppVersionInfoMapper.xml
  17. 111 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml

+ 3 - 3
cooleshow-user/pom.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
@@ -27,5 +26,6 @@
         <module>user-student</module>
         <module>user-teacher</module>
         <module>user-admin</module>
-    </modules>
+      <module>user-biz</module>
+  </modules>
 </project>

+ 2 - 2
cooleshow-user/user-admin/pom.xml

@@ -39,7 +39,7 @@
 			<artifactId>swagger-spring-boot-starter</artifactId>
 		</dependency>
 
-		<!-- <dependency>
+		<dependency>
 			<groupId>com.alibaba</groupId>
 			<artifactId>druid-spring-boot-starter</artifactId>
 		</dependency>
@@ -52,7 +52,7 @@
 		<dependency>
 			<groupId>com.yonge.toolset</groupId>
 			<artifactId>audit-log</artifactId>
-		</dependency> -->
+		</dependency>
 
 		<dependency>
 			<groupId>com.github.whvcse</groupId>

+ 1 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/AdminApplication.java → cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/AdminApplication.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow;
+package com.yonge.cooleshow.admin;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;

+ 55 - 0
cooleshow-user/user-admin/src/main/resources/logback-spring.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+	<property name="LOG_HOME" value="/mdata/logs/cms-%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.ym.mec" level="INFO" />
+
+	<!--开发环境:打印控制台 -->
+	<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>

+ 30 - 0
cooleshow-user/user-biz/pom.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>com.yonge.cooleshow</groupId>
+		<artifactId>cooleshow-user</artifactId>
+		<version>1.0</version>
+	</parent>
+	<groupId>com.yonge.cooleshow</groupId>
+	<artifactId>user-biz</artifactId>
+	<version>1.0</version>
+	<name>user-biz</name>
+	<url>http://maven.apache.org</url>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+	<dependencies>
+		<dependency>
+			<groupId>com.yonge.cooleshow</groupId>
+			<artifactId>cooleshow-common</artifactId>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.spring4all</groupId>
+			<artifactId>swagger-spring-boot-starter</artifactId>
+		</dependency>
+	</dependencies>
+</project>

+ 17 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/AppVersionInfoDao.java

@@ -0,0 +1,17 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import java.util.List;
+
+import com.yonge.cooleshow.biz.dal.entity.AppVersionInfo;
+import com.yonge.cooleshow.common.dal.BaseDAO;
+
+public interface AppVersionInfoDao extends BaseDAO<Integer, AppVersionInfo> {
+
+	List<AppVersionInfo> queryNewestByPlatform(String platform);
+
+	/**
+	 * 修改所有的为历史
+	 * @param platform
+	 */
+	void batchUpdateStatus(String platform);
+}

+ 34 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java

@@ -0,0 +1,34 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.common.dal.BaseDAO;
+
+public interface SubjectDao extends BaseDAO<Integer, Subject> {
+
+    /**
+     * 根据父级id查询子级列表
+     *
+     * @param parentId
+     * @return
+     */
+    List<Subject> findByParentId(@Param("parentId") Integer parentId, @Param("delFlag") YesOrNoEnum delFlag);
+
+    /**
+     * 根据声部编号列表获取声部名称map
+     *
+     * @param subjectIds
+     * @return
+     */
+    List<Map<Integer, String>> queryNameByIds(@Param("subjectIds") String subjectIds);
+
+    List<Subject> findBySubjectByIdList(@Param("subjectIdList") String subjectIdList);
+
+    List<Subject> findBySubjectIds(@Param("subjectIds") List<Integer> subjectIds);
+
+}

+ 133 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/AppVersionInfo.java

@@ -0,0 +1,133 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(app_version_info):
+ */
+public class AppVersionInfo {
+
+	/**  */
+	private Integer id;
+	
+	/** 平台(andorid/ios) */
+	private String platform;
+	
+	/** 版本号(以V开头) */
+	private String version;
+	
+	/** 状态(newest/history) */
+	private String status;
+	
+	/** 是否强制更新 */
+	private boolean isForceUpdate;
+	
+	/** 更新描述 */
+	private String description;
+	
+	/** 下载地址 */
+	private byte[] downloadUrl;
+	
+	/** 创建人 */
+	private Integer operatorId;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	/**  */
+	private java.util.Date createTime;
+
+	public boolean isForceUpdate() {
+		return isForceUpdate;
+	}
+
+	public void setForceUpdate(boolean forceUpdate) {
+		isForceUpdate = forceUpdate;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setPlatform(String platform){
+		this.platform = platform;
+	}
+	
+	public String getPlatform(){
+		return this.platform;
+	}
+			
+	public void setVersion(String version){
+		this.version = version;
+	}
+	
+	public String getVersion(){
+		return this.version;
+	}
+			
+	public void setStatus(String status){
+		this.status = status;
+	}
+	
+	public String getStatus(){
+		return this.status;
+	}
+			
+	public void setIsForceUpdate(boolean isForceUpdate){
+		this.isForceUpdate = isForceUpdate;
+	}
+	
+	public boolean getIsForceUpdate(){
+		return this.isForceUpdate;
+	}
+			
+	public void setDescription(String description){
+		this.description = description;
+	}
+	
+	public String getDescription(){
+		return this.description;
+	}
+			
+	public void setDownloadUrl(byte[] downloadUrl){
+		this.downloadUrl = downloadUrl;
+	}
+	
+	public byte[] getDownloadUrl(){
+		return this.downloadUrl;
+	}
+			
+	public void setOperatorId(Integer operatorId){
+		this.operatorId = operatorId;
+	}
+	
+	public Integer getOperatorId(){
+		return this.operatorId;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 150 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Subject.java

@@ -0,0 +1,150 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+
+/**
+ * 对应数据库表(subject):
+ */
+public class Subject {
+
+	/**  */
+	private Integer id;
+	
+	/**  */
+	@ApiModelProperty(value = "科目名称",required = false)
+	private String name;
+	
+	/**  */
+	@ApiModelProperty(value = "科目编号",required = false)
+	private String code;
+	
+	/**  */
+	@ApiModelProperty(value = "父级编号",required = false)
+	private Integer parentSubjectId;
+	
+	@ApiModelProperty(value = "图片地址",required = false)
+	private String img;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	/**  */
+	@ApiModelProperty(value = "是否删除1是,0否",required = false)
+	private YesOrNoEnum delFlag;
+
+	/**  */
+	@ApiModelProperty(value = "课程费用",required = false)
+	private BigDecimal fee;
+
+	/**  */
+	@ApiModelProperty(value = "对内1对外2",required = false)
+	private Integer tenantId = 1;
+
+	/**  */
+	@ApiModelProperty(value = "子节点列表",required = false)
+	private List<Subject> subjects;
+
+	public Integer getTenantId() {
+		return tenantId;
+	}
+
+	public void setTenantId(Integer tenantId) {
+		this.tenantId = tenantId;
+	}
+
+	public List<Subject> getSubjects() {
+		return subjects;
+	}
+
+	public BigDecimal getFee() {
+		return fee;
+	}
+
+	public void setFee(BigDecimal fee) {
+		this.fee = fee;
+	}
+
+	public void setSubjects(List<Subject> subjects) {
+		this.subjects = subjects;
+	}
+
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+			
+	public void setCode(String code){
+		this.code = code;
+	}
+	
+	public String getCode(){
+		return this.code;
+	}
+			
+	public void setParentSubjectId(Integer parentSubjectId){
+		this.parentSubjectId = parentSubjectId;
+	}
+	
+	public Integer getParentSubjectId(){
+		return this.parentSubjectId;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+
+	public YesOrNoEnum getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(YesOrNoEnum delFlag) {
+		this.delFlag = delFlag;
+	}
+
+	public String getImg() {
+		return img;
+	}
+
+	public void setImg(String img) {
+		this.img = img;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 33 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/YesOrNoEnum.java

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+public enum YesOrNoEnum implements BaseEnum<Integer, YesOrNoEnum> {
+    NO(0,"否"),
+    YES(1,"是");
+
+    private Integer code;
+    private String msg;
+
+    YesOrNoEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return this.code;
+    }
+}

+ 30 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/queryInfo/SubjectQueryInfo.java

@@ -0,0 +1,30 @@
+package com.yonge.cooleshow.biz.dal.queryInfo;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.common.page.QueryInfo;
+
+public class SubjectQueryInfo extends QueryInfo {
+    @ApiModelProperty(value = "父节点编号,默认0",required = false)
+    private Integer parentId = 0;
+
+    @ApiModelProperty(value = "节点状态,默认0未删除,1删除",required = false)
+    private YesOrNoEnum delFlag = YesOrNoEnum.NO;
+
+    public YesOrNoEnum getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(YesOrNoEnum delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Integer parentId) {
+        this.parentId = parentId;
+    }
+}

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AppVersionInfoService.java

@@ -0,0 +1,15 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import java.util.List;
+
+import com.yonge.cooleshow.biz.dal.entity.AppVersionInfo;
+import com.yonge.cooleshow.common.service.BaseService;
+
+public interface AppVersionInfoService extends BaseService<Integer, AppVersionInfo> {
+
+	List<AppVersionInfo> queryNewestByPlatform(String platform);
+
+	void add(AppVersionInfo appVersionInfo);
+
+	void updateVersion(AppVersionInfo appVersionInfo);
+}

+ 32 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SubjectService.java

@@ -0,0 +1,32 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.queryInfo.SubjectQueryInfo;
+import com.yonge.cooleshow.common.page.PageInfo;
+import com.yonge.cooleshow.common.service.BaseService;
+
+public interface SubjectService extends BaseService<Integer, Subject> {
+
+	/**
+	 * 分页查询科目树状列表
+	 *
+	 * @param queryInfo
+	 * @return
+	 */
+	PageInfo<Subject> queryPageTree(SubjectQueryInfo queryInfo);
+
+	/**
+	 * 修改、新增科目树状列表
+	 *
+	 * @param subject
+	 */
+	void upSetSubject(Subject subject);
+
+	List<Subject> findBySubjectByIdList(List<Integer> subjectIdList);
+
+	List<Subject> findBySubjectByIdList(String subjectIdList);
+
+}

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

@@ -0,0 +1,59 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.yonge.cooleshow.biz.dal.dao.AppVersionInfoDao;
+import com.yonge.cooleshow.biz.dal.entity.AppVersionInfo;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
+import com.yonge.cooleshow.common.dal.BaseDAO;
+import com.yonge.cooleshow.common.exception.BizException;
+import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
+
+@Service
+public class AppVersionInfoServiceImpl extends BaseServiceImpl<Integer, AppVersionInfo>  implements AppVersionInfoService {
+	
+	@Autowired
+	private AppVersionInfoDao appVersionInfoDao;
+
+	@Override
+	public BaseDAO<Integer, AppVersionInfo> getDAO() {
+		return appVersionInfoDao;
+	}
+
+	@Override
+	public List<AppVersionInfo> queryNewestByPlatform(String platform) {
+		return appVersionInfoDao.queryNewestByPlatform(platform);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void add(AppVersionInfo appVersionInfo) {
+		if(StringUtils.isEmpty(appVersionInfo.getPlatform())){
+			throw new BizException("参数校验异常");
+		}
+		if (StringUtils.equals(appVersionInfo.getStatus(), "newest")) {
+			//修改其他的为历史版本
+			appVersionInfoDao.batchUpdateStatus(appVersionInfo.getPlatform());
+		}
+		appVersionInfoDao.insert(appVersionInfo);
+	}
+
+	@Override
+	public void updateVersion(AppVersionInfo appVersionInfo) {
+		if(StringUtils.isEmpty(appVersionInfo.getPlatform())){
+			throw new BizException("参数校验异常");
+		}
+		if (StringUtils.equals(appVersionInfo.getStatus(), "newest")) {
+			appVersionInfoDao.batchUpdateStatus(appVersionInfo.getPlatform());
+		}
+		appVersionInfo.setUpdateTime(new Date());
+		appVersionInfoDao.update(appVersionInfo);
+	}
+
+}

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

@@ -0,0 +1,93 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.queryInfo.SubjectQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
+import com.yonge.cooleshow.common.dal.BaseDAO;
+import com.yonge.cooleshow.common.page.PageInfo;
+import com.yonge.cooleshow.common.service.impl.BaseServiceImpl;
+
+@Service
+public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implements SubjectService {
+
+    @Autowired
+    private SubjectDao subjectDao;
+
+    @Override
+    public BaseDAO<Integer, Subject> getDAO() {
+        return subjectDao;
+    }
+
+    @Override
+    public PageInfo<Subject> queryPageTree(SubjectQueryInfo queryInfo) {
+        PageInfo<Subject> pageInfo = queryPage(queryInfo);
+        for (Subject subject : pageInfo.getRows()) {
+            subject = getTree(subject, queryInfo.getDelFlag());
+        }
+        return pageInfo;
+    }
+
+    @Override
+    public void upSetSubject(Subject subject) {
+        if (subject.getDelFlag() == YesOrNoEnum.YES) {
+            subjectDao.delete(subject.getId());
+            return;
+        }
+        Integer parentId = upset(subject, null);
+        List<Subject> subjects = subject.getSubjects();
+        if (subjects != null && subjects.size() > 0) {
+            subjects.forEach(e -> {
+                upset(e, parentId);
+            });
+        }
+    }
+
+    private Integer upset(Subject subject, Integer parentId) {
+        if (parentId != null) {
+            subject.setParentSubjectId(parentId);
+        }
+        if (subject.getId() != null) {
+            subject.setUpdateTime(new Date());
+            subjectDao.update(subject);
+        } else {
+            subjectDao.insert(subject);
+        }
+        return subject.getId();
+    }
+
+
+    private Subject getTree(Subject sub, YesOrNoEnum yesOrNoEnum) {
+        //得到根节点对象
+        //获取子节点list
+        List<Subject> subjects = subjectDao.findByParentId(sub.getId(), yesOrNoEnum);
+        //如果存在子节点
+        if (subjects != null && subjects.size() > 0) {
+            //将子节点list放入父节点对象
+            sub.setSubjects(subjects);
+            //遍历子节点....
+            for (Subject subject : subjects) {
+                getTree(subject, yesOrNoEnum);
+            }
+        }
+        return sub;
+    }
+
+    @Override
+    public List<Subject> findBySubjectByIdList(List<Integer> subjectIdList) {
+        return subjectDao.findBySubjectByIdList(StringUtils.join(subjectIdList, ","));
+    }
+
+    @Override
+    public List<Subject> findBySubjectByIdList(String subjectIdList) {
+        return subjectDao.findBySubjectByIdList(subjectIdList);
+    }
+}

+ 111 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/AppVersionInfoMapper.xml

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.AppVersionInfoDao">
+
+	<resultMap type="com.yonge.cooleshow.biz.dal.entity.AppVersionInfo" id="AppVersionInfo">
+		<result column="id_" property="id" />
+		<result column="platform_" property="platform" />
+		<result column="version_" property="version" />
+		<result column="status_" property="status" />
+		<result column="is_force_update_" property="isForceUpdate" />
+		<result column="description_" property="description" />
+		<result column="download_url_" property="downloadUrl" />
+		<result column="operator_id_" property="operatorId" />
+		<result column="update_time_" property="updateTime" />
+		<result column="create_time_" property="createTime" />
+	</resultMap>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="AppVersionInfo">
+		SELECT * FROM
+		app_version_info WHERE id_ = #{id}
+	</select>
+	
+	<select id="queryNewestByPlatform" resultMap="AppVersionInfo">
+		SELECT * FROM app_version_info WHERE platform_ = #{platform} and status_ = 'newest'
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="AppVersionInfo">
+		SELECT * FROM app_version_info
+		<where>
+			<if test="search != null and search != ''">
+				platform_ LIKE CONCAT('%',#{search},'%')
+			</if>
+		</where>
+		ORDER BY status_ DESC
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.yonge.cooleshow.biz.dal.entity.AppVersionInfo"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO app_version_info
+		(id_,platform_,version_,status_,is_force_update_,description_,download_url_,operator_id_,update_time_,create_time_)
+		VALUES(#{id},#{platform},#{version},#{status},#{isForceUpdate},#{description},#{downloadUrl},#{operatorId},NOW(),NOW())
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.yonge.cooleshow.biz.dal.entity.AppVersionInfo">
+		UPDATE app_version_info
+		<set>
+			<if test="operatorId != null">
+				operator_id_ = #{operatorId},
+			</if>
+			<if test="status != null">
+				status_ = #{status},
+			</if>
+			<if test="downloadUrl != null">
+				download_url_ = #{downloadUrl},
+			</if>
+			<if test="platform != null">
+				platform_ = #{platform},
+			</if>
+			<if test="updateTime != null">
+				update_time_ = #{updateTime},
+			</if>
+			<if test="version != null">
+				version_ = #{version},
+			</if>
+			<if test="description != null">
+				description_ = #{description},
+			</if>
+			<if test="isForceUpdate != null">
+				is_force_update_ = #{isForceUpdate},
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+	<update id="batchUpdateStatus">
+		UPDATE app_version_info SET status_ = 'history',update_time_ = NOW() WHERE platform_ = #{platform} AND status_ = 'newest'
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM app_version_info WHERE id_ = #{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="AppVersionInfo" parameterType="map">
+		SELECT * FROM app_version_info
+		<where>
+			<if test="search != null and search != ''">
+				platform_ LIKE CONCAT('%',#{search},'%')
+			</if>
+		</where>
+		ORDER BY status_ DESC
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM app_version_info
+		<where>
+			<if test="search != null and search != ''">
+				platform_ LIKE CONCAT('%',#{search},'%')
+			</if>
+		</where>
+	</select>
+</mapper>

+ 111 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.SubjectDao">
+
+    <resultMap type="com.yonge.cooleshow.biz.dal.entity.Subject" id="Subject">
+        <result column="id_" property="id"/>
+        <result column="name_" property="name"/>
+        <result column="code_" property="code"/>
+        <result column="parent_subject_id_" property="parentSubjectId"/>
+        <result column="img_" property="img"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.yonge.cooleshow.common.dal.CustomEnumTypeHandler"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="Subject">
+		SELECT * FROM subject WHERE id_ = #{id}
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="Subject">
+		SELECT * FROM subject ORDER BY id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.yonge.cooleshow.biz.dal.entity.Subject" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        INSERT INTO subject (id_,name_,code_,parent_subject_id_,img_,create_time_,update_time_)
+        VALUES(#{id},#{name},#{code},#{parentSubjectId},#{img},now(),now())
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.yonge.cooleshow.biz.dal.entity.Subject">
+        UPDATE subject
+        <set>
+            <if test="delFlag != null">
+                del_flag_ = #{delFlag,typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="parentSubjectId != null">
+                parent_subject_id_ = #{parentSubjectId},
+            </if>
+            <if test="code != null">
+                code_ = #{code},
+            </if>
+            <if test="img != null">
+                img_ = #{img},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+            <if test="name != null">
+                name_ = #{name},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <update id="delete">
+        UPDATE `subject` SET del_flag_ = 1 WHERE id_ = #{id} OR parent_subject_id_ = #{id}
+	</update>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="Subject" parameterType="map">
+        SELECT * FROM subject
+        <include refid="querySubPageSql"/>
+        ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM subject <include refid="querySubPageSql"/>
+	</select>
+
+    <select id="findByParentId" resultMap="Subject">
+        SELECT * FROM subject <include refid="querySubPageSql"/>
+    </select>
+
+    <select id="queryNameByIds" resultType="java.util.Map">
+        select id_ `key`,name_ `value` FROM `subject` s WHERE FIND_IN_SET(s.id_,#{subjectIds}) AND s.del_flag_ = 0
+    </select>
+
+    <sql id="querySubPageSql">
+        <where>
+            <if test="parentId != null">
+                AND parent_subject_id_ = #{parentId}
+            </if>
+            <if test="delFlag != null">
+                AND del_flag_ = #{delFlag,typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler}
+            </if>
+        </where>
+    </sql>
+
+    <select id="findBySubjectByIdList" resultMap="Subject">
+        SELECT * FROM `subject` WHERE del_flag_ = 0 AND FIND_IN_SET(id_,#{subjectIdList})
+    </select>
+
+    <select id="findBySubjectIds" resultMap="Subject">
+      SELECT * FROM subject WHERE id_ IN
+      <foreach collection="subjectIds" item="subjectId" separator="," open="(" close=")">
+          #{subjectId}
+      </foreach>
+    </select>
+
+</mapper>