Browse Source

Merge branch 'online' of http://git.dayaedu.com/yonge/cooleshow into zx_online_cbs

# Conflicts:
#	cooleshow-user/user-biz/pom.xml
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PageUtil.java
#	cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysMessageController.java
#	cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SysMessageController.java
zouxuan 10 months ago
parent
commit
f2919bcdf1
16 changed files with 334 additions and 473 deletions
  1. 7 42
      cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/SysMessageController.java
  2. 7 59
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/SysMessageController.java
  3. 1 1
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java
  4. 5 0
      cooleshow-user/user-biz/pom.xml
  5. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/BasicUserInfo.java
  6. 11 25
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysMessageService.java
  7. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java
  8. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CbsUserServiceImpl.java
  9. 12 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SmsCodeServiceImpl.java
  10. 173 274
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMessageServiceImpl.java
  11. 50 37
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysUserServiceImpl.java
  12. 13 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  13. 3 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java
  14. 3 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  15. 0 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysMessageController.java
  16. 0 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SysMessageController.java

+ 7 - 42
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/SysMessageController.java

@@ -1,9 +1,13 @@
 package com.yonge.cooleshow.student.controller;
 
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
+import com.microsvc.toolkit.common.response.template.R;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.PageUtil;
 import com.yonge.cooleshow.biz.dal.dto.search.SysMessageQueryInfo;
 import com.yonge.cooleshow.biz.dal.entity.SysMessage;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageSendMode;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.SysMessageService;
@@ -44,31 +48,9 @@ public class SysMessageController extends BaseController {
 		queryInfo.setUserId(sysUser.getId());
 		queryInfo.setType(MessageSendMode.PUSH.getCode());
 		queryInfo.setClientId("STUDENT");
-		return succeed(sysMessageService.queryPage(queryInfo));
+		return succeed(sysMessageService.queryListPage(queryInfo));
 	}
 
-	// @ApiOperation("获取消息分类类型")
-	// @GetMapping(value = "typeList")
-	// public Object typeList(String memo){
-	// 	//如果用户使用的版本比当前版本号大,那么屏蔽缴费信息
-	// 	if(StringUtils.isNotEmpty(memo)){
-	// 		//获取当前使用的版本
-	// 		AppVersionInfo appVersionInfo = appVersionInfoDao.queryNewestByPlatform("ios-student").get(0);
-	// 		int defaultVersion = Integer.parseInt(appVersionInfo.getVersion().replaceAll("\\.",""));
-	// 		int currentVersion = Integer.parseInt(memo.replaceAll("\\.",""));
-	// 		if(currentVersion > defaultVersion){
-	// 			return succeed(JSON.parseArray("[{\"value\":\"全部\",\"key\":\"ALL\"}," +
-	// 					"{\"value\":\"课程信息\",\"key\":\"COURSE\"}," +
-	// 					"{\"value\":\"训练信息\",\"key\":\"WORK\"}," +
-	// 					"{\"value\":\"其他\",\"key\":\"DEFAULT\"}]"));
-	// 		}
-	// 	}
-	// 	return succeed(JSON.parseArray("[{\"value\":\"全部\",\"key\":\"ALL\"}," +
-	// 			"{\"value\":\"缴费信息\",\"key\":\"PAY\"}," +
-	// 			"{\"value\":\"课程信息\",\"key\":\"COURSE\"}," +
-	// 			"{\"value\":\"训练信息\",\"key\":\"WORK\"}," +
-	// 			"{\"value\":\"其他\",\"key\":\"DEFAULT\"}]"));
-	// }
 
 	@ApiOperation("一键已读")
 	@PostMapping("batchSetRead")
@@ -78,7 +60,7 @@ public class SysMessageController extends BaseController {
 		if (sysUser == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		return succeed(sysMessageService.updateStatus(sysUser.getId(), status,"STUDENT",messageType) > 0 );
+		return succeed(sysMessageService.updateStatus(sysUser.getId(), status,"STUDENT",messageType) );
 	}
 
 	@ApiOperation("设置已读")
@@ -89,7 +71,7 @@ public class SysMessageController extends BaseController {
 		if (sysUser == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		return succeed(sysMessageService.updateOneStatus(id, status) > 0);
+		return succeed(sysMessageService.updateOneStatus(id, status));
 	}
 
 	@ApiOperation(value = "查询用户未读消息条数")
@@ -103,21 +85,4 @@ public class SysMessageController extends BaseController {
 
 		return succeed(map);
 	}
-
-	@ApiOperation(value = "发送消息")
-	@PostMapping("/sendMessage")
-	public Object sendMessage(MessageSenderPluginContext.MessageSender messageSender, String content, String receiver, int readStatus, String url, String group) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		Long userId = sysUser.getId();
-
-		String mobileNo = sysUser.getPhone();
-		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
-			throw new BizException("请输入正确的手机号");
-		}
-		sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url, group, "STUDENT");
-		return succeed();
-	}
 }

+ 7 - 59
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/SysMessageController.java

@@ -2,7 +2,6 @@ package com.yonge.cooleshow.teacher.controller;
 
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dao.AppVersionInfoDao;
 import com.yonge.cooleshow.biz.dal.dto.search.SysMessageQueryInfo;
 import com.yonge.cooleshow.biz.dal.entity.SysMessage;
 import com.yonge.cooleshow.biz.dal.enums.MessageSendMode;
@@ -11,23 +10,13 @@ import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.Mapper;
-import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
-import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
-import com.yonge.toolset.utils.validator.CommonValidator;
 import io.swagger.annotations.Api;
 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.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-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.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 @RestController
