Browse Source

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into saas

yonge 3 years ago
parent
commit
8bac86e93c
67 changed files with 560 additions and 716 deletions
  1. 2 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java
  2. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/TenantInfoDao.java
  3. 8 3
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/interceptor/TenantInterceptor.java
  4. 0 21
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java
  5. 1 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/TenantInfoService.java
  6. 0 31
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  7. 7 4
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/TenantInfoServiceImpl.java
  8. 3 2
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/TenantInfoMapper.xml
  9. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  10. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysEmailDao.java
  12. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TenantInfoDao.java
  13. 100 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/BaseStudentDto.java
  14. 1 76
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicEnlightenmentQuestionnaire.java
  15. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  16. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Student.java
  17. 44 91
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPreRegistration.java
  18. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  19. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/EducationBaseQueryInfo.java
  20. 0 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupPerformanceQueryInfo.java
  21. 0 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentErrorLeaveQueryInfo.java
  22. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/AppRedemptionCodeService.java
  23. 11 4
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
  24. 2 7
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectChangeService.java
  25. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java
  26. 3 8
      mec-biz/src/main/java/com/ym/mec/biz/service/SysCouponCodeService.java
  27. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysEmailService.java
  28. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TenantInfoService.java
  29. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/AppRedemptionCodeServiceImpl.java
  30. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  31. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  32. 12 34
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  33. 18 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  34. 10 67
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicEnlightenmentQuestionnaireServiceImpl.java
  35. 29 74
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  36. 10 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrderPayOpsServiceImpl.java
  37. 57 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  38. 17 27
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java
  39. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java
  40. 4 33
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysCouponCodeServiceImpl.java
  41. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysEmailServiceImpl.java
  42. 41 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantInfoServiceImpl.java
  43. 1 8
      mec-biz/src/main/resources/config/mybatis/MusicGroupPurchaseListMapper.xml
  44. 4 0
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  45. 6 13
      mec-biz/src/main/resources/config/mybatis/StudentPreRegistrationMapper.xml
  46. 1 4
      mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml
  47. 3 0
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  48. 1 2
      mec-biz/src/main/resources/config/mybatis/SysEmailMapper.xml
  49. 3 4
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  50. 7 0
      mec-biz/src/main/resources/config/mybatis/TenantInfoMapper.xml
  51. 1 1
      mec-im/src/main/java/com/ym/common/ErrorEnum.java
  52. 2 2
      mec-im/src/main/java/com/ym/controller/RoomController.java
  53. 1 25
      mec-im/src/main/java/com/ym/interceptor/TenantInterceptor.java
  54. 7 7
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  55. 2 1
      mec-im/src/main/java/com/ym/service/RoomService.java
  56. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/StudentController.java
  57. 2 2
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  58. 1 3
      mec-student/src/main/java/com/ym/mec/student/controller/SubjectChangeController.java
  59. 6 6
      mec-student/src/main/java/com/ym/mec/student/controller/SysCouponCodeController.java
  60. 1 26
      mec-student/src/main/java/com/ym/mec/student/interceptor/TenantInterceptor.java
  61. 1 25
      mec-teacher/src/main/java/com/ym/mec/teacher/interceptor/TenantInterceptor.java
  62. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java
  63. 5 3
      mec-web/src/main/java/com/ym/mec/web/controller/ImportController.java
  64. 9 1
      mec-web/src/main/java/com/ym/mec/web/controller/SubjectController.java
  65. 4 1
      mec-web/src/main/java/com/ym/mec/web/controller/SysEmailController.java
  66. 13 0
      mec-web/src/main/java/com/ym/mec/web/controller/TenantInfoController.java
  67. 1 26
      mec-web/src/main/java/com/ym/mec/web/interceptor/TenantInterceptor.java

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

@@ -78,7 +78,8 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 				throw new LockedException("用户不存在");
 			}
 			//如果机构不一致,不允许跨机构注册
