Przeglądaj źródła

Merge branch 'zouxuan_saas_2022_0606' into master_saas

liweifan 3 lat temu
rodzic
commit
99cf0db05f
22 zmienionych plików z 424 dodań i 108 usunięć
  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. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLiveTeacherCard.java
  7. 40 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/LevelEnum.java
  8. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TemplateTypeEnum.java
  9. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TempBuyFreeLiveTheoryCourseService.java
  10. 150 48
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempBuyFreeLiveTheoryCourseServiceImpl.java
  11. 28 17
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml
  12. 17 3
      mec-biz/src/main/resources/config/mybatis/TempLiveTeacherCardMapper.xml
  13. 8 0
      mec-gateway/mec-gateway-web/src/main/resources/logback-spring.xml
  14. 15 18
      mec-student/src/main/java/com/ym/mec/student/controller/TempLiveActivityController.java
  15. 16 0
      mec-student/src/main/resources/logback-spring.xml
  16. 9 1
      mec-task/src/main/resources/logback-spring.xml
  17. 8 0
      mec-teacher/src/main/resources/logback-spring.xml
  18. 15 0
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  19. 38 16
      mec-web/src/main/java/com/ym/mec/web/controller/ImportController.java
  20. 16 0
      mec-web/src/main/resources/bootstrap-local.properties
  21. 9 1
      mec-web/src/main/resources/columnMapper.ini
  22. 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);
 }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLiveTeacherCard.java

@@ -15,6 +15,9 @@ public class TempLiveTeacherCard {
 	
 	@ApiModelProperty("老师id ")
 	private Integer userId;
+
+	@ApiModelProperty("老师名称 ")
+	private String username;
 	
 	@ApiModelProperty("头像地址 ")
 	private String avatar;
@@ -41,9 +44,13 @@ public class TempLiveTeacherCard {
 	
 	private java.util.Date updateTime;
 
+
 	@ApiModelProperty("是否推荐级别")
 	private Boolean recommendLevelFlag;
 
+	@ApiModelProperty("是否已经加入")
+	private Boolean joinFlag;
+
 	@ApiModelProperty(value = "学生id",hidden = true)
 	private Integer studentId;
 
@@ -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;
 }

+ 150 - 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,154 @@ 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(0);
+        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) {
+            if (null == temp.getId()) {
+                continue;
+            }
+            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>
 

+ 17 - 3
mec-biz/src/main/resources/config/mybatis/TempLiveTeacherCardMapper.xml

@@ -18,6 +18,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>
 
     <!-- 根据主键查询一条记录 -->
@@ -103,13 +106,24 @@
     </select>
 
     <select id="list" resultMap="TempLiveTeacherCard">
-        select * from temp_live_teacher_card t
+        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
+            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">

+ 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">

+ 15 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -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"/>