소스 검색

1.自验证问题修改

yuanliang 1 년 전
부모
커밋
993222d276

+ 123 - 95
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java

@@ -1,42 +1,21 @@
 package com.yonge.cooleshow.admin.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Date;
-import java.util.List;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-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 com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.VipSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VipRecordSearch;
+import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.TenantUnbindRecordService;
 import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
 import com.yonge.cooleshow.biz.dal.vo.VipRecordVo;
+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.common.enums.UserLockFlag;
@@ -47,6 +26,29 @@ import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.excel.POIUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+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 javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.List;
 
 @RestController
 @RequestMapping("/student")
@@ -64,6 +66,12 @@ public class StudentController extends BaseController {
     @Autowired
     private VipCardRecordService vipCardRecordService;
 
+    @Autowired
+    private SmsCodeService smsCodeService;
+
+    @Autowired
+    private TenantUnbindRecordService tenantUnbindRecordService;
+
 
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
@@ -71,49 +79,49 @@ public class StudentController extends BaseController {
             @ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
     })
     @PreAuthorize("@pcs.hasPermissions('student/detail')")
-    public HttpResponseResult<StudentVo> detail(@PathVariable("id") Long id){
-		StudentVo detail = studentService.detail(id);
-		return succeed(detail);
-	}
+    public HttpResponseResult<StudentVo> detail(@PathVariable("id") Long id) {
+        StudentVo detail = studentService.detail(id);
+        return succeed(detail);
+    }
 
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入StudentSearch")
     @PreAuthorize("@pcs.hasPermissions('student/page')")
     public HttpResponseResult<PageInfo<StudentVo>> page(@RequestBody StudentSearch query) {
-    	
-    	if(StringUtils.isNotBlank(query.getUserStatus())){
-    		switch (query.getUserStatus()) {
-			case "LOCKED":
-				query.setDelFlag(YesOrNoEnum.NO);
-				query.setLockFlag(UserLockFlag.LOCKED);
-				break;
-			case "CLOSED":
-				query.setDelFlag(YesOrNoEnum.YES);
-				break;
-
-			default:
-				query.setDelFlag(YesOrNoEnum.NO);
-				query.setLockFlag(UserLockFlag.NORMAL);
-				break;
-			}
-    	}
-    	
-		IPage<StudentVo> pages = studentService.selectPage(PageUtil.getPage(query), query);
-		List<StudentVo> rows = pages.getRecords();
-		
-		for(StudentVo vo : rows){
-			if(vo.getDelFlag() == YesOrNoEnum.YES){
-				vo.setUserStatus(UserStatusEnum.CLOSED);
-			}else{
-				if(vo.getLockFlag() == UserLockFlag.LOCKED){
-					vo.setUserStatus(UserStatusEnum.LOCKED);
-				}else{
-					vo.setUserStatus(UserStatusEnum.NORMAL);
-				}
-			}
-		}
+
+        if (StringUtils.isNotBlank(query.getUserStatus())) {
+            switch (query.getUserStatus()) {
+                case "LOCKED":
+                    query.setDelFlag(YesOrNoEnum.NO);
+                    query.setLockFlag(UserLockFlag.LOCKED);
+                    break;
+                case "CLOSED":
+                    query.setDelFlag(YesOrNoEnum.YES);
+                    break;
+
+                default:
+                    query.setDelFlag(YesOrNoEnum.NO);
+                    query.setLockFlag(UserLockFlag.NORMAL);
+                    break;
+            }
+        }
+
+        IPage<StudentVo> pages = studentService.selectPage(PageUtil.getPage(query), query);
+        List<StudentVo> rows = pages.getRecords();
+
+        for (StudentVo vo : rows) {
+            if (vo.getDelFlag() == YesOrNoEnum.YES) {
+                vo.setUserStatus(UserStatusEnum.CLOSED);
+            } else {
+                if (vo.getLockFlag() == UserLockFlag.LOCKED) {
+                    vo.setUserStatus(UserStatusEnum.LOCKED);
+                } else {
+                    vo.setUserStatus(UserStatusEnum.NORMAL);
+                }
+            }
+        }
         return succeed(PageUtil.pageInfo(pages));
-	}
+    }
 
     @ApiOperation(value = "学生列表导出")
     @PostMapping("export")