@@ -35,14 +24,12 @@ import java.util.List;
 @RequestMapping("${app-config.url.teacher:}/sysMessage")
 public class SysMessageController extends BaseController {
 
-	@Autowired
+	@Resource
 	private SysMessageService sysMessageService;
 
-	@Autowired
+	@Resource
 	private SysUserFeignService sysUserFeignService;
 
-	@Autowired
-	private AppVersionInfoDao appVersionInfoDao;
 
 	@ApiOperation("获取所有消息列表")
 	@PostMapping(value = "list")
@@ -54,31 +41,9 @@ public class SysMessageController extends BaseController {
 		queryInfo.setUserId(sysUser.getId());
 		queryInfo.setType(MessageSendMode.PUSH.getCode());
 		queryInfo.setClientId("TEACHER");
-		return succeed(sysMessageService.queryPage(queryInfo));
+		return succeed(sysMessageService.queryListPage(queryInfo));
 	}
 
-	// @ApiOperation("获取消息分类类型")
-	// @GetMapping(value = "typeList")
-	// public Object typeList(String memo){
-	// 	//如果用户使用的版本比当前版本号大,那么屏蔽缴费信息
-	// 	if(StringUtils.isNotEmpty(memo)){
-	// 		//获取当前使用的版本
-	// 		AppVersionInfo appVersionInfo = appVersionInfoDao.queryNewestByPlatform("ios-student").get(0);
-	// 		int defaultVersion = Integer.parseInt(appVersionInfo.getVersion().replaceAll("\\.",""));
-	// 		int currentVersion = Integer.parseInt(memo.replaceAll("\\.",""));
-	// 		if(currentVersion > defaultVersion){
-	// 			return succeed(JSON.parseArray("[{\"value\":\"全部\",\"key\":\"ALL\"}," +
-	// 					"{\"value\":\"课程信息\",\"key\":\"COURSE\"}," +
-	// 					"{\"value\":\"训练信息\",\"key\":\"WORK\"}," +
-	// 					"{\"value\":\"其他\",\"key\":\"DEFAULT\"}]"));
-	// 		}
-	// 	}
-	// 	return succeed(JSON.parseArray("[{\"value\":\"全部\",\"key\":\"ALL\"}," +
-	// 			"{\"value\":\"缴费信息\",\"key\":\"PAY\"}," +
-	// 			"{\"value\":\"课程信息\",\"key\":\"COURSE\"}," +
-	// 			"{\"value\":\"训练信息\",\"key\":\"WORK\"}," +
-	// 			"{\"value\":\"其他\",\"key\":\"DEFAULT\"}]"));
-	// }
 
 	@ApiOperation("一键已读")
 	@PostMapping("batchSetRead")
@@ -88,7 +53,7 @@ public class SysMessageController extends BaseController {
 		if (sysUser == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		return succeed(sysMessageService.updateStatus(sysUser.getId(), status,"TEACHER",messageType) > 0 );
+		return succeed(sysMessageService.updateStatus(sysUser.getId(), status,"TEACHER",messageType) );
 	}
 
 	@ApiOperation("设置已读")
@@ -99,7 +64,7 @@ public class SysMessageController extends BaseController {
 		if (sysUser == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		return succeed(sysMessageService.updateOneStatus(id, status) >0) ;
+		return succeed(sysMessageService.updateOneStatus(id, status)) ;
 	}
 
 	@ApiOperation(value = "查询用户未读消息条数")
@@ -113,21 +78,4 @@ public class SysMessageController extends BaseController {
 
 		return succeed(map);
 	}
-
-	@ApiOperation(value = "发送消息")
-	@PostMapping("/sendMessage")
-	public Object sendMessage(MessageSenderPluginContext.MessageSender messageSender, String content, String receiver, int readStatus, String url, String group) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		Long userId = sysUser.getId();
-
-		String mobileNo = sysUser.getPhone();
-		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
-			throw new BizException("请输入正确的手机号");
-		}
-		sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url, group, "TEACHER");
-		return succeed(true);
-	}
 }

+ 1 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java

@@ -313,7 +313,7 @@ public class TokenController extends BaseController {
         String base64ClientCredentials = Base64.getEncoder().encodeToString((dto.getClientId() + ":" + dto.getClientSecret()).getBytes());
 
         HttpHeaders headers = new HttpHeaders();
-        headers.add("Authorization", "Basic " + base64ClientCredentials);
+//        headers.add("Authorization", "Basic " + base64ClientCredentials);
         headers.setContentType(MediaType.MULTIPART_FORM_DATA);
 
         url += "?clientId=" + dto.getClientId();

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

@@ -146,6 +146,11 @@
         </dependency>
         <dependency>
             <groupId>com.dayaedu.cbs.openfeign</groupId>
+            <artifactId>dayaedu-openfeign-api</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.dayaedu.cbs.openfeign</groupId>
             <artifactId>dayaedu-openfeign-client</artifactId>
             <version>${cbs.version}</version>
             <exclusions>

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/BasicUserInfo.java

@@ -24,4 +24,7 @@ public class BasicUserInfo {
 
     @ApiModelProperty("IM用户ID")
     private String imUserId;
+
+    @ApiModelProperty("手机号")
+    private String phone;
 }

+ 11 - 25
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysMessageService.java

@@ -5,8 +5,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
+import com.microsvc.toolkit.common.response.template.R;
 import com.yonge.cooleshow.biz.dal.dto.SysMessageDto;
+import com.yonge.cooleshow.biz.dal.dto.search.SysMessageQueryInfo;
 import com.yonge.cooleshow.biz.dal.entity.SysMessage;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageSendMode;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.wrapper.SysMessageWrapper;
@@ -32,26 +36,6 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 			Integer readStatus, String url,String jpushType, Object... args);
 
 
-	public void batchSendMessage(MessageSender messageSender, String title, String content, Map<Long, String> receivers, Date triggerTime,
-								 Integer readStatus, String url, String jpushType, Object... args);
-
-
-	/**
-	 * 发送消息
-	 * @param messageSender 消息发送者
-	 * @param userId 用户编号
-	 * @param title 消息标题
-	 * @param content 消息内容
-	 * @param receiver 消息接受者
-	 * @param triggerTime 触发时间
-	 * @param readStatus 阅读状态(0-未读  1-已读)
-	 * @param url 超链接地址
-	 * @param group 组
-	 * @return
-	 */
-	public void sendMessage(MessageSender messageSender, Long userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
-			String url, String group,String jpushType);
-
 	/**
 	 * 发送验证码
 	 * @param messageSender 消息发送者
@@ -61,7 +45,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param platform
 	 * @return
 	 */
-	public boolean sendSecurityCode(MessageSender messageSender, Long userId, MessageTypeEnum messageType, String receiver, String platform);
+	public boolean sendSecurityCode(MessageSender messageSender, Long userId, MessageTypeEnum messageType, String receiver, ClientEnum platform);
 
 	/**
 	 * 发送验证码
@@ -94,18 +78,20 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param status 状态/1 已读,0未读
 	 * @return
 	 */
-	public int updateStatus(Long userId, int status,String jpushType,MessageTypeEnum messageType);
+	public Boolean updateStatus(Long userId, int status,String jpushType,MessageTypeEnum messageType);
 
 	/**
 	 * 修改单条消息状态
 	 */
-	public int updateOneStatus(Long id, int status);
+	public Boolean updateOneStatus(Long id, int status);
 	
