liujc 1 year ago
parent
commit
dabea6893f
18 changed files with 433 additions and 97 deletions
  1. 15 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java
  2. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java
  3. 13 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/UserTenantAlbumRecordMapper.java
  4. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/StudentService.java
  5. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserTenantAlbumRecordService.java
  6. 36 13
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java
  7. 27 13
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  8. 7 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java
  9. 36 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  10. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMessageServiceImpl.java
  11. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantActivationCodeServiceImpl.java
  12. 54 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumServiceImpl.java
  13. 71 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java
  14. 50 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java
  15. 50 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/UserTenantAlbumRecordWrapper.java
  16. 13 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserTenantAlbumRecordMapper.xml
  17. 1 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/open/OpenClient.java
  18. 3 0
      toolset/thirdparty-component/src/main/java/com/yonge/toolset/thirdparty/message/provider/JiguangPushPlugin.java

+ 15 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java

@@ -90,6 +90,9 @@ public class TaskController extends BaseController {
     @Autowired
     private LiveRoomService liveRoomService;
 
+    @Autowired
+    private UserTenantAlbumRecordService userTenantAlbumRecordService;
+
     /***
      * 轮询用户订单
      * @author liweifan
@@ -247,4 +250,16 @@ public class TaskController extends BaseController {
 
         }
     }
+
+    /**
+     * 机构学生训练教材过期
+     */
+    @GetMapping("/sendTenantAlbumMessage")
+    public HttpResponseResult<Object> sendTenantAlbumMessage() {
+
+        // 群发消息定时
+        userTenantAlbumRecordService.sendTenantAlbumMessage();
+
+        return HttpResponseResult.succeed();
+    }
 }

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -121,6 +121,15 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 
     // 平台审核提醒
     PLATFORM_AUDIT_UNBIND("平台审核提醒"),
+    TENANT_VIP_BUY("机构学生购买会员"),
+    TENANT_VIP_EXPIRE("机构学生会员过期"),
+    TENANT_PLATFORM_ADD_VIP("机构学生会员赠送"),
+    TENANT_ALBUM_BUY("机构学生购买训练教材"),
+    TENANT_ALBUM_EXPIRE("机构学生训练教材过期"),
+    TENANT_SEND_CODE("机构发放激活码"),
+    TENANT_CODE_SENDCANCEL("激活码被撤回"),
+    TENANT_MUSIC_BUY("机构学生购买乐谱"),
+    TENANT_STUDENT_CHANGE("学生机构变更"),
     ;
 
     MessageTypeEnum(String msg) {

+ 13 - 9
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/UserTenantAlbumRecordMapper.java

@@ -5,6 +5,7 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.entity.TenantAlbum;
+import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -18,17 +19,20 @@ import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
 @Repository
 public interface UserTenantAlbumRecordMapper extends BaseMapper<UserTenantAlbumRecord> {
 
-	/**
-	 * 分页查询
-	 * @param page IPage<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord>
-	 * @param param UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery
-	 * @return List<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord>
-	 */
-	List<TenantAlbumWrapper.TenantAlbum> selectPage(@Param("page") IPage<UserTenantAlbumRecord> page, @Param("param") UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery param);
+    /**
+     * 分页查询
+     *
+     * @param page  IPage<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord>
+     * @param param UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery
+     * @return List<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord>
+     */
+    List<TenantAlbumWrapper.TenantAlbum> selectPage(@Param("page") IPage<UserTenantAlbumRecord> page, @Param("param") UserTenantAlbumRecordWrapper.UserTenantAlbumRecordQuery param);
 
-	List<Long> selectTenantIds(@Param("id") Long id);
+    List<Long> selectTenantIds(@Param("id") Long id);
 
-	List<TenantAlbum> selectTenantAlbumInfo(@Param("tenantIds") List<Long> tenantIds);
+    List<TenantAlbum> selectTenantAlbumInfo(@Param("tenantIds") List<Long> tenantIds);
 
     Long ifBuy(@Param("tenantAlbumId") Long tenantAlbumId, @Param("studentId") Long studentId);
+
+    List<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord> selectTemporaryRecord();
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/StudentService.java

@@ -130,4 +130,6 @@ public interface StudentService extends IService<Student> {
      */
     void updateTenant(Student student, Long toTenantId);
 
+    void sendStudentTenantChange(Student student, Long toTenantId);
+
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserTenantAlbumRecordService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.entity.TenantAlbum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper;
@@ -71,4 +72,11 @@ public interface UserTenantAlbumRecordService extends IService<UserTenantAlbumRe
     List<Long> getUseAlbumIdsByUserId(Long userId,ClientEnum clientType);
 
     TenantAlbumWrapper.TenantAlbum detailAlbum(String albumId);
+
+    /**
+     * 训练教程过期通知
+     */
+    void sendTenantAlbumMessage();
+
+    UserTenantAlbumRecord getNewestByTenantAlbumId(Long tenantAlbumId, Long userId, ClientEnum client);
 }

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

@@ -309,8 +309,19 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
 
             Map<Long, String> receivers = new HashMap<>();
             receivers.put(userId, user.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PLATFORM_ADD_VIP,
-                                               receivers, null, 0, null, client.getCode(), times,type.getMsg(),reason);
+
+            Student student = studentService.getById(userId);
+            if (client.equals(ClientEnum.STUDENT) && student != null && student.getTenantId() != null && student.getTenantId() >0) {
+                try {
+                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_PLATFORM_ADD_VIP,
+                            receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode(), times +type.getMsg(), reason);
+                } catch (Exception e) {
+                    log.error("会员赠送消息发送失败", e);
+                }
+            } else {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PLATFORM_ADD_VIP,
+                        receivers, null, 0, null, client.getCode(), times, type.getMsg(), reason);
+            }
         } catch (Exception e) {
             log.error("会员赠送消息发送失败 : {}",e.getMessage());
         }
