yonge 3 years ago
parent
commit
30d48cbbd1

+ 32 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUserDevice.java

@@ -1,5 +1,7 @@
 package com.ym.mec.auth.api.entity;
 
+import java.util.Date;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -19,9 +21,15 @@ public class SysUserDevice {
 	/** 绑定时间 */
 	private java.util.Date bindTime;
 	
+	private Date updateTime;
+	
 	/** 设备类型 */
 	private String deviceType;
 	
+	private String clientId;
+	
+	private Integer delFlag;
+	
 	private SysUser user;
 	
 	public void setId(Integer id){
@@ -56,6 +64,14 @@ public class SysUserDevice {
 		return this.bindTime;
 	}
 			
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
 	public void setDeviceType(String deviceType){
 		this.deviceType = deviceType;
 	}
@@ -64,6 +80,22 @@ public class SysUserDevice {
 		return this.deviceType;
 	}
 			
+	public String getClientId() {
+		return clientId;
+	}
+
+	public void setClientId(String clientId) {
+		this.clientId = clientId;
+	}
+
+	public Integer getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(Integer delFlag) {
+		this.delFlag = delFlag;
+	}
+
 	public SysUser getUser() {
 		return user;
 	}

+ 3 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java

@@ -103,7 +103,7 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 			// 检查设备
 			if (StringUtils.equals("STUDENT", clientId)) {
 				// 检查学生是否绑定了多个设备号
-				List<SysUserDevice> sysUserDeviceList = sysUserDeviceService.queryByUserId(userInfo.getSysUser().getId());
+				List<SysUserDevice> sysUserDeviceList = sysUserDeviceService.queryByUserId(clientId, userInfo.getSysUser().getId());
 
 				if (sysUserDeviceList == null) {
 					sysUserDeviceList = new ArrayList<SysUserDevice>();
@@ -119,11 +119,12 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 					sysUserDevice.setUserId(userInfo.getSysUser().getId());
 					sysUserDevice.setDeviceNum(deviceNum);
 					sysUserDevice.setBindTime(new Date());
+					sysUserDevice.setClientId(clientId);
 					sysUserDeviceService.insert(sysUserDevice);
 				}
 			} else {
 				try {
-					sysUserDeviceService.bindDevice(userInfo.getSysUser().getId(), deviceNum);
+					sysUserDeviceService.bindDevice(clientId, userInfo.getSysUser().getId(), deviceNum);
 				} catch (Exception e) {
 					throw new BadCredentialsException("当前设备已绑定账号,请更换设备");
 				}

+ 6 - 3
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java

@@ -78,7 +78,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 				
 				if(!StringUtils.equals("STUDENT", clientId)){
 					// 检查设备
-					List<SysUserDevice> sysUserDeviceList = sysUserDeviceService.queryByDeviceNum(deviceNum);
+					List<SysUserDevice> sysUserDeviceList = sysUserDeviceService.queryByDeviceNum(clientId, deviceNum);
 
 					if (sysUserDeviceList != null && sysUserDeviceList.size() > 0) {
 						throw new BadCredentialsException("当前设备已绑定账号,请更换设备");
@@ -91,6 +91,8 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 				sysUserDevice.setUserId(userInfo.getSysUser().getId());
 				sysUserDevice.setDeviceNum(deviceNum);
 				sysUserDevice.setBindTime(new Date());
+				sysUserDevice.setClientId(clientId);
+				sysUserDevice.setDeviceNum(deviceNum);
 				sysUserDeviceService.insert(sysUserDevice);
 			} else {
 				userInfo = sysUserService.initUser(loginEntity.getPhone(), clientId);
@@ -104,7 +106,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 			if (StringUtils.isNotBlank(deviceNum)) {
 				if (StringUtils.equals("STUDENT", clientId)) {
 					// 检查学生是否绑定了多个设备号
-					List<SysUserDevice> sysUserDeviceList = sysUserDeviceService.queryByUserId(user.getId());
+					List<SysUserDevice> sysUserDeviceList = sysUserDeviceService.queryByUserId(clientId, user.getId());
 
 					if (sysUserDeviceList == null) {
 						sysUserDeviceList = new ArrayList<SysUserDevice>();
@@ -120,13 +122,14 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 						sysUserDevice.setUserId(userInfo.getSysUser().getId());
 						sysUserDevice.setDeviceNum(deviceNum);
 						sysUserDevice.setBindTime(new Date());
+						sysUserDevice.setClientId(clientId);
 						sysUserDeviceService.insert(sysUserDevice);
 					}
 
 				} else {
 					// 检查老师端、教务端设备号
 					try {
-						sysUserDeviceService.bindDevice(user.getId(), deviceNum);
+						sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum);
 					} catch (Exception e) {
 						throw new BadCredentialsException("当前设备已绑定账号,请更换设备");
 					}

+ 5 - 3
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDeviceDao.java

@@ -2,12 +2,14 @@ package com.ym.mec.auth.dal.dao;
 
 import java.util.List;
 
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.auth.api.entity.SysUserDevice;
 import com.ym.mec.common.dal.BaseDAO;
 
 public interface SysUserDeviceDao extends BaseDAO<Integer, SysUserDevice> {
 
-	List<SysUserDevice> queryByUserId(Integer userId);
-	
-	List<SysUserDevice> queryByDeviceNum(String deviceNum);
+	List<SysUserDevice> queryByUserId(@Param("clientId") String clientId, @Param("userId") Integer userId);
+
+	List<SysUserDevice> queryByDeviceNum(@Param("clientId") String clientId, @Param("deviceNum") String deviceNum);
 }

+ 11 - 3
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserDeviceService.java

@@ -7,15 +7,23 @@ import com.ym.mec.common.service.BaseService;
 
 public interface SysUserDeviceService extends BaseService<Integer, SysUserDevice> {
 
-	List<SysUserDevice> queryByUserId(Integer userId);
+	List<SysUserDevice> queryByUserId(String clientId, Integer userId);
 
-	List<SysUserDevice> queryByDeviceNum(String deviceNum);
+	List<SysUserDevice> queryByDeviceNum(String clientId, String deviceNum);
 
 	/**
 	 * 绑定设备号
+	 * @param clientId
 	 * @param userId
 	 * @param deviceNum
 	 * @return
 	 */
-	boolean bindDevice(Integer userId, String deviceNum) throws Exception;
+	boolean bindDevice(String clientId, Integer userId, String deviceNum) throws Exception;
+
+	/**
+	 * 逻辑删除
+	 * @param id
+	 * @return
+	 */
+	boolean deleteWithLogic(Integer id);
 }

+ 20 - 6
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserDeviceServiceImpl.java

@@ -24,19 +24,19 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDe
 	}
 
 	@Override
-	public List<SysUserDevice> queryByUserId(Integer userId) {
-		return sysUserDeviceDao.queryByUserId(userId);
+	public List<SysUserDevice> queryByUserId(String clientId, Integer userId) {
+		return sysUserDeviceDao.queryByUserId(clientId, userId);
 	}
 
 	@Override
-	public List<SysUserDevice> queryByDeviceNum(String deviceNum) {
-		return sysUserDeviceDao.queryByDeviceNum(deviceNum);
+	public List<SysUserDevice> queryByDeviceNum(String clientId, String deviceNum) {
+		return sysUserDeviceDao.queryByDeviceNum(clientId, deviceNum);
 	}
 
 	@Override
-	public boolean bindDevice(Integer userId, String deviceNum) throws Exception {
+	public boolean bindDevice(String clientId, Integer userId, String deviceNum) throws Exception {
 		//查询设备号是否已存在
-		List<SysUserDevice> sysUserDeviceList = sysUserDeviceDao.queryByDeviceNum(deviceNum);
+		List<SysUserDevice> sysUserDeviceList = sysUserDeviceDao.queryByDeviceNum(clientId, deviceNum);
 		
 		if (sysUserDeviceList != null && sysUserDeviceList.size() > 0) {
 			if (sysUserDeviceList.stream().filter(sud -> sud.getUserId().equals(userId)).count() > 0) {
@@ -50,9 +50,23 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDe
 		sysUserDevice.setUserId(userId);
 		sysUserDevice.setDeviceNum(deviceNum);
 		sysUserDevice.setBindTime(new Date());
+		sysUserDevice.setClientId(clientId);
 		sysUserDeviceDao.insert(sysUserDevice);
 		
 		return true;
 	}
+
+	@Override
+	public boolean deleteWithLogic(Integer id) {
+		
+		SysUserDevice sysUserDevice = sysUserDeviceDao.get(id);
+		if(sysUserDevice != null){
+			sysUserDevice.setDelFlag(1);
+			
+			sysUserDeviceDao.update(sysUserDevice);
+		}
+		
+		return true;
+	}
 	
 }

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserDeviceController.java

@@ -36,7 +36,7 @@ public class UserDeviceController extends BaseController {
 	@PostMapping(value = "/unbind")
 	@AuditLogAnnotation(operateName = "设备号解除绑定",interfaceURL = "userDevice/unbind")
 	public Object unbind(Integer id) {
-		return succeed(sysUserDeviceService.delete(id));
+		return succeed(sysUserDeviceService.deleteWithLogic(id));
 	}
 
 }

+ 48 - 34
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserDeviceMapper.xml

@@ -9,6 +9,9 @@
 		<result column="device_num_" property="deviceNum" />
 		<result column="bind_time_" property="bindTime" />
 		<result column="device_type_" property="deviceType" />
+		<result column="client_id_" property="clientId" />
+		<result column="del_flag_" property="delFlag" />
+		<result column="update_time_" property="updateTime" />
 		<result column="phone_" property="user.phone" />
 		<result column="real_name_" property="user.realName" />
 	</resultMap>
@@ -31,8 +34,8 @@
 		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
 			AS ID FROM DUAL </selectKey> -->
 		INSERT INTO sys_user_device
-		(id_,user_id_,device_num_,bind_time_,device_type_)
-		VALUES(#{id},#{userId},#{deviceNum},#{bindTime},#{deviceType})
+		(id_,user_id_,device_num_,bind_time_,device_type_,client_id_,del_flag_)
+		VALUES(#{id},#{userId},#{deviceNum},#{bindTime},#{deviceType},#{clientId},0)
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -54,6 +57,13 @@
 			<if test="bindTime != null">
 				bind_time_ = #{bindTime},
 			</if>
+			<if test="clientId != null">
+				client_id_ = #{clientId},
+			</if>
+			<if test="delFlag != null">
+				del_flag_ = #{delFlag},
+			</if>
+			update_time_ = now()
 		</set>
 		WHERE id_ = #{id}
 	</update>
@@ -66,20 +76,19 @@
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="SysUserDevice" parameterType="map">
 		SELECT ud.*,u.phone_,u.real_name_ FROM sys_user_device ud left join sys_user u on ud.user_id_ = u.id_ 
-		<where>
-			<if test="search != null and search != ''">
-				and (u.real_name_ LIKE CONCAT('%',#{search},'%') OR u.phone_ LIKE CONCAT('%',#{search},'%') OR u.id_ like CONCAT('%',#{search},'%'))
-			</if>
-			<if test="deviceNum != null">
-				and device_num_ = #{deviceNum}
-			</if>
-			<if test="bindStartTime != null">
-				and date(bind_time_) &gt;= #{bindStartTime}
-			</if>
-			<if test="bindEndTime != null">
-				and date(bind_time_) &lt;= #{bindEndTime}
-			</if>
-		</where>
+		where del_flag_ = 0
+		<if test="search != null and search != ''">
+			and (u.real_name_ LIKE CONCAT('%',#{search},'%') OR u.phone_ LIKE CONCAT('%',#{search},'%') OR u.id_ like CONCAT('%',#{search},'%'))
+		</if>
+		<if test="deviceNum != null">
+			and device_num_ = #{deviceNum}
+		</if>
+		<if test="bindStartTime != null">
+			and date(bind_time_) &gt;= #{bindStartTime}
+		</if>
+		<if test="bindEndTime != null">
+			and date(bind_time_) &lt;= #{bindEndTime}
+		</if>
 		ORDER BY id_
 		<include refid="global.limit" />
 	</select>
@@ -87,28 +96,33 @@
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(ud.user_id_) FROM sys_user_device ud left join sys_user u on ud.user_id_ = u.id_
-		<where>
-			<if test="search != null and search != ''">
-				and (u.real_name_ LIKE CONCAT('%',#{search},'%') OR u.phone_ LIKE CONCAT('%',#{search},'%') OR u.id_ like CONCAT('%',#{search},'%'))
-			</if>
-			<if test="deviceNum != null">
-				and device_num_ = #{deviceNum}
-			</if>
-			<if test="bindStartTime != null">
-				and date(bind_time_) &gt;= #{bindStartTime}
-			</if>
-			<if test="bindEndTime != null">
-				and date(bind_time_) &lt;= #{bindEndTime}
-			</if>
-		</where>
+		where del_flag_ = 0
+		<if test="search != null and search != ''">
+			and (u.real_name_ LIKE CONCAT('%',#{search},'%') OR u.phone_ LIKE CONCAT('%',#{search},'%') OR u.id_ like CONCAT('%',#{search},'%'))
+		</if>
+		<if test="deviceNum != null">
+			and device_num_ = #{deviceNum}
+		</if>
+		<if test="bindStartTime != null">
+			and date(bind_time_) &gt;= #{bindStartTime}
+		</if>
+		<if test="bindEndTime != null">
+			and date(bind_time_) &lt;= #{bindEndTime}
+		</if>
 	</select>
 	
-	<select id="queryByUserId" resultMap="SysUserDevice">
-		SELECT * FROM sys_user_device WHERE user_id_ = #{userId}
+	<select id="queryByUserId" resultMap="SysUserDevice" parameterType="map">
+		SELECT * FROM sys_user_device WHERE user_id_ = #{userId} and del_flag_ = 0
+		<if test="clientId != null">
+			and client_id_ = #{clientId}
+		</if>
 	</select>
 	
-	<select id="queryByDeviceNum" resultMap="SysUserDevice">
-		SELECT * FROM sys_user_device WHERE device_num_ = #{deviceNum}
+	<select id="queryByDeviceNum" resultMap="SysUserDevice" parameterType="map">
+		SELECT * FROM sys_user_device WHERE device_num_ = #{deviceNum} and del_flag_ = 0
+		<if test="clientId != null">
+			and client_id_ = #{clientId}
+		</if>
 	</select>
 	
 </mapper>