-	public List<SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type);
+	public List<CbsMessageWrapper.SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type);
 
 	String selectConfigUrl(String messageType,Object ...param);
 
-	String selectConfigUrlJumpType(String messageType, String jumpType, Object... param);
+//	String selectConfigUrlJumpType(String messageType, String jumpType, Object... param);
 
 	List<SysMessageWrapper.MessageUnreadStat> userMessageUnreadStat(SysMessageWrapper.SysMessageQuery query);
+
+	PageInfo<SysMessage> queryListPage(SysMessageQueryInfo queryInfo);
 }

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java

@@ -357,10 +357,10 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
             receivers.put(userId, user.getPhone());
 
 
-            String url = sysMessageService.selectConfigUrl(MessageTypeEnum.ACTIVITY_WIN.getCode(),clientType.getCode()
-                                                                                        .toLowerCase(Locale.ROOT));
+//            String url = sysMessageService.selectConfigUrl(MessageTypeEnum.ACTIVITY_WIN.getCode(),clientType.getCode()
+//                                                                                        .toLowerCase(Locale.ROOT));
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.ACTIVITY_WIN, receivers, null,
-                    0, url, clientType.getCode(), activityName, activityRewardName);
+                    0, null, clientType.getCode(), activityName, activityRewardName);
         } catch (Exception e) {
             e.printStackTrace();
             log.error("获奖消息发送失败,{}", e.getMessage());

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

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.dayaedu.cbs.common.enums.EClientType;
+import com.dayaedu.cbs.openfeign.service.CbsUserService;
+import com.dayaedu.cbs.openfeign.wrapper.user.CbsUserWrapper;
+import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class CbsUserServiceImpl implements CbsUserService {
+
+    @Resource
+    private TeacherDao teacherDao;
+
+    @Override
+    public List<CbsUserWrapper.User> list(CbsUserWrapper.UserQuery query) {
+        if (query == null || CollectionUtils.isEmpty(query.getUserIds())) {
+            return new ArrayList<>();
+        }
+        List<BasicUserInfo> basicUserInfos = teacherDao.findBasicUserInfo(new HashSet<>(query.getUserIds()));
+        List<CbsUserWrapper.User> result = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(basicUserInfos)){
+            for (BasicUserInfo simpleUserDto : basicUserInfos) {
+                CbsUserWrapper.User user = new CbsUserWrapper.User();
+                user.setId(simpleUserDto.getUserId());
+                user.setUsername(query.getClientType() == null || query.getClientType() == EClientType.STUDENT ?
+                        simpleUserDto.getUsername() : Optional.ofNullable(simpleUserDto.getRealName()).orElse(simpleUserDto.getUsername()));
+                user.setPhone(simpleUserDto.getPhone());
+                result.add(user);
+            }
+        }
+        return result;
+    }
+
+}

+ 12 - 9
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SmsCodeServiceImpl.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.*;
@@ -162,7 +163,9 @@ public class SmsCodeServiceImpl implements SmsCodeService {
 			sysUser = sysUserFeignService.queryUserInfo();
 			if (sysUser != null) {
 				userId = sysUser.getId();
-			}
+            } else {
+                userId = -1L;
+            }
 		}
 		SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.SMS_MAX_TIMES);
 		int times = 3;
@@ -170,24 +173,24 @@ public class SmsCodeServiceImpl implements SmsCodeService {
 			times = Integer.parseInt(sysConfig.getParamValue());
 		}
 		// 十分钟内只能发3条
-		List<SysMessage> list = sysMessageService.queryUserInRecentMinList(mobile, 10, MessageSendMode.SMS);
+        List<CbsMessageWrapper.SysMessage> list = sysMessageService.queryUserInRecentMinList(mobile, 10, MessageSendMode.SMS);
 		if (list != null && list.size() >= times) {
 			throw new BizException("对不起,您发送太频繁请稍后重试!");
 		}
 		if ("PASSWD".equals(type)) {
-			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_UPDATE_PSW, mobile,platform.getMsg());
+			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_UPDATE_PSW, mobile,platform);
 		} else if ("LOGIN".equals(type)) {
-			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, mobile,platform.getMsg());
+			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, mobile,platform);
 		} else if ("REGISTER".equals(type)) {
-			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_REGISTER, mobile,platform.getMsg());
+			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_REGISTER, mobile,platform);
 		} else if ("BANK".equals(type)){
-			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_BANK_CARD, mobile,platform.getMsg());
+			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_BANK_CARD, mobile,platform);
 		} else if ("PHONE".equals(type)) {
-			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_UPDATE_PHONE, mobile,platform.getMsg());
+			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_UPDATE_PHONE, mobile,platform);
 		} else if("LOGOFF".equals(type)){
-			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_LOGOFF, mobile, "");
+			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_LOGOFF, mobile, null);
 		} else {
-			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE, mobile,platform.getMsg());
+			sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE, mobile,platform);
 		}
 		return true;
 	}

+ 173 - 274
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMessageServiceImpl.java

@@ -1,37 +1,41 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.dayaedu.cbs.common.enums.EAppKey;
+import com.dayaedu.cbs.common.enums.EClientType;
+import com.dayaedu.cbs.common.enums.message.EMessageSendMode;
+import com.dayaedu.cbs.common.enums.message.ESendStatus;
+import com.dayaedu.cbs.openfeign.client.MessageFeignClientService;
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.template.R;
 import com.yonge.cooleshow.biz.dal.dao.SysMessageDao;
-import com.yonge.cooleshow.biz.dal.dto.JumpUrlDto;
+import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
+import com.yonge.cooleshow.biz.dal.dto.PageUtil;
+import com.yonge.cooleshow.biz.dal.dto.search.SysMessageQueryInfo;
 import com.yonge.cooleshow.biz.dal.entity.SysMessage;
-import com.yonge.cooleshow.biz.dal.entity.SysMessageConfig;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageSendMode;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SendStatusEnum;
-import com.yonge.cooleshow.biz.dal.service.SysMessageConfigService;
 import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.wrapper.SysMessageWrapper;
 import com.yonge.cooleshow.common.entity.Mapper;
 import com.yonge.cooleshow.common.redis.service.RedisCache;
 import com.yonge.toolset.base.exception.BizException;
-import com.yonge.toolset.base.string.MessageFormatter;
 import com.yonge.toolset.mybatis.dal.BaseDAO;
 import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
-import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext.MessageSender;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 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.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.*;
-import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
 @Service
@@ -39,16 +43,14 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	private final static Logger LOGGER = LoggerFactory.getLogger(SysMessageServiceImpl.class);
 