@@ -345,18 +356,30 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
     private void authSend(Long userId, String phone, String param1,ClientEnum clientEnum) {
         Map<Long, String> receivers = new HashMap<>();
         receivers.put(userId, phone);
-        try {
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_BUY_SUCCESS,
-                    receivers, null, 0, null, clientEnum.getCode(), param1);
-        } catch (Exception e) {
-            log.error("会员购买极光消息推送异常,userId={}", userId);
-        }
 
-        try {
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_BUY_SUCCESS,
-                    receivers, null, 0, null, clientEnum.getCode(), param1);
-        } catch (Exception e) {
-            log.error("会员购买短信消息推送异常,userId={}", userId);
+        // 判断是否是机构学生 机构学生推送走另一个
+        Student student = studentService.getById(userId);
+        if (clientEnum.equals(ClientEnum.STUDENT) && student != null && student.getTenantId() != null && student.getTenantId() >0) {
+            try {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_VIP_BUY,
+                        receivers, null, 0, null, clientEnum.getCode(),param1);
+            } catch (Exception e) {
+                log.error("会员购买极光消息推送异常,userId={}", userId);
+            }
+        } else {
+            try {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_BUY_SUCCESS,
+                        receivers, null, 0, null, clientEnum.getCode(), param1);
+            } catch (Exception e) {
+                log.error("会员购买极光消息推送异常,userId={}", userId);
+            }
+
+            try {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_BUY_SUCCESS,
+                        receivers, null, 0, null, clientEnum.getCode(), param1);
+            } catch (Exception e) {
+                log.error("会员购买短信消息推送异常,userId={}", userId);
+            }
         }
 
     }

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

@@ -1193,20 +1193,34 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         Map<Long, String> studentReceivers = new HashMap<>();
         studentReceivers.put(studentId, student.getPhone());
 
+        try {
+            Student studentInfo = studentService.getById(studentId);
+            if (studentInfo != null && orderClient.equals(ClientEnum.STUDENT) &&
+                    studentInfo.getTenantId() != null && studentInfo.getTenantId() > 0 && orderType.equals(OrderTypeEnum.MUSIC)) {
+                try {
+                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_MUSIC_BUY,
+                            studentReceivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode(), name);
+                } catch (Exception e) {
+                    log.error("学生购买曲目推送失败,", e);
+                }
+            } else {
 
-        String url = sysMessageService.selectConfigUrl(messageType.getCode());
-
-        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-                                           messageType, studentReceivers, null,
-                0, url, orderClient.getCode(), name);
-        // 推送学生
-        Map<Long, String> studentSMS = new HashMap<>();
-        studentSMS.put(studentId, student.getPhone());
-        // 推送短信
-        url = sysMessageService.selectConfigUrl(smsMessageType.getCode());
-        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, smsMessageType,
-                studentSMS, null, 0, url, null, name);
-
+                String url = sysMessageService.selectConfigUrl(messageType.getCode());
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+                        messageType, studentReceivers, null,
+                        0, url, orderClient.getCode(), name);
+                // 推送学生
+                Map<Long, String> studentSMS = new HashMap<>();
+                studentSMS.put(studentId, student.getPhone());
+                // 推送短信
+                url = sysMessageService.selectConfigUrl(smsMessageType.getCode());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, smsMessageType,
+                        studentSMS, null, 0, url, null, name);
+            }
+        } catch (Exception e) {
+            log.error("购买曲目消息推送失败,", e);
+        }
         return true;
     }
 

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

