Browse Source

Merge branch 'master' of git.dayaedu.com:yonge/mec

# Conflicts:
#	mec-education/src/main/java/com/ym/mec/education/req/ClassGroupReq.java
chengpeng 5 years ago
parent
commit
78ba2da5ca
36 changed files with 665 additions and 387 deletions
  1. 14 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysRole.java
  2. 9 1
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysRoleMenu.java
  3. 6 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysRoleService.java
  4. 23 5
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysRoleServiceImpl.java
  5. 3 7
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/RoleController.java
  6. 1 1
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMessageDao.java
  8. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessage.java
  9. 12 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessageConfig.java
  10. 23 21
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageSendMode.java
  11. 0 36
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SendTypeEnum.java
  12. 65 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/SysMessageQueryInfo.java
  13. 7 7
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  14. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  15. 9 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  16. 1 2
      mec-biz/src/main/resources/config/mybatis/SysMessageConfigMapper.xml
  17. 6 6
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  18. 10 1
      mec-education/src/main/java/com/ym/mec/education/base/BaseResponse.java
  19. 44 0
      mec-education/src/main/java/com/ym/mec/education/controller/ClassGroupController.java
  20. 11 10
      mec-education/src/main/java/com/ym/mec/education/controller/StudentAttendanceController.java
  21. 1 1
      mec-education/src/main/java/com/ym/mec/education/mapper/CourseScheduleMapper.java
  22. 1 0
      mec-education/src/main/java/com/ym/mec/education/req/ClassGroupReq.java
  23. 15 0
      mec-education/src/main/java/com/ym/mec/education/resp/ClassGroupResp.java
  24. 37 0
      mec-education/src/main/java/com/ym/mec/education/resp/StudentAttendanceResq.java
  25. 4 0
      mec-education/src/main/java/com/ym/mec/education/service/IClassGroupService.java
  26. 1 1
      mec-education/src/main/java/com/ym/mec/education/service/ICourseScheduleService.java
  27. 4 0
      mec-education/src/main/java/com/ym/mec/education/service/IStudentAttendanceService.java
  28. 44 0
      mec-education/src/main/java/com/ym/mec/education/service/impl/ClassGroupServiceImpl.java
  29. 1 1
      mec-education/src/main/java/com/ym/mec/education/service/impl/CourseScheduleServiceImpl.java
  30. 62 1
      mec-education/src/main/java/com/ym/mec/education/service/impl/StudentAttendanceServiceImpl.java
  31. 14 0
      mec-student/src/main/java/com/ym/mec/student/StudentApplication.java
  32. 130 0
      mec-student/src/main/java/com/ym/mec/student/controller/SysMessageController.java
  33. 97 0
      mec-util/src/main/java/com/ym/mec/util/validator/CommonValidator.java
  34. 0 70
      mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java
  35. 0 53
      mec-web/src/test/java/com/ym/Test.java
  36. 0 140
      mec-web/src/test/java/com/ym/webApplicationTest.java

+ 14 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysRole.java

@@ -1,8 +1,11 @@
 package com.ym.mec.auth.api.entity;
 
+import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.List;
+
 /**
  * 对应数据库表(sys_role):
  */