@@ -121,45 +129,45 @@ public class StudentController extends BaseController {
     public void export(HttpServletResponse response, @RequestBody StudentSearch queryInfo) throws IOException {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
-    	
-    	if(StringUtils.isNotBlank(queryInfo.getUserStatus())){
-    		switch (queryInfo.getUserStatus()) {
-			case "LOCKED":
-				queryInfo.setDelFlag(YesOrNoEnum.NO);
-				queryInfo.setLockFlag(UserLockFlag.LOCKED);
-				break;
-			case "CLOSED":
-				queryInfo.setDelFlag(YesOrNoEnum.YES);
-				break;
-
-			default:
-				queryInfo.setDelFlag(YesOrNoEnum.NO);
-				queryInfo.setLockFlag(UserLockFlag.NORMAL);
-				break;
-			}
-    	}
+
+        if (StringUtils.isNotBlank(queryInfo.getUserStatus())) {
+            switch (queryInfo.getUserStatus()) {
+                case "LOCKED":
+                    queryInfo.setDelFlag(YesOrNoEnum.NO);
+                    queryInfo.setLockFlag(UserLockFlag.LOCKED);
+                    break;
+                case "CLOSED":
+                    queryInfo.setDelFlag(YesOrNoEnum.YES);
+                    break;
+
+                default:
+                    queryInfo.setDelFlag(YesOrNoEnum.NO);
+                    queryInfo.setLockFlag(UserLockFlag.NORMAL);
+                    break;
+            }
+        }
         List<StudentVo> rows = studentService.selectPage(PageUtil.getPage(queryInfo), queryInfo).getRecords();
         if (rows.size() < 1) {
             throw new BizException("没有可导出数据");
         }
-		
-		for(StudentVo vo : rows){
-			if(vo.getDelFlag() == YesOrNoEnum.YES){
-				vo.setUserStatus(UserStatusEnum.CLOSED);
-			}else{
-				if(vo.getLockFlag() == UserLockFlag.LOCKED){
-					vo.setUserStatus(UserStatusEnum.LOCKED);
-				}else{
-					vo.setUserStatus(UserStatusEnum.NORMAL);
-				}
-			}
-		}
+
+        for (StudentVo vo : rows) {
+            if (vo.getDelFlag() == YesOrNoEnum.YES) {
+                vo.setUserStatus(UserStatusEnum.CLOSED);
+            } else {
+                if (vo.getLockFlag() == UserLockFlag.LOCKED) {
+                    vo.setUserStatus(UserStatusEnum.LOCKED);
+                } else {
+                    vo.setUserStatus(UserStatusEnum.NORMAL);
+                }
+            }
+        }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生编号", "学生姓名", "真实姓名", "性别", "出生日期",
-                    "年龄", "专业", "手机号码", "是否是会员", "注册时间","用户状态","学生来源"}, new String[]{
-                    "userId","username" , "realName", "gender.msg", "birthdate", "age", "subjectName", "phone",
-                    "isVip.msg", "createTime", "userStatus.msg","tenantName"}, rows);
+                    "年龄", "专业", "手机号码", "是否是会员", "注册时间", "用户状态", "学生来源"}, new String[]{
+                    "userId", "username", "realName", "gender.msg", "birthdate", "age", "subjectName", "phone",
+                    "isVip.msg", "createTime", "userStatus.msg", "tenantName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=学生列表-" + DateUtil.getDate(new Date()) + ".xls");
@@ -185,7 +193,7 @@ public class StudentController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('student/addVip')")
     public HttpResponseResult<Boolean> addVip(@Valid @RequestBody VipSubmitReq vipSubmitReq) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
+        if (sysUser == null || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
         return succeed(memberPriceSettingsService.addVip(vipSubmitReq, ClientEnum.STUDENT, sysUser));
@@ -200,4 +208,24 @@ public class StudentController extends BaseController {
         recordSearch.setClient(ClientEnum.STUDENT);
         return succeed(vipCardRecordService.vipRecord(recordSearch));
     }
+
+    @PostMapping("/updateTenant")
+    @ApiOperation(value = "修改机构")
+    public HttpResponseResult<Boolean> updateTenant(@RequestBody StudentWrapper.StudentUpdateTenant updateTenant) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        if (user.getTenantId() == null || user.getTenantId() == -1) {
+            return failed("非机构用户不允许更换机构");
+        }
+
+        Student student = studentService.getById(user.getId());
+        if (student == null) {
+            return failed("未查询到学生的信息");
+        }
+
+        studentService.updateTenant(student, updateTenant.getTenantId());
+        return succeed();
+    }
 }

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

@@ -122,4 +122,11 @@ public interface StudentService extends IService<Student> {
      */
     void importStudentExcel(List<ExcelDataReaderProperty<StudentWrapper.StudentExport>> dataList,Long tenantId,
                             Long suerId);
+
+    /**
+     * 学生修改机构
+     * @param student 学生信息
+     * @param toTenantId 机构ID
+     */
+    void updateTenant(Student student, Long toTenantId);
 }

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

@@ -15,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import com.yonge.cooleshow.biz.dal.dao.UserBindingTeacherDao;
 import com.yonge.cooleshow.biz.dal.dto.search.QueryMyFollowSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.entity.StudentTotal;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
@@ -23,6 +24,8 @@ import com.yonge.cooleshow.biz.dal.entity.UserBindingTeacher;
 import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
+import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
+import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.service.StudentTotalService;
@@ -44,6 +47,7 @@ import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
 import com.yonge.toolset.utils.string.ValueUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