@@ -333,15 +333,12 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
             serviceFeeAmount = actualPrice;
         }
 
-        // 平台学生 发送推送
-        if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
-            // 消息通知
-            CompletableFuture.runAsync(() -> {
-                        musicSheetService.sendBuyMessage(userPaymentOrder.getMerchId(), userPaymentOrder.getUserId(),
-                                userPaymentOrder.getBizId(), userPaymentOrder.getOrderClient(), userPaymentOrder.getOrderType());
-                    }
-            );
-        }
+        // 消息通知
+        CompletableFuture.runAsync(() -> {
+                    musicSheetService.sendBuyMessage(userPaymentOrder.getMerchId(), userPaymentOrder.getUserId(),
+                            userPaymentOrder.getBizId(), userPaymentOrder.getOrderClient(), userPaymentOrder.getOrderType());
+                }
+        );
 
 
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
@@ -752,7 +749,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         //服务费  原价的平台服务费 ,减去优惠券金额
         BigDecimal serviceFeeAmount = userPaymentOrder.getActualPrice();
 
-        memberPriceSettingsService.orderSuccess(userPaymentOrder,checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient()));
+        memberPriceSettingsService.orderSuccess(userPaymentOrder);
 
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
     }

+ 36 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java

@@ -24,21 +24,14 @@ import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
-import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumPurchaseMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumRefMapper;
-import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
-import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
-import com.yonge.cooleshow.biz.dal.service.StudentService;
-import com.yonge.cooleshow.biz.dal.service.StudentTotalService;
 import com.yonge.cooleshow.biz.dal.service.im.ImGroupCoreService;
-import com.yonge.cooleshow.biz.dal.service.SysConfigService;
-import com.yonge.cooleshow.biz.dal.service.TeacherService;
-import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
-import com.yonge.cooleshow.biz.dal.service.UserTenantAlbumRecordService;
 import com.yonge.cooleshow.biz.dal.vo.MyFollow;
 import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
@@ -52,6 +45,7 @@ import com.yonge.cooleshow.common.enums.UserLockFlag;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.util.StringUtil;
 import com.yonge.toolset.mybatis.support.PageUtil;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import com.yonge.toolset.utils.string.ValueUtil;
@@ -67,7 +61,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.text.MessageFormat;
-import java.text.ParseException;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -121,6 +114,10 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
     @Autowired
     private CustomerServiceConfig customerServiceConfig;
 
+
+    @Autowired
+    private SysMessageService sysMessageService;
+
     @Override
     public StudentDao getDao() {
         return baseMapper;
@@ -571,6 +568,35 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         this.lambdaUpdate().set(Student::getTenantId, toTenantId)
                 .eq(Student::getUserId, student.getUserId())
                 .update();
+
+        sendStudentTenantChange(student,toTenantId);
+    }
+
+    @Override
+    public void sendStudentTenantChange(Student student, Long toTenantId) {
+        if (student.getTenantId() == null || student.getTenantId() == -1) {
+            return;
+        }
+        SysUser sysUser = sysUserFeignService.queryUserById(student.getUserId());
+        if (sysUser == null) {
+            return;
+        }
+        TenantInfo tenantInfo = tenantInfoService.getById(student.getTenantId());
+        if (tenantInfo == null) {
+            return;
+        }
+        TenantInfo newTenantInfo = tenantInfoService.getById(toTenantId);
+        if (newTenantInfo == null) {
+            return;
+        }
+        Map<Long, String> receivers = new HashMap<>();
+        receivers.put(sysUser.getId(), sysUser.getPhone());
+        try {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_STUDENT_CHANGE,
+                    receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode(),tenantInfo.getName(),newTenantInfo.getName());
+        } catch (Exception e) {
+            log.error("学生机构变更极光消息推送异常,", e);
+        }
     }
 
     private Boolean updateStudent(StudentWrapper.Student studentInfo) {

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

@@ -13,6 +13,7 @@ import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSON;
 import com.yonge.cooleshow.biz.dal.dto.JumpUrlDto;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.toolset.base.string.MessageFormatter;
 import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
 
@@ -271,6 +272,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		} 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());
 	}

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