-	@Autowired
+	@Resource
 	private SysMessageDao sysMessageDao;
-	@Autowired
-	private SysMessageConfigService sysMessageConfigService;
-	@Autowired
-	private MessageSenderPluginContext messageSenderPluginContext;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-	@Autowired
+	@Resource
+	private TeacherDao teacherDao;
+	@Resource
 	private RedisCache<String, Object> redisCache;
+	@Resource
+	private MessageFeignClientService messageFeignClientService;
 	// 验证码有效期
 	public static final int CODE_EXPIRE = 60 * 10;
 	// 发送验证码的间隔时间
@@ -59,10 +61,6 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	@Value("${message.debugMode}")
 	private boolean debugMode;
 
-
-	@Value("${message.debugJigaung:false}")
-	private boolean debugJigaung;
-
 	@Value("${message.authCode}")
 	private boolean authCode;
 
@@ -71,232 +69,70 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		return sysMessageDao;
 	}
 
-	/**
-	 * 添加消息
-	 * @param subject 消息主题
-	 * @param content 消息内容
-	 * @param receivers 接收人,多个人用逗号分开
-	 * @param triggerTime 触发时间
-	 * @param mode 消息的发送模式
-	 * @param status 消息的当前状态
-	 * @param errorMsg 错误消息
-	 * @param readStatus 阅读状态
-	 * @param memo 备注
-	 * @param group 消息组
-	 * @return
-	 */
-	private int addMessage(Map<Long, String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
-			String errorMsg, Integer readStatus, String memo, String group,String jpushType,Long messageConfigId) {
-		SysMessage message = null;
-		Date date = new Date();
-
-		List<SysMessage> messages = new ArrayList<>();
-
-		Long userId = null;
-		String receiver;
-		for (Entry<Long, String> entry : receivers.entrySet()) {
-			userId = entry.getKey();
-			receiver = entry.getValue();
-
-			message = new SysMessage();
-			if (userId == null) {
-				SysUser user = sysUserFeignService.queryUserByMobile(receiver);
-				if (user != null) {
-					userId = user.getId();
-				}
-			}
-			message.setUserId(userId);
-			message.setContent(content);
-			message.setCreateOn(date);
-			message.setModifyOn(date);
-			message.setReceiver(receiver);
-			if (triggerTime == null) {
-				triggerTime = date;
-			}
-			message.setSendTime(triggerTime);
-			message.setTitle(subject);
-			message.setStatus(status);
-			message.setType(mode);
-			message.setErrorMsg(errorMsg);
-			message.setReadStatus(readStatus);
-			message.setMemo(memo);
-			message.setGroup(group);
-			message.setClientId(jpushType);
-			message.setMessageConfigId(messageConfigId);
-			messages.add(message);
-		}
-
-		return sysMessageDao.batchInsert(messages);
-	}
-
 
 	@Override
 	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Map<Long, String> receivers, Date triggerTime, Integer readStatus,
 								 String url,String jpushType, Object... args) {
-		LOGGER.info("batchSendMessage msgSender {}, type {}, receivers {} ", messageSender, type, receivers);
-		if (receivers == null || receivers.size() == 0) {
+		LOGGER.info("batchSendMessage type {}, receivers {} ", type, receivers);
+		if (receivers == null || receivers.isEmpty()) {
 			LOGGER.error("接收地址不能为空");
 			return;
 		}
-		if (StringUtils.isEmpty(url)) {
-			url = selectConfigUrlJumpType(type.getCode(),jpushType);
-		}
-
-		String[] tos;
-		if(messageSender.getSendMode().equals(MessageSender.JIGUANG.getSendMode())) {
-			tos= new String[receivers.size()];
-			tos = receivers.entrySet()
-					.stream()
-					.map(longStringEntry -> String.valueOf(longStringEntry.getKey()))
-					.collect(Collectors.toList())
-					.toArray(tos);
-		} else {
-			tos = receivers.values().toArray(new String[receivers.size()]);
-		}
-		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type.getCode());
-		if (messageConfig == null) {
-			throw new BizException("消息类型错误");
-		}else if(messageConfig.getSendFlag() == null || messageConfig.getSendFlag() == 0){
-			LOGGER.error("batch 发送标志为空" );
-			return;
-		}
-		Date date = new Date();
-		SendStatusEnum status = SendStatusEnum.WAIT;
-		String errorMsg = null;
-		// 立即发送
-		if (triggerTime == null || date.after(triggerTime)) {
-			status = SendStatusEnum.SENDING;
-			try {
-				if (isSendRemoteMessage(messageSender)) {
-					errorMsg = messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(),
-							MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,"default",null);
-					if (StringUtils.isEmpty(errorMsg)) {
-						status = SendStatusEnum.SUCCESSED;
-					}  else {
-						status = SendStatusEnum.FAILED;
-					}
-
-				}
-			} catch (Exception e) {
-				status = SendStatusEnum.FAILED;
-				errorMsg = e.getMessage();
-				LOGGER.warn("消息发送失败", e);
+		// 处理注册时没有用户ID
+		if (receivers.containsKey(null)) {
+			String phone = receivers.get(null);
+			receivers.remove(null);
+			if (StringUtils.isNotEmpty(phone)) {
+				receivers.put(-1L, phone);
 			}
 		}
-		MessageSendMode mode = MessageSendMode.SMS;
-		if (messageSender.getSendMode().equals("PUSH")) {
-			mode = MessageSendMode.PUSH;
-		} else if (messageSender.getSendMode().equals("EMAIL")) {
-			mode = MessageSendMode.EMAIL;
-		}
-		if (ClientEnum.TENANT_STUDENT.getCode().equals(jpushType)) {
-			jpushType = ClientEnum.STUDENT.getCode();
-		}
-		addMessage(receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, mode, status, errorMsg, readStatus,
-				url, messageConfig.getGroup(),jpushType,messageConfig.getId());
-	}
-
-	@Override
-	public void batchSendMessage(MessageSender messageSender, String title, String content, Map<Long, String> receivers, Date triggerTime, Integer readStatus,
-			String url, String jpushType, Object... args) {
-		if (receivers == null || receivers.size() == 0) {
-			LOGGER.error("接收地址不能为空");
-			return;
-		}
-
-		String[] tos;
-		if (messageSender.getSendMode().equals(MessageSender.JIGUANG.getSendMode())) {
-			tos = new String[receivers.size()];
-			tos = receivers.entrySet().stream().map(longStringEntry -> String.valueOf(longStringEntry.getKey())).collect(Collectors.toList()).toArray(tos);
-		} else {
-			tos = receivers.values().toArray(new String[receivers.size()]);
-		}
-		Date date = new Date();
-		SendStatusEnum status = SendStatusEnum.WAIT;
-		String errorMsg = null;
-		// 立即发送
-		if (triggerTime == null || date.after(triggerTime)) {
-			status = SendStatusEnum.SENDING;
-			try {
-
-				if (isSendRemoteMessage(messageSender)) {
-					errorMsg = messageSenderPluginContext.batchSend(messageSender, title, MessageFormatter.arrayFormat(content, args), tos, url, jpushType,
-							"default", null);
-					if (StringUtils.isEmpty(errorMsg)) {
-						status = SendStatusEnum.SUCCESSED;
+		List<CbsMessageWrapper.MessageParam> messageParams = new ArrayList<>();
+		List<BasicUserInfo> basicUserInfo = teacherDao.findBasicUserInfo(receivers.keySet());
+		Map<Long, String> userIdPhoneMap = basicUserInfo.stream().collect(Collectors.toMap(BasicUserInfo::getUserId, BasicUserInfo::getPhone));
+		receivers.forEach((userId, value) -> {
+			String phone = userIdPhoneMap.getOrDefault(userId, null);
+			CbsMessageWrapper.MessageParam messageParam = new CbsMessageWrapper.MessageParam();
+			messageParam.setUserId(userId);
+			messageParam.setAppKey(EAppKey.KLX);
+			messageParam.setClientType(getClientType(jpushType));
+			messageParam.setClientId(messageParam.getClientType());
+			messageParam.setType(type.getCode());
+			messageParam.setUrl(url);
+			Map<Long, String> params = new HashMap<>();
+			params.put(userId, Optional.ofNullable(phone).orElse(value));
+			messageParam.setReceivers(params);
+			messageParam.setRealSend(!debugMode);
+			if (args != null && args.length > 0) {
+				String[] argsStr = new String[args.length];
+				for (int i = 0; i < args.length; i++) {
+					if (args[i] != null) {
+						argsStr[i] = args[i].toString();
 					} else {
-						status = SendStatusEnum.FAILED;
+						argsStr[i] = "";
 					}
-
 				}
-			} catch (Exception e) {
-				status = SendStatusEnum.FAILED;
-				errorMsg = e.getMessage();
-				LOGGER.warn("消息发送失败", e);
+				messageParam.setContentArgs(argsStr);
 			}
-		}
-		MessageSendMode mode = MessageSendMode.SMS;
-		if (messageSender.getSendMode().equals("PUSH")) {
-			mode = MessageSendMode.PUSH;
-		} else if (messageSender.getSendMode().equals("EMAIL")) {
-			mode = MessageSendMode.EMAIL;
-		}
-		addMessage(receivers, title, MessageFormatter.arrayFormat(content, args), triggerTime, mode, status, errorMsg, readStatus, url, "SYSTEM", jpushType,
-				null);
+			messageParams.add(messageParam);
+		});
+		messageFeignClientService.sysMessageBatchSendMessage(messageParams);
 	}
 
-	private boolean isSendRemoteMessage(MessageSender messageSender) {
-		if (messageSender.getSendMode().equals(MessageSender.JIGUANG.getSendMode()) && !debugJigaung) {
-			return true;
-		} else if (messageSender.getSendMode().equals(MessageSender.AWSMS.getSendMode()) && !debugMode) {
-			return true;
+	public EClientType getClientType(String jpushType){
+		if(StringUtils.isEmpty(jpushType)){
+			return null;
+		}else if(jpushType.contains("STUDENT")){
+			return EClientType.STUDENT;
+		}else if(jpushType.contains("TEACHER")){
+			return EClientType.TEACHER;
+		}else {
+			return EClientType.BACKEND;
 		}
-		return false;
 	}
 
-	@Override
-	public void sendMessage(MessageSender messageSender, Long userId, String title, String content, String receiver, Date triggerTime, Integer readStatus, String url, String group,String jpushType) {
-		LOGGER.info("batchSendMessage {}, userId {}, receivers {} ", messageSender, userId, receiver);
-		if (StringUtils.isBlank(receiver)) {
-			throw new BizException("接收地址不能为空");
-		}
-
-		Date date = new Date();
-		SendStatusEnum status = SendStatusEnum.WAIT;
-		String errorMsg = null;
-		// 立即发送
-		if (triggerTime == null || date.after(triggerTime)) {
-			status = SendStatusEnum.SENDING;
-			try {
-				if (isSendRemoteMessage(messageSender)) {
-					errorMsg = messageSenderPluginContext.send(messageSender, receiver, title, content, url,
-																	  jpushType, "default", null);
-					if (StringUtils.isEmpty(errorMsg)) {
-						status = SendStatusEnum.SUCCESSED;
-					}  else {
-						status = SendStatusEnum.FAILED;
-					}
-				}
-			} catch (Exception e) {
-				status = SendStatusEnum.FAILED;
-				errorMsg = e.getMessage();
-				LOGGER.warn("消息发送失败", e);
-			}
-		}
-		MessageSendMode mode = MessageSendMode.SMS;
-		if (messageSender.getSendMode().equals("PUSH")) {
-			mode = MessageSendMode.PUSH;
-		} else if (messageSender.getSendMode().equals("EMAIL")) {
-			mode = MessageSendMode.EMAIL;
-			LOGGER.info("发送邮件 {} ");
-		}
-		Map<Long, String> receivers = new HashMap<Long, String>();
-		receivers.put(userId, receiver);
-		addMessage(receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null,jpushType,null);
-	}
 
 	@Override
-	public boolean sendSecurityCode(MessageSender messageSender, Long userId, MessageTypeEnum messageType, String receiver, String platform) {
+	public boolean sendSecurityCode(MessageSender messageSender, Long userId, MessageTypeEnum messageType, String receiver, ClientEnum platform) {
 		String key1 = getVerificationCode1CacheKey(messageType, receiver);
 		if (redisCache.get(key1) != null) {
 			throw new BizException("请勿频繁操作,获取验证码间隔时间为60秒");
@@ -304,12 +140,13 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 		String key = getVerificationCodeCacheKey(messageType, receiver);
 		int code = DEFAULT_CODE;
-		if (debugMode == false && !authCode) {
+		if (!debugMode && !authCode) {
 			code = getRandomCode(messageType, receiver);
 		}
 		Map<Long, String> receivers = new HashMap<>(1);
 		receivers.put(userId, receiver);
-		batchSendMessage(messageSender, messageType, receivers, null, 1, "","",platform, code);
+		batchSendMessage(messageSender, messageType, receivers, null, 1, "",
+				platform ==null ? "STUDENT":platform.getCode(),platform ==null ? "":platform.getMsg(), code);
 		redisCache.put(key, code + "", CODE_EXPIRE);
 		redisCache.put(key1, code + "", CODE_INTERVAL_TIME);
 		return true;
@@ -339,7 +176,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	public String getSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr) {
-		if (debugMode == true) {
+		if (debugMode) {
 			return DEFAULT_CODE + "";
 		}
 		String key = getVerificationCodeCacheKey(type, mobileNOOrEmailAddr);
@@ -349,9 +186,25 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	public List<Mapper> queryCountOfUnread(MessageSendMode type, Long userId, String jpushType) {
-		return sysMessageDao.queryCountOfUnread(type, userId, jpushType);
-
-
+		CbsMessageWrapper.SysMessageQuery query = new CbsMessageWrapper.SysMessageQuery();
+		query.setUserId(userId);
+		query.setClientType(getClientType(jpushType));
+		query.setStatus(ESendStatus.SUCCESSED);
+		query.setAppKey(EAppKey.KLX);
+		query.setSendMode(type == null?null:type == MessageSendMode.SMS?EMessageSendMode.SMS:
+				type == MessageSendMode.EMAIL?EMessageSendMode.EMAIL:
+						type == MessageSendMode.PUSH?EMessageSendMode.PUSH:EMessageSendMode.SEO);
+		query.setReadStatus(false);
+		List<CbsMessageWrapper.MessageUnreadStat> messageUnreadStats = messageFeignClientService.messageUnreadStat(query).feignData();
+		List<Mapper> result = new ArrayList<>();
+
+		for (CbsMessageWrapper.MessageUnreadStat mapper : messageUnreadStats) {
+			Mapper map = new Mapper();
+			map.setKey(mapper.getGroup());
+			map.setValue(mapper.getNumber());
+			result.add(map);
+		}
+		return result;
 	}
 
 	public void setDebugMode(boolean debugMode) {
@@ -382,63 +235,109 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public int updateStatus(Long userId, int status,String jpushType,MessageTypeEnum messageType) {
-		// 按照类型设置一键已读
-		Long messageConfigId = null;
-		if (messageType != null) {
-			SysMessageConfig sysMessageConfig = sysMessageConfigService.queryByType(messageType.getCode());
-			if (sysMessageConfig != null) {
-				messageConfigId = sysMessageConfig.getId();
-			}
-		}
-		return sysMessageDao.updateStatus(userId, status,jpushType,messageConfigId);
+	public Boolean updateStatus(Long userId, int status,String jpushType,MessageTypeEnum messageType) {
+		CbsMessageWrapper.MessageRead messageRead = new CbsMessageWrapper.MessageRead();
+		messageRead.setUserId(userId);
+		messageRead.setAppKey(EAppKey.KLX);
+		messageRead.setClientType(getClientType(jpushType));
+		return messageFeignClientService.batchSetRead(messageRead).feignData();
 	}
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public int updateOneStatus(Long id, int status) {
-		return sysMessageDao.updateOneStatus(id, status);
+	public Boolean updateOneStatus(Long id, int status) {
+		return messageFeignClientService.setRead(id).feignData();
 	}
 
 	@Override
-	public List<SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type) {
-		return sysMessageDao.queryUserInRecentMinList(mobile, recentMin, type);
+	public List<CbsMessageWrapper.SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type) {
+		CbsMessageWrapper.UserRecentMessageQuery query = new CbsMessageWrapper.UserRecentMessageQuery();
+		query.setPhone(mobile);
+		query.setRecentMin(recentMin);
+		query.setSendMode(EMessageSendMode.SMS);
+		query.setAppKey(EAppKey.KLX);
+		return messageFeignClientService.userRecentMessageRecords(query).feignData();
 	}
 
 	@Override
 	public String selectConfigUrl(String messageType,Object ...param) {
-        return selectConfigUrlJumpType(messageType,null,param);
+        return "";
     }
 
 	@Override
-    public String selectConfigUrlJumpType(String messageType,String jumpType,Object ...param) {
-		SysMessageConfig sysMessageConfig = sysMessageConfigService.queryByType(messageType);
-		if (sysMessageConfig == null) {
-			throw new BizException("消息类型错误");
+	public List<SysMessageWrapper.MessageUnreadStat> userMessageUnreadStat(SysMessageWrapper.SysMessageQuery param) {
+		CbsMessageWrapper.SysMessageQuery query = new CbsMessageWrapper.SysMessageQuery();
+		query.setUserId(param.getUserId());
+		query.setClientType(getClientType(param.getClientType().getCode()));
+		query.setStatus(ESendStatus.SUCCESSED);
+		query.setAppKey(EAppKey.KLX);
+		query.setSendMode(param.getType() == null?null:param.getType() == MessageSendMode.SMS?EMessageSendMode.SMS:
+				param.getType() == MessageSendMode.EMAIL?EMessageSendMode.EMAIL:
+						param.getType() == MessageSendMode.PUSH?EMessageSendMode.PUSH:EMessageSendMode.SEO);
+		query.setReadStatus(false);
+		List<CbsMessageWrapper.MessageUnreadStat> messageUnreadStats = messageFeignClientService.messageUnreadStat(query).feignData();
+		List<SysMessageWrapper.MessageUnreadStat> result = new ArrayList<>();
+		for (CbsMessageWrapper.MessageUnreadStat mapper : messageUnreadStats) {
+			SysMessageWrapper.MessageUnreadStat stat = new SysMessageWrapper.MessageUnreadStat();
+			stat.setGroup(mapper.getGroup());
+			stat.setNumber(mapper.getNumber());
+			result.add(stat);
 		}
-		if(StringUtils.isEmpty(sysMessageConfig.getAction())) {
-			return null;
-		}
-		if (sysMessageConfig.getAction().equals("sms")) {
-			return sysMessageConfig.getActionUrl();
-		} else if (sysMessageConfig.getAction().equals("h5")) {
-			sysMessageConfig.setActionUrl(MessageFormatter.arrayFormat(sysMessageConfig.getActionUrl(), param));
-		} else if (sysMessageConfig.getAction().equals("app")) {
-			sysMessageConfig.setParams(MessageFormatter.arrayFormat(sysMessageConfig.getParams(), param));
-		}
-		JumpUrlDto jumpUrlDto = new JumpUrlDto();
-		jumpUrlDto.setAction(sysMessageConfig.getAction());
-		jumpUrlDto.setUrl(sysMessageConfig.getActionUrl());
-		jumpUrlDto.setPageTag(sysMessageConfig.getPageTag());
-		jumpUrlDto.setParams(sysMessageConfig.getParams());
-        if (StringUtils.isNotBlank(jumpType) && ClientEnum.TENANT_STUDENT.getCode().equals(jumpType)) {
-            jumpUrlDto.setClientType("TENANT");
-        }
-		return JSON.toJSONString(jumpUrlDto);
+		return result;
 	}
 
 	@Override
-	public List<SysMessageWrapper.MessageUnreadStat> userMessageUnreadStat(SysMessageWrapper.SysMessageQuery query) {
-		return sysMessageDao.selectMessageUnreadStat(query);
+	public com.yonge.toolset.base.page.PageInfo<SysMessage> queryListPage(SysMessageQueryInfo queryInfo) {
+		CbsMessageWrapper.SysMessageQuery query = new CbsMessageWrapper.SysMessageQuery();
+		query.setPage(queryInfo.getPage());
+		query.setRows(queryInfo.getRows());
+		query.setUserId(queryInfo.getUserId());
+		query.setStatus(ESendStatus.SUCCESSED);
+		query.setAppKey(EAppKey.KLX);
+		query.setSendMode(queryInfo.getType() == null?null:queryInfo.getType() == 1? EMessageSendMode.SMS :
+				queryInfo.getType() == 2?EMessageSendMode.EMAIL:
+						queryInfo.getType() == 3?EMessageSendMode.PUSH:EMessageSendMode.SEO);
+		query.setTitle(queryInfo.getTitle());
+		query.setClientId(getClientType(queryInfo.getClientId()));
+		query.setReadStatus(queryInfo.getReadStatus() == null?null:queryInfo.getReadStatus()==1);
+		query.setGroup(queryInfo.getGroup());
+		R<PageInfo<CbsMessageWrapper.SysMessage>> pageInfoR = messageFeignClientService.sysMessagePage(query);
+		PageInfo<CbsMessageWrapper.SysMessage> pageInfo = pageInfoR.feignData();
+		List<SysMessage> sysMessages = new ArrayList<>();
+		if(CollectionUtils.isNotEmpty(pageInfo.getRows())){
+			pageInfo.getRows().forEach(sysMessage -> {
+				SysMessage message = new SysMessage();
+				message.setId(sysMessage.getId());
+				message.setTitle(sysMessage.getTitle());
+				message.setContent(sysMessage.getContent());
+				if(sysMessage.getSendMode() != null){
+					message.setType(sysMessage.getSendMode() == EMessageSendMode.SMS?MessageSendMode.SMS:
+							sysMessage.getSendMode() == EMessageSendMode.EMAIL?MessageSendMode.EMAIL:
+									sysMessage.getSendMode() == EMessageSendMode.PUSH?MessageSendMode.PUSH:MessageSendMode.SEO);
+				}
+				if(sysMessage.getStatus() != null){
+					message.setStatus(sysMessage.getStatus() == ESendStatus.FAILED?SendStatusEnum.FAILED:
+							sysMessage.getStatus() == ESendStatus.SENDING?SendStatusEnum.SENDING:
+									sysMessage.getStatus() == ESendStatus.SUCCESSED?SendStatusEnum.SUCCESSED:SendStatusEnum.WAIT);
+				}
+				message.setReceiver(sysMessage.getReceiver());
+				message.setSendTime(sysMessage.getSendTime());
+				message.setErrorMsg(sysMessage.getErrorMsg());
+				message.setCreateOn(sysMessage.getCreateTime());
+				message.setModifyOn(sysMessage.getUpdateTime());
+				message.setUserId(sysMessage.getUserId());
+				message.setMessageConfigId(sysMessage.getMessageConfigId());
+				message.setSubType(sysMessage.getSubType());
+				message.setMemo(sysMessage.getMemo());
+				if (sysMessage.getReadStatus() != null){
+					message.setReadStatus(sysMessage.getReadStatus()?1:0);
+				}
+				message.setGroup(sysMessage.getGroup());
+				message.setClientId(sysMessage.getClientId().getCode());
+				message.setImg(sysMessage.getIcon());
+				sysMessages.add(message);
+			});
+		}
+		return PageUtil.pageInfo(pageInfo,sysMessages);
 	}
 }

+ 50 - 37
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysUserServiceImpl.java

@@ -1,6 +1,11 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.dayaedu.cbs.common.enums.EAppKey;
+import com.dayaedu.cbs.common.enums.EClientType;
+import com.dayaedu.cbs.openfeign.client.MessageFeignClientService;
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
 import com.google.common.collect.Lists;
+import com.microsvc.toolkit.common.response.template.R;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
@@ -22,42 +27,35 @@ import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.thirdparty.user.realname.RealnameAuthenticationPlugin;
 import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import com.yonge.toolset.utils.idcard.IdcardValidator;
-import jodd.util.StringUtil;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 @Service
 public class SysUserServiceImpl implements SysUserService {
 
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
-
-    @Autowired
+    @Resource
     private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
-    @Autowired
+    @Resource
     private SysUserMapper sysUserMapper;
-
     @Resource
     private SysUserContractRecordService sysUserContractRecordService;
-
-    @Autowired
+    @Resource
     private StudentService studentService;
-
-    @Autowired
+    @Resource
     private TeacherService teacherService;
-
-    @Autowired
+    @Resource
     private MessageSenderPluginContext messageSenderPluginContext;
-
+    @Resource
+    private MessageFeignClientService messageFeignClientService;
     @Override
     public SysUserMapper getDao() {
         return sysUserMapper;
@@ -165,27 +163,42 @@ public class SysUserServiceImpl implements SysUserService {
 
     @Override
     public void imDeviceId(UserInfoWrapper.UpdateUser info) {
-
-        switch (info.getClient()) {
-            case STUDENT:
-            case TENANT_STUDENT:
-                Student student = new Student();
-                student.setUserId(info.getUserId().longValue());
-                student.setImDeviceId(info.getImDeviceId());
-                studentService.updateById(student);
-
-                break;
-            case TEACHER:
-                Teacher teacher = new Teacher();
-                teacher.setUserId(info.getUserId().longValue());
-                teacher.setImDeviceId(info.getImDeviceId());
-                teacherService.updateById(teacher);
-                break;
-            default:
-                break;
+        CbsMessageWrapper.UpdateDevice updateDevice = new CbsMessageWrapper.UpdateDevice();
+        updateDevice.setUserId(info.getUserId().longValue());
+        updateDevice.setDeviceIds(Lists.newArrayList(info.getImDeviceId()));
+        updateDevice.setClientType(getClientType(info.getClient().getCode()));
+        updateDevice.setAppKey(EAppKey.KLX);
+        R<Boolean> booleanR = messageFeignClientService.updateDevice(updateDevice);
+        if (booleanR != null && booleanR.feignData()) {
+            switch (info.getClient()) {
+                case STUDENT:
+                case TENANT_STUDENT:
+                    Student student = new Student();
+                    student.setUserId(info.getUserId().longValue());
+                    student.setImDeviceId(info.getImDeviceId());
+                    studentService.updateById(student);
+
+                    break;
+                case TEACHER:
+                    Teacher teacher = new Teacher();
+                    teacher.setUserId(info.getUserId().longValue());
+                    teacher.setImDeviceId(info.getImDeviceId());
+                    teacherService.updateById(teacher);
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+    public EClientType getClientType(String jpushType){
+        if(StringUtils.isEmpty(jpushType)){
+            return null;
+        }else if(jpushType.contains("STUDENT")){
+            return EClientType.STUDENT;
+        }else if(jpushType.contains("TEACHER")){
+            return EClientType.TEACHER;
+        }else {
+            return EClientType.BACKEND;
         }
-
-        messageSenderPluginContext.getMessageSenderPlugin(MessageSenderPluginContext.MessageSender.JIGUANG)
-            .deviceRemoveAlias(info.getUserId().toString(),Lists.newArrayList(info.getImDeviceId()),info.getClient().getCode());
     }
 }

+ 13 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -220,6 +220,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         if (null == detail) {
             detail = new TeacherVo();
         }
+        if (detail.getDefaultSubject() == null && StringUtils.isNotBlank(detail.getSubjectId())) {
+            detail.setDefaultSubject(Long.parseLong(detail.getSubjectId().split(",")[0]));
+        }
+
         int num = DateUtil.daysBetween(new Date(), detail.getMembershipEndTime());
         detail.setMembershipDays(Math.max(num, 0));
         List<TeacherStyleVideo> teacherStyleVideos = teacherStyleVideoService.selectListByUserId(userId);
@@ -570,7 +574,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         if (null == teacher) {
             teacher = new Teacher();
             teacher.setUserId(teacherSubmitReq.getUserId());
-            teacher = getTeacherDetil(teacher, teacherSubmitReq);
+            teacher.setEntryFlag(YesOrNoEnum.NO);
+            teacher.setMusicianFlag(YesOrNoEnum.NO);
+            getTeacherDetil(teacher, teacherSubmitReq);
             baseMapper.insert(teacher);
 
             // 导入IM账号到三方
@@ -689,10 +695,6 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
      */
     private Teacher getTeacherDetil(Teacher teacher, TeacherSubmitReq teacherSubmitReq) {
         teacher.setSubjectId(teacherSubmitReq.getSubjectId());
-        teacher.setEntryFlag(YesOrNoEnum.NO);
-        teacher.setEntryAuthDate(null);
-        teacher.setMusicianFlag(YesOrNoEnum.NO);
-        teacher.setMusicianDate(null);
         teacher.setIsSettlement(teacherSubmitReq.getIsSettlement());
         teacher.setIsTestUser(teacherSubmitReq.getIsTestUser());
         teacher.setSettlementFrom(teacherSubmitReq.getSettlementFrom());
@@ -705,11 +707,15 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         for (String teacherType : teacherTypes) {
             if (TeacherTypeEnum.ENTRY.getCode().equals(teacherType)) {
                 teacher.setEntryFlag(YesOrNoEnum.YES);
-                teacher.setEntryAuthDate(new Date());
+                if (teacher.getTeacherDate() == null) {
+                    teacher.setEntryAuthDate(new Date());
+                }
             }
             if (TeacherTypeEnum.MUSICIAN.getCode().equals(teacherType)) {
                 teacher.setMusicianFlag(YesOrNoEnum.YES);
-                teacher.setMusicianDate(new Date());
+                if (teacher.getMusicDate() == null) {
+                    teacher.setMusicianDate(new Date());
+                }
             }
         }
         return teacher;

+ 3 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java

@@ -30,15 +30,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -78,9 +70,6 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
     private TenantActivationCodeService tenantActivationCodeService;
 
     @Autowired
-    private RedisCacheService redisCacheService;
-
-    @Autowired
     private TeacherService teacherService;
 
     @Autowired
@@ -469,9 +458,9 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
                 Student student = studentService.getById(userId);
                 if (student.getTenantId() != null && student.getTenantId() >0) {
                     try {
-                        String url = sysMessageService.selectConfigUrlJumpType(MessageTypeEnum.TENANT_ALBUM_BUY.getCode(),ClientEnum.TENANT_STUDENT.getCode(),userOrderDetailVo.getOrderNo());
+//                        String url = sysMessageService.selectConfigUrlJumpType(MessageTypeEnum.TENANT_ALBUM_BUY.getCode(),ClientEnum.TENANT_STUDENT.getCode(),userOrderDetailVo.getOrderNo());
                         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_ALBUM_BUY,
-                                receivers, null, 0, url, ClientEnum.TENANT_STUDENT.getCode(),tenantAlbum.getName(),dateStr);
+                                receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode(),tenantAlbum.getName(),dateStr);
                     } catch (Exception e) {
                         log.error("机构学生购买训练教材", e);
                     }

+ 3 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -208,9 +208,10 @@
         <result property="username" column="username_"/>
         <result property="realName" column="real_name_"/>
         <result property="avatar" column="avatar_"/>
+        <result property="phone" column="phone_"/>
     </resultMap>
     <select id="getBasicUserInfo" resultMap="BasicUserInfo">
-        SELECT id_ user_id_, username_, real_name_, avatar_
+        SELECT id_ user_id_, username_, real_name_, avatar_, phone_
         FROM sys_user
         WHERE del_flag_ = 0
           and id_ = #{userId}
@@ -218,7 +219,7 @@
     </select>
 
     <select id="findBasicUserInfo" resultMap="BasicUserInfo">
-        SELECT id_ user_id_,username_,real_name_,avatar_ FROM sys_user
+        SELECT id_ user_id_,username_,real_name_,avatar_, phone_ FROM sys_user
         WHERE del_flag_ = 0 and id_ IN
         <foreach collection="studentIds" open="(" close=")" separator="," item="userId">
             #{userId}

+ 0 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysMessageController.java


+ 0 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SysMessageController.java