|  | @@ -0,0 +1,123 @@
 | 
	
		
			
				|  |  | +package com.yonge.cooleshow.admin.controller.open;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.Student;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.TenantGroup;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.mapper.TenantGroupMapper;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.StudentService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.TeacherService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.common.controller.BaseController;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.common.entity.HttpResponseResult;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.tenant.vo.StudentVo;
 | 
	
		
			
				|  |  | +import com.yonge.toolset.base.exception.BizException;
 | 
	
		
			
				|  |  | +import io.swagger.annotations.Api;
 | 
	
		
			
				|  |  | +import io.swagger.annotations.ApiOperation;
 | 
	
		
			
				|  |  | +import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.validation.annotation.Validated;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.PostMapping;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.RequestBody;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.RequestMapping;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.RestController;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.util.Objects;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +@Slf4j
 | 
	
		
			
				|  |  | +@RestController
 | 
	
		
			
				|  |  | +@RequestMapping("${app-config.url.admin:}/open/student")
 | 
	
		
			
				|  |  | +@Api(value = "学生表", tags = "学生表")
 | 
	
		
			
				|  |  | +public class OpenStudentController extends BaseController {
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private StudentService studentService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private TenantInfoService tenantInfoService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysUserFeignService sysUserFeignService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SmsCodeService smsCodeService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private TenantGroupMapper tenantGroupMapper;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @PostMapping("/save")
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "新增/修改", notes = "传入Student,换绑时按照返回错误码5004判断,是否需要换绑,updateTenant=true表示换绑")
 | 
	
		
			
				|  |  | +    public HttpResponseResult<Boolean> save(@Validated @RequestBody StudentVo.Student student) {
 | 
	
		
			
				|  |  | +        String code = student.getCode();
 | 
	
		
			
				|  |  | +        if (StringUtils.isEmpty(code)) {
 | 
	
		
			
				|  |  | +            throw new BizException("验证码不能为空");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (!smsCodeService.verifyValidCode(student.getPhone(), code, "REGISTER")) {
 | 
	
		
			
				|  |  | +            throw new BizException("验证码错误");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Long tenantId = student.getTenantId();
 | 
	
		
			
				|  |  | +        if (tenantId == null) {
 | 
	
		
			
				|  |  | +            throw new BizException("未指定机构");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        TenantInfo tenantInfo = tenantInfoService.getById(tenantId);
 | 
	
		
			
				|  |  | +        if (tenantInfo == null) {
 | 
	
		
			
				|  |  | +            throw new BizException("机构不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Long tenantGroupId = student.getTenantGroupId();
 | 
	
		
			
				|  |  | +        TenantGroup tenantGroup = tenantGroupMapper.selectById(tenantGroupId);
 | 
	
		
			
				|  |  | +        if (tenantGroup == null) {
 | 
	
		
			
				|  |  | +            throw new BizException("该链接已失效");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Long studentId = student.getId();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (studentId == null) {
 | 
	
		
			
				|  |  | +            SysUser sysUser = sysUserFeignService.queryUserByMobile(student.getPhone());
 | 
	
		
			
				|  |  | +            if (sysUser != null && sysUser.getUserType().contains(ClientEnum.STUDENT.getCode())) {
 | 
	
		
			
				|  |  | +                studentId = sysUser.getId();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (studentId != null) {
 | 
	
		
			
				|  |  | +            Student one = studentService.lambdaQuery()
 | 
	
		
			
				|  |  | +                    .eq(Student::getUserId, studentId)
 | 
	
		
			
				|  |  | +                    .last("limit 1").one();
 | 
	
		
			
				|  |  | +            if (one != null) {
 | 
	
		
			
				|  |  | +                if (one.getTenantId().equals(-1L)) {
 | 
	
		
			
				|  |  | +                    throw new BizException("该手机号已经注册为平台学生");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (one.getTenantId().equals(tenantId)) {
 | 
	
		
			
				|  |  | +                    //已经注册当前机构,请勿重复注册
 | 
	
		
			
				|  |  | +                    throw new BizException("已经注册当前机构,请勿重复注册");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                // 转到其他机构
 | 
	
		
			
				|  |  | +                if ((!Objects.equals(student.getTenantId(), one.getTenantId()))) {
 | 
	
		
			
				|  |  | +                    if (student.getUpdateTenant() == null || Boolean.FALSE.equals(student.getUpdateTenant())) {
 | 
	
		
			
				|  |  | +                        TenantInfo oldTenant = tenantInfoService.getById(one.getTenantId());
 | 
	
		
			
				|  |  | +                        throw new BizException(5004, oldTenant.getName());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 更新头像
 | 
	
		
			
				|  |  | +                if (StringUtils.isEmpty(student.getAvatar())) {
 | 
	
		
			
				|  |  | +                    student.setAvatar(one.getAvatar());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            student.setId(studentId);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        StudentWrapper.Student studentInfo = JSON.parseObject(JSON.toJSONString(student), StudentWrapper.Student.class);
 | 
	
		
			
				|  |  | +        studentInfo.setTenantId(tenantInfo.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        studentService.save(studentInfo);
 | 
	
		
			
				|  |  | +        return succeed();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |