Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/saas' into saas

hgw 3 gadi atpakaļ
vecāks
revīzija
1d20463c57
21 mainītis faili ar 122 papildinājumiem un 56 dzēšanām
  1. 2 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java
  2. 3 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/service/DefaultUserDetailsService.java
  3. 4 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java
  4. 2 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java
  5. 18 27
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  6. 2 2
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  7. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/RedemptionCodeDao.java
  8. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserCashAccount.java
  9. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  10. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/AppRedemptionCodeService.java
  11. 30 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/AppRedemptionCodeServiceImpl.java
  12. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  13. 4 0
      mec-biz/src/main/resources/config/mybatis/RedemptionCodeMapper.xml
  14. 1 1
      mec-client-api/src/main/java/com/ym/mec/web/WebFeignService.java
  15. 1 1
      mec-client-api/src/main/java/com/ym/mec/web/fallback/WebFeignServiceFallback.java
  16. 12 1
      mec-common/common-core/src/main/java/com/ym/mec/common/security/AuthUser.java
  17. 1 0
      mec-im/src/main/java/com/ym/common/ErrorEnum.java
  18. 12 4
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  19. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/APIController.java
  20. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/SysManualController.java
  21. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

+ 2 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java

@@ -96,9 +96,9 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 					// 添加userType以及附加信息
 					if (StringUtils.equals("STUDENT", clientId)) {
 						user.setOrganId(sysUserService.getLesseeOrganId());
-						sysUserService.saveStudent(user.getId());
+						sysUserService.saveStudent(user.getId(),loginEntity.getTenantId());
 					} else if (StringUtils.equals("TEACHER", clientId)) {
-						sysUserService.saveTeacher(user.getId());
+						sysUserService.saveTeacher(user.getId(),loginEntity.getTenantId());
 					}
 					sysUserService.update(user);
 				}

+ 3 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/service/DefaultUserDetailsService.java

@@ -73,8 +73,9 @@ public class DefaultUserDetailsService implements UserDetailsService {
 
 		SysUser sysUser = userInfo.getSysUser();
 
-		return new AuthUser(sysUser.getId(), sysUser.getOrganId(), username, BCRYPT + sysUser.getPassword(), sysUser.getLockFlag() == 0, true, true, true,
-				authorities);
+		return new AuthUser(sysUser.getId(), sysUser.getOrganId(), username, BCRYPT + sysUser.getPassword(),
+				sysUser.getLockFlag() == 0, true, true, true,
+				authorities,tenantId);
 	}
 
 }

+ 4 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java

@@ -72,7 +72,9 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	 * @param userId
 	 * @param lesseeOrganId
 	 */
-	void insertTeacher(@Param("userId") Integer userId, @Param("lesseeOrganId") Integer lesseeOrganId);
+	void insertTeacher(@Param("userId") Integer userId,
+					   @Param("lesseeOrganId") Integer lesseeOrganId,
+					   @Param("tenantId") Integer tenantId);
 
 	/**
 	 * 获取教师分部编号
@@ -98,5 +100,5 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	 * 保存student
 	 * @param userId
 	 */
-    void saveStudent(@Param("userId") Integer userId);
+    void saveStudent(@Param("userId") Integer userId,@Param("tenantId") Integer tenantId);
 }

+ 2 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java

@@ -115,13 +115,13 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 * 保存student数据
 	 * @param userId
 	 */
-	void saveStudent(Integer userId);
+	void saveStudent(Integer userId,Integer tenantId);
 	
 	/**
 	 * 保存teacher数据
 	 * @param userId
 	 */
-	void saveTeacher(Integer userId);
+	void saveTeacher(Integer userId,Integer tenantId);
 	
 	Integer getLesseeOrganId();
 }

+ 18 - 27
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -1,14 +1,5 @@
 package com.ym.mec.auth.service.impl;
 