@@ -17,12 +17,14 @@ import com.yonge.cooleshow.biz.dal.entity.TenantAlbumPurchase;
 import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.im.EImSendStatus;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantActivationCodeMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumPurchaseMapper;
 import com.yonge.cooleshow.biz.dal.mapper.UserTenantAlbumRecordMapper;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.service.TenantActivationCodeService;
 import com.yonge.cooleshow.biz.dal.service.TenantAlbumService;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
@@ -33,6 +35,7 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.EActivationCode;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.mybatis.support.PageUtil;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -71,6 +74,9 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
     @Autowired
     private TenantAlbumService tenantAlbumService;
 
+    @Autowired
+    private SysMessageService sysMessageService;
+
     private static final String PHONE_REG = "^1\\d{10}$";
 
     /**
@@ -171,6 +177,34 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
                 throw new BizException("激活码已被激活:" + tenantActivationCodes.get(i).getActivationCode());
             }
         }
+        if (idPhoneMap.size() >0) {
+            idPhoneMap.forEach(this::sendActivationCodeMessage);
+        }
+    }
+
+    private void sendActivationCodeMessage(Long userId,String phone) {
+
+        Map<Long, String> receivers = new HashMap<>();
+        receivers.put(userId, phone);
+        try {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_SEND_CODE,
+                    receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode());
+        } catch (Exception e) {
+            log.error("机构发放激活码推送异常", e);
+        }
+    }
+
+
+    private void sendCancelActivationCodeMessage(Long userId,String phone,String tenantName) {
+
+        Map<Long, String> receivers = new HashMap<>();
+        receivers.put(userId, phone);
+        try {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_CODE_SENDCANCEL,
+                    receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode(),tenantName);
+        } catch (Exception e) {
+            log.error("机构发放激活码推送异常", e);
+        }
     }
 
     @Override

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMapper;
@@ -18,6 +19,8 @@ import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import com.yonge.toolset.utils.date.DateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -76,7 +80,14 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
     @Autowired
     private TenantAccountRecordService tenantAccountRecordService;
 
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
+    private TenantAlbumService tenantAlbumService;
 
+    @Autowired
+    private UserTenantAlbumRecordService userTenantAlbumRecordService;
     /**
      * 查询详情
      *
@@ -292,6 +303,7 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
             case STUDENT: {
                 tenantActivationCodeService.addUserTenantAlbumRecord(userOrderDetailVo.getUserId(),userOrderDetailVo);
 
+                sendMsg(userOrderDetailVo);
                 break;
             }
 
@@ -344,6 +356,48 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
         }
     }
 
+    private void sendMsg(UserOrderDetailVo userOrderDetailVo) {
+        try {
+            SysUser user = sysUserFeignService.queryUserById(userOrderDetailVo.getUserId());
+
+            if (user == null) {
+                return;
+            }
+
+            // 查询机构专辑信息
+            TenantAlbum tenantAlbum = tenantAlbumService.getById(userOrderDetailVo.getBizId());
+            if (tenantAlbum == null) {
+                return;
+            }
+
+            // 查询学生当前机构有效时间
+            UserTenantAlbumRecord albumRecord = userTenantAlbumRecordService
+                    .getNewestByTenantAlbumId(tenantAlbum.getId(), user.getId(), userOrderDetailVo.getOrderClient());
+            if (albumRecord == null) {
+                return;
+            }
+            String dateStr = DateUtil.format(albumRecord.getEndTime(), DateUtil.DEFAULT_PATTERN);
+
+
+            Map<Long, String> receivers = new HashMap<>();
+            receivers.put(user.getId(), user.getPhone());
+
+            if (userOrderDetailVo.getOrderClient().equals(ClientEnum.STUDENT)) {
+                Student student = studentService.getById(user.getId());
+                if (student.getTenantId() != null && student.getTenantId() >0) {
+                    try {
+                        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_ALBUM_BUY,
+                                receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode(),tenantAlbum.getName(),dateStr);
+                    } catch (Exception e) {
+                        log.error("机构学生购买训练教材", e);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("机构学生购买训练教材 : {}",e.getMessage());
+        }
+    }
+
 
     @Transactional(rollbackFor = Exception.class)
     @Override

+ 71 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.dao.StudentDao;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumPurchaseMapper;
@@ -21,6 +22,7 @@ import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.mybatis.support.PageUtil;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.obj.ObjectUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -33,6 +35,7 @@ import com.yonge.cooleshow.biz.dal.mapper.UserTenantAlbumRecordMapper;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -84,12 +87,15 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
     @Autowired
     private TenantAlbumMapper tenantAlbumMapper;
 
-	/**
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    /**
      * 查询详情
      * @param id 详情ID
      * @return UserTenantAlbumRecord
      */
-	@Override
+    @Override
     public UserTenantAlbumRecord detail(Long id) {
         
         return baseMapper.selectById(id);
@@ -185,15 +191,15 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         }
         return page.setRecords(list);
     }
-	
+
     /**
      * 添加
      * @param userTenantAlbumRecord UserTenantAlbumRecordWrapper.UserTenantAlbumRecord
      * @return Boolean
      */
     @Override
-    public Boolean add(UserTenantAlbumRecordWrapper.UserTenantAlbumRecord userTenantAlbumRecord) {    	
-        
+    public Boolean add(UserTenantAlbumRecordWrapper.UserTenantAlbumRecord userTenantAlbumRecord) {
+
         return this.save(JSON.parseObject(userTenantAlbumRecord.jsonString(), UserTenantAlbumRecord.class));
     }
 
@@ -414,4 +420,64 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         album.setSalePrice(salePrice);
         return album;
     }
+
+    @Override
+    public void sendTenantAlbumMessage() {
+        List<UserTenantAlbumRecordWrapper.UserTenantAlbumRecord> userTenantAlbumRecords = baseMapper.selectTemporaryRecord();
+        if (CollectionUtils.isEmpty(userTenantAlbumRecords)) {
+            return;
+        }
+        //标识
+        Map<Long, Long> temporaryFlagMap = new HashMap<>();
+        for (UserTenantAlbumRecordWrapper.UserTenantAlbumRecord record : userTenantAlbumRecords) {
+            if (null != temporaryFlagMap.get(record.getUserId())) {
+                continue;
+            }
+            temporaryFlagMap.put(record.getUserId(), record.getUserId());
+            //发送消息
+            CompletableFuture.runAsync(() -> temporarySend(record.getUserId(), record.getPhone(),record.getClientType(),record.getTenantAlbumId()));
+            UserTenantAlbumRecord userTenantAlbumRecord = new UserTenantAlbumRecord();
+            userTenantAlbumRecord.setMsgStatus(true);
+            userTenantAlbumRecord.setUpdateTime(new Date());
+            userTenantAlbumRecord.setId(record.getId());
+
+            baseMapper.updateById(userTenantAlbumRecord);
+        }
+    }
+
+    @Override
+    public UserTenantAlbumRecord getNewestByTenantAlbumId(Long tenantAlbumId, Long userId, ClientEnum client) {
+
+        return this.lambdaQuery()
+                .eq(UserTenantAlbumRecord::getTenantAlbumId, tenantAlbumId)
+                .eq(UserTenantAlbumRecord::getUserId, userId)
+                .eq(UserTenantAlbumRecord::getClientType, client)
+                .ge(UserTenantAlbumRecord::getEndTime, new Date())
+                .orderByDesc(UserTenantAlbumRecord::getEndTime)
+                .last("limit 1")
+                .one();
+    }
+
+
+    private void temporarySend(Long userId, String phone, ClientEnum clientType, Long tenantAlbumId) {
+
+        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+        if (null == sysUser) {
+            return;
+        }
+        TenantAlbum tenantAlbum = tenantAlbumService.getById(tenantAlbumId);
+        if (tenantAlbum == null) {
+            return;
+        }
+
+        Map<Long, String> receivers = new HashMap<>();
+        receivers.put(userId, phone);
+
+        try {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_ALBUM_EXPIRE,
+                    receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode(),tenantAlbum.getName());
+        } catch (Exception e) {
+            log.error("机构学生训练教材过期", e);
+        }
+    }
 }

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

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
 import com.yonge.cooleshow.biz.dal.dto.search.VipRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
+import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
@@ -25,6 +26,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.VipCardRecordSearch;
 import com.yonge.cooleshow.biz.dal.dao.VipCardRecordDao;
 
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 
 
 @Service