@@ -63,6 +67,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 
+@Slf4j
 @Service
 public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> implements StudentService {
     @Autowired
@@ -86,6 +91,12 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
     @Autowired
     private SysConfigService sysConfigService;
 
+    @Autowired
+    private ImGroupService imGroupService;
+
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
+
     @Override
     public StudentDao getDao() {
         return baseMapper;
@@ -445,17 +456,41 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void updateTenant(Student student, Long toTenantId) {
+        if (student.getTenantId().equals(toTenantId)) {
+            return;
+        }
+        List<ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
+                .eq(ImGroupMember::getUserId, student.getUserId())
+                .eq(ImGroupMember::getRoleType, ClientEnum.STUDENT.getCode())
+                .eq(ImGroupMember::getIsAdmin, false).list();
+        List<String> groupIdList = groupMembers.stream().map(ImGroupMember::getGroupId).distinct()
+                .collect(Collectors.toList());
+        for (String groupId : groupIdList) {
+            try {
+                imGroupService.quit(groupId, student.getUserId(), ClientEnum.STUDENT);
+            } catch (Exception e) {
+                log.error("退出群聊失败:{}", e);
+            }
+        }
+        this.lambdaUpdate().set(Student::getTenantId, toTenantId)
+                .eq(Student::getUserId, student.getUserId())
+                .update();
+    }
+
     private Boolean updateStudent(StudentWrapper.Student studentInfo) {
         StudentVo student = detail(studentInfo.getId());
         if (student == null) {
             throw new BizException("学生信息不存在");
         }
         // 解绑
-        if (Boolean.FALSE.equals(studentInfo.getBindTenant())) {
-            studentInfo.setTenantId(-1L);
-            // 退群,删除好友
-            imUserFriendService.delFriendByTenantId(student.getTenantId(), student.getUserId());
-        }
+//        if (Boolean.FALSE.equals(studentInfo.getBindTenant())) {
+//            studentInfo.setTenantId(-1L);
+//            // 退群,删除好友
+//            imUserFriendService.delFriendByTenantId(student.getTenantId(), student.getUserId());
+//        }
         // 手机号码修改
         com.yonge.cooleshow.biz.dal.entity.SysUser sysUser = getOrCreateAccount(studentInfo);
         if (!student.getPhone().equals(studentInfo.getPhone())) {

+ 13 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/StudentWrapper.java

@@ -118,24 +118,12 @@ public class StudentWrapper {
         @ApiModelProperty("声部,多个用逗号隔开")
         private String subjectId;
 
-        @ApiModelProperty("是否解绑")
-        private Boolean bindTenant;
+//        @ApiModelProperty("是否解绑")
+//        private Boolean bindTenant;
 
     }
 
     @Data
-    @ApiModel("解绑机构")
-    public static class UnbindTenant {
-
-        @ApiModelProperty("短信验证码")
-        private String code;
-
-        @ApiModelProperty("解绑原因")
-        private String unbindReason;
-    }
-
-
-    @Data
     @ApiModel("学生导入模板模型")
     public static class StudentExport {
 
@@ -190,4 +178,15 @@ public class StudentWrapper {
             return errMsg;
         }
     }
+
+    @Data
+    @ApiModel("学生修改机构")
+    public static class StudentUpdateTenant {
+
+        @ApiModelProperty("学生ID")
+        private Long studentId;
+
+        @ApiModelProperty("机构ID")
+        private Long tenantId;
+    }
 }

+ 2 - 46
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentController.java

@@ -36,6 +36,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.List;
 
@@ -45,16 +46,13 @@ import java.util.List;
 public class StudentController extends BaseController {
     @Autowired
     private StudentService studentService;
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
 
     @Autowired
     private SysUserService sysUserService;
 
     @Autowired
-    private TenantUnbindRecordService tenantUnbindRecordService;
-
-    @Autowired
     private SmsCodeService smsCodeService;
 
 
@@ -149,48 +147,6 @@ public class StudentController extends BaseController {
         return succeed(idcardInfoExtractor);
     }
 
-    @PostMapping("/unbindTenant")
-    @ApiOperation(value = "解绑机构申请")
-    public HttpResponseResult<Boolean> unbindTenant(@RequestBody StudentWrapper.UnbindTenant unbindTenant) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        if (StringUtils.isEmpty(unbindTenant.getCode())) {
-            return failed("验证码不能为空");
-        }
-        boolean validCode = smsCodeService.verifyValidCode(user.getPhone(), unbindTenant.getCode(), "");
-        if (validCode) {
-            return failed("验证码错误");
-        }
-        if (user.getTenantId() == null || user.getTenantId() == -1) {
-            return failed("非机构用户不需要解绑");
-        }
-
-        Student student = studentService.getById(user.getId());
-        if (student == null) {
-            return failed("未查询到学生的信息");
-        }
-
-        TenantUnbindRecord one = tenantUnbindRecordService.lambdaQuery()
-                .eq(TenantUnbindRecord::getTenantId, user.getTenantId())
-                .eq(TenantUnbindRecord::getUserType, "STUDENT")
-                .eq(TenantUnbindRecord::getUserId, user.getId())
-                .eq(TenantUnbindRecord::getStatus, "DOING")
-                .last("limit 1").one();
-        if (one != null) {
-            return failed("请勿重复申请");
-        }
-        TenantUnbindRecord tenantUnbindRecord = new TenantUnbindRecord();
-        tenantUnbindRecord.setTenantId(user.getTenantId());
-        tenantUnbindRecord.setUserId(user.getId());
-        tenantUnbindRecord.setUserType("STUDENT");
-        tenantUnbindRecord.setUnbindReason(unbindTenant.getUnbindReason());
-        tenantUnbindRecord.setStatus("DOING");
-        tenantUnbindRecordService.save(tenantUnbindRecord);
-        return succeed();
-    }
-
     @PostMapping("/logoffAccount")
     @ApiOperation(value = "注销学生账户")
     public HttpResponseResult<Boolean> logoffAccount(@RequestParam("code") String code) {