-import java.util.Date;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-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 com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
@@ -20,20 +11,25 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
-import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.web.WebFeignService;
+import org.apache.commons.lang3.StringUtils;
+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 java.util.Date;
+import java.util.List;
 
 @Service
 public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implements SysUserService {
 
 	@Autowired
 	private SysUserDao sysUserDao;
-
 	@Autowired
 	private SysUserRoleService sysUserRoleService;
-
 	@Autowired
 	private SysRoleMenuService sysRoleMenuService;
 	@Autowired
@@ -42,8 +38,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	private WebFeignService userFeignService;
 	@Autowired
 	private SysUserService sysUserService;
-	@Autowired
-	private IdGeneratorService smsCodeService;
 
 	@Value("${auth.sysconfig.tenantId}")
 	private Integer lesseeOrganId;
@@ -158,14 +152,15 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 			SysUser sysUser = new SysUser();
 			sysUser.setPhone(phone);
 			sysUser.setUserType("TEACHER");
+			sysUser.setTenantId(tenantId);
 			sysUserDao.insert(sysUser);
 			//添加用户现金账户
 			imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
-			userFeignService.createCashAccount(sysUser.getId());
+			userFeignService.createCashAccount(sysUser.getId(),tenantId);
 			//sysTenantAccount
 			sysUserDao.insertSysTenantAccount(sysUser.getId());
 			//创建teacher表
-			sysUserDao.insertTeacher(sysUser.getId(),lesseeOrganId);
+			sysUserDao.insertTeacher(sysUser.getId(),lesseeOrganId,tenantId);
 			return queryUserInfoByPhone(phone);
 		}else if(StringUtils.equalsIgnoreCase(clientId,"STUDENT")){
 			SysUser sysUser = new SysUser();
@@ -176,16 +171,12 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 			}else{
 				sysUser.setOrganId(Integer.parseInt(organId));
 			}
-			//注册是否赠送会员
-			if(sysUser.getOrganId() == 59){
-				
-			}
-			
+			sysUser.setTenantId(tenantId);
 			sysUserDao.insert(sysUser);
-			sysUserService.saveStudent(sysUser.getId());
+			sysUserService.saveStudent(sysUser.getId(),tenantId);
 			//添加用户现金账户
 			imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null));
-			userFeignService.createCashAccount(sysUser.getId());
+			userFeignService.createCashAccount(sysUser.getId(),tenantId);
 			return queryUserInfoByPhone(phone);
 		}
 		return null;
@@ -198,13 +189,13 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	}
 
 	@Override
-	public void saveStudent(Integer userId) {
-		sysUserDao.saveStudent(userId);
+	public void saveStudent(Integer userId,Integer tenantId) {
+		sysUserDao.saveStudent(userId,tenantId);
 	}
 
 	@Override
-	public void saveTeacher(Integer userId) {
-		sysUserDao.insertTeacher(userId, lesseeOrganId);
+	public void saveTeacher(Integer userId,Integer tenantId) {
+		sysUserDao.insertTeacher(userId, lesseeOrganId,tenantId);
 	}
 
 	@Override

+ 2 - 2
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -79,7 +79,7 @@
     </insert>
     <insert id="insertTeacher">
         INSERT INTO teacher
-        (id_,organ_id_,create_time_,update_time_)VALUES(#{userId},#{lesseeOrganId},NOW(),NOW())
+        (id_,organ_id_,create_time_,update_time_,tenant_id_)VALUES(#{userId},#{lesseeOrganId},NOW(),NOW(),#{tenantId})
     </insert>
     <insert id="insertSysTenantAccount">
         INSERT INTO sys_tenant_account
@@ -87,7 +87,7 @@
 		VALUES(#{userId},0,0,1,NOW(),NOW())
     </insert>
     <insert id="saveStudent">
-        INSERT INTO student (user_id_,create_time_,update_time_,service_tag_,operating_tag_) VALUES(#{userId},NOW(),NOW(),0,0)
+        INSERT INTO student (user_id_,create_time_,update_time_,service_tag_,operating_tag_,tenant_id_) VALUES(#{userId},NOW(),NOW(),0,0,#{tenantId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->

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

@@ -17,5 +17,7 @@ public interface RedemptionCodeDao extends BaseMapper<AppRedemptionCode> {
    int insertBatch(@Param("entities") List<AppRedemptionCode> entities);
 
     AppRedemptionCode findFirstNull();
+
+    int findNull();
 }
 

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserCashAccount.java

@@ -55,6 +55,12 @@ public class SysUserCashAccount extends BaseEntity {
 		this.currency = currency;
 	}
 
+	public SysUserCashAccount(Integer userId,Integer tenantId, String currency) {
+		this.userId = userId;
+		this.setTenantId(tenantId);
+		this.currency = currency;
+	}
+
 	public SysUserCashAccount() {
 	}
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -195,6 +195,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     NO_TRAIN_STUDENT_PUSH("NO_TRAIN_STUDENT_PUSH", "云教练训练提醒"),
 
     COUPON_STOCK_WARNING("COUPON_STOCK_WARNING", "优惠券库存预警"),
+
+    APP_REDEMPTION_CODE("APP_REDEMPTION_CODE", "兑换码分配量预警"),
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/AppRedemptionCodeService.java

@@ -17,5 +17,7 @@ public interface AppRedemptionCodeService extends IService<AppRedemptionCode> {
     List<AppRedemptionCode> importRedemptionCode(MultipartFile file) throws Exception;
 
     AppRedemptionCode allocation(Integer userId);
+
+    void checkLowVolume();
 }
 

+ 30 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/AppRedemptionCodeServiceImpl.java

@@ -2,13 +2,16 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mysql.cj.protocol.MessageSender;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.biz.dal.dao.RedemptionCodeDao;
 import com.ym.mec.biz.dal.entity.AppRedemptionCode;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.AppRedemptionCodeService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.WrapperUtil;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.excel.POIUtil;
 import com.ym.mec.util.ini.IniFileUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -32,7 +35,8 @@ import java.util.*;
  * @since 2021-12-27 14:27:57
  */
 @Service("redemptionCodeService")
-public class AppRedemptionCodeServiceImpl extends ServiceImpl<RedemptionCodeDao, AppRedemptionCode> implements AppRedemptionCodeService {
+public class AppRedemptionCodeServiceImpl extends ServiceImpl<RedemptionCodeDao, AppRedemptionCode>
+        implements AppRedemptionCodeService {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(AppRedemptionCodeServiceImpl.class);
 
@@ -42,14 +46,18 @@ public class AppRedemptionCodeServiceImpl extends ServiceImpl<RedemptionCodeDao,
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private SysMessageService sysMessageService;
+
     private final static Logger logger = LoggerFactory.getLogger(AppRedemptionCodeServiceImpl.class);
 
     @Override
     public List<AppRedemptionCode> importRedemptionCode(MultipartFile file) throws Exception {
-        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
-        
+        Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(
+                new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
+
         InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
-        Map<String,String> columns = IniFileUtil.readIniFile(inputStream, TemplateTypeEnum.REDEMPTIONCODE.getMsg());
+        Map<String, String> columns = IniFileUtil.readIniFile(inputStream, TemplateTypeEnum.REDEMPTIONCODE.getMsg());
 
         List<AppRedemptionCode> redemptionCodesList = new ArrayList<>();
         for (String e : sheetsListMap.keySet()) {
@@ -61,18 +69,19 @@ public class AppRedemptionCodeServiceImpl extends ServiceImpl<RedemptionCodeDao,
 
                 JSONObject objectMap = new JSONObject();
                 for (String s : row.keySet()) {
-                    if(!columns.containsKey(s)){
+                    if (!columns.containsKey(s)) {
                         continue;
                     }
                     String columnValue = columns.get(s);
-                    if(null == row.get(s) || StringUtils.isBlank(row.get(s).toString())){
-                        LOGGER.error("导入异常:参数{}不可为空 param:{}",columnValue,objectMap);
-                        continue ;
+                    if (null == row.get(s) || StringUtils.isBlank(row.get(s).toString())) {
+                        LOGGER.error("导入异常:参数{}不可为空 param:{}", columnValue, objectMap);
+                        continue;
                     }
                     objectMap.put(columnValue, row.get(s));
                 }
                 try {
-                    AppRedemptionCode redemptionCode = JSONObject.parseObject(objectMap.toJSONString(),AppRedemptionCode.class);
+                    AppRedemptionCode redemptionCode = JSONObject.parseObject(objectMap.toJSONString(),
+                                                                              AppRedemptionCode.class);
                     redemptionCodesList.add(redemptionCode);
                     redemptionCodeDao.insert(redemptionCode);
                 } catch (Exception ex) {
@@ -96,5 +105,17 @@ public class AppRedemptionCodeServiceImpl extends ServiceImpl<RedemptionCodeDao,
         }
         return redemptionCode;
     }
+
+    @Override
+    public void checkLowVolume() {
+        int volume = redemptionCodeDao.findNull();
+        if (volume < 10) {
+            Map<Integer, String> receivers = new HashMap<>(1);
+            receivers.put(0, "13512341234");
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
+                                               MessageTypeEnum.APP_REDEMPTION_CODE, receivers, null, 0, null, null,
+                                               volume, null, null);
+        }
+    }
 }
 

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -163,6 +163,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private MusicGroupTrainPlanService musicGroupTrainPlanService;
     @Autowired
 	private PracticeGroupSellPriceDao practiceGroupSellPriceDao;
+    @Autowired
+	private TenantAssetsInfoService tenantAssetsInfoService;
 
     private final Logger LOGGER = LoggerFactory
             .getLogger(this.getClass());
@@ -4135,6 +4137,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		if (updateList.size() > 0) {
             courseScheduleDao.batchUpdate(updateList);
+			try {
+				tenantAssetsInfoService.deductAmount(updateList);
+			}catch (Exception e){
+				LOGGER.error("deductAmount  >>>>>>>>>",e);
+			}
 			List<Long> courseIds = updateList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 			List<CourseSchedule> beMergeCourses = courseScheduleDao.getBeMergeCourseWithMainCourseIds(courseIds);
 			if(!CollectionUtils.isEmpty(beMergeCourses)){

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/RedemptionCodeMapper.xml

@@ -29,5 +29,9 @@
         order by rc.import_time_ desc
         limit 1 for update;
     </select>
+    <select id="findNull" resultType="java.lang.Integer">
+        select count(1) from app_redemption_code rc where rc.user_id_ is null
+    </select>
+
 
 </mapper>

+ 1 - 1
mec-client-api/src/main/java/com/ym/mec/web/WebFeignService.java

@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 public interface WebFeignService {
 
 	@RequestMapping(value = "api/createCashAccount")
-	Boolean createCashAccount(@RequestParam("userId") Integer userId);
+	Boolean createCashAccount(@RequestParam("userId") Integer userId,@RequestParam("tenantId") Integer tenantId);
 
 	@RequestMapping(value = "api/queryTeacherOrganId")
 	Integer queryTeacherOrganId(@RequestParam("userId") Integer userId);

+ 1 - 1
mec-client-api/src/main/java/com/ym/mec/web/fallback/WebFeignServiceFallback.java

@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 public class WebFeignServiceFallback implements WebFeignService {
 
 	@Override
-	public Boolean createCashAccount(Integer userId) {
+	public Boolean createCashAccount(Integer userId,Integer tenantId) {
 		return false;
 	}
 

+ 12 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/security/AuthUser.java

@@ -22,11 +22,22 @@ public class AuthUser extends User {
 	 */
 	private Integer organId;
 
+	private Integer tenantId;
+
 	public AuthUser(Integer userId, Integer organId, String username, String password, boolean enabled, boolean accountNonExpired,
-			boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) {
+			boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities,Integer tenantId) {
 		super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
 		this.userId = userId;
 		this.organId = organId;
+		this.tenantId = tenantId;
+	}
+
+	public Integer getTenantId() {
+		return tenantId;
+	}
+
+	public void setTenantId(Integer tenantId) {
+		this.tenantId = tenantId;
 	}
 
 	public Integer getUserId() {

+ 1 - 0
mec-im/src/main/java/com/ym/common/ErrorEnum.java

@@ -19,6 +19,7 @@ public enum ErrorEnum {
     ERR_JOIN_ROOM_ERROR(12, "Join room error"),
     JOIN_ROOM_ERROR(35, "加入房间失败,请前往线下教室"),
     ROOM_NOT_START(36, "网络教室暂未开启,请稍后重试"),
+    CLOUD_BALANCE_NOT_FEE(37, "云教室余额不足,请联系教务老师"),
     ERR_MESSAGE_ERROR(13, "IM Message send error"),
 
 

+ 12 - 4
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -21,11 +21,9 @@ import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.service.StudentAttendanceService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysTenantConfigService;
-import com.ym.mec.biz.service.TeacherAttendanceService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.im.IMHelper;
 import com.ym.mec.im.message.*;
 import com.ym.mec.util.collection.MapUtil;
@@ -38,6 +36,7 @@ import com.ym.utils.DateTimeUtils;
 import com.ym.utils.IdentifierUtils;
 import com.ym.whiteboard.WhiteBoardHelper;
 import lombok.extern.slf4j.Slf4j;
+import lombok.val;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -98,6 +97,8 @@ public class RoomServiceImpl implements RoomService {
     @Autowired
     private SysTenantConfigService sysTenantConfigService;
     @Autowired
+    private TenantAssetsInfoService tenantAssetsInfoService;
+    @Autowired
     private RedisTemplate<String,String> redisTemplate;
 
     @Override
@@ -148,6 +149,13 @@ public class RoomServiceImpl implements RoomService {
             throw new ApiException(ErrorEnum.ROOM_NOT_START);
 //            throw new BizException("网络教室暂未开启,请在{}分钟后进入教室",DateUtil.minutesBetween(addMinutes,courseSchedule.getStartClassTime()));
         }
+        final TenantAssetsInfo one = tenantAssetsInfoService.getOne(new WrapperUtil<TenantAssetsInfo>()
+                .hasEq("tenant_id_", courseSchedule.getTenantId())
+                .queryWrapper()
+                .gt("balance_", 0));
+        if(one == null){
+            throw new ApiException(ErrorEnum.CLOUD_BALANCE_NOT_FEE);
+        }
 
         //是否是连堂课
         String continueCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME,courseSchedule.getTenantId());

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/APIController.java

@@ -45,9 +45,9 @@ public class APIController extends BaseController {
 	private SysTenantConfigService sysTenantConfigService;
 
 	@GetMapping("/createCashAccount")
-	public Boolean createCashAccount(Integer userId) {
+	public Boolean createCashAccount(Integer userId,Integer tenantId) {
 		// 添加用户现金账户
-		sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
+		sysUserCashAccountDao.insert(new SysUserCashAccount(userId,tenantId, "CNY"));
 
 		return true;
 	}

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SysManualController.java

@@ -40,7 +40,7 @@ public class SysManualController extends BaseController {
     @ApiOperation(value = "查询操作手册")
     @RequestMapping("/list")
     public Object list(SysManualQueryInfo queryInfo) {
-        return sysManualService.query(queryInfo);
+        return succeed(sysManualService.query(queryInfo));
     }
 
     @ApiOperation(value = "新增帮助手册")

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -108,6 +108,8 @@ public class TaskController extends BaseController {
 	private TenantInfoService tenantInfoService;
     @Autowired
     private TenantOrderRecordService tenantOrderRecordService;
+	@Autowired
+	private AppRedemptionCodeService appRedemptionCodeService;
 
 	@GetMapping(value = "/syncImHistoryMessageTask")
 	// 同步即时通讯聊天记录
@@ -512,6 +514,12 @@ public class TaskController extends BaseController {
 //		studentService.remarkCountFlag();
 	}
 
+	@ApiOperation("兑换码分配量检测")
+	@GetMapping(value = "/redemptionCodeWarn")
+	public void redemptionCodeWarn(){
+		appRedemptionCodeService.checkLowVolume();
+	}
+
     @ApiOperation("定时校验-机构订单状态")
     @GetMapping(value = "/checkTenantOrder")
     public void checkTenantOrder(){