zouxuan 5 years ago
parent
commit
3ec91f1018

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java

@@ -57,7 +57,7 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 		String clientId = request.getParameter(clientIdParameter);
 
 		if (userInfo == null) {
-			throw new UsernameNotFoundException("404.9");
+			userInfo = sysUserService.initUser(principal,clientId);
 		}
 	
 		if (userInfo.getSysUser().getUserType() != SysUserType.SYSTEM && !StringUtils.equalsIgnoreCase(clientId, userInfo.getSysUser().getUserType().getCode())) {

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

@@ -75,4 +75,12 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 * @return
 	 */
 	SysUser queryUserInfo(Integer userId);
+
+	/**
+	 * 上线时初始化用户数据
+	 * @param phone
+	 * @param clientId
+	 * @return
+	 */
+	SysUserInfo initUser(String phone,String clientId);
 }

+ 46 - 4
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -2,6 +2,7 @@ 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.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.auth.dal.dao.SysUserDao;
 import com.ym.mec.auth.service.SysRoleMenuService;
@@ -13,8 +14,11 @@ 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.TeacherFeignService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
@@ -30,11 +34,17 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	private SysUserRoleService sysUserRoleService;
 
 	@Autowired
+	private TeacherFeignService teacherFeignService;
+
+	@Autowired
 	private SysRoleMenuService sysRoleMenuService;
 
 	@Autowired
 	private ImFeignService imFeignService;
 
+	@Value("${message.autoRegister}")
+	private boolean autoRegister;
+
 	@Override
 	public BaseDAO<Integer, SysUser> getDAO() {
 		return sysUserDao;
@@ -122,10 +132,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	@Override
 	public void updateBaseInfo(SysUser sysUser) {
 		sysUserDao.update(sysUser);
-		if(StringUtils.isEmpty(sysUser.getAvatar())){
-			sysUser.setAvatar("https://daya-online.oss-cn-beijing.aliyuncs.com/201910/RgHwgKc.jpg");
-		}
-		imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getUsername(),sysUser.getAvatar()));
+		imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getUsername(),null));
 	}
 
 	@Override
@@ -135,4 +142,39 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		return sysUser;
 	}
 
+	@Override
+	public SysUserInfo initUser(String phone, String clientId) {
+		if(autoRegister){
+			if(StringUtils.equalsIgnoreCase(clientId,"teacher")){
+				//注册用户
+				SysUser sysUser = registerUser(phone,SysUserType.TEACHER);
+				return queryUserInfoByPhone(phone);
+			}else if(StringUtils.equalsIgnoreCase(clientId,"student")){
+				SysUser sysUser = registerUser(phone,SysUserType.STUDENT);
+				//注册现金账户
+				teacherFeignService.saveUserCashAccount(sysUser.getId());
+				return queryUserInfoByPhone(phone);
+			}
+			throw new UsernameNotFoundException("404.9");
+		}else {
+			throw new UsernameNotFoundException("404.9");
+		}
+	}
+
+	private SysUser registerUser(String phone, SysUserType sysUserType){
+		SysUser sysUser = new SysUser();
+		sysUser.setPhone(phone);
+		sysUser.setUsername(phone);
+		sysUser.setOrganId(1);
+		sysUser.setGender(1);
+		sysUser.setIsSuperAdmin(false);
+		//注册用户
+		sysUser.setUserType(sysUserType);
+		sysUserDao.insert(sysUser);
+		ImResult register = imFeignService.register(new ImUserModel(sysUser.getId().toString(), phone, null));
+		sysUser.setImToken(register.getToken());
+		sysUserDao.update(sysUser);
+		return sysUser;
+	}
+
 }

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

@@ -226,6 +226,9 @@
         <if test="organId != null">
             AND FIND_IN_SET(su.organ_id_,#{organId})
         </if>
+        <if test="search != null">
+            AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+        </if>
         <if test="jobNature != null">
             AND t.job_nature_ = #{jobNature}
         </if>

+ 21 - 0
mec-client-api/src/main/java/com/ym/mec/web/TeacherFeignService.java

@@ -0,0 +1,21 @@
+package com.ym.mec.web;
+
+import com.ym.mec.common.config.FeignConfiguration;
+import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.web.fallback.TeacherFeignServiceFallback;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(name = "teacher-server", configuration = FeignConfiguration.class, fallback = TeacherFeignServiceFallback.class)
+public interface TeacherFeignService {
+
+	/**
+	 * 用户注册
+	 * @param userId
+	 * @return
+	 */
+	@PostMapping(value = "code/saveUserCashAccount")
+	void saveUserCashAccount(Integer userId);
+}

+ 12 - 0
mec-client-api/src/main/java/com/ym/mec/web/fallback/TeacherFeignServiceFallback.java

@@ -0,0 +1,12 @@
+package com.ym.mec.web.fallback;
+
+import com.ym.mec.web.TeacherFeignService;
+import org.springframework.stereotype.Component;
+
+@Component
+public class TeacherFeignServiceFallback implements TeacherFeignService {
+    @Override
+    public void saveUserCashAccount(Integer userId) {
+
+    }
+}

+ 7 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImUserModel.java

@@ -1,5 +1,7 @@
 package com.ym.mec.common.entity;
 
+import org.apache.commons.lang3.StringUtils;
+
 public class ImUserModel {
     public String id;
 
@@ -14,7 +16,11 @@ public class ImUserModel {
     public ImUserModel(String id, String name, String portrait) {
         this.id = id;
         this.name = name;
-        this.portrait = portrait;
+        if(StringUtils.isEmpty(portrait)){
+            this.portrait = "https://daya-online.oss-cn-beijing.aliyuncs.com/201910/RgHwgKc.jpg";
+        }else {
+            this.portrait = portrait;
+        }
     }
 
     public ImUserModel() {

+ 12 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/SmsCodeController.java

@@ -3,7 +3,9 @@ package com.ym.mec.teacher.controller;
 import com.google.code.kaptcha.Constants;
 import com.google.code.kaptcha.Producer;
 import com.google.code.kaptcha.servlet.KaptchaServlet;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.service.SmsCodeService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.security.SecurityConstants;
 import io.swagger.annotations.Api;
@@ -32,10 +34,20 @@ public class SmsCodeController extends BaseController {
     @Autowired
     private SmsCodeService smsCodeService;
     @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
     private Producer captchaProducer;
     @Autowired
     private RedisTemplate<String,String> redisTemplate;
 
+    @PostMapping(value = "/saveUserCashAccount")
+    public Object saveUserCashAccount(Integer userId){
+        SysUserCashAccount account = new SysUserCashAccount();
+        account.setUserId(userId);
+        sysUserCashAccountService.insert(account);
+        return succeed();
+    }
+
     @ApiOperation(value = "发送登录短信验证码")
     @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String")
     @PostMapping(value = "/sendSms")