-			if(!loginEntity.getTenantId().equals(user.getTenantId())){
+			if(loginEntity.getTenantId() != null && loginEntity.getTenantId() != 0 &&
+					!loginEntity.getTenantId().equals(user.getTenantId())){
 				throw new LockedException("用户已注册");
 			}
 			if (StringUtils.isNotBlank(deviceNum)) {

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/TenantInfoDao.java

@@ -5,5 +5,5 @@ import com.ym.mec.common.dal.BaseDAO;
 
 public interface TenantInfoDao extends BaseDAO<Integer, TenantInfo> {
 
-	
+    TenantInfo getOpenTenant(Integer tenantId);
 }

+ 8 - 3
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/interceptor/TenantInterceptor.java

@@ -3,6 +3,7 @@ package com.ym.mec.auth.interceptor;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.ym.mec.common.exception.BizException;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -44,9 +45,13 @@ public class TenantInterceptor extends HandlerInterceptorAdapter {
 		}
 		if(StringUtils.isNotEmpty(tenantId)){
 			TenantContextHolder.setTenantId(Integer.parseInt(tenantId));
-			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
-			if(tenantInfo != null){
-				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
+			if(Integer.parseInt(tenantId) != -1){
+				TenantInfo tenantInfo = tenantInfoService.getOpenTenant(Integer.parseInt(tenantId));
+				if(tenantInfo != null){
+					request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
+				}else {
+					throw new BizException("机构信息异常,请联系管理员");
+				}
 			}
 		}
 		return true;

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

@@ -50,27 +50,6 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	SysUserInfo queryUserInfoByPhone(String phone);
 
 	/**
-	 * 根据手机号获取系统用户详细信息
-	 * @param phone
-	 * @return
-	 */
-	SysUserInfo queryUserInfoByPhoneAndClient(String phone,String client);
-
-	/**
-	 * 删除指定用户
-	 * @param id
-	 * @return
-	 */
-	boolean deleteById(Integer id);
-
-	/**
-	 * 根据用户手机号修改密码
-	 * @param mobile
-	 * @param password
-	 */
-	void updatePassword(String mobile, String password);
-
-	/**
 	 * 新增用户
 	 * @param sysUser
 	 * @return

+ 1 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/TenantInfoService.java

@@ -5,4 +5,5 @@ import com.ym.mec.common.service.BaseService;
 
 public interface TenantInfoService extends BaseService<Integer, TenantInfo> {
 
+    TenantInfo getOpenTenant(Integer tenantId);
 }

+ 0 - 31
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -2,15 +2,12 @@ package com.ym.mec.auth.service.impl;
 
 import com.ym.mec.auth.api.dto.SysUserInfo;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.auth.dal.dao.SysUserDao;
 import com.ym.mec.auth.service.SysRoleMenuService;
-import com.ym.mec.auth.service.SysUserRoleService;
 import com.ym.mec.auth.service.SysUserService;
 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.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.web.WebFeignService;
@@ -20,8 +17,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 
 @Service
@@ -75,11 +70,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		return getSysUserInfo(queryLockByPhone(phone));
 	}
 
-	@Override
-	public SysUserInfo queryUserInfoByPhoneAndClient(String phone,String client) {
-		return getSysUserInfo(queryByPhoneAndClient(phone,client));
-	}
-
 	private SysUserInfo getSysUserInfo(SysUser sysUser) {
 		if (sysUser == null) {
 			return null;
@@ -93,27 +83,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	}
 
 	@Override
-	public boolean deleteById(Integer id) {
-		SysUser user = get(id);
-
-		if (user == null) {
-			throw new BizException("账户不存在");
-		}
-
-		user.setUpdateTime(new Date());
-		user.setDelFlag(YesOrNoEnum.YES);
-
-		update(user);
-
-		return true;
-	}
-
-	@Override
-	public void updatePassword(String mobile, String password) {
-		sysUserDao.updatePassword(mobile,password);
-	}
-
-	@Override
 	public Integer add(SysUser sysUser) {
 		sysUserDao.insert(sysUser);
 		ImResult imResult = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getUsername(), sysUser.getAvatar()));

+ 7 - 4
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/TenantInfoServiceImpl.java

@@ -1,13 +1,12 @@
 package com.ym.mec.auth.service.impl;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.ym.mec.auth.api.entity.TenantInfo;
 import com.ym.mec.auth.dal.dao.TenantInfoDao;
 import com.ym.mec.auth.service.TenantInfoService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 @Service
 public class TenantInfoServiceImpl extends BaseServiceImpl<Integer, TenantInfo>  implements TenantInfoService {
@@ -19,5 +18,9 @@ public class TenantInfoServiceImpl extends BaseServiceImpl<Integer, TenantInfo>
 	public BaseDAO<Integer, TenantInfo> getDAO() {
 		return tenantInfoDao;
 	}
-	
+
+	@Override
+	public TenantInfo getOpenTenant(Integer tenantId) {
+		return tenantInfoDao.getOpenTenant(tenantId);
+	}
 }

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

@@ -31,8 +31,6 @@
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.auth.api.entity.TenantInfo"
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
-			AS ID FROM DUAL </selectKey> -->
 		INSERT INTO tenant_info
 		(id_,name_,address_,domain_name_,logo_url_,contact_name_,contact_phone_,data_source_,create_time_,update_time_)
 		VALUES(#{id},#{name},#{address},#{domainName},#{logoUrl},#{contactName},#{contactPhone},#{dataSource},#{createTime},#{updateTime})
@@ -91,4 +89,7 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM tenant_info
 	</select>
+	<select id="getOpenTenant" resultMap="TenantInfo">
+		SELECT * FROM tenant_info WHERE id_ = #{id} AND state_ = 1
+	</select>
 </mapper>

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

@@ -408,7 +408,7 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
 
     List<Student> queryStudent(Map<String, Object> params);
 
-    List<Map<Integer, String>> getStudentTeacherMap(List<Integer> studentIds);
-
     int updateMembershipEndTime(@Param("studentId")Integer studentId, @Param("endTime")Date endTime);
+
+    SysUser getUserByPhone(String phone);
 }

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

@@ -170,4 +170,6 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
     List<Subject> queryPageByIdOrName(Map<String, Object> params);
 
     int queryPageByIdOrNameCount(Map<String, Object> params);
+
+    List<Subject> list();
 }

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

@@ -16,6 +16,6 @@ public interface SysEmailDao extends BaseMapper<SysEmail> {
 
    int insertBatch(@Param("entities") List<SysEmail> entities);
 
-    SysEmail query();
+    SysEmail query(@Param("tenantId") Integer tenantId);
 }
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TenantInfoDao.java

@@ -14,4 +14,8 @@ public interface TenantInfoDao extends BaseMapper<TenantInfo> {
     <T> IPage<T> queryPage(Page<T> page, @Param("param") Map<String, Object> param);
 
     TenantProductSumm queryTenantInfoProductSumm(Integer tenantId);
+
+    TenantInfo getOpenTenant(Integer tenantId);
+
+    TenantInfo queryTenantInfoByOrgan(@Param("organId") Integer organId);
 }

+ 100 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/BaseStudentDto.java

@@ -0,0 +1,100 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+
+//学员基类
+public class BaseStudentDto extends BaseEntity {
+    @ApiModelProperty("分部编号")
+    private Integer organId;
+
+    @ApiModelProperty("用户编号")
+    private Integer userId;
+
+    /**  */
+    @ApiModelProperty("用户名")
+    private String userName;
+
+    /**  */
+    @ApiModelProperty("联系方式")
+    private String phone;
+
+    /** 年级 */
+    @ApiModelProperty("年级")
+    private String currentGrade;
+
+    /** 年级数字 */
+    @ApiModelProperty("年级数字")
+    private Integer currentGradeNum;
+
+    /** 班级 */
+    @ApiModelProperty("班级")
+    private String currentClass;
+
+    /** 性别 */
+    private Integer gender;
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getCurrentGrade() {
+        return currentGrade;
+    }
+
+    public void setCurrentGrade(String currentGrade) {
+        this.currentGrade = currentGrade;
+    }
+
+    public Integer getCurrentGradeNum() {
+        return currentGradeNum;
+    }
+
+    public void setCurrentGradeNum(Integer currentGradeNum) {
+        this.currentGradeNum = currentGradeNum;
+    }
+
+    public String getCurrentClass() {
+        return currentClass;
+    }
+
+    public void setCurrentClass(String currentClass) {
+        this.currentClass = currentClass;
+    }
+}

+ 1 - 76
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicEnlightenmentQuestionnaire.java

@@ -1,17 +1,14 @@
 package com.ym.mec.biz.dal.entity;
 
 import io.swagger.annotations.ApiModelProperty;
-
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
-import com.ym.mec.common.entity.BaseEntity;
-
 import java.util.Date;
 
 /**
  * 对应数据库表(music_enlightenment_questionnaire):
  */
-public class MusicEnlightenmentQuestionnaire extends BaseEntity {
+public class MusicEnlightenmentQuestionnaire extends BaseStudentDto {
 
 	/**  */
 	private Long id;
@@ -20,30 +17,6 @@ public class MusicEnlightenmentQuestionnaire extends BaseEntity {
 	@ApiModelProperty("乐团编号")
 	private String musicGroupId;
 	
-	/**  */
-	@ApiModelProperty("用户编号")
-	private Integer userId;
-	
-	/**  */
-	@ApiModelProperty("用户名")
-	private String userName;
-	
-	/**  */
-	@ApiModelProperty("联系方式")
-	private String phone;
-	
-	/** 年级 */
-	@ApiModelProperty("年级")
-	private String currentGrade;
-	
-	/** 年级数字 */
-	@ApiModelProperty("年级数字")
-	private Integer currentGradeNum;
-	
-	/** 班级 */
-	@ApiModelProperty("班级")
-	private String currentClass;
-	
 	/** 教师推荐专业 */
 	@ApiModelProperty("教师推荐专业")
 	private Integer teacherRecommandSubjectId;
@@ -87,54 +60,6 @@ public class MusicEnlightenmentQuestionnaire extends BaseEntity {
 		this.musicGroupId = musicGroupId;
 	}
 
-	public Integer getUserId() {
-		return userId;
-	}
-
-	public void setUserId(Integer userId) {
-		this.userId = userId;
-	}
-
-	public String getUserName() {
-		return userName;
-	}
-
-	public void setUserName(String userName) {
-		this.userName = userName;
-	}
-
-	public String getPhone() {
-		return phone;
-	}
-
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-
-	public String getCurrentGrade() {
-		return currentGrade;
-	}
-
-	public void setCurrentGrade(String currentGrade) {
-		this.currentGrade = currentGrade;
-	}
-
-	public Integer getCurrentGradeNum() {
-		return currentGradeNum;
-	}
-
-	public void setCurrentGradeNum(Integer currentGradeNum) {
-		this.currentGradeNum = currentGradeNum;
-	}
-
-	public String getCurrentClass() {
-		return currentClass;
-	}
-
-	public void setCurrentClass(String currentClass) {
-		this.currentClass = currentClass;
-	}
-
 	public Integer getTeacherRecommandSubjectId() {
 		return teacherRecommandSubjectId;
 	}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -84,7 +84,7 @@ public class MusicGroup extends BaseEntity {
 	private String courseForm;
 
 	@ApiModelProperty(value = "老师课酬结算方式",required = false)
-	private SalarySettlementTypeEnum settlementType;
+	private SalarySettlementTypeEnum settlementType = SalarySettlementTypeEnum.TEACHER_DEFAULT;
 
 	@ApiModelProperty(value = "课程展现形式",required = false)
 	private CourseViewTypeEnum courseViewType;

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Student.java

@@ -80,6 +80,16 @@ public class Student extends SysUser {
 
 	private Integer countFlag;
 
+	@ApiModelProperty(value = "家长姓名")
+	private String parentName;
+
+	@ApiModelProperty(value = "备注")
+	private String remake;
+
+	@ApiModelProperty(value = "单位名称")
+	private String unitName;
+
+
 	public Student(Integer userId, String subjectIdList) {
 		this.userId = userId;
 		this.subjectIdList = subjectIdList;
@@ -307,4 +317,28 @@ public class Student extends SysUser {
 	public void setMemberRankImg(String memberRankImg) {
 		this.memberRankImg = memberRankImg;
 	}
+
+	public String getParentName() {
+		return parentName;
+	}
+
+	public void setParentName(String parentName) {
+		this.parentName = parentName;
+	}
+
+	public String getRemake() {
+		return remake;
+	}
+
+	public void setRemake(String remake) {
+		this.remake = remake;
+	}
+
+	public String getUnitName() {
+		return unitName;
+	}
+
+	public void setUnitName(String unitName) {
+		this.unitName = unitName;
+	}
 }

+ 44 - 91
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPreRegistration.java

@@ -2,43 +2,18 @@ package com.ym.mec.biz.dal.entity;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
-import com.ym.mec.common.entity.BaseEntity;
-
 /**
  * 对应数据库表(student_pre_registration):
  */
-public class StudentPreRegistration extends BaseEntity {
+public class StudentPreRegistration extends BaseStudentDto {
 
 	/**  */
 	private Long id;
 	
-	private Integer organId;
-	
 	private String musicGroupId;
 	
 	private String school;
-	
-	/** 用户编号 */
-	private Integer userId;
-	
-	/** 联系方式 */
-	private String phone;
-	
-	/** 学生姓名 */
-	private String userName;
-	
-	/** 性别 */
-	private boolean gender;
-
-	/** 年级 */
-	private String currentGrade;
-
-	/** 年级编号 */
-	private Integer currentGradeNum;
 
-	/** 班级 */
-	private String currentClass;
-	
 	/** 第一专业 */
 	private Integer subjectFirst;
 	
@@ -62,7 +37,17 @@ public class StudentPreRegistration extends BaseEntity {
 	
 	/** 创建时间 */
 	private java.util.Date createTime;
-	
+
+	// 2022 add new field
+	/** 家长姓名 **/
+	private String parentName;
+
+	/** 备注 */
+	private String remake;
+
+	/** 单位名称 */
+	private String unitName;
+
 	public void setId(Long id){
 		this.id = id;
 	}
@@ -71,14 +56,6 @@ public class StudentPreRegistration extends BaseEntity {
 		return this.id;
 	}
 			
-	public Integer getOrganId() {
-		return organId;
-	}
-
-	public void setOrganId(Integer organId) {
-		this.organId = organId;
-	}
-
 	public String getMusicGroupId() {
 		return musicGroupId;
 	}
@@ -95,54 +72,6 @@ public class StudentPreRegistration extends BaseEntity {
 		this.school = school;
 	}
 
-	public void setUserId(Integer userId){
-		this.userId = userId;
-	}
-	
-	public Integer getUserId(){
-		return this.userId;
-	}
-			
-	public void setPhone(String phone){
-		this.phone = phone;
-	}
-	
-	public String getPhone(){
-		return this.phone;
-	}
-			
-	public void setUserName(String userName){
-		this.userName = userName;
-	}
-	
-	public String getUserName(){
-		return this.userName;
-	}
-			
-	public void setGender(boolean gender){
-		this.gender = gender;
-	}
-	
-	public boolean isGender(){
-		return this.gender;
-	}
-			
-	public void setCurrentGrade(String currentGrade){
-		this.currentGrade = currentGrade;
-	}
-	
-	public String getCurrentGrade(){
-		return this.currentGrade;
-	}
-			
-	public void setCurrentClass(String currentClass){
-		this.currentClass = currentClass;
-	}
-	
-	public String getCurrentClass(){
-		return this.currentClass;
-	}
-			
 	public void setSubjectFirst(Integer subjectFirst){
 		this.subjectFirst = subjectFirst;
 	}
@@ -204,14 +133,6 @@ public class StudentPreRegistration extends BaseEntity {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
-	public Integer getCurrentGradeNum() {
-		return currentGradeNum;
-	}
-
-	public void setCurrentGradeNum(Integer currentGradeNum) {
-		this.currentGradeNum = currentGradeNum;
-	}
-
 	public String getCloudTeacherMethod() {
 		return cloudTeacherMethod;
 	}
@@ -219,4 +140,36 @@ public class StudentPreRegistration extends BaseEntity {
 	public void setCloudTeacherMethod(String cloudTeacherMethod) {
 		this.cloudTeacherMethod = cloudTeacherMethod;
 	}
+
+	public boolean isAllowAdjust() {
+		return isAllowAdjust;
+	}
+
+	public void setAllowAdjust(boolean allowAdjust) {
+		isAllowAdjust = allowAdjust;
+	}
+
+	public String getParentName() {
+		return parentName;
+	}
+
+	public void setParentName(String parentName) {
+		this.parentName = parentName;
+	}
+
+	public String getRemake() {
+		return remake;
+	}
+
+	public void setRemake(String remake) {
+		this.remake = remake;
+	}
+
+	public String getUnitName() {
+		return unitName;
+	}
+
+	public void setUnitName(String unitName) {
+		this.unitName = unitName;
+	}
 }

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

@@ -198,6 +198,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 
     APP_REDEMPTION_CODE("APP_REDEMPTION_CODE", "兑换码分配量预警"),
     CLOUD_TEACHER_ORDER_SUCCESS("CLOUD_TEACHER_ORDER_SUCCESS", "云教练激活成功"),
+    TEST_EMAIL_FIRST("TEST_EMAIL_FIRST", "测试邮件")
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/EducationBaseQueryInfo.java

@@ -9,12 +9,24 @@ public class EducationBaseQueryInfo extends QueryInfo {
     //分部
     private String organIds;
 
+    //分部(兼容前端参数)
+    private String organId;
+
     //教务老师
     private Integer educationUserId;
 
     //班级列表
     private List<Long> classGroupIds;
 
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organIds = organId;
+        this.organId = organId;
+    }
+
     public List<Long> getClassGroupIds() {
         return classGroupIds;
     }

+ 0 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupPerformanceQueryInfo.java

@@ -4,18 +4,6 @@ public class MusicGroupPerformanceQueryInfo extends EducationBaseQueryInfo {
 
     private String musicGroupId;
 
-    //用父类的organIds,因为涉及到移动端,所以保留了该字段
-    private String organId;
-
-    public String getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(String organId) {
-        super.setOrganIds(organId);
-        this.organId = organId;
-    }
-
     public String getMusicGroupId() {
         return musicGroupId;
     }

+ 0 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentErrorLeaveQueryInfo.java

@@ -5,8 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
 public class StudentErrorLeaveQueryInfo extends EducationBaseQueryInfo {
     private Integer userId;
 
-    private String organId;
-
     @ApiModelProperty(value = "是否回访")
     private Integer leaveVisitFlag;
 
@@ -21,14 +19,6 @@ public class StudentErrorLeaveQueryInfo extends EducationBaseQueryInfo {
         this.userId = userId;
     }
 
-    public String getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(String organId) {
-        this.organId = organId;
-    }
-
     public Integer getLeaveVisitFlag() {
         return leaveVisitFlag;
     }

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

@@ -14,7 +14,7 @@ import java.util.List;
  */
 public interface AppRedemptionCodeService extends IService<AppRedemptionCode> {
 
-    List<AppRedemptionCode> importRedemptionCode(MultipartFile file) throws Exception;
+    String importRedemptionCode(MultipartFile file) throws Exception;
 
     AppRedemptionCode allocation(Integer userId);
 

+ 11 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java

@@ -5,14 +5,12 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.CloudStudyStudentDataDto;
 import com.ym.mec.biz.dal.dto.CloudTeacherActiveTargetDetailDto;
 import com.ym.mec.biz.dal.dto.EduOrganStudentDataDto;
 import com.ym.mec.biz.dal.dto.StatDto;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentPreRegistration;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.page.CloudTeacherActiveQueryInfo;
@@ -159,4 +157,13 @@ public interface StudentService extends BaseService<Integer, Student> {
     PageInfo<CloudTeacherActiveTargetDetailDto> countCloudTeacherActiveDetail(CloudTeacherActiveQueryInfo queryInfo);
 
     int updateMembershipEndTime(Integer studentId, Date endTime);
+
+    /**
+    * @description: 根据手机号检测学员是否存在,存在就更新,不存在插入
+     * @param student
+    * @return com.ym.mec.auth.api.entity.SysUser
+    * @author zx
+    * @date 2022/1/7 11:02
+    */
+    <T extends BaseStudentDto> SysUser upSetStudent(T student);
 }

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

@@ -73,17 +73,12 @@ public interface SubjectChangeService extends BaseService<Integer, SubjectChange
 
     /**
      * 添加
-     * @param orderId
      * @param musicGroupId
      * @param goodsIds
-     * @param totalAmount
-     * @param balance
      * @return
      */
-    List<SellOrder> addSellOrder(Long orderId,
+    List<SellOrder> addSellOrder(StudentPaymentOrder studentPaymentOrder,
                                  String musicGroupId,
                                  List<Integer> goodsIds,
-                                 BigDecimal totalAmount,
-                                 BigDecimal balance,
-                                 KitGroupPurchaseTypeEnum kitGroupPurchaseType,BigDecimal couponRemitAmount);
+                                 KitGroupPurchaseTypeEnum kitGroupPurchaseType);
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SubjectService.java

@@ -109,4 +109,10 @@ public interface SubjectService extends BaseService<Integer, Subject> {
      * @return 查询结果
      */
     PageInfo<Subject> queryPageByIdOrName(SubjectQueryInfo queryInfo);
+
+    /**
+     * 列出声部
+     * @return
+     */
+    List<Subject> list();
 }

+ 3 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/SysCouponCodeService.java

@@ -12,7 +12,6 @@ import com.ym.mec.common.service.BaseService;
 
 import java.math.BigDecimal;
 import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
 
 public interface SysCouponCodeService extends BaseService<Long, SysCouponCode> {
 
@@ -65,20 +64,16 @@ public interface SysCouponCodeService extends BaseService<Long, SysCouponCode> {
      * 获取优惠券相关参数-校验优惠券和传入的支付金额是否合法
      *
      * @param couponIdList 优惠券集合
-     * @param total        本次订单所有商品的总数量
-     * @param payAmount    页面传入的本次支付的金额
-     * @param allowType   本次允许使用的优惠券类型,null则不验证
+     * @param allowType    本次允许使用的优惠券类型,null则不验证
      */
-    CouponPayParam getCouponPayParam(List<Integer> couponIdList, Integer total, BigDecimal payAmount, String... allowType);
+    CouponPayParam getCouponPayParam(List<Integer> couponIdList, String... allowType);
 
     /**
      * 获取优惠券相关参数-校验优惠券和传入的支付金额是否合法
      *
      * @param couponIdList 优惠券集合
-     * @param total        本次订单所有商品的总数量
-     * @param payAmount    页面传入的本次支付的金额
      */
-    CouponPayParam getCouponPayParam(List<Integer> couponIdList, Integer total, BigDecimal payAmount);
+    CouponPayParam getCouponPayParam(List<Integer> couponIdList);
 
     List<SysCouponCodeDto> findByIdList(List<Integer> couponIdList);
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SysEmailService.java

@@ -11,6 +11,6 @@ import com.ym.mec.biz.dal.entity.SysEmail;
  */
 public interface SysEmailService extends IService<SysEmail> {
 
-    SysEmail query();
+    SysEmail query(Integer tenantId);
 }
 

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TenantInfoService.java

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.vo.TenantInfoInfoPageVo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.thirdparty.yqpay.Msg;
 
+import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.util.Map;
 
@@ -36,4 +37,17 @@ public interface TenantInfoService extends IService<TenantInfo> {
     Boolean rechargeCheck(String orderNo) throws Exception;
 
     TenantProductSumm queryTenantInfoProductSumm(Integer id);
+
+    Boolean testEmail();
+
+    /**
+    * @description: 保存tenantId
+     * @param request
+    * @return void
+    * @author zx
+    * @date 2022/1/7 14:42
+    */
+    void saveTenantContextHolder(HttpServletRequest request);
+
+    TenantInfo queryTenantInfoByOrgan(Integer organId);
 }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/AppRedemptionCodeServiceImpl.java

@@ -56,7 +56,7 @@ public class AppRedemptionCodeServiceImpl extends ServiceImpl<RedemptionCodeDao,
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<AppRedemptionCode> importRedemptionCode(MultipartFile file) throws Exception {
+    public String importRedemptionCode(MultipartFile file) throws Exception {
         Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(
                 new ByteArrayInputStream(file.getBytes()), 0, file.getOriginalFilename());
 
@@ -96,11 +96,12 @@ public class AppRedemptionCodeServiceImpl extends ServiceImpl<RedemptionCodeDao,
         try {
             redemptionCodeDao.insertBatch(redemptionCodesList);
         } catch (DuplicateKeyException dupKeyEx) {
-            throw new BizException("数据重复:" + dupKeyEx.getCause(), dupKeyEx);
+            logger.error("数据导入重复: " + dupKeyEx.getCause());
+            throw new BizException("数据重复:" + dupKeyEx.getCause());
         } catch (Exception ex) {
             throw new BizException("导入数据出错:" + ex, ex);
         }
-        return redemptionCodesList;
+        return "成功导入 " + redemptionCodesList.size() + "条";
     }
 
     @Override

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -273,12 +273,13 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         if (!bucket.trySet(1, 3L, TimeUnit.SECONDS)) {
             return false;
         }
-        log.info("checkCloudTeacherOrder  checkTenantOrder>>>>>");
+        log.info("checkCloudTeacherOrder check >>>>>");
         checkTransOrderState(record);
         if (record.getOrderState() == 1) {
             tenantOrderRecordService.updateById(record);
             try {
                 this.paySuccess(record); // 充值成功
+                log.info("checkCloudTeacherOrder check success >>>>>");
                 return true;
             } catch (Exception e) {
                 e.printStackTrace();
@@ -286,6 +287,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             }
         }
         bucket.delete();
+        log.info("checkCloudTeacherOrder check fail >>>>>");
         return false;
     }
 

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -106,15 +106,15 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds(), employee.getTenantId());
 		//添加用户现金账户
 		sysUserCashAccountDao.insert(new SysUserCashAccount(employee.getId(),"CNY"));
-//		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(),null));
-//		employee.setImToken(imResult.getToken());
+		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(),null));
+		employee.setImToken(imResult.getToken());
 		teacherDao.updateUser(employee);
 		if(user != null){
 			employee.setAvatar(user.getAvatar());
 		}
 
 		//添加到OA
-//		oaUserService.addOaUser(employee);
+		oaUserService.addOaUser(employee);
 	}
 
 	@Override

+ 12 - 34
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -1,24 +1,11 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.*;
-import java.util.Map.Entry;
-import java.util.stream.Collectors;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.service.ImGroupService;
-import com.ym.mec.common.entity.ImGroupModel;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.service.ImGroupMemberService;
+import com.ym.mec.biz.service.ImGroupService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -26,46 +13,39 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.entity.GroupMember;
 import com.ym.mec.im.entity.GroupModel;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
 
 @Service
 public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMember> implements ImGroupMemberService {
-
 	@Autowired
 	private ImGroupMemberDao imGroupMemberDao;
-
 	@Autowired
 	private ImGroupDao imGroupDao;
-
 	@Autowired
 	private ImGroupService imGroupService;
-
 	@Autowired
 	private TeacherDao teacherDao;
-
 	@Autowired
 	private ClassGroupDao classGroupDao;
-
 	@Autowired
 	private MusicGroupDao musicGroupDao;
-
 	@Autowired
 	private PracticeGroupDao practiceGroupDao;
-
 	@Autowired
 	private VipGroupDao vipGroupDao;
-
 	@Autowired
 	private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
-
 	@Autowired
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
-
 	@Autowired
 	private ImFeignService imFeignService;
-	
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-
 	@Override
 	public BaseDAO<Long, ImGroupMember> getDAO() {
 		return imGroupMemberDao;
@@ -140,9 +120,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		if(imGroupMemberList != null && imGroupMemberList.size() > 0){
 			return true;
 		}
-		
-		SysUser user = sysUserFeignService.queryUserById(userId);
-		
+
 		ImGroupMember imGroupMember = new ImGroupMember();
 		Date date = new Date();
 
@@ -152,6 +130,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMember.setRoleType(roleType);
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(userId);
+		SysUser user = teacherDao.getUser(userId);
 		if (StringUtils.isBlank(roleType)) {
 			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
 		} else {
@@ -168,7 +147,6 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 
 		GroupMember groupMember = new GroupMember(userId.toString(), groupId);
 		imFeignService.groupJoin(new GroupModel(groupId, new GroupMember[] { groupMember }, imGroup.getName()));
-
 		return true;
 	}
 

+ 18 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -749,19 +749,22 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			//课程异常
 			fourChild.add(new IndexErrInfoDto(IndexErrorType.TEACHER_NOT_A_CLASS, IndexErrorType.TEACHER_NOT_A_CLASS.getMsg(), noAttendance, null));
 
-			//服务指标异常
-			Map<String, Object> params = new HashMap<>();
-			LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
-			LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()).plusDays(-7);
-			LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue()).plusDays(-7);
-			params.put("organIds", organIds);
-			params.put("monday",monDayDate.toString());
-			params.put("sunday",sunDayDate.toString());
-			params.put("jobNature", JobNatureEnum.FULL_TIME);
-			params.put("unDone",1);
-			params.put("reminded",0);
-			int serveErrTeacherNum = studentExtracurricularExercisesSituationDao.countTeacherServeInfo(params);
-			fourChild.add(new IndexErrInfoDto(IndexErrorType.TEACHER_SERVE_ERROR, IndexErrorType.TEACHER_SERVE_ERROR.getMsg(), serveErrTeacherNum, null));
+			//只适用大雅
+			if(tenantId == 1){
+				//服务指标异常
+				Map<String, Object> params = new HashMap<>();
+				LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
+				LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()).plusDays(-7);
+				LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue()).plusDays(-7);
+				params.put("organIds", organIds);
+				params.put("monday",monDayDate.toString());
+				params.put("sunday",sunDayDate.toString());
+				params.put("jobNature", JobNatureEnum.FULL_TIME);
+				params.put("unDone",1);
+				params.put("reminded",0);
+				int serveErrTeacherNum = studentExtracurricularExercisesSituationDao.countTeacherServeInfo(params);
+				fourChild.add(new IndexErrInfoDto(IndexErrorType.TEACHER_SERVE_ERROR, IndexErrorType.TEACHER_SERVE_ERROR.getMsg(), serveErrTeacherNum, null));
+			}
 
 			four.setNum(fourChild.stream().mapToInt(IndexErrInfoDto::getNum).sum());
 			four.setResult(fourChild);
@@ -1216,7 +1219,8 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 				flag4 = true;
 			}
 		}
-		if(!flag4){
+		//服务指标只用于大雅
+		if(tenantId == 1 && !flag4){
 			Map<String, Object> params = new HashMap<>();
 			LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
 			LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()).plusDays(-7);

+ 10 - 67
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicEnlightenmentQuestionnaireServiceImpl.java

@@ -1,20 +1,17 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dao.MusicEnlightenmentQuestionnaireDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dto.MusicEnlightenmentQuestionnaireStatDto;
 import com.ym.mec.biz.dal.entity.MusicEnlightenmentQuestionnaire;
 import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.MusicEnlightenmentQuestionnaireQueryInfo;
 import com.ym.mec.biz.service.MusicEnlightenmentQuestionnaireService;
+import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -22,7 +19,6 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
@@ -37,13 +33,7 @@ public class MusicEnlightenmentQuestionnaireServiceImpl extends BaseServiceImpl<
 	@Autowired
 	private MusicGroupDao musicGroupDao;
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private TeacherDao teacherDao;
-	@Autowired
-	private StudentDao studentDao;
-	@Autowired
-	private SysUserCashAccountDao sysUserCashAccountDao;
+	private StudentService studentService;
 	@Autowired
 	private SysMessageService sysMessageService;
 
@@ -55,15 +45,13 @@ public class MusicEnlightenmentQuestionnaireServiceImpl extends BaseServiceImpl<
 	}
 
 	@Override
-	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+	@Transactional(rollbackFor = Exception.class)
 	public void addEnlightenmentQuestionnaire(MusicEnlightenmentQuestionnaire enlightenmentQuestionnaire) {
 		String musicGroupId = enlightenmentQuestionnaire.getMusicGroupId();
 		String userPhone = enlightenmentQuestionnaire.getPhone();
-
-		if(Objects.isNull(musicGroupId)||Objects.isNull(userPhone)){
+		if(Objects.isNull(musicGroupId) || Objects.isNull(userPhone)){
 			throw new BizException("问卷信息错误");
 		}
-
 		// 查询乐团状态
 		MusicGroup musicGroup = musicGroupDao.getLocked(musicGroupId);
 		if (musicGroup == null) {
@@ -72,55 +60,10 @@ public class MusicEnlightenmentQuestionnaireServiceImpl extends BaseServiceImpl<
 		if (musicGroup.getStatus() != MusicGroupStatusEnum.PRE_APPLY) {
 			throw new BizException("乐团当前状态不能预报名");
 		}
-
-		Date date = new Date();
-
-		// 判断用户是否存在
-		SysUser user = sysUserFeignService.queryUserByMobile(enlightenmentQuestionnaire.getPhone());
-		if (user == null || user.getId() == null) {
-			user = new SysUser();
-			user.setPhone(enlightenmentQuestionnaire.getPhone());
-			user.setUsername(enlightenmentQuestionnaire.getUserName());
-			user.setOrganId(musicGroup.getOrganId());
-			user.setUserType("STUDENT");
-			user.setCreateTime(date);
-			user.setUpdateTime(date);
-			// 注册账户信息
-			HttpResponseResult<Integer> result = sysUserFeignService.addUser(user);
-
-			Integer userId = result.getData();
-			user.setId(userId);
-
-			Student student = new Student();
-			student.setUserId(userId);
-			student.setCreateTime(date);
-			student.setUpdateTime(date);
-			student.setIsNewUser(true);
-			student.setCurrentGradeNum(enlightenmentQuestionnaire.getCurrentGradeNum());
-			student.setCurrentClass(enlightenmentQuestionnaire.getCurrentClass());
-			studentDao.insert(student);
-			sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
-		} else {
-			user.setUsername(enlightenmentQuestionnaire.getUserName());
-			if (!user.getUserType().contains("STUDENT")) {
-				user.setUserType(user.getUserType() + ",STUDENT");
-
-				Integer userId = user.getId();
-				//添加student
-				Student student = new Student();
-				student.setUserId(userId);
-				student.setCreateTime(date);
-				student.setUpdateTime(date);
-				student.setIsNewUser(true);
-				student.setCurrentGradeNum(enlightenmentQuestionnaire.getCurrentGradeNum());
-				student.setCurrentClass(enlightenmentQuestionnaire.getCurrentClass());
-				studentDao.insert(student);
-			}
-			user.setUpdateTime(new Date());
-			teacherDao.updateUser(user);
-		}
-
-		enlightenmentQuestionnaire.setUserId(user.getId());
+		enlightenmentQuestionnaire.setTenantId(musicGroup.getTenantId());
+		enlightenmentQuestionnaire.setOrganId(musicGroup.getOrganId());
+		// 根据手机号检测学员是否存在,存在就更新,不存在插入
+		studentService.upSetStudent(enlightenmentQuestionnaire);
 
 		MusicEnlightenmentQuestionnaire musicEnlightenmentQuestionnaire = musicEnlightenmentQuestionnaireDao.lockUserMusicEnlightenmentQuestionnaire(musicGroupId, userPhone);
 		if(Objects.isNull(musicEnlightenmentQuestionnaire)){

+ 29 - 74
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -24,7 +24,6 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
@@ -46,7 +45,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -69,7 +67,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Autowired
     private TeacherDao teacherDao;
     @Autowired
-    private StudentDao studentDao;
+    private StudentService studentService;
     @Autowired
     private IdGeneratorService idGeneratorService;
     @Autowired
@@ -173,8 +171,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Autowired
     private GoodsDao goodsDao;
     @Autowired
-    private SysUserCashAccountDao sysUserCashAccountDao;
-    @Autowired
     private ContractService contractService;
     @Autowired
     private StudentPreRegistrationDao studentPreRegistrationDao;
@@ -324,9 +320,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean preRegister(StudentPreRegistration studentPreRegistration) {
-
         String musicGroupId = studentPreRegistration.getMusicGroupId();
-
         // 查询乐团状态
         MusicGroup musicGroup = musicGroupDao.getLocked(musicGroupId);
         if (musicGroup == null) {
@@ -335,69 +329,24 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (musicGroup.getStatus() != MusicGroupStatusEnum.PRE_APPLY) {
             throw new BizException("乐团当前状态不能预报名");
         }
-
         StudentPreRegistration originRegistration = studentPreRegistrationDao.queryByMusicGroupIdAndPhone(studentPreRegistration.getPhone(), musicGroupId);
         if (originRegistration != null) {
             throw new BizException("您已预报名成功,请勿重复提交资料");
         }
-        Date date = new Date();
 
-        // 判断用户是否存在
-        SysUser user = sysUserFeignService.queryUserByMobile(studentPreRegistration.getPhone());
-        if (user == null || user.getId() == null) {
-            user = new SysUser();
-            user.setPhone(studentPreRegistration.getPhone());
-            user.setUsername(studentPreRegistration.getUserName());
-            user.setOrganId(musicGroup.getOrganId());
-            user.setUserType("STUDENT");
-            user.setCreateTime(date);
-            user.setUpdateTime(date);
-            // 注册账户信息
-            HttpResponseResult<Integer> result = sysUserFeignService.addUser(user);
-
-            Integer userId = result.getData();
-            user.setId(userId);
-
-            Student student = new Student();
-            student.setUserId(userId);
-            student.setCreateTime(date);
-            student.setUpdateTime(date);
-            student.setIsNewUser(true);
-            student.setCurrentGradeNum(studentPreRegistration.getCurrentGradeNum());
-            student.setCurrentClass(studentPreRegistration.getCurrentClass());
-            studentDao.insert(student);
-            sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
-        } else {
-            if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
-                //该学员是否在其他的会员团
-                boolean hasMemberGroup = studentRegistrationDao.checkHasMemberGroup(musicGroupId, user.getId());
-                if (hasMemberGroup) {
-                    throw new BizException("乐团报名失败:该学员已在其他系统收费乐团中,不可报名该乐团请联系教务老师");
-                }
-            }
-            user.setUsername(studentPreRegistration.getUserName());
-            if (!user.getUserType().contains("STUDENT")) {
-                user.setUserType(user.getUserType() + ",STUDENT");
+        studentPreRegistration.setTenantId(musicGroup.getTenantId());
+        studentPreRegistration.setOrganId(musicGroup.getOrganId());
+        //保存学员信息
+        SysUser user = studentService.upSetStudent(studentPreRegistration);
 
-                Integer userId = user.getId();
-                //添加student
-                Student student = new Student();
-                student.setUserId(userId);
-                student.setCreateTime(date);
-                student.setUpdateTime(date);
-                student.setIsNewUser(true);
-                student.setCurrentGradeNum(studentPreRegistration.getCurrentGradeNum());
-                student.setCurrentClass(studentPreRegistration.getCurrentClass());
-                studentDao.insert(student);
+        if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
+            //该学员是否在其他的会员团
+            boolean hasMemberGroup = studentRegistrationDao.checkHasMemberGroup(musicGroupId, user.getId());
+            if (hasMemberGroup) {
+                throw new BizException("乐团报名失败:该学员已在其他系统收费乐团中,不可报名该乐团请联系教务老师");
             }
-            user.setUpdateTime(new Date());
-            teacherDao.updateUser(user);
-
         }
 
-        studentPreRegistration.setCreateTime(date);
-        studentPreRegistration.setUserId(user.getId());
-
         Organization organization = organizationDao.get(musicGroup.getOrganId());
         if (organization.getGradeType().equals(GradeTypeEnum.SIX_PLUS)) {
             for (SixPlusGradeEnum value : SixPlusGradeEnum.values()) {
@@ -414,12 +363,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 }
             }
         }
-
         studentPreRegistrationDao.insert(studentPreRegistration);
-
         // 添加成员
         imGroupMemberService.join(Long.parseLong(musicGroupId), user.getId(), null, false);
-
         return true;
     }
 
@@ -863,7 +809,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //获取本次商品的总数
             AtomicInteger total = getTotalNum(registerPayDto);
             //校验优惠券的使用
-            couponPayParam = sysCouponCodeService.getCouponPayParam(registerPayDto.getCouponIdList(), total.get(), registerPayDto.getAmount());
+            couponPayParam = sysCouponCodeService.getCouponPayParam(registerPayDto.getCouponIdList());
             studentPaymentOrder.setCouponCodeId(StringUtils.join(registerPayDto.getCouponIdList(), ","));
             studentPaymentOrder.setCouponRemitFee(couponPayParam.getCouponRemitTotal());
         }
@@ -1415,12 +1361,21 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         MusicGroup musicGroup = saveLog(musicGroupId, MusicGroupStatusEnum.PREPARE);
 
         //乐器采购清单是否确认
-        Map<String, Object> param = new HashMap<>();
-        param.put("musicGroupId", musicGroupId);
-        int i = musicGroupPurchaseListDao.queryCount(param);
-        if (i <= 0) {
-            throw new BizException("采购清单未确认");
+        List<StudentPaymentOrderDetail> applyOrder = studentPaymentOrderDetailService.findApplyOrderSuccess(musicGroupId, DealStatusEnum.SUCCESS);
+        if(applyOrder != null && applyOrder.size() > 0){
+            //是否购买了乐器,支持无乐器乐团
+            long count = applyOrder.stream().filter(e -> StringUtils.isNotEmpty(e.getGoodsIdList())).count();
+            if(count > 0l){
+                Map<String, Object> param = new HashMap<>();
+                param.put("musicGroupId", musicGroupId);
+                param.put("tenantId", musicGroup.getTenantId());
+                int i = musicGroupPurchaseListDao.queryCount(param);
+                if (i <= 0) {
+                    throw new BizException("采购清单未确认");
+                }
+            }
         }
+
         //课酬是否确认
         Integer courseScheduleNum = courseScheduleDao.countCourseScheduleByMusicGroupId(musicGroupId);
         if (courseScheduleNum != null && courseScheduleNum > 0) {
@@ -1680,7 +1635,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //获取对外课程务老师
         teacherIds.addAll(teacherDao.findCommEducationalTeacherId(studentId));
         //获取关联的指导老师
-        Student student = studentDao.get(studentId);
+        Student student = studentService.get(studentId);
         if (student != null && student.getTeacherId() != null) {
             teacherIds.add(student.getTeacherId());
         }
@@ -2015,7 +1970,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 if (musicGroupQuit.getStatus() == ApprovalStatus.APPROVED) {
                     throw new BizException("只能分部经理操作退团");
                 }
-                musicGroupQuit.setCurrentApproveRole(SysUserRoleEnum.SECTION_MANAGER.ordinal()+"");
+                musicGroupQuit.setCurrentApproveRole(SysUserRoleEnum.SECTION_MANAGER.ordinal() + "");
             }
             if (currentOperatorRoleIds.contains(SysUserRoleEnum.SECTION_MANAGER) && !currentOperatorRoleIds.contains(SysUserRoleEnum.EDUCATIONAL_TEACHER)) {
 
@@ -2962,7 +2917,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (user == null) {
             throw new BizException("学员 {} 信息不存在", userId);
         }
-        Student student = studentDao.get(userId);
+        Student student = studentService.get(userId);
         if (student == null) {
             throw new BizException("学员 {} 信息不存在", userId);
         }
@@ -3847,7 +3802,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     public PageInfo<MusicMemberDto> queryMusicMemberList(MusicMemberQueryInfo queryInfo) {
-        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.PUSH_MEMBER_RENEW_QUIT,queryInfo.getTenantId());
+        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.PUSH_MEMBER_RENEW_QUIT, queryInfo.getTenantId());
         if (StringUtils.isEmpty(configValue)) {
             configValue = "15";
         }

+ 10 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrderPayOpsServiceImpl.java

@@ -80,11 +80,9 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
                 // 云教练支付
                 TenantOrderRecord tenantOrderRecord = tenantOrderRecordService.getOne(new WrapperUtil<TenantOrderRecord>()
                                                                                               .hasEq("order_no_", payParam.getOrderNo()).queryWrapper());
-                log.info("executePayment >>>>> {}", payParam.getOrderNo());
                 if (tenantOrderRecord.getOrderState() == 1) {
-                    throw new Exception("tenantOrderRecord order state is 1");
+                    throw new Exception("订单已支付, 订单号:" + payParam.getOrderNo());
                 }
-                log.info("executePayment checkOrderAndGetParam >>>>> ");
                 payment = checkOrderAndGetParam(payParam,
                                                 tenantOrderRecord,
                                                 TenantOrderRecord::getEnumOrderState,
@@ -100,7 +98,7 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
                 TenantOrderRecord tenantOrderRecord = tenantOrderRecordService.getOne(new WrapperUtil<TenantOrderRecord>()
                                                                                               .hasEq("order_no_", payParam.getOrderNo()).queryWrapper());
                 if (tenantOrderRecord.getOrderState() == 1) {
-                    throw new Exception("tenantOrderRecord order state is 1");
+                    throw new Exception("订单已支付, 订单号:" + payParam.getOrderNo());
                 }
                 payment = checkOrderAndGetParam(payParam,
                                                 tenantOrderRecord,
@@ -110,6 +108,7 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
                                                 tenantOrderRecordService::updateById
                 );
                 //主动延迟检查订单
+                log.info("executePayment delayCheckTenantRecharge >>>>> ");
                 delayCheckTenantRecharge(tenantOrderRecord);
             } else if (platform.equals("teacher")) {
                 TenantPaymentOrder tenantPaymentOrder = tenantPaymentOrderService.queryByOrderNo(payParam.getOrderNo());
@@ -268,6 +267,7 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
         });
     }
 
+    // 检查云教室
     private void delayCheckCloudTeacherOrder(TenantOrderRecord record) {
         RBucket<Object> bucket = redissonClient.getBucket("delay_check_tenant");
         if (!bucket.trySet(1, 15L, TimeUnit.SECONDS)) {
@@ -277,7 +277,7 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
         CompletableFuture.runAsync(() -> {
             //检查5次
             Boolean ret = false;
-            for (int i = 0; i <= 5; i++) {
+            for (int i = 0; i <= 15; i++) {
                 try {
                     ret = cloudTeacherOrderService.payCheck(record);
                     if (ret) break;
@@ -295,20 +295,22 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
         });
     }
 
+    // 检查机构充值
     private void delayCheckTenantRecharge(TenantOrderRecord record) {
         RBucket<Object> bucket = redissonClient.getBucket("delay_check_tenant");
         if (!bucket.trySet(1, 15L, TimeUnit.SECONDS)) {
+            log.info("executePayment bucket retryset >>>>> ");
             return;
         }
         //异步
         CompletableFuture.runAsync(() -> {
             //检查5次
-            for (int i = 0; i <= 5; i++) {
+            for (int i = 0; i <= 15; i++) {
                 try {
                     Boolean ret = tenantOrderRecordService.rechargeCheck(record);
                     if (ret) break;
-                    Thread.sleep(3000);//每3秒触发一次
-                    log.info("delayCheckTenant >>>>>  start {}", i);
+                    Thread.sleep(3000); // 每3秒触发一次
+                    log.info("executePayment 重试 >>>>>  start {}", i);
                 } catch (InterruptedException e) {
                     return;
                 }

+ 57 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -20,10 +20,15 @@ import java.util.stream.Collectors;
 
 import javax.annotation.PostConstruct;
 
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.im.ImFeignService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
@@ -55,15 +60,6 @@ import com.ym.mec.biz.dal.dto.StatDto;
 import com.ym.mec.biz.dal.dto.StudentClassInfoDto;
 import com.ym.mec.biz.dal.dto.StudentCourseTimesDto;
 import com.ym.mec.biz.dal.dto.StudentTeacherCourseDto;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.IndexBaseMonthData;
-import com.ym.mec.biz.dal.entity.MemberRankSetting;
-import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentPreRegistration;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
 import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
@@ -125,12 +121,12 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     private EmployeeDao employeeDao;
     @Autowired
     private OrganizationService organizationService;
-
     @Autowired
     private SysUserFeignService sysUserFeignService;
-    
     @Autowired
     private SysUserCashAccountDao sysUserCashAccountDao;
+    @Autowired
+    private ImFeignService imFeignService;
 
     @Override
     public BaseDAO<Integer, Student> getDAO() {
@@ -182,6 +178,10 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         student.setCurrentGradeNum(studentPreRegistration.getCurrentGradeNum());
         student.setCurrentClass(studentPreRegistration.getCurrentClass());
         student.setTenantId(studentPreRegistration.getTeacherRecommandSubjectId());
+        student.setOrganId(studentPreRegistration.getOrganId());
+        student.setParentName(studentPreRegistration.getParentName());
+        student.setRemake(studentPreRegistration.getRemake());
+        student.setUnitName(studentPreRegistration.getUnitName());
         studentDao.insert(student);
         
         return true;
@@ -1194,4 +1194,50 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     public int updateMembershipEndTime(Integer studentId, Date endTime) {
         return studentDao.updateMembershipEndTime(studentId, endTime);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public <T extends BaseStudentDto> SysUser upSetStudent(T baseStudent) {
+        // 判断用户是否存在
+        SysUser user = studentDao.getUserByPhone(baseStudent.getPhone());
+        if (user == null || user.getId() == null) {
+            user = new SysUser();
+            BeanUtils.copyProperties(baseStudent,user);
+            user.setUsername(baseStudent.getUserName());
+            user.setUserType("STUDENT");
+            // 注册账户信息
+            teacherDao.addSysUser(user);
+            Integer userId = user.getId();
+            ImResult imResult = imFeignService.register(new ImUserModel(userId.toString(), user.getUsername(), user.getAvatar()));
+            if(imResult != null && StringUtils.isNotEmpty(imResult.getToken())) {
+                user.setImToken(imResult.getToken());
+                teacherDao.updateUser(user);
+            }
+            baseStudent.setUserId(user.getId());
+            //添加student
+            this.insertStudent(baseStudent);
+            sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
+        } else {
+            if(!baseStudent.getTenantId().equals(user.getTenantId())){
+                throw new BizException("手机号已注册");
+            }
+            baseStudent.setUserId(user.getId());
+            if (!user.getUserType().contains("STUDENT")) {
+                user.setUserType(user.getUserType() + ",STUDENT");
+                //添加student
+                this.insertStudent(baseStudent);
+            }
+            user.setUsername(baseStudent.getUserName());
+            teacherDao.updateUser(user);
+        }
+        return user;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public  <T extends BaseStudentDto> void insertStudent(T baseStudent){
+        Student student = new Student();
+        BeanUtils.copyProperties(baseStudent,student);
+        student.setIsNewUser(true);
+        studentDao.insert(student);
+    }
 }

+ 17 - 27
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -11,6 +11,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
@@ -135,17 +136,13 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.get(subjectChange.getOrderId().longValue());
 
             if (studentPaymentOrder != null && studentPaymentOrder.getStatus() == DealStatusEnum.ING) {
-
                 // 查询订单状态
                 PayStatus payStatus = studentPaymentOrderService.queryPayStatus(studentPaymentOrder.getPaymentChannel(), studentPaymentOrder.getOrderNo(), studentPaymentOrder.getTransNo());
                 if (payStatus != PayStatus.FAILED) {
                     if (payStatus == PayStatus.SUCCESSED) {
                         throw new BizException("订单已支付成功,请勿重复支付");
-                    }/*else if(payStatus == PayStatus.PAYING){
-                		throw new BizException("订单还在交易中,请稍后重试");
-                	}*/
+                    }
                 }
-
                 studentPaymentOrder.setStatus(DealStatusEnum.CLOSE);
                 studentPaymentOrder.setUpdateTime(date);
                 studentPaymentOrderService.update(studentPaymentOrder);
@@ -174,6 +171,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 
         String channelType = "";
 
+        Integer tenantId = TenantContextHolder.getTenantId();
+
         //只允许使用这类型的优惠券
         String[] checkCoupon = CouponDetailTypeEnum.getAllowType(CouponDetailTypeEnum.ACCESSORIES, CouponDetailTypeEnum.MUSICAL);
         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(subjectChangeParamDto.getCouponIdList(), amount, true, checkCoupon);
@@ -188,7 +187,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         studentPaymentOrder.setUpdateTime(date);
         studentPaymentOrder.setOrganId(subjectChange.getOrganId());
         studentPaymentOrder.setRoutingOrganId(subjectChange.getOrganId());
-
+        studentPaymentOrder.setTenantId(tenantId);
         studentPaymentOrderService.insert(studentPaymentOrder);
 
         subjectChange.setOrderId(studentPaymentOrder.getId().intValue());
@@ -390,12 +389,10 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             if (StringUtils.isNotBlank(goodsIds)) {
                 List<Integer> goodsIdList = Arrays.stream(goodsIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
                 //添加新订单
-                this.addSellOrder(studentPaymentOrder.getId(),
+                this.addSellOrder(studentPaymentOrder,
                         subjectChange.getMusicGroupId(),
                         goodsIdList,
-                        BigDecimal.ZERO,
-                        BigDecimal.ZERO,
-                        subjectChange.getKitGroupPurchaseType(), BigDecimal.ZERO);
+                        subjectChange.getKitGroupPurchaseType());
             }
             //乐保处理
             studentInstrumentService.subjectChangeUpdateInstrument(subjectChange);
@@ -621,13 +618,6 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             subjectChange.setStatus(SubjectChangeStatusEnum.SUCCESSED);
             subjectChange.setSellTime(nowDate);
 
-            //乐器辅件价差大于0时,有销售金额
-//            if (subjectChange.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP) && studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
-//                BigDecimal sellAmount = studentPaymentOrder.getActualAmount().multiply(subjectChange.getGoodsMargin())
-//                        .divide(studentPaymentOrder.getExpectAmount(), 2, BigDecimal.ROUND_HALF_UP);
-//                subjectChange.setSellAmount(sellAmount);
-//            }
-
             if (this.update(subjectChange) <= 0) {
                 throw new BizException("维修单更新失败");
             }
@@ -645,12 +635,9 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                     sellOrderService.refundByOrderId(subjectChange.getOriginalOrderId().longValue(), false);
                 }
                 //添加新订单
-                List<SellOrder> sellOrders = this.addSellOrder(studentPaymentOrder.getId(),
-                        subjectChange.getMusicGroupId(),
+                List<SellOrder> sellOrders = this.addSellOrder(studentPaymentOrder,subjectChange.getMusicGroupId(),
                         goodsIdList,
-                        studentPaymentOrder.getExpectAmount(),
-                        studentPaymentOrder.getBalancePaymentAmount(),
-                        subjectChange.getKitGroupPurchaseType(), studentPaymentOrder.getCouponRemitFee());
+                        subjectChange.getKitGroupPurchaseType());
                 if (sellOrders != null && sellOrders.size() > 0) {
                     SubjectChange change = subjectChangeDao.get(subjectChange.getId());
                     BigDecimal instrumentAmount = sellOrders.stream().filter(e -> e.getType() == SellTypeEnum.INSTRUMENT).map(e -> e.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -767,19 +754,21 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public List<SellOrder> addSellOrder(Long orderId,
+    public List<SellOrder> addSellOrder(StudentPaymentOrder order,
                                         String musicGroupId,
                                         List<Integer> goodsIds,
-                                        BigDecimal totalAmount,
-                                        BigDecimal balance,
-                                        KitGroupPurchaseTypeEnum kitGroupPurchaseType, BigDecimal couponRemitAmount) {
+                                        KitGroupPurchaseTypeEnum kitGroupPurchaseType) {
         if (goodsIds == null || goodsIds.size() <= 0) {
             return null;
         }
+        BigDecimal balance = order.getBalancePaymentAmount();
         if (balance == null) {
             balance = BigDecimal.ZERO;
         }
-        StudentPaymentOrder order = studentPaymentOrderDao.get(orderId);
+        Long orderId = order.getId();
+        BigDecimal totalAmount = order.getExpectAmount();
+        BigDecimal couponRemitAmount = order.getCouponRemitFee();
+        Integer tenantId = order.getTenantId();
         MusicGroup musicGroup = new MusicGroup();
         if (StringUtils.isNotBlank(musicGroupId)) {
             musicGroup = musicGroupDao.get(musicGroupId);
@@ -882,6 +871,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 sellOrder.setSellTime(order.getCreateTime());
                 sellOrder.setCreateIme(new Date());
                 sellOrder.setUpdateTime(new Date());
+                sellOrder.setTenantId(tenantId);
                 if (nowGoods.getType().equals(GoodsType.INSTRUMENT)) {
                     sellOrder.setType(SellTypeEnum.INSTRUMENT);
                 } else if (nowGoods.getType().equals(GoodsType.ACCESSORIES)) {

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectServiceImpl.java

@@ -238,6 +238,10 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
         }
         pageInfo.setRows(dataList);
         return pageInfo;
+    }
 
+    @Override
+    public List<Subject> list() {
+        return subjectDao.list();
     }
 }

+ 4 - 33
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysCouponCodeServiceImpl.java

@@ -6,7 +6,6 @@ import com.ym.mec.biz.dal.dao.SysCouponDao;
 import com.ym.mec.biz.dal.dto.HorseRaceLampDto;
 import com.ym.mec.biz.dal.dto.SysCouponCodeDto;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.CouponTypeEnum;
 import com.ym.mec.biz.dal.page.SysCouponCodeQueryInfo;
 import com.ym.mec.biz.service.SysCouponCodeService;
@@ -30,9 +29,7 @@ import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
 
 @Service
 public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCode> implements SysCouponCodeService {
@@ -296,44 +293,18 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
      * 获取优惠券相关参数-校验优惠券和传入的支付金额是否合法
      *
      * @param couponIdList 优惠券集合
-     * @param total        本次订单所有商品的总数量
-     * @param payAmount    页面传入的本次支付的金额
      * @param allowType    本次允许使用的优惠券类型,null则不验证
      */
     @Override
-    public CouponPayParam getCouponPayParam(List<Integer> couponIdList, Integer total, BigDecimal payAmount, String... allowType) {
+    public CouponPayParam getCouponPayParam(List<Integer> couponIdList, String... allowType) {
         if (CollectionUtils.isEmpty(couponIdList)) {
             return null;
         }
         //查询本次付款使用的优惠券
         List<SysCouponCodeDto> sysCouponCodeDtoList = checkCoupon(couponIdList, allowType);
-        //全类型优惠券的总额度
-        BigDecimal fullTypeTotal = new BigDecimal(0);
-        //非全类型优惠券的总额度
-        BigDecimal notFullTypeTotal = new BigDecimal(0);
-        //非全类型优惠券的总数量
-        AtomicInteger notFullTypeTotalNum = new AtomicInteger(0);
         //优惠券减免的总额度
-        BigDecimal couponRemitTotal = new BigDecimal(0);
-        //交易阈值 最后付款的金额大于该值就不对
-        BigDecimal threshold;
-
-        for (SysCouponCodeDto d : sysCouponCodeDtoList) {
-            if (d.getTypeDetail().equals(CouponDetailTypeEnum.FULLCOUPON.getCode())) {
-                fullTypeTotal = fullTypeTotal.add(d.getFullAmount());
-            } else {
-                notFullTypeTotal = notFullTypeTotal.add(d.getFullAmount());
-                notFullTypeTotalNum.set(notFullTypeTotalNum.incrementAndGet());
-            }
-            couponRemitTotal = couponRemitTotal.add(d.getFaceValue());
-        }
-        //阈值 = (全品类券总面值 ÷ 总商品数量) + (非全品类券总面值 ÷ 非全品类券的数量)
-        threshold = fullTypeTotal.divide(new BigDecimal(total), 3, RoundingMode.HALF_UP)
-                .add(notFullTypeTotal.divide(new BigDecimal(notFullTypeTotalNum.get()), 3, RoundingMode.HALF_UP));
+        BigDecimal couponRemitTotal = WrapperUtil.sumList(sysCouponCodeDtoList, SysCouponCodeDto::getFaceValue);
 
-        if (payAmount.compareTo(threshold) < 0) {
-            throw new BizException("优惠券使用错误,交易失败!");
-        }
         //将各种类型的优惠券合并 算出总面试 总减免金额
         Map<String, CouponPayTypeInfo> couponTypeInfo = new HashMap<>();
         //根据CouponDetailTypeEnum 进行分组集合
@@ -362,8 +333,8 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
      * @param payAmount    页面传入的本次支付的金额
      */
     @Override
-    public CouponPayParam getCouponPayParam(List<Integer> couponIdList, Integer total, BigDecimal payAmount) {
-        return getCouponPayParam(couponIdList, total, payAmount, null);
+    public CouponPayParam getCouponPayParam(List<Integer> couponIdList) {
+        return getCouponPayParam(couponIdList, null);
     }
 
     @Override

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysEmailServiceImpl.java

@@ -21,8 +21,8 @@ public class SysEmailServiceImpl extends ServiceImpl<SysEmailDao, SysEmail> impl
     private final static Logger logger = LoggerFactory.getLogger(SysEmailServiceImpl.class);
 
     @Override
-    public SysEmail query() {
-        return baseMapper.query();
+    public SysEmail query(Integer tenantId) {
+        return baseMapper.query(tenantId);
     }
 }
 

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantInfoServiceImpl.java

@@ -24,10 +24,13 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.service.IdGeneratorService;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.yqpay.DateUtils;
 import com.ym.mec.thirdparty.yqpay.Msg;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.joda.time.LocalDate;
 import org.joda.time.LocalDateTime;
 import org.redisson.api.RBucket;
@@ -40,6 +43,7 @@ import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -82,6 +86,8 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
     private TenantAssetsInfoService assetsInfoService;
     @Autowired
     private StudentService studentService;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     /**
      * 新增机构
@@ -665,4 +671,39 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
     }
 
 
+    @Override
+    public Boolean testEmail() {
+        Map<Integer, String> receivers = new HashMap<>();
+        receivers.put(1, "yanite1234@sina.com");
+        receivers.put(2, "yanite2016@sina.com");
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.EMAIL, MessageTypeEnum.TEST_EMAIL_FIRST, receivers, null, 0, null, "SYSTEM", null, null, null, null);
+
+        return false;
+    }
+    @Override
+    public void saveTenantContextHolder(HttpServletRequest request) {
+        String tenantId = request.getHeader("tenantId");
+        if(StringUtils.isEmpty(tenantId)){
+            SysUser sysUser = sysUserFeignService.queryUserInfo();
+            if(sysUser != null && sysUser.getTenantId() != null){
+                tenantId = sysUser.getTenantId().toString();
+            }
+        }
+        if(StringUtils.isNotEmpty(tenantId)){
+            TenantContextHolder.setTenantId(Integer.parseInt(tenantId));
+            if(Integer.parseInt(tenantId) != -1){
+                TenantInfo tenantInfo = this.baseMapper.getOpenTenant(Integer.parseInt(tenantId));
+                if(tenantInfo != null){
+                    request.setAttribute("datasourceId", tenantInfo.getDataSource());
+                }else {
+                    throw new BizException("机构信息异常,请联系管理员");
+                }
+            }
+        }
+    }
+
+    @Override
+    public TenantInfo queryTenantInfoByOrgan(Integer organId) {
+        return baseMapper.queryTenantInfoByOrgan(organId);
+    }
 }

+ 1 - 8
mec-biz/src/main/resources/config/mybatis/MusicGroupPurchaseListMapper.xml

@@ -33,11 +33,6 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPurchaseList" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-        <!--
-        <selectKey resultClass="int" keyProperty="id" >
-        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-        </selectKey>
-        -->
         INSERT INTO music_group_purchase_list (id_,music_group_id_,goods_id_,purchase_num_,create_time_,update_time_,tenant_id_)
         VALUES(#{id},#{musicGroupId},#{goodsId},#{purchaseNum},now(),now(),#{tenantId})
     </insert>
@@ -49,15 +44,13 @@
             <if test="purchaseNum != null">
                 purchase_num_ = #{purchaseNum},
             </if>
-            <if test="updateTime != null">
-                update_time_ = NOW(),
-            </if>
             <if test="musicGroupId != null">
                 music_group_id_ = #{musicGroupId},
             </if>
             <if test="goodsId != null">
                 goods_id_ = #{goodsId},
             </if>
+            update_time_ = NOW()
         </set>
         WHERE id_ = #{id} and tenant_id_ = #{tenantId}
     </update>

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

@@ -1375,4 +1375,8 @@
             </if>
         </where>
     </select>
+    <select id="getUserByPhone" resultType="com.ym.mec.auth.api.entity.SysUser">
+        SELECT su.id_,su.phone_,su.username_,su.birthdate_,su.gender_,su.user_type_,su.tenant_id_
+        FROM sys_user su WHERE su.phone_ = #{mobile} LIMIT 1
+    </select>
 </mapper>

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

@@ -84,14 +84,13 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentPreRegistration" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-        <!--
-        <selectKey resultClass="int" keyProperty="id" >
-        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-        </selectKey>
-        -->
         INSERT INTO student_pre_registration
-        (id_,music_group_id_,user_id_,phone_,user_name_,gender_,current_grade_,current_grade_num_,current_class_,subject_first_,subject_second_,teacher_recommand_subject_id_,selection_subject_id_,is_allow_adjust_,kit_purchase_method_,cloud_teacher_method_,create_time_,tenant_id_)
-        VALUES(#{id},#{musicGroupId},#{userId},#{phone},#{userName},#{gender},#{currentGrade},#{currentGradeNum},#{currentClass},#{subjectFirst},#{subjectSecond},#{teacherRecommandSubjectId},#{selectionSubjectId},#{isAllowAdjust},#{kitPurchaseMethod},#{cloudTeacherMethod},#{createTime},#{tenantId})
+        (music_group_id_,user_id_,phone_,user_name_,gender_,current_grade_,current_grade_num_,
+         current_class_,subject_first_,subject_second_,teacher_recommand_subject_id_,selection_subject_id_,
+         is_allow_adjust_,kit_purchase_method_,cloud_teacher_method_,create_time_,tenant_id_)
+        VALUES(#{musicGroupId},#{userId},#{phone},#{userName},#{gender},#{currentGrade},#{currentGradeNum},
+               #{currentClass},#{subjectFirst},#{subjectSecond},#{teacherRecommandSubjectId},#{selectionSubjectId},
+               #{isAllowAdjust},#{kitPurchaseMethod},#{cloudTeacherMethod},NOW(),#{tenantId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -107,9 +106,6 @@
             <if test="userName != null">
                 user_name_ = #{userName},
             </if>
-            <if test="id != null">
-                id_ = #{id},
-            </if>
             <if test="currentGrade != null">
                 current_grade_ = #{currentGrade},
             </if>
@@ -146,9 +142,6 @@
             <if test="cloudTeacherMethod != null">
                 cloud_teacher_method_ = #{cloudTeacherMethod},
             </if>
-            <if test="createTime != null">
-                create_time_ = #{createTime},
-            </if>
         </set>
         WHERE id_ = #{id} and tenant_id_ = #{tenantId}
     </update>

+ 1 - 4
mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml

@@ -76,14 +76,11 @@
             <if test="visitTime != null">
                 visit_time_ = #{visitTime},
             </if>
-            <if test="createTime != null">
-                create_time_ = #{createTime},
-            </if>
             <if test="objectId != null">
                 object_id_ = #{objectId},
             </if>
         </set>
-        where id_ = #{id,jdbcType=INTEGER} and tenant_id_ = #{tenantId}
+        WHERE id_ = #{id,jdbcType=INTEGER} AND tenant_id_ = #{tenantId}
     </update>
 
     <select id="queryPage" resultMap="StudentVisit">

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -274,5 +274,8 @@
             #{userId}
         </foreach>
     </select>
+    <select id="list" resultMap="Subject">
+        select * from subject where del_flag_ = 0 and parent_subject_id_ != 0
+    </select>
 
 </mapper>

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

@@ -26,8 +26,7 @@
         </foreach>
     </insert>
     <select id="query" resultType="com.ym.mec.biz.dal.entity.SysEmail">
-        select *
-        from sys_email
+        select * from sys_email where tenant_id_ = #{tenantId}
     </select>
 
 </mapper>

+ 3 - 4
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -148,7 +148,8 @@
     <insert id="addSysUser" parameterType="com.ym.mec.auth.api.entity.SysUser" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO sys_user
-        (tenant_id_,im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,gender_,nation_,birthdate_,email_,id_card_no_,wechat_id_,real_name_,password_)
+        (tenant_id_,im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,
+         update_time_,wx_openid_,qq_openid_,user_type_,gender_,nation_,birthdate_,email_,id_card_no_,wechat_id_,real_name_,password_)
         VALUES(#{tenantId},#{imToken},#{id},#{username},#{salt},#{phone},#{avatar},#{organId},now(),now(),#{wxOpenid},#{qqOpenid},#{userType},
         #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{wechatId},#{realName},#{password})
     </insert>
@@ -342,9 +343,6 @@
             <if test="userType != null">
                 user_type_ = #{userType},
             </if>
-            <if test="updateTime != null">
-                update_time_ = NOW(),
-            </if>
             <if test="lockFlag != null">
                 lock_flag_ = #{lockFlag},
             </if>
@@ -366,6 +364,7 @@
             <if test="imToken != null">
                 im_token_ = #{imToken},
             </if>
+            update_time_ = NOW()
         </set>
         WHERE id_ = #{id} and tenant_id_ = #{tenantId}
     </update>

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/TenantInfoMapper.xml

@@ -105,5 +105,12 @@
                      left join platform_serve_detail psd on tp.serve_detail_id_ = psd.id_
             where t.id_ = #{tenantId}
     </select>
+    <select id="getOpenTenant" resultType="com.ym.mec.biz.dal.entity.TenantInfo">
+        SELECT * FROM tenant_info WHERE id_ = #{tenantId} AND state_ = 1
+    </select>
+    <select id="queryTenantInfoByOrgan" resultType="com.ym.mec.biz.dal.entity.TenantInfo">
+        select * from tenant_info
+        where id_ = (select tenant_id_ from organization where id_ = #{organId})
+    </select>
 
 </mapper>

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

@@ -35,7 +35,7 @@ public enum ErrorEnum {
     ERR_USER_EXIST_IN_ROOM(28, "User exist in room"),
     ERR_CHANGE_SELF_ROLE(29, "Can not change self role"),
     ERR_APPLY_TICKET_INVALID(30, "Apply ticket invalid"),
-    ERR_OVER_MAX_COUNT(31, "Over max count"),
+    ERR_OVER_MAX_COUNT(31, "云教室人数已超上线"),
     ERR_TEACHER_EXIST_IN_ROOM(32, "Teacher exist in room"),
     ERR_DOWNGRADE_ROLE(33, "Can't downgrade role"),
     ERR_CHANGE_ROLE(34, "Only change student to teacher");

+ 2 - 2
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -22,8 +22,8 @@ public class RoomController{
     MessageService messageService;
 
     @RequestMapping(value = "/join", method = RequestMethod.POST)
-    public Object joinRoom(@RequestBody ReqUserData data) throws Exception {
-        return new BaseResponse<>(roomService.joinRoom(data.getRoomId()));
+    public BaseResponse joinRoom(@RequestBody ReqUserData data) throws Exception {
+        return new BaseResponse(roomService.joinRoom(data.getRoomId()));
     }
 
     @RequestMapping(value = "/signIn", method = RequestMethod.POST)

+ 1 - 25
mec-im/src/main/java/com/ym/interceptor/TenantInterceptor.java

@@ -1,13 +1,8 @@
 package com.ym.interceptor;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.TenantInfo;
 import com.ym.mec.biz.service.TenantInfoService;
 import com.ym.mec.common.tenant.TenantContextHolder;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
@@ -17,31 +12,12 @@ import javax.servlet.http.HttpServletResponse;
 @Component
 public class TenantInterceptor extends HandlerInterceptorAdapter {
 
-	private static final String DATA_SOURCE_ID = "datasourceId";
-
-	@Autowired
-	@Lazy
-	private SysUserFeignService sysUserFeignService;
-	
 	@Autowired
 	private TenantInfoService tenantInfoService;
 
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
-		String tenantId = request.getHeader("tenantId");
-		if(StringUtils.isEmpty(tenantId)){
-			SysUser sysUser = sysUserFeignService.queryUserInfo();
-			if(sysUser != null && sysUser.getTenantId() != null){
-				tenantId = sysUser.getTenantId().toString();
-			}
-		}
-		if(StringUtils.isNotEmpty(tenantId)){
-			TenantContextHolder.setTenantId(Integer.parseInt(tenantId));
-			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
-			if(tenantInfo != null){
-				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
-			}
-		}
+		tenantInfoService.saveTenantContextHolder(request);
 		return true;
 	}
 

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

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.ym.common.ApiException;
+import com.ym.common.BaseResponse;
 import com.ym.common.DisplayEnum;
 import com.ym.common.ErrorEnum;
 import com.ym.config.IMProperties;
@@ -126,9 +127,8 @@ public class RoomServiceImpl implements RoomService {
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     @Override
-    public RoomResult joinRoom(String roomId) throws Exception {
+    public BaseResponse joinRoom(String roomId) throws Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
-
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         String userId = sysUser.getId().toString();
         log.info("joinRoom: roomId={}, userId={}", roomId, userId);
@@ -136,7 +136,7 @@ public class RoomServiceImpl implements RoomService {
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
         if(courseSchedule.getTeachMode() == TeachModeEnum.OFFLINE){
-            throw new ApiException(ErrorEnum.JOIN_ROOM_ERROR);
+            return new BaseResponse(ErrorEnum.JOIN_ROOM_ERROR,ErrorEnum.JOIN_ROOM_ERROR.getErrMsg(),null);
         }
         Date curTime = DateTimeUtils.currentUTC();
         //是否提前进入教室
@@ -146,7 +146,7 @@ public class RoomServiceImpl implements RoomService {
         }
         Date addMinutes = DateUtil.addMinutes(curTime, Integer.parseInt(courseBeforeBufferTime));
         if(courseSchedule.getStartClassTime().compareTo(addMinutes) > 0 ){
-            throw new ApiException(ErrorEnum.ROOM_NOT_START);
+            return new BaseResponse(ErrorEnum.ROOM_NOT_START,ErrorEnum.ROOM_NOT_START.getErrMsg(),null);
 //            throw new BizException("网络教室暂未开启,请在{}分钟后进入教室",DateUtil.minutesBetween(addMinutes,courseSchedule.getStartClassTime()));
         }
         final TenantAssetsInfo one = tenantAssetsInfoService.getOne(new WrapperUtil<TenantAssetsInfo>()
@@ -154,7 +154,7 @@ public class RoomServiceImpl implements RoomService {
                 .queryWrapper()
                 .gt("balance_", 0));
         if(one == null){
-            throw new ApiException(ErrorEnum.CLOUD_BALANCE_NOT_FEE);
+            return new BaseResponse(ErrorEnum.CLOUD_BALANCE_NOT_FEE,ErrorEnum.CLOUD_BALANCE_NOT_FEE.getErrMsg(),null);
         }
 
         //是否是连堂课
@@ -201,7 +201,7 @@ public class RoomServiceImpl implements RoomService {
             int count = roomMemberDao.countByRidAndExcludeRole(roomId, RoleEnum.RoleAudience.getValue());
             if (count == roomProperties.getMaxCount()) {
                 log.info("join error Over max count: roomId = {}, userId = {}", roomId,userId);
-                throw new ApiException(ErrorEnum.ERR_OVER_MAX_COUNT);
+                return new BaseResponse(ErrorEnum.ERR_OVER_MAX_COUNT,ErrorEnum.ERR_OVER_MAX_COUNT.getErrMsg(),null);
             }
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
                 roleEnum = RoleTeacher;
@@ -285,7 +285,7 @@ public class RoomServiceImpl implements RoomService {
             roomResult.setSoundVolume(room.getSoundVolume());
         }
         log.info("join room: roomId = {}, userId = {}, userName={}, role = {}", roomId, userId, userName, roleEnum);
-        return roomResult;
+        return new BaseResponse(roomResult);
     }
 
     public RoomMember saveRoomMember(String roomId,String userId){

+ 2 - 1
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -1,5 +1,6 @@
 package com.ym.service;
 
+import com.ym.common.BaseResponse;
 import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.pojo.*;
 import org.apache.ibatis.annotations.Param;
@@ -11,7 +12,7 @@ import java.util.List;
  */
 public interface RoomService {
     //everyone
-    RoomResult joinRoom(String roomId) throws Exception;
+    BaseResponse joinRoom(String roomId) throws Exception;
 
     Integer getCurrentCourseId(String roomId);
 

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/controller/StudentController.java

@@ -39,7 +39,7 @@ public class StudentController extends BaseController {
         		return succeed("您已注册,请直接下载APP!");
         	}
         }
-        
+
         return studentService.register(studentPreRegistration) ? succeed() : failed();
     }
 

+ 2 - 2
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -253,9 +253,9 @@ public class StudentOrderController extends BaseController {
     })
     public Object executePayment(BigDecimal amount, String orderNo, String payChannel, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String sign, String code, String platform) {
         try {
-            logger.info("=== 支付金额 {}, 订单号 {}, 支付通道 {} 订单主题 {} 订单Body {} 签名 {} Code {}, platform{}", amount, orderNo, payChannel, orderSubject, orderBody, sign, code, platform);
+            logger.info("=== === === 支付金额 {}, 订单号 {}, 支付通道 {} 订单主题 {} 订单Body {} 签名 {} Code {}, platform {}", amount, orderNo, payChannel, orderSubject, orderBody, sign, code, platform);
             Map<String, Object> payment = orderPayOpsService.executePayment(amount, orderNo, payChannel, returnUrl, orderSubject, orderBody, sign, code, platform);
-            logger.info("=== 支付完成");
+            logger.info("=== === === 支付完成");
             return succeed(payment);
         } catch (Exception e) {
             return failed(e.getMessage());

+ 1 - 3
mec-student/src/main/java/com/ym/mec/student/controller/SubjectChangeController.java

@@ -54,9 +54,7 @@ public class SubjectChangeController extends BaseController {
             PayStatus payStatus = studentPaymentOrderService.queryPayStatus(applyOrder.getPaymentChannel(), applyOrder.getOrderNo(), applyOrder.getTransNo());
             if(payStatus == PayStatus.SUCCESSED){
         		throw new BizException("订单已支付成功,请勿重复支付");
-        	}/*else if(payStatus == PayStatus.PAYING){
-        		throw new BizException("订单还在交易中,请稍后重试");
-        	}*/
+        	}
             return failed(HttpStatus.CONTINUE, "您有待支付的订单");
         }
         Map payMap = subjectChangeService.payChange(subjectChangeParamDto);

+ 6 - 6
mec-student/src/main/java/com/ym/mec/student/controller/SysCouponCodeController.java

@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 
 @RequestMapping("sysCouponCode")
@@ -30,17 +31,16 @@ public class SysCouponCodeController extends BaseController {
     @Autowired
     private SysCouponIssueRecordService couponIssueRecordService;
 
-
     @ApiOperation("分页查询")
     @RequestMapping(value = "queryPage")
     public HttpResponseResult queryPage(SysCouponCodeQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser != null && sysUser.getId() != null) {
+        if (Objects.isNull(queryInfo.getUserId())) {
+            SysUser sysUser = sysUserFeignService.queryUserInfo();
+            if (Objects.isNull(sysUser.getId())) {
+                return failed("请登录");
+            }
             queryInfo.setUserId(sysUser.getId());
         }
-        if (queryInfo.getUserId() == null) {
-            return failed("请登录");
-        }
         return succeed(sysCouponCodeService.querySysCouponUseList(queryInfo));
     }
 

+ 1 - 26
mec-student/src/main/java/com/ym/mec/student/interceptor/TenantInterceptor.java

@@ -1,16 +1,10 @@
 package com.ym.mec.student.interceptor;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.TenantInfo;
 import com.ym.mec.biz.service.TenantInfoService;
 import com.ym.mec.common.tenant.TenantContextHolder;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-import springfox.documentation.annotations.Cacheable;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -18,31 +12,12 @@ import javax.servlet.http.HttpServletResponse;
 @Component
 public class TenantInterceptor extends HandlerInterceptorAdapter {
 
-	private static final String DATA_SOURCE_ID = "datasourceId";
-
-	@Autowired
-	@Lazy
-	private SysUserFeignService sysUserFeignService;
-	
 	@Autowired
 	private TenantInfoService tenantInfoService;
 
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
-		String tenantId = request.getHeader("tenantId");
-		if(StringUtils.isEmpty(tenantId)){
-			SysUser sysUser = sysUserFeignService.queryUserInfo();
-			if(sysUser != null && sysUser.getTenantId() != null){
-				tenantId = sysUser.getTenantId().toString();
-			}
-		}
-		if(StringUtils.isNotEmpty(tenantId)){
-			TenantContextHolder.setTenantId(Integer.parseInt(tenantId));
-			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
-			if(tenantInfo != null){
-				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
-			}
-		}
+		tenantInfoService.saveTenantContextHolder(request);
 		return true;
 	}
 

+ 1 - 25
mec-teacher/src/main/java/com/ym/mec/teacher/interceptor/TenantInterceptor.java

@@ -1,13 +1,8 @@
 package com.ym.mec.teacher.interceptor;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.TenantInfo;
 import com.ym.mec.biz.service.TenantInfoService;
 import com.ym.mec.common.tenant.TenantContextHolder;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
@@ -17,31 +12,12 @@ import javax.servlet.http.HttpServletResponse;
 @Component
 public class TenantInterceptor extends HandlerInterceptorAdapter {
 
-	private static final String DATA_SOURCE_ID = "datasourceId";
-
-	@Autowired
-	@Lazy
-	private SysUserFeignService sysUserFeignService;
-	
 	@Autowired
 	private TenantInfoService tenantInfoService;
 
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
-		String tenantId = request.getHeader("tenantId");
-		if(StringUtils.isEmpty(tenantId)){
-			SysUser sysUser = sysUserFeignService.queryUserInfo();
-			if(sysUser != null && sysUser.getTenantId() != null){
-				tenantId = sysUser.getTenantId().toString();
-			}
-		}
-		if(StringUtils.isNotEmpty(tenantId)){
-			TenantContextHolder.setTenantId(Integer.parseInt(tenantId));
-			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
-			if(tenantInfo != null){
-				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
-			}
-		}
+		tenantInfoService.saveTenantContextHolder(request);
 		return true;
 	}
 

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

@@ -49,7 +49,7 @@ public class CloudTeacherOrderController extends BaseController {
 
     @ApiOperation(value = "查询未激活团练宝用户")
     @PostMapping("/queryInactive")
-    @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryUnActive')")
+    @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryInActive')")
     public HttpResponseResult<PageInfo<CloudTeacherStudent>> queryInactive(@RequestBody CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
         cloudTeacherOrderQueryInfo.setStatus(1);
         if (cloudTeacherOrderQueryInfo.getMusicGroupId() == null) {

+ 5 - 3
mec-web/src/main/java/com/ym/mec/web/controller/ImportController.java

@@ -68,13 +68,15 @@ public class ImportController extends BaseController {
     @ApiOperation(value = "导入兑换码分配模板")
     @PostMapping(value = "importRedemptionCode")
     @PreAuthorize("@pcs.hasPermissions('import/importRedemptionCode')")
-    public HttpResponseResult<List<AppRedemptionCode>> importRedemptionCode(@RequestParam("file") MultipartFile file) throws Exception {
+    public HttpResponseResult<String> importRedemptionCode(@RequestParam("file") MultipartFile file) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
-        List<AppRedemptionCode> ret = appRedemptionCodeService.importRedemptionCode(file);
-        return succeed(ret);
+        String msg = appRedemptionCodeService.importRedemptionCode(file);
+        HttpResponseResult response = succeed(null);
+        response.setMsg(msg);
+        return response;
     }
 
     @ApiOperation(value = "导入财务管理订单")

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

@@ -103,9 +103,17 @@ public class SubjectController extends BaseController {
 
     @ApiOperation(value = "搜索按Id和名称")
     @PostMapping("/queryPageByIdOrName")
-    // @PreAuthorize("@pcs.hasPermissions('subject/queryPageByIdOrName')")
+    @PreAuthorize("@pcs.hasPermissions('subject/queryPageByIdOrName')")
     public Object queryPageByIdOrName(SubjectQueryInfo queryInfo){
         return succeed(subjectService.queryPageByIdOrName(queryInfo));
     }
 
+
+    @ApiOperation(value = "列出所有分部")
+    @PostMapping("/list")
+    // @PreAuthorize("@pcs.hasPermissions('subject/list')")
+    public Object list(){
+        return succeed(subjectService.list());
+    }
+
 }

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

@@ -1,8 +1,10 @@
 package com.ym.mec.web.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler;
 import com.ym.mec.biz.dal.entity.SysEmail;
 import com.ym.mec.biz.service.SysEmailService;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -40,7 +42,8 @@ public class SysEmailController extends BaseController {
     @GetMapping("/query")
     @PreAuthorize("@pcs.hasPermissions('sysEmail/query')")
     public HttpResponseResult<SysEmail> query() {
-        return succeed(sysEmailService.query());
+        Integer tenantId = TenantContextHolder.getTenantId();
+        return succeed(sysEmailService.query(tenantId));
     }
 
 }

+ 13 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TenantInfoController.java

@@ -79,6 +79,13 @@ public class TenantInfoController extends BaseController {
         return succeed(tenantInfoService.queryTenantInfoCheck(id));
     }
 
+    @ApiOperation("查询单个机构详情按分部Id")
+    @GetMapping(value = "/queryTenantInfoByOrgan/{organId}")
+    public Object queryTenantInfoByOrgan(@ApiParam(value = "分部ID", required = true) @PathVariable("organId") Integer organId) {
+        return succeed(tenantInfoService.queryTenantInfoByOrgan(organId));
+    }
+
+
     @ApiOperation("查询机构产品")
     @GetMapping(value = "/queryTenantInfoSumm")
     public HttpResponseResult<TenantProductSumm> queryTenantInfoProductSumm() {
@@ -147,4 +154,10 @@ public class TenantInfoController extends BaseController {
     ) throws Exception {
         return succeed(tenantInfoService.rechargeCheck(orderNo));
     }
+
+    @ApiOperation(value = "测试邮件")
+    @GetMapping("/testEmail")
+    public HttpResponseResult<Boolean> testEmail() throws Exception {
+        return succeed(tenantInfoService.testEmail());
+    }
 }

+ 1 - 26
mec-web/src/main/java/com/ym/mec/web/interceptor/TenantInterceptor.java

@@ -1,14 +1,8 @@
 package com.ym.mec.web.interceptor;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.TenantInfo;
 import com.ym.mec.biz.service.TenantInfoService;
-import com.ym.mec.common.filters.TenantIdThreadLocal;
 import com.ym.mec.common.tenant.TenantContextHolder;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
@@ -18,31 +12,12 @@ import javax.servlet.http.HttpServletResponse;
 @Component
 public class TenantInterceptor extends HandlerInterceptorAdapter {
 
-	private static final String DATA_SOURCE_ID = "datasourceId";
-
-	@Autowired
-	@Lazy
-	private SysUserFeignService sysUserFeignService;
-	
 	@Autowired
 	private TenantInfoService tenantInfoService;
 
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
-		String tenantId = request.getHeader("tenantId");
-		if(StringUtils.isEmpty(tenantId)){
-			SysUser sysUser = sysUserFeignService.queryUserInfo();
-			if(sysUser != null && sysUser.getTenantId() != null){
-				tenantId = sysUser.getTenantId().toString();
-			}
-		}
-		if(StringUtils.isNotEmpty(tenantId)){
-			TenantContextHolder.setTenantId(Integer.parseInt(tenantId));
-			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
-			if(tenantInfo != null){
-				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
-			}
-		}
+		tenantInfoService.saveTenantContextHolder(request);
 		return true;
 	}