Ver código fonte

Merge branch 'zouxuan_saas_2022_0606' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan 3 anos atrás
pai
commit
d4c1725e75
25 arquivos alterados com 536 adições e 218 exclusões
  1. 3 0
      .gitignore
  2. 8 0
      cms/src/main/resources/logback-spring.xml
  3. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  4. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempBuyFreeLiveTheoryCourseDao.java
  5. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLiveTeacherCardDao.java
  6. 10 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempBuyFreeLiveTheoryCourse.java
  7. 51 28
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLiveTeacherCard.java
  8. 40 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/LevelEnum.java
  9. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TemplateTypeEnum.java
  10. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TempBuyFreeLiveTheoryCourseService.java
  11. 147 48
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempBuyFreeLiveTheoryCourseServiceImpl.java
  12. 28 17
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml
  13. 24 6
      mec-biz/src/main/resources/config/mybatis/TempLiveTeacherCardMapper.xml
  14. 8 0
      mec-gateway/mec-gateway-web/src/main/resources/logback-spring.xml
  15. 4 7
      mec-student/src/main/java/com/ym/mec/student/controller/ImGroupController.java
  16. 15 18
      mec-student/src/main/java/com/ym/mec/student/controller/TempLiveActivityController.java
  17. 16 0
      mec-student/src/main/resources/logback-spring.xml
  18. 9 1
      mec-task/src/main/resources/logback-spring.xml
  19. 8 0
      mec-teacher/src/main/resources/logback-spring.xml
  20. 9 5
      mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java
  21. 72 57
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  22. 38 16
      mec-web/src/main/java/com/ym/mec/web/controller/ImportController.java
  23. 16 0
      mec-web/src/main/resources/bootstrap-local.properties
  24. 9 1
      mec-web/src/main/resources/columnMapper.ini
  25. 8 0
      mec-web/src/main/resources/logback-spring.xml

+ 3 - 0
.gitignore

@@ -33,5 +33,8 @@ mvnw.cmd
 /codegen/src/main/resources/generateConfigration.xml
 **/bootstrap-dev.yml
 **/bootstrap-dev.properties
+**/bootstrap-local.yml
+**/bootstrap-local.properties
+
 /bin/
 **/logback-spring.xml

+ 8 - 0
cms/src/main/resources/logback-spring.xml

@@ -29,6 +29,14 @@
 
 	<logger name="com.ym.mec" level="INFO" />
 
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
 	<!--开发环境:打印控制台 -->
 	<springProfile name="dev">
 		<root level="INFO">

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -15,8 +15,8 @@ import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.enums.GroupType;
 
 public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Student> {
-	
-	Student getLocked(Integer userId);
+
+    Student getLocked(Integer userId);
 	
     int lockUser(@Param("userId") Integer userId);
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempBuyFreeLiveTheoryCourseDao.java

@@ -12,4 +12,6 @@ public interface TempBuyFreeLiveTheoryCourseDao extends BaseDAO<Integer, TempBuy
     int countByUserId(@Param("userId") Integer userId);
 
     List<TempBuyFreeLiveTheoryCourse> list(@Param("param") TempBuyFreeLiveTheoryCourse tempBuyFreeLiveTheoryCourse);
+
+
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLiveTeacherCardDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.TempLiveTeacherCard;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -9,4 +10,6 @@ public interface TempLiveTeacherCardDao extends BaseDAO<Integer, TempLiveTeacher
 
 
     List<TempLiveTeacherCard> list(TempLiveTeacherCard teacherCard);
+
+    TempLiveTeacherCard getBySubjectIdAndLevel(@Param("subjectId") String subjectId, @Param("level") String level);
 }

+ 10 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempBuyFreeLiveTheoryCourse.java

@@ -9,7 +9,7 @@ public class TempBuyFreeLiveTheoryCourse {
 
 	/**  */
 	private Integer id;
-	
+
 	/**  */
 	private Integer userId;
 
@@ -19,10 +19,10 @@ public class TempBuyFreeLiveTheoryCourse {
 
 	/** 老师推荐级别 low 初级 medium 中级 high 高级 */
 	private String recommendLevel;
-	
+
 	/**  */
 	private java.util.Date createTime;
-	
+
 	/**  */
 	private java.util.Date updateTime;
 
@@ -57,31 +57,31 @@ public class TempBuyFreeLiveTheoryCourse {
 	public void setId(Integer id){
 		this.id = id;
 	}
-	
+
 	public Integer getId(){
 		return this.id;
 	}
-			
+
 	public void setUserId(Integer userId){
 		this.userId = userId;
 	}
-	
+
 	public Integer getUserId(){
 		return this.userId;
 	}
-			
+
 	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;
 	}

+ 51 - 28
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLiveTeacherCard.java

@@ -12,117 +12,124 @@ public class TempLiveTeacherCard {
 
 	@ApiModelProperty("id ")
 	private Integer id;
-	
+
 	@ApiModelProperty("老师id ")
 	private Integer userId;
-	
+
+	@ApiModelProperty("老师名称 ")
+	private String username;
+
 	@ApiModelProperty("头像地址 ")
 	private String avatar;
-	
+
 	@ApiModelProperty("个人介绍")
 	private String introduction;
-	
+
 	@ApiModelProperty("曲目名称")
 	private String musicNames;
-	
+
 	@ApiModelProperty("声部id(单个声部)")
 	private String subjectId;
-	
+
 	@ApiModelProperty("级别 low 初级 medium 中级 high 高级")
 	private String level;
-	
+
 	@ApiModelProperty("群聊id")
 	private String imGroupId;
 
 	@ApiModelProperty("直播商品id")
 	private Integer liveGoodsId;
-	
+
 	private java.util.Date createTime;
-	
+
 	private java.util.Date updateTime;
 
+
 	@ApiModelProperty("是否推荐级别")
 	private Boolean recommendLevelFlag;
 
+	@ApiModelProperty("是否已经加入")
+	private Boolean joinFlag;
+
 	@ApiModelProperty(value = "学生id",hidden = true)
 	private Integer studentId;
 
 	public void setId(Integer id){
 		this.id = id;
 	}
-	
+
 	public Integer getId(){
 		return this.id;
 	}
-			
+
 	public void setUserId(Integer userId){
 		this.userId = userId;
 	}
-	
+
 	public Integer getUserId(){
 		return this.userId;
 	}
-			
+
 	public void setAvatar(String avatar){
 		this.avatar = avatar;
 	}
-	
+
 	public String getAvatar(){
 		return this.avatar;
 	}
-			
+
 	public void setIntroduction(String introduction){
 		this.introduction = introduction;
 	}
-	
+
 	public String getIntroduction(){
 		return this.introduction;
 	}
-			
+
 	public void setMusicNames(String musicNames){
 		this.musicNames = musicNames;
 	}
-	
+
 	public String getMusicNames(){
 		return this.musicNames;
 	}
-			
+
 	public void setSubjectId(String subjectId){
 		this.subjectId = subjectId;
 	}
-	
+
 	public String getSubjectId(){
 		return this.subjectId;
 	}
-			
+
 	public void setLevel(String level){
 		this.level = level;
 	}
-	
+
 	public String getLevel(){
 		return this.level;
 	}
-			
+
 	public void setImGroupId(String imGroupId){
 		this.imGroupId = imGroupId;
 	}
-	
+
 	public String getImGroupId(){
 		return this.imGroupId;
 	}
-			
+
 	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;
 	}
@@ -151,6 +158,22 @@ public class TempLiveTeacherCard {
 		this.liveGoodsId = liveGoodsId;
 	}
 
+	public Boolean getJoinFlag() {
+		return joinFlag;
+	}
+
+	public void setJoinFlag(Boolean joinFlag) {
+		this.joinFlag = joinFlag;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/LevelEnum.java

@@ -0,0 +1,40 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+/**
+ * 学员级别
+ */
+public enum LevelEnum implements BaseEnum<String, LevelEnum> {
+    low("初级"),
+    medium("中级"),
+    high("高级");
+
+    private String code;
+    private String msg;
+
+    LevelEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+
+    public static LevelEnum getByName(String name) {
+        for (LevelEnum level : LevelEnum.values()) {
+            if (level.getMsg().equals(name)) {
+                return level;
+            }
+        }
+        return null;
+    }
+
+}

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TemplateTypeEnum.java

@@ -10,7 +10,9 @@ public enum TemplateTypeEnum implements BaseEnum<String, TemplateTypeEnum> {
     OA_QUIT_MUSIC_GROUP("OA_QUIT_MUSIC_GROUP", "乐团退费模板"),
     EXTERNAL_STUDENT_IMPORT_MUSIC_GROUP("EXTERNAL_STUDENT_IMPORT_MUSIC_GROUP", "外部学生入团导入模板"),
 
-    BUY_FREE_LIVE_THEORY_COURSE("BUY_FREE_LIVE_THEORY_COURSE", "直播临时活动学员购买导入模板");
+    BUY_FREE_LIVE_THEORY_COURSE("BUY_FREE_LIVE_THEORY_COURSE", "直播临时活动学员购买导入模板"),
+    LIVE_TEACHER_CARD("LIVE_TEACHER_CARD","直播临时活动上课老师名片导入模板"),
+    ;
 
 
     private String code;

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/TempBuyFreeLiveTheoryCourseService.java

@@ -8,5 +8,7 @@ import java.util.List;
 
 public interface TempBuyFreeLiveTheoryCourseService extends BaseService<Integer, TempBuyFreeLiveTheoryCourse> {
 
-    List<TempBuyFreeLiveTheoryCourse> importBuyFreeLiveTheoryCourse(MultipartFile file, Integer id) throws Exception;
+    List<String> importBuyFreeLiveTheoryCourse(MultipartFile file, Integer id) throws Exception;
+
+    List<String> importLiveTeacherCard(MultipartFile file, Integer id) throws Exception;
 }

+ 147 - 48
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempBuyFreeLiveTheoryCourseServiceImpl.java

@@ -1,11 +1,10 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.biz.dal.dao.TempLiveTeacherCardDao;
 import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.enums.GoodsType;
-import com.ym.mec.biz.dal.enums.StockType;
-import com.ym.mec.biz.dal.enums.TemplateTypeEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.entity.TempLiveTeacherCard;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.ym.mec.common.exception.BizException;
@@ -23,8 +22,10 @@ import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -33,53 +34,151 @@ import java.util.List;
 import java.util.Map;
 
 @Service
-public class TempBuyFreeLiveTheoryCourseServiceImpl extends BaseServiceImpl<Integer, TempBuyFreeLiveTheoryCourse>  implements TempBuyFreeLiveTheoryCourseService {
-	
-	@Autowired
-	private TempBuyFreeLiveTheoryCourseDao tempBuyFreeLiveTheoryCourseDao;
+public class TempBuyFreeLiveTheoryCourseServiceImpl extends BaseServiceImpl<Integer, TempBuyFreeLiveTheoryCourse> implements TempBuyFreeLiveTheoryCourseService {
 
-	@Override
-	public BaseDAO<Integer, TempBuyFreeLiveTheoryCourse> getDAO() {
-		return tempBuyFreeLiveTheoryCourseDao;
-	}
+    @Autowired
+    private TempBuyFreeLiveTheoryCourseDao tempBuyFreeLiveTheoryCourseDao;
 
-	@Override
-	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-	public List<TempBuyFreeLiveTheoryCourse> importBuyFreeLiveTheoryCourse(MultipartFile file, Integer id) throws Exception {
-		Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
-		InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
-		Map<String,String> columns = IniFileUtil.readIniFile(inputStream, TemplateTypeEnum.BUY_FREE_LIVE_THEORY_COURSE.getMsg());
-		List<TempBuyFreeLiveTheoryCourse> tempList = new ArrayList<>();
+    @Resource
+    private TempLiveTeacherCardDao tempLiveTeacherCardDao;
 
-		for (String e : sheetsListMap.keySet()) {
-			List<Map<String, Object>> sheet = sheetsListMap.get(e);
-			valueIsNull: for (Map<String, Object> row : sheet) {
-				if (row.size() == 0){
-					continue;
-				}
-				JSONObject objectMap = new JSONObject();
-				for (String s : row.keySet()) {
-					if(!columns.containsKey(s)){
-						continue;
-					}
-					String columnValue = columns.get(s);
-					if(null == row.get(s)){
-						continue;
-					}
-					objectMap.put(columnValue, row.get(s));
-				}
-				TempBuyFreeLiveTheoryCourse course = null;
-				try {
-					course = JSONObject.parseObject(objectMap.toJSONString(),TempBuyFreeLiveTheoryCourse.class);
-					tempList.add(course);
-				} catch (Exception ex) {
-					throw new BizException("导入数据出错", ex);
-				}
-			}
-		}
+    @Override
+    public BaseDAO<Integer, TempBuyFreeLiveTheoryCourse> getDAO() {
+        return tempBuyFreeLiveTheoryCourseDao;
+    }
 
-		//导入逻辑
+    @Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+    public List<String> importBuyFreeLiveTheoryCourse(MultipartFile file, Integer id) throws Exception {
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        Map<String, String> columns = IniFileUtil.readIniFile(inputStream, TemplateTypeEnum.BUY_FREE_LIVE_THEORY_COURSE.getMsg());
+        List<TempBuyFreeLiveTheoryCourse> tempList = new ArrayList<>();
 
-		return null;
-	}
+        List<String> errMsg = new ArrayList();
+        List<Map<String, Object>> sheet = sheetsListMap.get("Sheet0");
+
+        for (int i = 0; i < sheet.size(); i++) {
+            Map<String, Object> row = sheet.get(i);
+            if (row.size() == 0) {
+                continue;
+            }
+            JSONObject objectMap = new JSONObject();
+            for (String s : row.keySet()) {
+                String columnValue = columns.get(s);
+                if (StringUtils.isEmpty(columnValue)) {
+                    continue;
+                }
+                if (null == row.get(s)) {
+                    continue;
+                }
+                objectMap.put(columnValue, row.get(s));
+            }
+            String err = "";
+            //校验
+            Integer tempId = objectMap.getInteger("id");
+            if (null == tempId) {
+                err += "ID不能为空/";
+            }
+            String recommendLevel = objectMap.getString("recommendLevel");
+            if (StringUtils.isNotEmpty(recommendLevel) && null == LevelEnum.getByName(recommendLevel.trim())) {
+                err += "老师推荐级别列,数据异常(可选值:初级 中级 高级)/";
+            }
+            if (StringUtils.isNotEmpty(err)) {
+                err = "第" + (i + 1) + "行数据异常:" + err.substring(0, err.length() - 1);
+                errMsg.add(err);
+            }
+
+            try {
+                TempBuyFreeLiveTheoryCourse course = JSONObject.parseObject(objectMap.toJSONString(), TempBuyFreeLiveTheoryCourse.class);
+                tempList.add(course);
+            } catch (Exception ex) {
+                throw new BizException("导入数据出错", ex);
+            }
+        }
+        if (!CollectionUtils.isEmpty(errMsg)) {
+            return errMsg;
+        }
+        //导入数据库
+        for (TempBuyFreeLiveTheoryCourse temp : tempList) {
+            if (null == temp.getId()) {
+                continue;
+            }
+            TempBuyFreeLiveTheoryCourse course = tempBuyFreeLiveTheoryCourseDao.get(temp.getId());
+            LevelEnum byName = LevelEnum.getByName(temp.getRecommendLevel());
+            course.setRecommendLevel(byName.getCode());
+            tempBuyFreeLiveTheoryCourseDao.update(course);
+        }
+        return null;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+    public List<String> importLiveTeacherCard(MultipartFile file, Integer id) throws Exception {
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
+        InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
+        Map<String, String> columns = IniFileUtil.readIniFile(inputStream, TemplateTypeEnum.LIVE_TEACHER_CARD.getMsg());
+        List<TempLiveTeacherCard> tempList = new ArrayList<>();
+
+        List<String> errMsg = new ArrayList();
+        List<Map<String, Object>> sheet = sheetsListMap.get("录入数据");
+        for (int i = 0; i < sheet.size(); i++) {
+            Map<String, Object> row = sheet.get(i);
+            if (row.size() == 0) {
+                continue;
+            }
+            JSONObject objectMap = new JSONObject();
+            for (String s : row.keySet()) {
+                String columnValue = columns.get(s);
+                if (StringUtils.isEmpty(columnValue)) {
+                    continue;
+                }
+                if (null == row.get(s)) {
+                    continue;
+                }
+                objectMap.put(columnValue, row.get(s));
+            }
+            String err = "";
+            //校验
+            Integer subjectId = objectMap.getInteger("subjectId");
+            if (null == subjectId) {
+                err += "声部id不能为空/";
+            }
+            String level = objectMap.getString("level");
+            if (StringUtils.isNotEmpty(level) && null == LevelEnum.getByName(level.trim())) {
+                err += "老师推荐级别列,数据异常(可选值:初级 中级 高级)/";
+            }
+            if (StringUtils.isNotEmpty(err)) {
+                err = "第" + (i + 1) + "行数据异常:" + err.substring(0, err.length() - 1);
+                errMsg.add(err);
+            }
+
+            try {
+                TempLiveTeacherCard course = JSONObject.parseObject(objectMap.toJSONString(), TempLiveTeacherCard.class);
+                tempList.add(course);
+            } catch (Exception ex) {
+                throw new BizException("导入数据出错", ex);
+            }
+        }
+        if (!CollectionUtils.isEmpty(errMsg)) {
+            return errMsg;
+        }
+        //导入数据库
+        for (TempLiveTeacherCard temp : tempList) {
+            LevelEnum byName = LevelEnum.getByName(temp.getLevel());
+            if(null == byName){
+                continue;
+            }
+            TempLiveTeacherCard card = tempLiveTeacherCardDao.getBySubjectIdAndLevel(temp.getSubjectId(), byName.getCode());
+            if (null == card) {
+                continue;
+            }
+            card.setUsername(temp.getUsername());
+            card.setAvatar(temp.getAvatar());
+            card.setIntroduction(temp.getIntroduction());
+            card.setMusicNames(temp.getMusicNames());
+            tempLiveTeacherCardDao.update(card);
+        }
+        return null;
+    }
 }

+ 28 - 17
mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml

@@ -21,24 +21,31 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="SysUserCashAccount">
-		SELECT * FROM sys_user_cash_account WHERE user_id_ = #{userId} 
-	</select>
-	
+        SELECT *
+        FROM sys_user_cash_account
+        WHERE user_id_ = #{userId}
+    </select>
+
     <select id="getLocked" resultMap="SysUserCashAccount" useCache="false" flushCache="true">
-		SELECT * FROM sys_user_cash_account WHERE user_id_ = #{userId} for update
-	</select>
+        SELECT *
+        FROM sys_user_cash_account
+        WHERE user_id_ = #{userId} for update
+    </select>
 
     <!-- 全查询 -->
     <select id="findAll" resultMap="SysUserCashAccount">
-		SELECT * FROM sys_user_cash_account where tenant_id_ = #{tenantId} ORDER BY user_id_
-	</select>
+        SELECT *
+        FROM sys_user_cash_account
+        where tenant_id_ = #{tenantId}
+        ORDER BY user_id_
+    </select>
 
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysUserCashAccount" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO sys_user_cash_account
-        (user_id_,currency_,create_time_,update_time,tenant_id_)
-        VALUES(#{userId},#{currency},now(),now(),#{tenantId})
+            (user_id_, currency_, create_time_, update_time, tenant_id_)
+        VALUES (#{userId}, #{currency}, now(), now(), #{tenantId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -75,8 +82,10 @@
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
-		DELETE FROM sys_user_cash_account WHERE user_id_ = #{userId} 
-	</delete>
+        DELETE
+        FROM sys_user_cash_account
+        WHERE user_id_ = #{userId}
+    </delete>
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="SysUserCashAccount" parameterType="map">
@@ -86,8 +95,10 @@
 
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM sys_user_cash_account where tenant_id_ = #{tenantId}
-	</select>
+        SELECT COUNT(*)
+        FROM sys_user_cash_account
+        where tenant_id_ = #{tenantId}
+    </select>
     <select id="findByUserIds" resultMap="SysUserCashAccount">
         SELECT * FROM sys_user_cash_account WHERE user_id_ IN
         <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
@@ -100,10 +111,10 @@
         SELECT SUM(suca.balance_) FROM sys_user_cash_account suca
         LEFT JOIN sys_user su ON su.id_ = suca.user_id_
         <where>
-        suca.tenant_id_ = #{tenantId}
-        <if test="organId != null">
-            and FIND_IN_SET(su.organ_id_,#{organId})
-        </if>
+            suca.tenant_id_ = #{tenantId}
+            <if test="organId != null">
+                and FIND_IN_SET(su.organ_id_,#{organId})
+            </if>
         </where>
     </select>
 

+ 24 - 6
mec-biz/src/main/resources/config/mybatis/TempLiveTeacherCardMapper.xml

@@ -9,6 +9,7 @@
     <resultMap type="com.ym.mec.biz.dal.entity.TempLiveTeacherCard" id="TempLiveTeacherCard">
         <result column="id_" property="id"/>
         <result column="user_id_" property="userId"/>
+        <result column="username_" property="username"/>
         <result column="avatar_" property="avatar"/>
         <result column="introduction_" property="introduction"/>
         <result column="music_names" property="musicNames"/>
@@ -18,6 +19,9 @@
         <result column="live_goods_id_" property="liveGoodsId"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
+
+        <result column="recommend_level_flag_" property="recommendLevelFlag"/>
+        <result column="join_flag_" property="joinFlag"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -38,8 +42,8 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.TempLiveTeacherCard" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO temp_live_teacher_card
-        (id_,user_id_,avatar_,introduction_,music_names,subject_id_,level_,im_group_id_,live_goods_id_,create_time_,update_time_)
-        VALUES(#{id},#{userId},#{avatar},#{introduction},#{musicNames},#{subjectId},#{level},#{imGroupId},#{liveGoodsId},#{createTime},#{updateTime})
+        (id_,user_id_,username_,avatar_,introduction_,music_names,subject_id_,level_,im_group_id_,live_goods_id_,create_time_,update_time_)
+        VALUES(#{id},#{username},#{userId},#{avatar},#{introduction},#{musicNames},#{subjectId},#{level},#{imGroupId},#{liveGoodsId},#{createTime},#{updateTime})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -52,6 +56,9 @@
             <if test="userId != null">
                 user_id_ = #{userId},
             </if>
+            <if test="username != null">
+                username_ = #{username},
+            </if>
             <if test="avatar != null">
                 avatar_ = #{avatar},
             </if>
@@ -103,13 +110,24 @@
     </select>
 
     <select id="list" resultMap="TempLiveTeacherCard">
-        select * from temp_live_teacher_card t
-        left join (
-            select live_goods_id_,recommend_level_ from temp_buy_free_live_theory_course
+        select t.*,
+               IF(a.live_goods_id_ is null,0,1) as recommend_level_flag_,
+               (select count(1) from im_group_member m where m.im_group_id_ = t.im_group_id_ and m.user_id_ = #{studentId})>0 AS join_flag_
+        from temp_live_teacher_card t
+                 left join (
+            select
+                live_goods_id_,recommend_level_
+            from temp_buy_free_live_theory_course
             where user_id_ = #{studentId} and recommend_level_ is not null
             group by live_goods_id_,recommend_level_
         ) a on t.live_goods_id_ = a.live_goods_id_ and t.level_ = a.recommend_level_
-        where subject_id_ = #{subjectId}
+        where FIND_IN_SET(subject_id_,#{subjectId})
         order by field(t.level_,'low','medium','high')
     </select>
+
+    <select id="getBySubjectIdAndLevel" resultMap="TempLiveTeacherCard">
+        SELECT *
+        FROM temp_live_teacher_card
+        WHERE subject_id_ = #{subjectId} and level_ = #{level}
+    </select>
 </mapper>

+ 8 - 0
mec-gateway/mec-gateway-web/src/main/resources/logback-spring.xml

@@ -29,6 +29,14 @@
 
 	<logger name="com.ym.mec" level="INFO" />
 
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
 	<!--开发环境:打印控制台 -->
 	<springProfile name="dev">
 		<root level="INFO">

+ 4 - 7
mec-student/src/main/java/com/ym/mec/student/controller/ImGroupController.java

@@ -95,12 +95,9 @@ public class ImGroupController extends BaseController {
 	}
 
 	@ApiOperation("入群")
-	@PostMapping(value = "/addGroupMember")
-	@ApiImplicitParams({ @ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
-			@ApiImplicitParam(name = "roleType", value = "指导老师,乐队指导,乐团主管,运营主管,学员不传", required = true, dataType = "String"),
-			@ApiImplicitParam(name = "isAdmin", value = "是否管理员", required = true, dataType = "Boolean"),
-			@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer")})
-	public Object addGroupMember(String imGroupId, Integer userId, String roleType, boolean isAdmin) {
-		return succeed(imGroupMemberService.join(imGroupId,userId,roleType,isAdmin));
+	@GetMapping(value = "/addGroupMember")
+	@ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String")
+	public Object addGroupMember(String imGroupId) {
+		return succeed(imGroupMemberService.join(imGroupId,sysUserService.getUserId(),"",false));
 	}
 }

+ 15 - 18
mec-student/src/main/java/com/ym/mec/student/controller/TempLiveActivityController.java

@@ -3,14 +3,16 @@ package com.ym.mec.student.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TempLiveTeacherCardDao;
+import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.TempLiveTeacherCard;
+import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -29,29 +31,24 @@ import java.util.List;
 public class TempLiveActivityController extends BaseController {
     @Resource
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private StudentService studentService;
     @Resource
     private TempLiveTeacherCardDao tempLiveTeacherCardDao;
 
     @ApiOperation("查询声部上课老师名片信息列表")
-    @ApiImplicitParams({
-            @ApiImplicitParam(
-                    name = "subjectId",
-                    value = "学员声部id",
-                    paramType = "query", dataType = "String", required = true
-            )
-    })
-    @PostMapping(value = "/listTeacherCard", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
-    public HttpResponseResult<List<TempLiveTeacherCard>> listTeacherCard(TempLiveTeacherCard teacherCard) {
-        if (StringUtils.isEmpty(teacherCard.getSubjectId())) {
-            return failed(HttpStatus.INTERNAL_SERVER_ERROR, "缺失参数-学员声部");
-        }
+    @PostMapping(value = "/listTeacherCard",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
+    public HttpResponseResult<List<TempLiveTeacherCard>> listTeacherCard() {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (user == null || user.getId() == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        List<TempLiveTeacherCard> list = tempLiveTeacherCardDao.list(teacherCard);
+        Student student = studentService.get(user.getId());
+
+        TempLiveTeacherCard param = new TempLiveTeacherCard();
+        param.setStudentId(user.getId());
+        param.setSubjectId(student.getSubjectIdList());
+        List<TempLiveTeacherCard> list = tempLiveTeacherCardDao.list(param);
         return succeed(list);
     }
-
-
 }

+ 16 - 0
mec-student/src/main/resources/logback-spring.xml

@@ -50,6 +50,22 @@
 		<appender-ref ref="messagefile" />
 	</logger>
 
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
 	<!--开发环境:打印控制台 -->
 	<springProfile name="dev">
 		<root level="INFO">

+ 9 - 1
mec-task/src/main/resources/logback-spring.xml

@@ -29,9 +29,17 @@
 
 	<logger name="com.ym.mec" level="debug" />
 
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
 	<!--开发环境:打印控制台 -->
 	<springProfile name="dev">
-		<root level="info">
+		<root level="INFO">
 			<appender-ref ref="stdout" />
 			<appender-ref ref="file" />
 		</root>

+ 8 - 0
mec-teacher/src/main/resources/logback-spring.xml

@@ -50,6 +50,14 @@
 		<appender-ref ref="messagefile" />
 	</logger>
 
+	<!--本地环境:打印控制台 -->
+	<springProfile name="local">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
 	<!--开发环境:打印控制台 -->
 	<springProfile name="dev">
 		<root level="INFO">

+ 9 - 5
mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java

@@ -61,9 +61,9 @@ public class POIUtil {
 	private final static int MAX_DATA_SIZE = 50000;
 
 	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-	
+
 	private static ExpressionParser expressionParser =new SpelExpressionParser();
-	
+
 	/**
 	 * 将数据集dataset导出到fileName文件中(只支持.xlsx格式)
 	 *
@@ -240,7 +240,7 @@ public class POIUtil {
 		for (int i = 1; i <= dataset.size(); i++) {
 			data = dataset.get(i - 1);
 			if (data != null) {
-				
+
 				context = new StandardEvaluationContext(data);
 				row = sheet.createRow(i);
 				for (int j = 0; j < fieldColumns.length; j++) {
@@ -255,7 +255,7 @@ public class POIUtil {
 						if (obj instanceof Date) {
 							obj = sdf.format(obj);
 						}
-						
+
 					} catch (Exception e) {
 						LOGGER.warn(e.getMessage());
 						obj = null;
@@ -509,7 +509,11 @@ public class POIUtil {
 						List<String> names = new ArrayList<String>();
 						while (cellIter.hasNext()) {
 							cell = cellIter.next();
-							names.add(cell.getStringCellValue());
+							try {
+								names.add(cell.getStringCellValue());
+							}catch (Exception e){
+								names.add(cell.getNumericCellValue()+"");
+							}
 						}
 						fieldsName = names.toArray(new String[names.size()]);
 						continue;

+ 72 - 57
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -280,8 +280,8 @@ public class ExportController extends BaseController {
         queryInfo.setRows(49999);
         List<ChildrenStatisticsDetailDto> rows = childrenDayReserveService.exportStatisticsDetail(queryInfo);
         if(rows.size() < 1){
-           throw new BizException("没有可导出数据");
-       }
+            throw new BizException("没有可导出数据");
+        }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "合作单位", "乐团","学员编号", "学员姓名", "手机号","声部","所在班级","指导老师", "是否预约", "器乐等级", "乐理等级", "是否购买VIP","是否购买乐理课"}, new String[]{
@@ -386,12 +386,12 @@ public class ExportController extends BaseController {
     public void userCashAccountDetail(HttpServletResponse response, ExportUserAccountQueryInfo queryInfo) throws IOException {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         List<SysUserCashAccountDetail> cashAccountDetails = sysUserCashAccountDetailDao.exportDetail(queryInfo);
-       if(cashAccountDetails.size() < 1){
-           throw new BizException("没有可导出数据");
-       }
-       if(cashAccountDetails.size() > 49999){
-           throw new BizException("数据超长,请联系管理员");
-       }
+        if(cashAccountDetails.size() < 1){
+            throw new BizException("没有可导出数据");
+        }
+        if(cashAccountDetails.size() > 49999){
+            throw new BizException("数据超长,请联系管理员");
+        }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","学员编号", "姓名", "电话", "声部",
@@ -626,7 +626,7 @@ public class ExportController extends BaseController {
                     "cloudAmount", "musicalAmount", "courseAmount", "accessoriesAmount", "maintenanceAmount", "activityAmount"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -659,7 +659,7 @@ public class ExportController extends BaseController {
                     "addCourseTotalTime", "courseCurrentPrice", "courseOriginalPrice", "memo", "operatorName", "auditStatus.desc", "createTime"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -693,7 +693,7 @@ public class ExportController extends BaseController {
                     "remark"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -726,7 +726,7 @@ public class ExportController extends BaseController {
                     "operatorRealName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -759,7 +759,7 @@ public class ExportController extends BaseController {
                     "lastClassDate", "firstBuyTime", "intervalDay"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -794,7 +794,7 @@ public class ExportController extends BaseController {
                     "user.phone", "paymentChannel", "merNos", "status.msg", "memo", "paymentChannel.desc"}, paymentOrders);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -837,7 +837,7 @@ public class ExportController extends BaseController {
                     "studentSignInTime", "studentSignOutTime", "price", "rewards", "deductionReason", "courseIncome"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -873,7 +873,7 @@ public class ExportController extends BaseController {
                     "expectRewardAmount", "settlementDate", "memo"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -912,7 +912,7 @@ public class ExportController extends BaseController {
                     "experienceMembershipEndTime","membershipEndTime == null ? \"未试用\" : membershipDay >= 0 ? membershipDay : \"已失效\""}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -962,7 +962,7 @@ public class ExportController extends BaseController {
                     "groupStatus.desc", "payStatus", "memo"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1002,7 +1002,7 @@ public class ExportController extends BaseController {
                     "courseStartDate", "coursesExpireDate", "registrationStartTime", "userInfo", "vipGroupCategoryName", "stopReason"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1039,7 +1039,7 @@ public class ExportController extends BaseController {
                     "organName", "chargeType.msg", "title", "openFlag == 0?'开启':'关闭'", "amount", "createTime", "userName", "userId == null?'公用':'个人'", "operatorName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1074,7 +1074,7 @@ public class ExportController extends BaseController {
                     "brief", "memo", "type.desc", "name", "specification", "sellCount"}, musicalList);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1106,7 +1106,7 @@ public class ExportController extends BaseController {
                     "musicalAmount", "accessoriesName", "accessoriesAmount", "courseAmount", "cloudTeacherAmount", "maintenanceAmount", "orderAmount"}, musicalList);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1168,7 +1168,7 @@ public class ExportController extends BaseController {
                     "kitGroupPurchaseTypeEnum.msg","payingStatusStr","hasCloudTeacher==1?'有':'没有'"}, studentApplyDetail);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1199,7 +1199,7 @@ public class ExportController extends BaseController {
                     "userId", "username", "phone", "type.msg", "name", "actualSalary", "subsidy", "settlementTime", "teacherRole.msg"}, teacherSalaries);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1277,7 +1277,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, musicGroupStudentsDtoPageInfo.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1359,7 +1359,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupReviews.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1425,7 +1425,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupExports);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1496,7 +1496,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, vipGroupExports);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1789,7 +1789,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupReviews.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1835,7 +1835,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -1871,7 +1871,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=cooperationOrgan-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2088,7 +2088,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2174,7 +2174,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, orders);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2231,7 +2231,7 @@ public class ExportController extends BaseController {
                     "schoolName", "eduTeacher", "receiveStatusStr", "status.msg"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2271,7 +2271,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2306,7 +2306,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2375,7 +2375,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2417,7 +2417,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2459,7 +2459,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2501,7 +2501,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherDefaultSalary-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2542,7 +2542,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherPage-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2584,7 +2584,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2619,7 +2619,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2667,7 +2667,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2715,7 +2715,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2756,15 +2756,15 @@ public class ExportController extends BaseController {
             String[] header = {"学员编号", "学员","年级","班级", "手机号", "是否新用户", "是否激活", "训练总时长", "连续训练天数", "乐团", "乐团主管", "所属学校", "指导老师", "声部", "是否有小课",
                     "训练次数", "训练天数", "训练平均时长", "会员有效期", "是否服务", "是否运营", "是否云教练活动目标学员", "活动消费金额", "关心包", "加油包", "未上课数", "vip课剩余课时", "网管课剩余课时"};
             String[] body = {"studentId", "studentName","currentGradeNum","currentClass", "phone", "newUser?\"是\":\"否\"", "enable?\"是\":\"否\"",
-                            "cloudStudyUseTime+\"分钟\"", "cloudStudyRunningDays+\"天\"", "musicGroupNames", "educationName", "schoolNames",
-                            "teacherName", "subjectName", "hasVipGroup>0?\"是\":\"否\"", "cloudStudyUseNum+\"次\"", "cloudStudyUseDays+\"天\"",
-                            "cloudStudyUseAvgTime+\"分钟\"", "membershipEndTime", "serviceTag>0?\"是\":\"否\"", "operatingTag>0?\"是\":\"否\"","countFlag == null?'否':countFlag == 1?'是':'否'","activeAmount",
-                            "carePackage>0?carePackage>1?\"已使用\":\"可用\":\"不可用\"", "comeOnPackage>0?comeOnPackage>1?\"已使用\":\"可用\":\"不可用\"",
-                            "notStartCourseNum", "notStartVipCourseNum", "notStartPracticeCourseNum"};
+                    "cloudStudyUseTime+\"分钟\"", "cloudStudyRunningDays+\"天\"", "musicGroupNames", "educationName", "schoolNames",
+                    "teacherName", "subjectName", "hasVipGroup>0?\"是\":\"否\"", "cloudStudyUseNum+\"次\"", "cloudStudyUseDays+\"天\"",
+                    "cloudStudyUseAvgTime+\"分钟\"", "membershipEndTime", "serviceTag>0?\"是\":\"否\"", "operatingTag>0?\"是\":\"否\"","countFlag == null?'否':countFlag == 1?'是':'否'","activeAmount",
+                    "carePackage>0?carePackage>1?\"已使用\":\"可用\":\"不可用\"", "comeOnPackage>0?comeOnPackage>1?\"已使用\":\"可用\":\"不可用\"",
+                    "notStartCourseNum", "notStartVipCourseNum", "notStartPracticeCourseNum"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2810,11 +2810,11 @@ public class ExportController extends BaseController {
         try {
             String[] header = {"分部", "购买人数", "购买金额", "目标金额", "人均购买金额", "目标人数", "目标达成率"};
             String[] body = {"organName", "buyNum", "buyAmount", "targetAmount", "avgBuyAmount",
-                            "targetNum", "targetFinishScale"};
+                    "targetNum", "targetFinishScale"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2859,11 +2859,11 @@ public class ExportController extends BaseController {
         try {
             String[] header = {"学员编号", "学员", "合作单位", "乐团", "乐团模式", "声部", "年级", "指导老师", "购买套餐", "购买金额"};
             String[] body = {"userId", "username", "cooperationName", "musicGroupName", "chargeType",
-                            "subjectName", "currentGradeNum", "teacherName", "remark", "amount"};
+                    "subjectName", "currentGradeNum", "teacherName", "remark", "amount"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2903,7 +2903,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupReviews.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2939,7 +2939,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, list);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherPerformanceIndicator-" + DateUtil.getDate(new Date()) + ".xls");
-            
+
             outputStream = response.getOutputStream();
             workbook.write(outputStream);
             outputStream.flush();
@@ -2979,6 +2979,21 @@ public class ExportController extends BaseController {
             return;
         }
 
+        list.stream().forEach(o->{
+            String recommendLevel = o.getRecommendLevel();
+            if(StringUtils.isEmpty(recommendLevel)){
+                return;
+            }
+            //low 初级 medium 中级 high 高级
+            if(recommendLevel.equals("low")){
+                o.setRecommendLevel("初级");
+            }else if(recommendLevel.equals("medium")){
+                o.setRecommendLevel("中级");
+            }else if(recommendLevel.equals("high")){
+                o.setRecommendLevel("高级");
+            }
+        });
+
         OutputStream outputStream = response.getOutputStream();
         try {
             String[] header = {

+ 38 - 16
mec-web/src/main/java/com/ym/mec/web/controller/ImportController.java

@@ -26,6 +26,7 @@ import org.apache.tomcat.util.http.fileupload.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -64,7 +65,7 @@ public class ImportController extends BaseController {
     private AppRedemptionCodeService appRedemptionCodeService;
     @Autowired
     private UploadFileService uploadFileService;
-    
+
     @Autowired
     private MusicGroupService musicGroupService;
 
@@ -112,32 +113,32 @@ public class ImportController extends BaseController {
     @PostMapping(value = "studentToMusicGroup")
     @PreAuthorize("@pcs.hasPermissions('import/studentToMusicGroup')")
     public HttpResponseResult<List<StudentPaymentRouteOrder>> importStudentToMusicGroup(String musicGroupId, @RequestParam("file") MultipartFile file) throws Exception {
-    	Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
-        boolean result =  musicGroupService.importStudentToMusicGroup(musicGroupId, sheetsListMap);
-        
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
+        boolean result = musicGroupService.importStudentToMusicGroup(musicGroupId, sheetsListMap);
+
         return result ? succeed() : failed();
     }
 
     @PostMapping(value = "oaUploadFile")
-    public Object uploadFile(@ApiParam(value = "上传的文件", required = true) @RequestParam("file") MultipartFile file,Integer processId) throws Exception {
+    public Object uploadFile(@ApiParam(value = "上传的文件", required = true) @RequestParam("file") MultipartFile file, Integer processId) throws Exception {
         if (file != null && StringUtils.isNotBlank(file.getOriginalFilename())) {
             String fileName = UploadUtil.getExtension(file.getOriginalFilename());
-            UploadReturnBean bean = uploadFileService.uploadFile(file.getInputStream(),fileName);
+            UploadReturnBean bean = uploadFileService.uploadFile(file.getInputStream(), fileName);
             bean.setName(file.getOriginalFilename());
-            if(bean.isStatus()){
+            if (bean.isStatus()) {
                 //如果是乐团退费,校验excel
-                if(processId != null && (processId.equals(19) || processId.equals(33))){
-                    if(!"xls".equals(fileName) && !"xlsx".equals(fileName)){
+                if (processId != null && (processId.equals(19) || processId.equals(33))) {
+                    if (!"xls".equals(fileName) && !"xlsx".equals(fileName)) {
                         throw new BizException("请上传Excel文件");
                     }
                     URL url = new URL(bean.getUrl());
                     HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-                    conn.setConnectTimeout(3*1000);
+                    conn.setConnectTimeout(3 * 1000);
                     File excelFile = File.createTempFile(UUID.randomUUID().toString(), ".xls");
                     try {
-                        FileUtils.copyInputStreamToFile(conn.getInputStream(),excelFile);
-                        financialExpenditureService.checkOaQuitMusicGroupExcel(FileUtils.readFileToByteArray(excelFile),fileName);
-                    }finally {
+                        FileUtils.copyInputStreamToFile(conn.getInputStream(), excelFile);
+                        financialExpenditureService.checkOaQuitMusicGroupExcel(FileUtils.readFileToByteArray(excelFile), fileName);
+                    } finally {
                         //删除临时文件
                         if (excelFile.exists()) {
                             excelFile.delete();
@@ -145,7 +146,7 @@ public class ImportController extends BaseController {
                     }
                 }
                 return succeed(bean);
-            }else {
+            } else {
                 return failed(bean.getMessage());
             }
         }
@@ -184,11 +185,32 @@ public class ImportController extends BaseController {
     @ApiOperation(value = "直播临时活动--学员购买导入")
     @PostMapping(value = "importBuyFreeLiveTheoryCourse")
     @PreAuthorize("@pcs.hasPermissions('import/importBuyFreeLiveTheoryCourseList')")
-    public HttpResponseResult<List<TempBuyFreeLiveTheoryCourse>> importBuyFreeLiveTheoryCourse(@RequestParam("file") MultipartFile file) throws Exception {
+    public HttpResponseResult<List<String>> importBuyFreeLiveTheoryCourse(@RequestParam("file") MultipartFile file) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        List<String> errMsg = liveTheoryCourseService.importBuyFreeLiveTheoryCourse(file, sysUser.getId());
+        if (CollectionUtils.isEmpty(errMsg)) {
+            return succeed();
+        } else {
+            return failed(StringUtils.join(errMsg, ","));
+        }
+    }
+
+    @ApiOperation(value = "直播临时活动--上课老师名片信息")
+    @PostMapping(value = "importLiveTeacherCard")
+    @PreAuthorize("@pcs.hasPermissions('import/importLiveTeacherCard')")
+    public HttpResponseResult<List<String>> importLiveTeacherCard(@RequestParam("file") MultipartFile file) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
-        return succeed(liveTheoryCourseService.importBuyFreeLiveTheoryCourse(file, sysUser.getId()));
+        List<String> errMsg = liveTheoryCourseService.importLiveTeacherCard(file, sysUser.getId());
+        if (CollectionUtils.isEmpty(errMsg)) {
+            return succeed();
+        } else {
+            return failed(StringUtils.join(errMsg, ","));
+        }
     }
 }

+ 16 - 0
mec-web/src/main/resources/bootstrap-local.properties

@@ -0,0 +1,16 @@
+#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
+#spring.profiles.active=dev
+#\u670d\u52a1\u5668\u5730\u5740
+spring.cloud.nacos.config.server-addr=47.114.176.40:8848
+#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
+spring.cloud.nacos.config.namespace=6488ff54-d97a-43ea-8c7b-d1d25bb54622
+#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
+spring.cloud.nacos.config.group=DEFAULT_GROUP
+#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
+spring.cloud.nacos.config.prefix=web
+#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
+spring.cloud.nacos.config.file-extension=yaml
+#\u662f\u5426\u52a8\u6001\u5237\u65b0
+spring.cloud.nacos.config.refresh.enabled=true
+#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
+spring.cloud.nacos.config.enabled=true

+ 9 - 1
mec-web/src/main/resources/columnMapper.ini

@@ -67,4 +67,12 @@
 ID = id
 用户ID = userId
 购买学生姓名 = studentName
-老师推荐级别(初级/中级/高级) = recommendLevel
+老师推荐级别(初级/中级/高级) = recommendLevel
+
+[直播临时活动上课老师名片导入模板]
+声部id = subjectId
+级别 = level
+老师名称 = username
+老师介绍 = introduction
+教学曲目 = musicNames
+头像地址 = avatar

+ 8 - 0
mec-web/src/main/resources/logback-spring.xml

@@ -71,6 +71,14 @@
     </logger>
 
     <!--开发环境:打印控制台 -->
+    <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"/>