@@ -184,7 +186,9 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
             }
             temporaryFlagMap.put(record.getUserId(), record.getUserId());
             //发送消息
-            temporary3DaysSend(record.getUserId(), record.getPhone());
+            CompletableFuture.runAsync(() -> {
+                temporary3DaysSend(record.getUserId(), record.getPhone(),record.getClientType());
+            });
             record.setMsgStatus(1);
             record.setUpdateTime(new Date());
 
@@ -203,7 +207,10 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
             }
             expireFlagMap.put(record.getUserId(), record.getUserId());
             //发送消息
-            expireSend(record.getUserId(), record.getPhone(),record.getClientType());
+            //发送消息
+            CompletableFuture.runAsync(() -> {
+                expireSend(record.getUserId(), record.getPhone(), record.getClientType());
+            });
             record.setMsgStatus(2);
             record.setUpdateTime(new Date());
 
@@ -222,23 +229,27 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     }
 
     // 发送会员到期3天消息推送
-    private void temporary3DaysSend(Long userId, String phone) {
+    private void temporary3DaysSend(Long userId, String phone, ClientEnum clientType) {
         Map<Long, String> receivers = new HashMap<>();
         receivers.put(userId, phone);
-        try {
-            String url = sysMessageService.selectConfigUrl(MessageTypeEnum.VIP_EXPIRE_THIRTY_DAY.getCode());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_EXPIRE_THIRTY_DAY,
-                    receivers, null, 0, url, ClientEnum.STUDENT.getCode());
-        } catch (Exception e) {
-            log.error("会员到期3天极光消息推送异常,userId={}", userId);
-        }
+        // 判断是否是机构学生 机构学生推送走另一个
+        if (clientType.equals(ClientEnum.STUDENT)) {
+        } else {
+            try {
+                String url = sysMessageService.selectConfigUrl(MessageTypeEnum.VIP_EXPIRE_THIRTY_DAY.getCode());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_EXPIRE_THIRTY_DAY,
+                        receivers, null, 0, url, ClientEnum.STUDENT.getCode());
+            } catch (Exception e) {
+                log.error("会员到期3天极光消息推送异常,userId={}", userId);
+            }
 
-        try {
-            String url = sysMessageService.selectConfigUrl(MessageTypeEnum.SMS_VIP_EXPIRE_THIRTY_DAY.getCode());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_EXPIRE_THIRTY_DAY,
-                    receivers, null, 0, null, ClientEnum.STUDENT.getCode(), url);
-        } catch (Exception e) {
-            log.error("会员到期3天短信消息推送异常,userId={}", userId);
+            try {
+                String url = sysMessageService.selectConfigUrl(MessageTypeEnum.SMS_VIP_EXPIRE_THIRTY_DAY.getCode());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_EXPIRE_THIRTY_DAY,
+                        receivers, null, 0, null, ClientEnum.STUDENT.getCode(), url);
+            } catch (Exception e) {
+                log.error("会员到期3天短信消息推送异常,userId={}", userId);
+            }
         }
     }
 
@@ -246,20 +257,30 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     private void expireSend(Long userId, String phone,ClientEnum userType) {
         Map<Long, String> receivers = new HashMap<>();
         receivers.put(userId, phone);
-        try {
-            String url = sysMessageService.selectConfigUrl(MessageTypeEnum.VIP_EXPIRE.getCode());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_EXPIRE,
-                    receivers, null, 0, url, userType.getCode());
-        } catch (Exception e) {
-            log.error("会员到期3天极光消息推送异常,userId={}", userId);
-        }
+        Student student = studentService.getById(userId);
+        if (userType.equals(ClientEnum.STUDENT) && student != null  && student.getTenantId() != null && student.getTenantId() >0) {
+            try {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TENANT_VIP_EXPIRE,
+                        receivers, null, 0, null, ClientEnum.TENANT_STUDENT.getCode());
+            } catch (Exception e) {
+                log.error("会员到期极光消息推送异常,userId={}", userId);
+            }
+        } else {
+            try {
+                String url = sysMessageService.selectConfigUrl(MessageTypeEnum.VIP_EXPIRE.getCode());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIP_EXPIRE,
+                        receivers, null, 0, url, userType.getCode());
+            } catch (Exception e) {
+                log.error("会员到期3天极光消息推送异常,userId={}", userId);
+            }
 
