|  | @@ -9,7 +9,6 @@ import com.ym.mec.auth.api.entity.SysRole;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.enums.SysUserType;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.OrganizationDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SysConfigDao;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.TenantInfoDao;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.TenantConfigDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.TenantInfoDto;
 | 
	
	
		
			
				|  | @@ -38,6 +37,7 @@ import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  |  import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.dao.DuplicateKeyException;
 | 
	
		
			
				|  |  | +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -81,8 +81,6 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private IdGeneratorService idGenerator;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    private SysConfigDao sysConfigDao;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  |      private TenantOrderRecordService tenantOrderRecordService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private TenantAssetsInfoService assetsInfoService;
 | 
	
	
		
			
				|  | @@ -94,6 +92,8 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |      private TenantInfoSendMsgService tenantInfoSendMsgService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private SysConfigService sysConfigService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ContractService contractService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 新增机构
 | 
	
	
		
			
				|  | @@ -267,6 +267,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |              tenantInfo.setUpdatedBy(userId);
 | 
	
		
			
				|  |  |              tenantInfo.setUpdatedTime(new Date());
 | 
	
		
			
				|  |  |              tenantInfo.setState(state);
 | 
	
		
			
				|  |  | +            String pw = null;
 | 
	
		
			
				|  |  |              //状态= 开通
 | 
	
		
			
				|  |  |              if (state == 1) {
 | 
	
		
			
				|  |  |                  if (tenantInfo.getPayState() == 0) {
 | 
	
	
		
			
				|  | @@ -274,11 +275,16 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  //已支付完成 并且 没有创建用户信息
 | 
	
		
			
				|  |  |                  if (tenantInfo.getPayState() == 1 && Objects.isNull(tenantInfo.getUserId())) {
 | 
	
		
			
				|  |  | -                    //初次开通
 | 
	
		
			
				|  |  | -                    checkFirstOpen(tenantInfo);
 | 
	
		
			
				|  |  | +                    //初次开通 返回密码
 | 
	
		
			
				|  |  | +                    pw = checkFirstOpen(tenantInfo);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              baseMapper.updateById(tenantInfo);
 | 
	
		
			
				|  |  | +            //在执行了修改机构信息之后,并且有返回密码(第一次开通机构会生成登录密码并返回)就发送邮件及短信提醒
 | 
	
		
			
				|  |  | +            if (StringUtils.isNotBlank(pw)) {
 | 
	
		
			
				|  |  | +                Object[] msg = {tenantInfo.getName(), tenantInfo.getPhone(), pw, "https://online.dayaedu.com"};
 | 
	
		
			
				|  |  | +                tenantInfoSendMsgService.platformSendToAll(tenantInfo.getUserId(), tenantInfo.getEmail(), tenantInfo.getPhone(), msg);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          throw new BizException("传入机构状态参数异常!");
 | 
	
	
		
			
				|  | @@ -288,13 +294,14 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |       * 第一次开通服务
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param tenantInfo 机构信息
 | 
	
		
			
				|  |  | +     * @return 初次开通机构返回机构密码
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private void checkFirstOpen(TenantInfo tenantInfo) {
 | 
	
		
			
				|  |  | +    private String checkFirstOpen(TenantInfo tenantInfo) {
 | 
	
		
			
				|  |  |          Integer tenantId = tenantInfo.getId();
 | 
	
		
			
				|  |  |          SysUser user = sysUserFeignService.queryUserByMobile(tenantInfo.getPhone());
 | 
	
		
			
				|  |  |          if (Objects.nonNull(user)) {
 | 
	
		
			
				|  |  |              if (user.getUserType().contains(SysUserType.SYSTEM.getCode())) {
 | 
	
		
			
				|  |  | -                return;
 | 
	
		
			
				|  |  | +                return null;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -322,11 +329,15 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |          Integer orgId = createOrg(tenantInfo);
 | 
	
		
			
				|  |  |          //建立角色
 | 
	
		
			
				|  |  |          Integer roleId = createRole(tenantInfo);
 | 
	
		
			
				|  |  | +        //密码规则 gym + 随机6位数字
 | 
	
		
			
				|  |  | +        String pw = new BCryptPasswordEncoder().encode("gym" + (int) ((Math.random() * 9 + 1) * 100000));
 | 
	
		
			
				|  |  |          // 创建账号、用户信息、用户和角色关系
 | 
	
		
			
				|  |  | -        createUser(tenantInfo, orgId, Lists.newArrayList(roleId));
 | 
	
		
			
				|  |  | +        createUser(tenantInfo, orgId, Lists.newArrayList(roleId), pw);
 | 
	
		
			
				|  |  |          //建立角色和菜单关系数据
 | 
	
		
			
				|  |  |          Lists.partition(collectMenuId, 50)
 | 
	
		
			
				|  |  |                  .forEach(idList -> employeeService.batchInsertRoleMenu(roleId, idList, tenantId));
 | 
	
		
			
				|  |  | +        //添加签章信息
 | 
	
		
			
				|  |  | +        contractService.addTsign(tenantInfo.getTsignCode(), tenantInfo.getTsignName());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          Date now = new Date();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -341,11 +352,10 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |          Date expiryDate = getExpiryDate(productInfo.getExpiryCount(), productInfo.getExpiryUnit(), now);
 | 
	
		
			
				|  |  |          productInfo.setExpiryDate(expiryDate);
 | 
	
		
			
				|  |  |          tenantProductInfoService.updateById(productInfo);
 | 
	
		
			
				|  |  | -        //发送邮件及短信提醒
 | 
	
		
			
				|  |  | -        Object[] msg = {tenantInfo.getName(), tenantInfo.getPhone(), "123456", "https://online.dayaedu.com"};
 | 
	
		
			
				|  |  | -        tenantInfoSendMsgService.platformSendToAll(tenantInfo.getEmail(), tenantInfo.getPhone(), msg);
 | 
	
		
			
				|  |  |          //释放锁
 | 
	
		
			
				|  |  |          bucket.delete();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return pw;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //计算过期时间
 | 
	
	
		
			
				|  | @@ -383,8 +393,8 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |          return sysRole.getId();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    //创建账号、用户信息、用户和角色关系
 | 
	
		
			
				|  |  | -    private void createUser(TenantInfo tenantInfo, Integer orgId, List<Integer> roles) {
 | 
	
		
			
				|  |  | +    //创建账号、用户信息、用户和角色关系 返回密码
 | 
	
		
			
				|  |  | +    private void createUser(TenantInfo tenantInfo, Integer orgId, List<Integer> roles, String pw) {
 | 
	
		
			
				|  |  |          Employee e = new Employee();
 | 
	
		
			
				|  |  |          e.setTenantId(tenantInfo.getId());
 | 
	
		
			
				|  |  |          e.setPhone(tenantInfo.getPhone());
 | 
	
	
		
			
				|  | @@ -395,6 +405,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |          e.setRoleIds(roles);
 | 
	
		
			
				|  |  |          e.setUserType(SysUserType.SYSTEM.getCode());
 | 
	
		
			
				|  |  |          e.setOrganIdList(String.valueOf(orgId));
 | 
	
		
			
				|  |  | +        e.setPassword(pw);
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              log.info("createUser >>>> {}", e);
 | 
	
		
			
				|  |  |              employeeService.add(e);
 | 
	
	
		
			
				|  | @@ -563,7 +574,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |          TenantInfo tenantInfo = this.getById(tenantId);
 | 
	
		
			
				|  |  |          //发送邮件及短信提醒
 | 
	
		
			
				|  |  |          Object[] msg = {tenantInfo.getName()};
 | 
	
		
			
				|  |  | -        tenantInfoSendMsgService.platformSendToAll(tenantInfo.getEmail(), tenantInfo.getPhone(), msg);
 | 
	
		
			
				|  |  | +        tenantInfoSendMsgService.platformSendToAll(tenantInfo.getUserId(), tenantInfo.getEmail(), tenantInfo.getPhone(), msg);
 | 
	
		
			
				|  |  |          //释放锁
 | 
	
		
			
				|  |  |          bucket.delete();
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -831,7 +842,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 | 
	
		
			
				|  |  |      private void send(List<TenantInfo> infoList, String dateStr) {
 | 
	
		
			
				|  |  |          infoList.forEach(t -> {
 | 
	
		
			
				|  |  |              Object[] objects = {t.getName(), dateStr};
 | 
	
		
			
				|  |  | -            tenantInfoSendMsgService.platformSendToAll(t.getEmail(), t.getPhone(), objects);
 | 
	
		
			
				|  |  | +            tenantInfoSendMsgService.platformSendToAll(t.getUserId(), t.getEmail(), t.getPhone(), objects);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 |