@@ -35,6 +38,17 @@ public class SysRole {
 	
 	private Integer organId;
 
+	@ApiModelProperty(value = "菜单列表",required = false)
+	private List<Integer> menuIds;
+
+	public List<Integer> getMenuIds() {
+		return menuIds;
+	}
+
+	public void setMenuIds(List<Integer> menuIds) {
+		this.menuIds = menuIds;
+	}
+
 	public Integer getId() {
 		return id;
 	}

+ 9 - 1
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysRoleMenu.java

@@ -15,7 +15,15 @@ public class SysRoleMenu {
 	/** 菜单ID */
 	@ApiModelProperty(value = "菜单ID",required = false)
 	private Integer menuId;
-	
+
+	public SysRoleMenu(Integer roleId, Integer menuId) {
+		this.roleId = roleId;
+		this.menuId = menuId;
+	}
+
+	public SysRoleMenu() {
+	}
+
 	public void setRoleId(Integer roleId){
 		this.roleId = roleId;
 	}

+ 6 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysRoleService.java

@@ -20,4 +20,10 @@ public interface SysRoleService extends BaseService<Integer, SysRole> {
      * @return
      */
     SysRole findRoleByCode(String code);
+
+    /**
+     * 添加角色
+     * @param sysRole
+     */
+    void addRole(SysRole sysRole);
 }

+ 23 - 5
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysRoleServiceImpl.java

@@ -1,21 +1,25 @@
 package com.ym.mec.auth.service.impl;
 
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.ym.mec.auth.api.entity.SysRole;
+import com.ym.mec.auth.api.entity.SysRoleMenu;
 import com.ym.mec.auth.dal.dao.SysRoleDao;
+import com.ym.mec.auth.dal.dao.SysRoleMenuDao;
 import com.ym.mec.auth.service.SysRoleService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 @Service
 public class SysRoleServiceImpl extends BaseServiceImpl<Integer, SysRole>  implements SysRoleService {
 	
 	@Autowired
 	private SysRoleDao sysRoleDao;
+	@Autowired
+	private SysRoleMenuDao sysRoleMenuDao;
 
 	@Override
 	public BaseDAO<Integer, SysRole> getDAO() {
@@ -32,4 +36,18 @@ public class SysRoleServiceImpl extends BaseServiceImpl<Integer, SysRole>  imple
 		return sysRoleDao.findRoleByCode(code);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void addRole(SysRole sysRole) {
+		sysRoleDao.insert(sysRole);
+		List<Integer> menuIds = sysRole.getMenuIds();
+		if(menuIds != null && menuIds.size() > 0){
+			SysRoleMenu sysRoleMenu = new SysRoleMenu(sysRole.getId(),null);
+			menuIds.forEach(e->{
+				sysRoleMenu.setMenuId(e);
+				sysRoleMenuDao.insert(sysRoleMenu);
+			});
+		}
+	}
+
 }

+ 3 - 7
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/RoleController.java

@@ -52,13 +52,9 @@ public class RoleController extends BaseController {
     }
 
     @ApiOperation("新增角色")
-    @PostMapping(value = "/add",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-    public Object addRole(SysRole sysRole) {
-        SysRole roleByCode = sysRoleService.findRoleByCode(sysRole.getRoleCode());
-        if(roleByCode != null){
-            return failed("权限标识已存在");
-        }
-        sysRoleService.insert(sysRole);
+    @PostMapping(value = "/add")
+    public Object addRole(@RequestBody SysRole sysRole) {
+        sysRoleService.addRole(sysRole);
         return succeed();
     }
 

+ 1 - 1
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml

@@ -36,7 +36,7 @@
         </selectKey>
         -->
         INSERT INTO sys_role (id_,role_name_,role_code_,role_desc_,create_time_,update_time_,organ_id_)
-        VALUES(#{id},#{roleName},#{roleCode},#{roleDesc},now(),now(),organId)
+        VALUES(#{id},#{roleName},#{roleCode},#{roleDesc},now(),now(),,#{organId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMessageDao.java

@@ -39,5 +39,5 @@ public interface SysMessageDao extends BaseDAO<Long, SysMessage> {
 	/**
 	 * 修改单个消息状态
 	 */
-	public int updateOneStatus(@Param("id") Integer id, @Param("status") int status);
+	public int updateOneStatus(@Param("id") Long id, @Param("status") int status);
 }

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessage.java

@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import com.ym.mec.biz.dal.enums.SendStatusEnum;
-import com.ym.mec.biz.dal.enums.SendTypeEnum;
+import com.ym.mec.biz.dal.enums.MessageSendMode;
 
 /**
  * 对应数据库表(sys_message):
@@ -25,7 +25,7 @@ public class SysMessage {
 	
 	/** 消息类型;1,表示短信;2,表示邮件; 3,app推送消息 */
 	@ApiModelProperty(value = "消息类型",required = false)
-	private SendTypeEnum type;
+	private MessageSendMode type;
 	
 	/** 状态,-1,发送失败;0,待发送;1,发送中;2,发送完成 */
 	@ApiModelProperty(value = "状态",required = false)
@@ -141,11 +141,11 @@ public class SysMessage {
 		return this.memo;
 	}
 
-	public SendTypeEnum getType() {
+	public MessageSendMode getType() {
 		return type;
 	}
 
-	public void setType(SendTypeEnum type) {
+	public void setType(MessageSendMode type) {
 		this.type = type;
 	}
 

+ 12 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessageConfig.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import com.ym.mec.common.enums.BaseEnum;
@@ -10,18 +11,23 @@ import com.ym.mec.common.enums.BaseEnum;
 public class SysMessageConfig {
 
 	public enum MessageType implements BaseEnum<String, MessageType> {
-
-		;
-
-		private String code;
+		USER_REGISTER("用户注册");
 
 		private MessageType(String code) {
-			this.code = code;
 		}
 
 		@Override
 		public String getCode() {
-			return code;
+			return name();
+		}
+
+		public static MessageType getMessageType(String name) {
+			for (MessageType type : MessageType.values()) {
+				if (StringUtils.equals(type.name(), name)) {
+					return type;
+				}
+			}
+			return null;
 		}
 
 	}

+ 23 - 21
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageSendMode.java

@@ -1,34 +1,36 @@
 package com.ym.mec.biz.dal.enums;
 
-public enum MessageSendMode {
+import com.ym.mec.common.enums.BaseEnum;
 
-	// 短信
-	SMS(1),
-	// 邮件
-	EMAIL(2),
-	// app推送
-	PUSH(3);
+/**
+ 状态,1,表示短信;2,表示邮件; 3,app推送消息
+ */
+public enum MessageSendMode implements BaseEnum<Integer, MessageSendMode> {
+	SMS(1, "短信"), EMAIL(2, "邮件"), PUSH(3, "app推送消息");
 
-	private int index;
+	private Integer code;
 
-	private MessageSendMode(int index) {
-		this.index = index;
+	private String msg;
+
+	MessageSendMode(Integer code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public void setCode(Integer code) {
+		this.code = code;
 	}
 
-	public int getIndex() {
-		return index;
+	public String getMsg() {
+		return msg;
 	}
 
-	public void setIndex(int index) {
-		this.index = index;
+	public void setMsg(String msg) {
+		this.msg = msg;
 	}
 
-	public static MessageSendMode getMessageSendMode(int index) {
-		for (MessageSendMode mode : values()) {
-			if (mode.getIndex() == index) {
-				return mode;
-			}
-		}
-		return null;
+	@Override
+	public Integer getCode() {
+		return this.code;
 	}
 }

+ 0 - 36
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SendTypeEnum.java

@@ -1,36 +0,0 @@
-package com.ym.mec.biz.dal.enums;
-
-import com.ym.mec.common.enums.BaseEnum;
-
-/**
- 状态,1,表示短信;2,表示邮件; 3,app推送消息
- */
-public enum SendTypeEnum implements BaseEnum<Integer, SendTypeEnum> {
-	SMS(1, "短信"), EMAIL(2, "邮件"), PUSH(3, "app推送消息");
-
-	private Integer code;
-
-	private String msg;
-
-	SendTypeEnum(Integer code, String msg) {
-		this.code = code;
-		this.msg = msg;
-	}
-
-	public void setCode(Integer code) {
-		this.code = code;
-	}
-
-	public String getMsg() {
-		return msg;
-	}
-
-	public void setMsg(String msg) {
-		this.msg = msg;
-	}
-
-	@Override
-	public Integer getCode() {
-		return this.code;
-	}
-}

+ 65 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SysMessageQueryInfo.java

@@ -0,0 +1,65 @@
+package com.ym.mec.biz.dal.page;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class SysMessageQueryInfo extends QueryInfo {
+
+	/** 状态,0,待发送;1,发送中;2,发送完成 */
+	@ApiModelProperty(value = "状态,0,待发送;1,发送中;2,发送完成 ",required = false)
+	private Integer status;
+
+	@ApiModelProperty(value = "接收人编号",required = false)
+	private String receiver;
+
+	@ApiModelProperty(value = "发送人编号",required = false)
+	private Integer userId;
+
+	@ApiModelProperty(value = "标题",required = false)
+	private String title;
+
+	@ApiModelProperty(value = "消息类型;1,表示短信;2,表示邮件; 3,app推送消息",required = false)
+	private Integer type;
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public String getReceiver() {
+		return receiver;
+	}
+
+	public void setReceiver(String receiver) {
+		this.receiver = receiver;
+	}
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public Integer getType() {
+		return type;
+	}
+
+	public void setType(Integer type) {
+		this.type = type;
+	}
+
+}

+ 7 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -5,7 +5,7 @@ import java.util.Date;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
 import com.ym.mec.biz.dal.enums.SendStatusEnum;
-import com.ym.mec.biz.dal.enums.SendTypeEnum;
+import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 
@@ -25,7 +25,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param memo 备注
 	 * @return
 	 */
-	public int addMessage(Integer userId, String subject, String content, String receivers, Date triggerTime, SendTypeEnum mode, SendStatusEnum status,
+	public int addMessage(Integer userId, String subject, String content, String receivers, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
 			String errorMsg, Integer readStatus, String memo);
 
 	/**
@@ -45,7 +45,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param triggerTime 触发时间
 	 * @return
 	 */
-	public boolean batchSendMessage(MessageSender messageSender, SendTypeEnum mode, String subject, String content, String receivers, Date triggerTime,
+	public boolean batchSendMessage(MessageSender messageSender, MessageSendMode mode, String subject, String content, String receivers, Date triggerTime,
 			Integer readStatus, String memo);
 
 	/**
@@ -61,7 +61,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param args 参数
 	 * @return
 	 */
-	public void sendMessage(MessageSender messageSender, Integer userId, SendTypeEnum mode, MessageType messageType, String receiver, Date triggerTime,
+	public void sendMessage(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageType messageType, String receiver, Date triggerTime,
 			Integer readStatus, String url, Object... args);
 
 	/**
@@ -77,7 +77,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param url 超链接地址
 	 * @return
 	 */
-	public void sendMessage(MessageSender messageSender, Integer userId, SendTypeEnum mode, String title, String content, String receiver, Date triggerTime,
+	public void sendMessage(MessageSender messageSender, Integer userId, MessageSendMode mode, String title, String content, String receiver, Date triggerTime,
 			Integer readStatus, String url);
 
 	/**
@@ -89,7 +89,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param receiver 消息接受者
 	 * @return
 	 */
-	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, SendTypeEnum mode, MessageType messageType, String receiver);
+	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageType messageType, String receiver);
 
 	/**
 	 * 获取已经发送的验证码
@@ -124,6 +124,6 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	/**
 	 * 修改单条消息状态
 	 */
-	public int updateOneStatus(Integer id, int status);
+	public int updateOneStatus(Long id, int status);
 
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -329,10 +329,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<CourseListDto> courseListDtos = classGroupDao.queryCoursePage(userId);
         courseListDtos.forEach(e->{
             if("VIP".equals(e.getTeachMode())){
+                //获取vip课的学生名称列表
                 e.setStudentNames(classGroupDao.findVipStuNames(e.getMusicGroupId()));
             }else {
+                //获取学员乐团课的续费状态
+
+                //获取当前乐团缴费周期
                 List<MusicGroupPaymentCalender> musicGroupPaymentCalenders = musicGroupPaymentCalenderDao.findByMusicGroupId(e.getMusicGroupId());
 
+
             }
         });
         return classGroupDao.queryCoursePage(userId);

+ 9 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -10,7 +10,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
@@ -20,8 +19,8 @@ import com.ym.mec.biz.dal.dao.SysMessageDao;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.entity.SysMessageConfig;
 import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
+import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.enums.SendStatusEnum;
-import com.ym.mec.biz.dal.enums.SendTypeEnum;
 import com.ym.mec.biz.service.SysMessageConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -48,11 +47,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
-
-	@Autowired
-	private RedisTemplate<String,Object> redisTemplate;
 	
-	private RedisCache<String,Object> redisCache = new RedisCache<String, Object>(redisTemplate);
+	@Autowired
+	private RedisCache<String,Object> redisCache;
 
 	// 验证码有效期
 	public static final int CODE_EXPIRE = 60 * 5;
@@ -71,7 +68,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	public int addMessage(Integer userId, String subject, String content, String receivers, Date triggerTime, SendTypeEnum mode, SendStatusEnum status,
+	public int addMessage(Integer userId, String subject, String content, String receivers, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
 			String errorMsg, Integer readStatus, String memo) {
 		SysMessage message = null;
 		Date date = new Date();
@@ -116,7 +113,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	@Async
-	public boolean batchSendMessage(MessageSender messageSender, SendTypeEnum mode, String subject, String content, String receivers, Date triggerTime,
+	public boolean batchSendMessage(MessageSender messageSender, MessageSendMode mode, String subject, String content, String receivers, Date triggerTime,
 			Integer readStatus, String memo) {
 
 		if (StringUtils.isBlank(receivers)) {
@@ -154,7 +151,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	@Async
-	public void sendMessage(MessageSender messageSender, Integer userId, SendTypeEnum mode, MessageType type, String receiver, Date triggerTime,
+	public void sendMessage(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageType type, String receiver, Date triggerTime,
 			Integer readStatus, String url, Object... args) {
 
 		if (StringUtils.isBlank(receiver)) {
@@ -190,7 +187,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	@Async
-	public void sendMessage(MessageSender messageSender, Integer userId, SendTypeEnum mode, String title, String content, String receiver, Date triggerTime,
+	public void sendMessage(MessageSender messageSender, Integer userId, MessageSendMode mode, String title, String content, String receiver, Date triggerTime,
 			Integer readStatus, String url) {
 		if (StringUtils.isBlank(receiver)) {
 			throw new BizException("接收地址不能为空");
@@ -217,7 +214,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, SendTypeEnum mode, MessageType messageType, String receiver) {
+	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageSendMode mode, MessageType messageType, String receiver) {
 		String key1 = getVerificationCode1CacheKey(messageType, receiver);
 		if (redisCache.get(key1) != null) {
 			throw new BizException("请勿频繁操作,获取验证码间隔时间为60秒");
@@ -289,7 +286,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	public int updateOneStatus(Integer id, int status) {
+	public int updateOneStatus(Long id, int status) {
 		return sysMessageDao.updateOneStatus(id, status);
 	}
 }

+ 1 - 2
mec-biz/src/main/resources/config/mybatis/SysMessageConfigMapper.xml

@@ -99,8 +99,7 @@
 	</select>
 
 	<select id="queryByType" resultMap="SysMessageConfig">
-		select *
-		from xjd_message_config
+		select * from sys_message_config
 		where message_type_ = #{messageType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
 </mapper>

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

@@ -66,8 +66,8 @@
 		modify_on_)
 		values (#{id,jdbcType=BIGINT},#{userId,jdbcType=BIGINT}, #{title,jdbcType=VARCHAR},
 		#{content,jdbcType=VARCHAR},
-		#{type,jdbcType=TINYINT},
-		#{status,jdbcType=TINYINT}, #{receiver,jdbcType=VARCHAR},
+		#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{receiver,jdbcType=VARCHAR},
 		#{sendTime},#{errorMsg,jdbcType=VARCHAR},#{readStatus},#{memo},
 		#{createOn},
 		#{modifyOn})
@@ -85,8 +85,8 @@
 			(
 			#{item.id,jdbcType=BIGINT},#{item.userId,jdbcType=BIGINT}, #{item.title,jdbcType=VARCHAR},
 			#{item.content,jdbcType=VARCHAR},
-			#{item.type,jdbcType=TINYINT},
-			#{item.status,jdbcType=TINYINT}, #{item.receiver,jdbcType=VARCHAR},
+			#{item.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{item.receiver,jdbcType=VARCHAR},
 			#{item.sendTime},#{item.errorMsg,jdbcType=VARCHAR},#{item.readStatus},#{item.memo},
 			#{item.createOn},
 			#{item.modifyOn}
@@ -107,10 +107,10 @@
 				content_ = #{content,jdbcType=VARCHAR},
 			</if>
 			<if test="type != null">
-				type_ = #{type,jdbcType=TINYINT},
+				type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 			</if>
 			<if test="status != null">
-				status_ = #{status,jdbcType=TINYINT},
+				status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 			</if>
 			<if test="receiver != null">
 				receiver_ = #{receiver,jdbcType=VARCHAR},

+ 10 - 1
mec-education/src/main/java/com/ym/mec/education/base/BaseResponse.java

@@ -1,5 +1,6 @@
 package com.ym.mec.education.base;
 
+import com.ym.mec.education.enums.ReturnCodeEnum;
 import javax.persistence.MappedSuperclass;
 import java.io.Serializable;
 
@@ -28,4 +29,12 @@ public class BaseResponse<T> extends Response implements Serializable {
     public String toString() {
         return "BaseResponse(super=" + super.toString() + ", dataInfo=" + this.getDataInfo() + ")";
     }
-}
+
+    public static BaseResponse success(Object dataInfo) {
+        BaseResponse baseResponse = new BaseResponse<>();
+        baseResponse.setReturnCode(ReturnCodeEnum.CODE_200.getCode());
+        baseResponse.setMessage(ReturnCodeEnum.CODE_200.getValue());
+        baseResponse.setDataInfo(dataInfo);
+        return baseResponse;
+    }
+}

+ 44 - 0
mec-education/src/main/java/com/ym/mec/education/controller/ClassGroupController.java

@@ -0,0 +1,44 @@
+package com.ym.mec.education.controller;
+
+import com.ym.mec.education.base.BaseResponse;
+import com.ym.mec.education.enums.ReturnCodeEnum;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.service.IClassGroupService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+/**
+ * @program: mec
+ * @description: 班级
+ * @author: xw
+ * @create: 2019-09-26 14:03
+ */
+@RestController
+@RequestMapping("api/ClassGroup")
+@Api(tags = "班级")
+@Slf4j
+public class ClassGroupController {
+
+    @Autowired
+    private IClassGroupService classGroupService;
+
+    @PostMapping("/info")
+    @ApiOperation("班级详情")
+    public BaseResponse getInfo(@RequestBody ClassGroupReq classGroupReq) {
+        if (Objects.nonNull(classGroupReq.getClassGroupId())) {
+            BaseResponse baseResponse = new BaseResponse();
+            baseResponse.setReturnCode(ReturnCodeEnum.CODE_206.getCode());
+            baseResponse.setMessage(ReturnCodeEnum.CODE_206.getValue());
+            return baseResponse;
+        }
+        return classGroupService.getInfo(classGroupReq);
+    }
+}

+ 11 - 10
mec-education/src/main/java/com/ym/mec/education/controller/StudentAttendanceController.java

@@ -1,8 +1,14 @@
 package com.ym.mec.education.controller;
 
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.req.StudentAttendanceReq;
 import com.ym.mec.education.service.IStudentAttendanceService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -14,22 +20,17 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("api/studentAttendance")
+@Api(tags = "学生考勤")
 @Slf4j
 public class StudentAttendanceController {
 
     @Autowired
     private IStudentAttendanceService studentAttendanceService;
 
-    /*@PostMapping("/page")
+    @PostMapping("/page")
+    @ApiOperation("点名记录列表")
     public PageResponse page(@RequestBody StudentAttendanceReq studentAttendanceReq) {
-        Page<StudentAttendance> page = new Page(studentAttendanceReq.getPageNo(), studentAttendanceReq.getPageSize());
-        QueryWrapper<StudentAttendance> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(Objects.nonNull(studentAttendanceReq.getMusicGroupId()),
-                StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
-                .eq(Objects.nonNull(studentAttendanceReq.getClassGroupId()),
-                        StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId());
-        IPage<StudentAttendance> pageResult = studentAttendanceService.page(page, queryWrapper);
-        return PageResponse.success(pageResult);
-    }*/
+        return studentAttendanceService.getPage(studentAttendanceReq);
+    }
 
 }

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/mapper/CourseScheduleMapper.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.education.entity.CourseSchedule;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
 
 /**
  * <p>

+ 1 - 0
mec-education/src/main/java/com/ym/mec/education/req/ClassGroupReq.java

@@ -12,6 +12,7 @@ import java.io.Serializable;
  * @date Date : 2019年09月26日 15:43
  */
 @Data
+@ApiModel(description = "班级入参")
 public class ClassGroupReq extends BaseQuery implements Serializable {
     private Integer groupId;
 }

+ 15 - 0
mec-education/src/main/java/com/ym/mec/education/resp/ClassGroupResp.java

@@ -1,5 +1,7 @@
 package com.ym.mec.education.resp;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.ToString;
 
@@ -16,6 +18,7 @@ import java.util.List;
 
 @Data
 @ToString
+@ApiModel(description = "班级出参")
 public class ClassGroupResp implements Serializable {
     private Integer id;
     private Integer musicGroupId;
@@ -59,4 +62,16 @@ public class ClassGroupResp implements Serializable {
 
     private List<String> secdTehNameList;
 
+    @ApiModelProperty(value = "授课老师",required = true)
+    private String teacher;
+
+    @ApiModelProperty(value = "授课老师",required = true)
+    private String assistant;
+
+    @ApiModelProperty(value = "课程进度",required = true)
+    private String courseProgress;
+
+    @ApiModelProperty(value = "班级名称",required = true)
+    private String classGroupName;
+
 }

+ 37 - 0
mec-education/src/main/java/com/ym/mec/education/resp/StudentAttendanceResq.java

@@ -0,0 +1,37 @@
+package com.ym.mec.education.resp;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @program: mec
+ * @description: 考勤出参
+ * @author: xw
+ * @create: 2019-09-26 15:24
+ */
+@Data
+@ApiModel(description = "考勤出参")
+@Accessors(chain = true)
+public class StudentAttendanceResq implements Serializable {
+
+    @ApiModelProperty(value = "上课日期",required = true)
+    @DateTimeFormat(pattern = "MM月dd日")
+    private Date classDate;
+
+    @ApiModelProperty(value = "上课时间",required = true)
+    private String classTime;
+
+    @ApiModelProperty(value = "班级名称",required = true)
+    private String classGroupName;
+
+    @ApiModelProperty(value = "到课比",required = true)
+    private String attendanceRate;
+
+    @ApiModelProperty(value = "请假人数",required = true)
+    private Integer leaveNum;
+}

+ 4 - 0
mec-education/src/main/java/com/ym/mec/education/service/IClassGroupService.java

@@ -1,7 +1,10 @@
 package com.ym.mec.education.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.entity.ClassGroup;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.resp.ClassGroupResp;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.ym.mec.education.entity.ClassGroup;
  */
 public interface IClassGroupService extends IService<ClassGroup> {
 
+    BaseResponse<ClassGroupResp> getInfo(ClassGroupReq classGroupReq);
 }

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/service/ICourseScheduleService.java

@@ -1,7 +1,7 @@
 package com.ym.mec.education.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.education.entity.CourseSchedule;
-import com.baomidou.mybatisplus.service.IService;
 
 /**
  * <p>

+ 4 - 0
mec-education/src/main/java/com/ym/mec/education/service/IStudentAttendanceService.java

@@ -1,7 +1,9 @@
 package com.ym.mec.education.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.education.base.PageResponse;
 import com.ym.mec.education.entity.StudentAttendance;
+import com.ym.mec.education.req.StudentAttendanceReq;
 
 /**
  * <p>
@@ -13,4 +15,6 @@ import com.ym.mec.education.entity.StudentAttendance;
  */
 public interface IStudentAttendanceService extends IService<StudentAttendance> {
 
+    PageResponse getPage(StudentAttendanceReq studentAttendanceReq);
+
 }

+ 44 - 0
mec-education/src/main/java/com/ym/mec/education/service/impl/ClassGroupServiceImpl.java

@@ -1,10 +1,23 @@
 package com.ym.mec.education.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.education.base.BaseResponse;
 import com.ym.mec.education.entity.ClassGroup;
+import com.ym.mec.education.entity.ClassGroupTeacherMapper;
+import com.ym.mec.education.enums.ReturnCodeEnum;
 import com.ym.mec.education.mapper.ClassGroupMapper;
+import com.ym.mec.education.req.ClassGroupReq;
+import com.ym.mec.education.resp.ClassGroupResp;
 import com.ym.mec.education.service.IClassGroupService;
+import com.ym.mec.education.service.IClassGroupTeacherMapperService;
+import com.ym.mec.education.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +30,35 @@ import org.springframework.stereotype.Service;
 @Service
 public class ClassGroupServiceImpl extends ServiceImpl<ClassGroupMapper, ClassGroup> implements IClassGroupService {
 
+    @Autowired
+    private IClassGroupTeacherMapperService classGroupTeacherMapperService;
+    @Autowired
+    private ISysUserService userService;
+
+    @Override
+    public BaseResponse<ClassGroupResp> getInfo(ClassGroupReq classGroupReq) {
+        BaseResponse<ClassGroupResp> baseResponse = new BaseResponse<>();
+        ClassGroup classGroup = getById(classGroupReq.getClassGroupId());
+        if (Objects.isNull(classGroup)) {
+            baseResponse.setReturnCode(ReturnCodeEnum.CODE_207.getCode());
+            baseResponse.setMessage(ReturnCodeEnum.CODE_207.getValue());
+            return baseResponse;
+        }
+        QueryWrapper<ClassGroupTeacherMapper> teacherMapperQueryWrapper = new QueryWrapper<>();
+        teacherMapperQueryWrapper.lambda().eq(true, ClassGroupTeacherMapper::getClassGroupId, classGroupReq.getClassGroupId());
+        ClassGroupResp classGroupResp = new ClassGroupResp();
+        List<ClassGroupTeacherMapper> teacherMapperList = classGroupTeacherMapperService.list(teacherMapperQueryWrapper);
+        if (!CollectionUtils.isEmpty(teacherMapperList)) {
+            teacherMapperList.stream().filter(item -> "TEACHING".equals(item.getTeacherRole())).findFirst().
+                    ifPresent(classGroupTeacherMapper -> classGroupResp.
+                            setTeacher(userService.getById(classGroupTeacherMapper.getUserId()).getUsername()));
+            teacherMapperList.stream().filter(item -> "BISHOP".equals(item.getTeacherRole())).findFirst().
+                    ifPresent(classGroupTeacherMapper -> classGroupResp.
+                            setAssistant(userService.getById(classGroupTeacherMapper.getUserId()).getUsername()));
+        }
+        classGroupResp.setStudentNum(classGroup.getStudentNum());
+        classGroupResp.setCourseProgress(classGroup.getCurrentClassTimes() + "/" + classGroup.getTotalClassTimes());
+        classGroupResp.setClassGroupName(classGroup.getName());
+        return BaseResponse.success(classGroupResp);
+    }
 }

+ 1 - 1
mec-education/src/main/java/com/ym/mec/education/service/impl/CourseScheduleServiceImpl.java

@@ -1,9 +1,9 @@
 package com.ym.mec.education.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.education.entity.CourseSchedule;
 import com.ym.mec.education.mapper.CourseScheduleMapper;
 import com.ym.mec.education.service.ICourseScheduleService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 /**

+ 62 - 1
mec-education/src/main/java/com/ym/mec/education/service/impl/StudentAttendanceServiceImpl.java

@@ -1,10 +1,25 @@
 package com.ym.mec.education.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.ym.mec.education.base.PageResponse;
+import com.ym.mec.education.entity.ClassGroup;
+import com.ym.mec.education.entity.CourseSchedule;
 import com.ym.mec.education.entity.StudentAttendance;
 import com.ym.mec.education.mapper.StudentAttendanceMapper;
+import com.ym.mec.education.req.StudentAttendanceReq;
+import com.ym.mec.education.resp.StudentAttendanceResq;
+import com.ym.mec.education.service.IClassGroupService;
+import com.ym.mec.education.service.ICourseScheduleService;
 import com.ym.mec.education.service.IStudentAttendanceService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -14,7 +29,53 @@ import org.springframework.stereotype.Service;
  * @author lemeng
  * @since 2019-09-25
  */
-@Service
+@Service("iStudentAttendanceService")
 public class StudentAttendanceServiceImpl extends ServiceImpl<StudentAttendanceMapper, StudentAttendance> implements IStudentAttendanceService {
 
+    @Autowired
+    private ICourseScheduleService courseScheduleService;
+    @Autowired
+    private IClassGroupService groupService;
+
+    @Override
+    public PageResponse getPage(StudentAttendanceReq studentAttendanceReq) {
+        Page<StudentAttendance> pageParam = new Page(studentAttendanceReq.getPageNo(), studentAttendanceReq.getPageSize());
+        QueryWrapper<StudentAttendance> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Objects.nonNull(studentAttendanceReq.getMusicGroupId()),
+                StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
+                .eq(Objects.nonNull(studentAttendanceReq.getClassGroupId()),
+                        StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId());
+        IPage<StudentAttendance> page = page(pageParam, queryWrapper);
+        IPage<StudentAttendanceResq> pageResult = new Page<>();
+        BeanUtils.copyProperties(page, pageResult);
+        List<StudentAttendanceResq> list = Lists.newArrayList();
+        QueryWrapper<StudentAttendance> leaveWrapper = new QueryWrapper<>();
+        QueryWrapper<StudentAttendance> normalWrapper = new QueryWrapper<>();
+        //总人数
+        Integer totalCount = count();
+        //请假
+        leaveWrapper.lambda().eq(true, StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
+                .eq(true, StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId())
+                .eq(true, StudentAttendance::getStatus, "LEAVE");
+        Integer leaveCount = count(leaveWrapper);
+        //正常
+        normalWrapper.lambda().eq(true, StudentAttendance::getMusicGroupId, studentAttendanceReq.getMusicGroupId())
+                .eq(true, StudentAttendance::getClassGroupId, studentAttendanceReq.getClassGroupId())
+                .eq(true, StudentAttendance::getStatus, "NORMAL");
+        Integer normalCount = count(normalWrapper);
+        page.getRecords().forEach(item ->{
+            StudentAttendanceResq studentAttendanceResq = new StudentAttendanceResq();
+            QueryWrapper<CourseSchedule> courseScheduleQueryWrapper = new QueryWrapper<>();
+            courseScheduleQueryWrapper.lambda().eq(true, CourseSchedule::getClassGroupId, studentAttendanceReq.getClassGroupId());
+            CourseSchedule courseSchedule = courseScheduleService.getOne(courseScheduleQueryWrapper);
+            ClassGroup classGroup = groupService.getById(studentAttendanceReq.getClassGroupId());
+            studentAttendanceResq.setClassDate(courseSchedule.getClassDate())
+                    .setClassTime(courseSchedule.getStartClassTime() + "-" + courseSchedule.getEndClassTime())
+                    .setClassGroupName(classGroup.getName())
+                    .setLeaveNum(leaveCount).setAttendanceRate(normalCount + "/" + totalCount);
+            list.add(studentAttendanceResq);
+        });
+        pageResult.setRecords(list);
+        return PageResponse.success(pageResult);
+    }
 }

+ 14 - 0
mec-student/src/main/java/com/ym/mec/student/StudentApplication.java

@@ -1,17 +1,21 @@
 package com.ym.mec.student;
 
 import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.client.RestTemplate;
 
 import com.spring4all.swagger.EnableSwagger2Doc;
+import com.ym.mec.common.redis.service.RedisCache;
 
 @SpringBootApplication
 @EnableDiscoveryClient
@@ -21,6 +25,10 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 @Configuration
 @EnableSwagger2Doc
 public class StudentApplication {
+
+	@Autowired
+	private RedisTemplate<String, Object> redisTemplate;
+
 	public static void main(String[] args) {
 		SpringApplication.run(StudentApplication.class, args);
 	}
@@ -30,4 +38,10 @@ public class StudentApplication {
 	public RestTemplate restTemplate() {
 		return new RestTemplate();
 	}
+
+	@Bean
+	@ConditionalOnBean(RedisTemplate.class)
+	public RedisCache<String, Object> redisCache() {
+		return new RedisCache<String, Object>(redisTemplate);
+	}
 }

+ 130 - 0
mec-student/src/main/java/com/ym/mec/student/controller/SysMessageController.java

@@ -0,0 +1,130 @@
+package com.ym.mec.student.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.io.IOException;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.SysMessage;
+import com.ym.mec.biz.dal.entity.SysMessageConfig.MessageType;
+import com.ym.mec.biz.dal.enums.MessageSendMode;
+import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
+import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
+import com.ym.mec.util.validator.CommonValidator;
+
+@RestController
+@Api(tags = "消息服务")
+@RequestMapping("sysMessage")
+public class SysMessageController extends BaseController {
+
+	@Autowired
+	private SysMessageService sysMessageService;
+
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation("获取所有消息列表")
+	@GetMapping(value = "list")
+	public Object list(SysMessageQueryInfo queryInfo) throws IOException {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		queryInfo.setUserId(sysUser.getId());
+		queryInfo.setType(3);
+		PageInfo<SysMessage> pageInfo = sysMessageService.queryPage(queryInfo);
+		return succeed(pageInfo);
+	}
+
+	@ApiOperation("一键已读")
+	@PostMapping("batchSetRead")
+	public Object batchSetRead() {
+		int status = 1;
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		return sysMessageService.updateStatus(sysUser.getId(), status) > 0 ? succeed() : failed();
+	}
+
+	@ApiOperation("设置已读")
+	@PostMapping("setRead")
+	public Object setRead(Long id) {
+		int status = 1;
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed();
+	}
+
+	@ApiOperation(value = "查询用户未读消息条数")
+	@GetMapping("/queryCountOfUnread")
+	public Object queryCountOfUnread() {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed("请重新登录");
+		}
+		return succeed(sysMessageService.queryCountOfUnread(sysUser.getId()));
+	}
+
+	@ApiOperation(value = "发送短信验证码")
+	@PostMapping("/sendSmsCode")
+	public Object sendSmsCode(String sendCodeType, String mobileNo) {
+
+		SysUser sysUser;
+
+		if (StringUtils.isBlank(mobileNo)) {
+			sysUser = sysUserFeignService.queryUserInfo();
+		} else {
+			sysUser = sysUserFeignService.getUserByMobile(mobileNo);
+		}
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		Integer userId = sysUser.getId();
+
+		mobileNo = sysUser.getPhone();
+
+		MessageType messageType = MessageType.getMessageType(sendCodeType);
+		if (messageType == null) {
+			throw new BizException("消息类型参数错误");
+		}
+		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
+			throw new BizException("请输入正确的手机号");
+		}
+		sysMessageService.sendSecurityCode(MessageSender.MOXINGTONG, userId, MessageSendMode.SMS, messageType, mobileNo);
+		return succeed();
+	}
+
+	@ApiOperation(value = "发送消息")
+	@PostMapping("/sendMessage")
+	public Object sendMessage(MessageSender messageSender, MessageSendMode sendMode, String content, String receiver, int readStatus, String url) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		Integer userId = sysUser.getId();
+
+		String mobileNo = sysUser.getPhone();
+		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
+			throw new BizException("请输入正确的手机号");
+		}
+		sysMessageService.sendMessage(messageSender, userId, sendMode, "", content, receiver, null, readStatus, url);
+		return succeed();
+	}
+}

+ 97 - 0
mec-util/src/main/java/com/ym/mec/util/validator/CommonValidator.java

@@ -0,0 +1,97 @@
+package com.ym.mec.util.validator;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * 常用验证类,如邮箱,手机格式验证
+ * @author pengdc
+ */
+public class CommonValidator {
+
+	private final static String MOBILE_NO = "^((13[0-9])|(14[5|7|9])|(15[^4,\\D])|(166)|(18[0-9])|(17[0|1|3|5|6|7|8])|(19[8|9]))\\d{8}$";
+
+	private static final String TELEPHONE_NO = "((\\d{10})|(\\d{11})|^((\\d{7,8})|(\\d{4}|\\d{3})-(\\d{7,8})|(\\d{4}|\\d{3})-(\\d{7,8})-(\\d{4}|\\d{3}"
+			+ "|\\d{2}|\\d{1})|(\\d{7,8})-(\\d{4}|\\d{3}|\\d{2}|\\d{1}))$)";
+
+	private static final String EMAIL_ADDR = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
+
+	private static final String PWD_CHECK_REGEX = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$";
+
+	private static Pattern mobileNoPattern = Pattern.compile(MOBILE_NO);
+	private static Pattern telephoneNoPattern = Pattern.compile(TELEPHONE_NO);
+	private static Pattern emailAddrPattern = Pattern.compile(EMAIL_ADDR);
+	private static Pattern pwdCheckPattern = Pattern.compile(PWD_CHECK_REGEX);
+
+	/**
+	 * 是否邮箱地址
+	 * @param emailAddr
+	 * @return
+	 */
+	public static boolean isEmailAddr(String emailAddr) {
+		if (StringUtils.isBlank(emailAddr)) {
+			return false;
+		}
+		Matcher matcher = emailAddrPattern.matcher(emailAddr);
+		return matcher.matches();
+	}
+
+	/**
+	 * 是否手机
+	 * @param mobileNo
+	 * @return boolean
+	 */
+	public static boolean isMobileNo(String mobileNo) {
+		if (StringUtils.isBlank(mobileNo)) {
+			return false;
+		}
+		Matcher matcher = mobileNoPattern.matcher(mobileNo);
+		return matcher.matches();
+	}
+
+	/**
+	 * 是否座机
+	 * @param telephoneNo
+	 * @return boolean
+	 */
+	public static boolean isTelephoneNo(String telephoneNo) {
+		if (StringUtils.isBlank(telephoneNo)) {
+			return false;
+		}
+		Matcher matcher = telephoneNoPattern.matcher(telephoneNo);
+		return matcher.matches();
+	}
+
+	/**
+	 * 是否是座机或手机号码
+	 * @param teleOrMobileNo
+	 * @return boolean
+	 */
+	public static boolean isTelephoneOrMobileNo(String teleOrMobileNo) {
+		if (StringUtils.isBlank(teleOrMobileNo)) {
+			return false;
+		}
+		Matcher matcher1 = telephoneNoPattern.matcher(teleOrMobileNo);
+		if (matcher1.matches()) {
+			return true;
+		}
+		Matcher matcher2 = mobileNoPattern.matcher(teleOrMobileNo);
+		return matcher2.matches();
+	}
+
+	/**
+	 * 是否至少包含数字、字母,长度在6-16位的字符串
+	 * @param telephoneNo
+	 * @return boolean
+	 */
+	public static boolean isComplexityOfPwd(String password) {
+		if (StringUtils.isBlank(password)) {
+			return false;
+		}
+		Matcher matcher = pwdCheckPattern.matcher(password);
+		return matcher.matches();
+	}
+
+}

+ 0 - 70
mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java

@@ -1,70 +0,0 @@
-package com.ym.mec.web.controller;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.SysMessage;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
-
-@RequestMapping("message")
-@Api(tags = "消息提醒服务")
-@RestController
-public class SysMessageController extends BaseController {
-
-    @Autowired
-    private SysMessageService sysMessageService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-    @ApiOperation(value = "新增消息提醒")
-    @PostMapping("/add")
-    public Object add(SysMessage sysMessage) {
-        sysMessageService.insert(sysMessage);
-        return succeed();
-    }
-
-    @ApiOperation(value = "删除消息提醒")
-    @PostMapping("/del/{id}")
-    @ApiParam(value = "消息提醒编号", required = true)
-    public Object del( @PathVariable("id") Long id) {
-        sysMessageService.delete(id);
-        return succeed();
-    }
-
-    @ApiOperation(value = "修改消息提醒")
-    @PostMapping("/update")
-    public Object update(SysMessage sysMessage) {
-//        sysMessage.setUpdateTime(new Date());
-        sysMessageService.update(sysMessage);
-        return succeed();
-    }
-
-    @ApiOperation(value = "获取用户未读消息条数")
-    @GetMapping("/findNewMessageNum")
-    public Object findNewMessageNum(){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("请重新登录");
-        }
-        return succeed(sysMessageService.queryCountOfUnread(sysUser.getId()));
-    }
-
-    @ApiOperation(value = "分页查询消息提醒列表")
-    @GetMapping("/queryPage")
-    public Object queryPage(QueryInfo queryInfo) {
-        return succeed(sysMessageService.queryPage(queryInfo));
-    }
-
-}

+ 0 - 53
mec-web/src/test/java/com/ym/Test.java

@@ -1,53 +0,0 @@
-package com.ym;
-
-import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.BeanUtils;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-
-/**
- * @Author Joburgess
- * @Date 2019/9/24
- */
-public class Test {
-
-    @org.junit.Test
-    public void test1(){
-        ClassDateAdjustDto temp=new ClassDateAdjustDto();
-        temp.setClassDate(new Date());
-        temp.setWeekNum(1);
-        temp.setId(1L);
-        CourseSchedule courseSchedule=new CourseSchedule();
-//        courseSchedule=temp;
-        BeanUtils.copyProperties(temp,courseSchedule);
-        courseSchedule.setId(2L);
-        System.out.println(courseSchedule.getId());
-    }
-
-    @org.junit.Test
-    public void test2() throws IOException {
-        System.out.println(System.getProperty("java.io.tmpdir"));
-        File file=new File("E:\test.txt");
-        file.createNewFile();
-    }
-
-    @org.junit.Test
-    public void test3(){
-        List<Integer> list=new ArrayList<>();
-        list.add(1);
-        list.add(2);
-        list.add(3);
-        list.add(1);
-        HashSet<Integer> hashSet=new HashSet<>(list);
-        String join = StringUtils.join(hashSet, ",");
-        System.out.println(join);
-    }
-
-}

+ 0 - 140
mec-web/src/test/java/com/ym/webApplicationTest.java

@@ -1,140 +0,0 @@
-package com.ym;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import junit.framework.TestCase;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
-
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
-import com.ym.mec.biz.dal.dto.CourseScheduleDto;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.StudentAttendance;
-import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.common.security.SecurityUtils;
-import com.ym.mec.web.WebApplication;
-
-/**
- * Unit test for simple App.
- */
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = WebApplication.class)
-public class webApplicationTest
-    extends TestCase{
-
-    @Autowired
-    private RestTemplate restTemplate;
-
-    @Autowired
-    private CourseScheduleService css;
-
-    @Autowired
-    private StudentAttendanceDao sad;
-
-    @Autowired
-    private ClassGroupDao cgd;
-
-    @Autowired
-    private CourseScheduleDao csd;
-
-    @Test
-    public void test(){
-
-        String url = "http://auth-server/queryUserInfo";
-
-        HttpHeaders headers = new HttpHeaders();
-        headers.add("Authorization", "bearer " + SecurityUtils.getAuthentication());
-        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-
-        HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(null, headers);
-        ResponseEntity<String> resp = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
-
-        System.out.println("---------"+resp);
-    }
-
-    @Test
-    public void test1(){
-        List<StudentAttendance> sas=new ArrayList<>();
-        StudentAttendance sa=new StudentAttendance();
-        sa.setClassGroupId(1);
-        sa.setCourseScheduleId(1L);
-        sa.setMusicGroupId(1);
-        sa.setRemark("test");
-        sa.setStatus(StudentAttendanceStatusEnum.LEAVE);
-        sa.setTeacherId(1);
-        sa.setUserId(1);
-        sas.add(sa);
-        sad.addStudentAttendances(sas);
-    }
-
-    @Test
-    public void test2() throws ParseException {
-        System.out.println(new StringBuilder("2019-09-11 15:10:01").toString());
-        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").parse("2019-09-11 15:10:01"));
-        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new StringBuilder("2019-09-11 15:10:01").toString()));
-    }
-
-    @Test
-    public void test3() throws ParseException {
-        List<CourseSchedule> courseSchedules=new ArrayList<>();
-        CourseSchedule cs1=new CourseSchedule();
-        cs1.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
-        cs1.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 15:00:00"));
-        cs1.setClassGroupId(1);
-        courseSchedules.add(cs1);
-        CourseSchedule cs2=new CourseSchedule();
-        cs2.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
-        cs2.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 15:00:00"));
-        cs2.setClassGroupId(1);
-        courseSchedules.add(cs2);
-        CourseSchedule cs3=new CourseSchedule();
-        cs3.setClassDate(new SimpleDateFormat("yyyy-MM-dd").parse("2019-09-17"));
-        cs3.setStartClassTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-09-17 16:00:00"));
-        cs3.setClassGroupId(1);
-        courseSchedules.add(cs3);
-        Map<Date, List<CourseSchedule>> collect = courseSchedules.stream().collect(
-                Collectors.groupingBy(CourseSchedule::getClassDate));
-        for(Date keyDate:collect.keySet()){
-            List<CourseSchedule> currentCourses=collect.get(keyDate);
-            Map<Date, List<CourseSchedule>> collect1 = currentCourses.stream().collect(Collectors.groupingBy(CourseSchedule::getStartClassTime));
-            System.out.println(collect1.size());
-        }
-    }
-
-    @Test
-    public void test4(){
-        List<Integer> temp=new ArrayList<>();
-        temp.add(1);
-        temp.add(2);
-        Integer[] integers = csd.countStudentInClass(temp);
-        System.out.println(integers.length);
-    }
-
-    @Test
-    public void test5() throws ParseException {
-        List<CourseScheduleDto> courseSchedules = csd.getCourseSchedulesWithDate(new SimpleDateFormat("yyyyMMdd").parse("20190912"));
-        System.out.println(courseSchedules.size());
-    }
-
-}