-        try {
-            String url = sysMessageService.selectConfigUrl(MessageTypeEnum.SMS_VIP_EXPIRE.getCode());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_EXPIRE,
-                    receivers, null, 0, null, userType.getCode(), url);
-        } catch (Exception e) {
-            log.error("会员到期3天短信消息推送异常,userId={}", userId);
+            try {
+                String url = sysMessageService.selectConfigUrl(MessageTypeEnum.SMS_VIP_EXPIRE.getCode());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_VIP_EXPIRE,
+                        receivers, null, 0, null, userType.getCode(), url);
+            } catch (Exception e) {
+                log.error("会员到期3天短信消息推送异常,userId={}", userId);
+            }
         }
     }
 }

+ 50 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/UserTenantAlbumRecordWrapper.java

@@ -1,9 +1,16 @@
 package com.yonge.cooleshow.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
 import java.util.Optional;
 
 import lombok.AllArgsConstructor;
@@ -52,19 +59,54 @@ public class UserTenantAlbumRecordWrapper {
         }
     }  
 
+    @Data
 	@ApiModel(" UserTenantAlbumRecord-购买训练工具记录")
     public static class UserTenantAlbumRecord {
-        @ApiModelProperty("专辑名称")
-        private String albumName;
 
-        @ApiModelProperty("专辑介绍")
-        private String describe;
+        @ApiModelProperty("记录id")
+        private Long id;
+
+        @ApiModelProperty("用户id")
+        private Long userId;
+
+        @ApiModelProperty("手机号")
+        private String phone;
+
+        @ApiModelProperty("机构ID")
+        private Long tenantId;
+
+        @ApiModelProperty("机构专辑ID")
+        private Long tenantAlbumId;
+
+        @ApiModelProperty("订单号")
+        private String orderNo;
+
+        @ApiModelProperty("ORDER:订单")
+        private SourceTypeEnum sourceType;
+
+        @ApiModelProperty("购买人员类型 TEACHRE :老师端 STUDNET : 学生端")
+        private ClientEnum clientType;
+
+        @ApiModelProperty("订单详情号")
+        private String subOrderNo;
+
+        @ApiModelProperty("开始时间")
+        private Date startTime;
+
+        @ApiModelProperty("结束时间")
+        private Date endTime;
+
+        @ApiModelProperty("时间类型 DAY:天 MONTH:月,YEAR:年")
+        private String type;
+
+        @ApiModelProperty("添加时间数量")
+        private Integer times;
 
-        @ApiModelProperty("机构名称")
-        private String tenantName;
+        @ApiModelProperty("消息发送 0、未发送 1、已发送提前3天消息 2、已发送会员过期消息 暂时不用")
+        private Boolean msgStatus;
 
-        @ApiModelProperty("专辑封面")
-        private String coverImg;
+        @ApiModelProperty("备注")
+        private String reason;
 
         public String jsonString() {
             return JSON.toJSONString(this);

+ 13 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserTenantAlbumRecordMapper.xml

@@ -75,4 +75,17 @@
 
     </select>
 
+    <select id="selectTemporaryRecord" resultType="com.yonge.cooleshow.biz.dal.wrapper.UserTenantAlbumRecordWrapper$UserTenantAlbumRecord">
+        select
+        <include refid="baseColumns"/>,
+        u.phone_ as phone
+        from (
+        select max(id_) as id_ from user_tenant_album_record group by user_id_
+        ) a
+        left join user_tenant_album_record t on a.id_ = t.id_
+        left join sys_user u on t.user_id_ = u.id_
+        where t.end_time_ &lt;= now()
+        and (msg_status_ = 0 or msg_status_ is null)
+        order by end_time_ desc
+    </select>
 </mapper>

+ 1 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/open/OpenClient.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.dto.MusicImgDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.entity.SysConfig;
+import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
 import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.LiveRoomService;

+ 3 - 0
toolset/thirdparty-component/src/main/java/com/yonge/toolset/thirdparty/message/provider/JiguangPushPlugin.java

@@ -91,6 +91,9 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 		android_extras.put("url", url);
 		android_extras.put("third_url_encode",true);
 		android_extras.put("memo", url);
+        if (StringUtils.isNotEmpty(type) && type.equals("TENANT_STUDENT")) {
+            android_extras.put("clientType", "TENANT");
+        }
 		android.put("extras", android_extras);
 
 		JSONObject android_intent = new JSONObject();// android额外参数