ylx 7 anos atrás
pai
commit
9d80117268

+ 3 - 0
saicLogistics/src/main/java/com/fuzamei/constant/RegexConstant.java

@@ -16,4 +16,7 @@ public class RegexConstant {
 	
 	public static final String RANDOM_REGEX="^[a-zA-Z0-9]{10}$";//校验传的随机数
 	
+	public static final String PWD_REGEX="^[a-zA-Z0-9]+$";//校验传的随机数
+	
+	
 }

+ 2 - 0
saicLogistics/src/main/java/com/fuzamei/constant/Roles.java

@@ -14,6 +14,8 @@ public class Roles {
 	public static final String ADMIN = "管理员";
 	public static final String SUPPLIER= "供应商";
 	public static final String PLANNER = "计划员";
+	public static final String CARRIER="承运商";
+	public static final String STOCKER="仓库收货员";
 	
 	
 }

+ 14 - 0
saicLogistics/src/main/java/com/fuzamei/entity/User.java

@@ -26,6 +26,8 @@ public class User {
 	private Integer page;				//页数
 	private Integer rowNum;				//每页显示得条数
 	private Integer startPage;			//起始页
+	private String userIds;				//被删除用户拼接的id号格式为:111,111,111,111
+	private String[] userIdbs;			//被删除用户的id数组
 	
 	//下面 【操作记录表数据】
 	private Integer  operatorId;         //操作人
@@ -37,6 +39,18 @@ public class User {
 	private Long operationTime;			//操作时间
 	private String hash;				//操作hash
 	
+	public String[] getUserIdbs() {
+		return userIdbs;
+	}
+	public void setUserIdbs(String[] userIdbs) {
+		this.userIdbs = userIdbs;
+	}
+	public String getUserIds() {
+		return userIds;
+	}
+	public void setUserIds(String userIds) {
+		this.userIds = userIds;
+	}
 	public String getTokenId() {
 		return tokenId;
 	}

+ 21 - 1
saicLogistics/src/main/java/com/fuzamei/mapper/LoginMapper.xml

@@ -41,8 +41,28 @@
 		insert into token(user_id,token) values(#{userId},#{token})
 	</insert>
 	
+	<select id="queryAdminExistence" resultType="UserDetail">
+		select * from users where id=1;
+	</select>
 	
-	
+	<insert id="insertAdmin" parameterType="UserDetail">
+		insert into users(user_id,
+						  username,
+						  password,
+						  role_id,
+						  person_name,
+						  random,
+						  create_time,
+						  update_time)
+					values(#{userId},
+						   #{username},
+						   #{password},
+						   #{roleId},
+						   #{personName},
+						   #{random},
+						   #{createTime},
+						   #{updateTime})
+	</insert>
 	
 	
 	

+ 12 - 3
saicLogistics/src/main/java/com/fuzamei/mapper/UserMapper.xml

@@ -17,8 +17,8 @@
 	</select>
 	
 	<!--先去数据库查询 看是否已有的账号不能在修改了  -->
-	<select id="findUserByuserIdandusername" parameterType="com.fuzamei.entity.User" resultType = "com.fuzamei.entity.User">
-		select * from users where user_id != #{userId} and  username = #{username}
+	<select id="findUserByuserIdandusername" parameterType="com.fuzamei.entity.User" resultType = "int">
+		select count(*) from users where username = #{username}
 	</select>
 	<!--根据用户id  查询角色名称  --><!-- ??????????待待删??? -->
 	<select id="selectRoleNameByuserId">
@@ -83,7 +83,7 @@
 	
 	<!--参数类型为1001,1002,1003等, 批量删除 -->
 	<delete id="deleteFromUserId" parameterType="string">
-		delete  from   users   where  user_id in 
+		delete  from   users   where  user_id in (userids)
 		<foreach item="userids" collection="array" open="(" separator="," close=")">
             #{userids}
         </foreach>
@@ -110,5 +110,14 @@
 		            #{hash})
 	</insert>
 	
+	
+	<insert id="insertOperationHistoryOfDelete" parameterType="User">
+		insert into  
+		           operation_history_admin(operator_id,operation_type_id,be_operated_id,operation_time,hash)
+		    values
+		    <foreach collection="#{userIdbs}" separator="," item="userIdb">
+		    	(#{userId},#{operationTypeId},#{userIdb},#{operationTime},#{hash})
+		    </foreach>
+	</insert>
 
 </mapper>

+ 3 - 0
saicLogistics/src/main/java/com/fuzamei/mapperInterface/LoginMapper.java

@@ -6,9 +6,12 @@ import org.apache.ibatis.annotations.Param;
 
 import com.fuzamei.entity.Token;
 import com.fuzamei.entity.User;
+import com.fuzamei.entity.UserDetail;
 
 public interface LoginMapper {
 	public User queryUser(@Param("username") String username,@Param("password") String password);
 	public int updateToken(@Param("userId") Integer userId,@Param("token") String token);
 	public int insertToken(@Param("userId") Integer userId,@Param("token") String token);
+	public UserDetail queryAdminExistence();
+	public void insertAdmin(UserDetail user);
 }

+ 2 - 1
saicLogistics/src/main/java/com/fuzamei/mapperInterface/UserMapper.java

@@ -13,7 +13,7 @@ public interface UserMapper {
 	public void updateAccountByUserId(User user);//编辑修改用户  根据id
 	public  void insertUsers(User user);//添加账号角色名称
 	public List<User> findUserById(User user);//根据id查询账号是否已存在
-	public List<User> findUserByuserIdandusername(User user);//根据id 账户查询用户存在吗  能否修改
+	public int findUserByuserIdandusername(User user);//根据id 账户查询用户存在吗  能否修改
 	
 	public int queryUserscount(Map<String, Object> map);//查询总条数
 	
@@ -23,6 +23,7 @@ public interface UserMapper {
 	public int queryRondomRepetition(String random);//查询前端传来得随机数  数据库是否有一样得
 	
 	public  void insertOperationHistory(User  user);//插入信息到操作记录表
+	public void insertOperationHistoryOfDelete(User user);//将删除多个用户的操作记录插入到操作记录表中
 	
 	
 }

+ 3 - 0
saicLogistics/src/main/java/com/fuzamei/service/LoginService.java

@@ -3,10 +3,13 @@ package com.fuzamei.service;
 import java.util.List;
 import com.fuzamei.entity.Token;
 import com.fuzamei.entity.User;
+import com.fuzamei.entity.UserDetail;
 
 public interface LoginService {
 	public User queryUser(String username, String password);
 	public void updateToken(Integer userId, String token);
 	void insertToken(Integer userId, String token);
+	public UserDetail queryAdminExistence();//查询管理员是否存在
+	public void insertAdmin(UserDetail user);
 
 }

+ 2 - 2
saicLogistics/src/main/java/com/fuzamei/service/UserService.java

@@ -14,9 +14,9 @@ public interface UserService {
 	public void updateAccountByUserId(User user);//编辑修改用户
 	public  void  insertUsers(User user);//添加账号角色名称
 	public List<User> findUserById(User user);//根据id查询账号是否已存在
-	public List<User> findUserByuserIdandusername(User user);
+	public int findUserByuserIdandusername(User user);
 	//public int queryUserscount(Map<String, Object> map);//查询总条数
-	public void deleteFromUserId(String userIds);//批量删除
+	public void deleteFromUserId(User user);//批量删除
 	public  int queryRondomRepetition(String random);//查询前端传来得随机数  数据库是否有一样得
 	public  int queryUserIdMax();//查询数据库最大得userid  每次+1
 	

+ 12 - 0
saicLogistics/src/main/java/com/fuzamei/service/serviceImpl/LoginServiceImpl.java

@@ -11,6 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.fuzamei.entity.Token;
 import com.fuzamei.entity.User;
+import com.fuzamei.entity.UserDetail;
 import com.fuzamei.mapperInterface.LoginMapper;
 import com.fuzamei.service.LoginService;
 import com.fuzamei.util.JSONUtil;
@@ -40,6 +41,17 @@ public class LoginServiceImpl implements LoginService{
 			throw new RuntimeException("插入token失败");
 		}
 	}
+
+	@Override
+	public UserDetail queryAdminExistence() {
+		return loginMapper.queryAdminExistence();
+	}
+
+	@Override
+	public void insertAdmin(UserDetail user) {
+		loginMapper.insertAdmin(user);
+		loginMapper.insertToken(1,user.getToken());
+	}
 	
 	
 	

+ 23 - 5
saicLogistics/src/main/java/com/fuzamei/service/serviceImpl/UserServiceImpl.java

@@ -108,7 +108,7 @@ public class UserServiceImpl  implements  UserService {
 		
 		/*boolean flag = blockChainUtil.sendBlockChain(user.getSign());//发送签名直接转发到区块链
 		if(!flag) {
-			 throw new RuntimeException("区块链操作失败2");	
+			 throw new RuntimeException("区块链操作失败");	
 		}*/
 		
 	}
@@ -119,9 +119,27 @@ public class UserServiceImpl  implements  UserService {
 	*/
 	@Override
 	@Transactional(rollbackFor=Exception.class)
-	public void deleteFromUserId(String userIds) {
-			String[] strs=userIds.split(",");
-			userMapper.deleteFromUserId(strs);
+	public void deleteFromUserId(User user) {
+		Long currentTime = System.currentTimeMillis();//得到当前系统时间
+		String[] strs=user.getUserIds().split(",");
+		userMapper.deleteFromUserId(strs);
+		
+		//下面往【操作记录】表插入一条数据
+		String sign = user.getSign();
+		@SuppressWarnings("unchecked")
+		Map<String,Object> map = JSON.parseObject(sign, Map.class);
+		String hash = (String) map.get("sid");
+		user.setUserId(user.getUserId());//操作人(管理员)
+		user.setOperationTypeId(OperationType.DELETE);//操作类型 (编辑)
+		user.setUserIdbs(strs);
+		user.setOperationTime(currentTime);//操作时间
+		user.setHash(hash);//操作hash
+		userMapper.insertOperationHistoryOfDelete(user);//插入到操作记录表去
+		
+		/*boolean flag = blockChainUtil.sendBlockChain(user.getSign());//发送签名直接转发到区块链
+		if(!flag) {
+			 throw new RuntimeException("区块链操作失败");	
+		}*/
 	}
 
 
@@ -134,7 +152,7 @@ public class UserServiceImpl  implements  UserService {
 	}
 
 	@Override
-	public List<User> findUserByuserIdandusername(User user){
+	public int findUserByuserIdandusername(User user){
 		return userMapper.findUserByuserIdandusername(user);
 	}
 

+ 30 - 1
saicLogistics/src/main/java/com/fuzamei/web/LoginAction.java

@@ -5,6 +5,7 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -12,8 +13,10 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.fuzamei.constant.HintMSG;
 import com.fuzamei.entity.User;
+import com.fuzamei.entity.UserDetail;
 import com.fuzamei.service.LoginService;
 import com.fuzamei.util.JSONUtil;
+import com.fuzamei.util.RandomUtil;
 import com.fuzamei.util.ValidationUtil;
 
 @RestController
@@ -41,11 +44,37 @@ public class LoginAction {
 		try {
 			String username = ValidationUtil.checkBlankAndAssignString(u.getUsername());
 			String password = ValidationUtil.checkBlankAndAssignString(u.getPassword());
+			String token = UUID.randomUUID().toString().replaceAll("-", "");
+			
+			UserDetail admin = loginService.queryAdminExistence();//查询数据库是否有账号存在
+			if(admin==null){
+				UserDetail user=new UserDetail();
+				Long currentTime = System.currentTimeMillis();
+				user.setUserId(1);//管理员uId为1
+				user.setUsername(username);
+				user.setPassword(password);
+				user.setRoleId(5);
+				user.setPersonName("管理员");//管理员人名为【管理员】
+				user.setRandom(RandomUtil.getRandomString(10));
+				user.setCreateTime(currentTime);
+				user.setUpdateTime(currentTime);
+				user.setToken(token);
+				loginService.insertAdmin(user);//插入管理员数据(同时更新token)
+				Map<String, Object> map=new LinkedHashMap<String, Object>();
+				map.put("username", user.getUsername());
+				map.put("roleName", user.getRoleName());
+				map.put("personName", user.getPersonName());
+				map.put("random", user.getRandom());
+				map.put("roleId", user.getRoleId());
+				map.put("userId", user.getUserId());
+				map.put("tokenId", "Bearer"+token+"&"+user.getUserId());
+				return JSONUtil.getJsonMap(200, true, HintMSG.LOGIN_SUCCESS, map);
+			}
 			User user = loginService.queryUser(username,password);
 			if(user==null){
 				throw new RuntimeException("用户名或密码错误");
 			}
-			String token = UUID.randomUUID().toString().replaceAll("-", "");
+			
 			if(user.getToken()==null||"".equals(user.getToken())){
 				loginService.insertToken(user.getUserId(), token);
 			} else {

+ 24 - 18
saicLogistics/src/main/java/com/fuzamei/web/UserAction.java

@@ -127,21 +127,19 @@ public class UserAction {
 		try {
 			 Integer user_id = ValidationUtil.checkAndAssignInt(req.getHeader("Authorization").split("&")[1]);
 			 user.setUserId(user_id);
-			 userAuthoricationService.queryUserAuthority(ValidationUtil.checkAndAssignInt(user_id), Roles.ADMIN);
-			 //ValidationUtil.checkBlankIntegerAndAssignNullIfIsBlank(user.getRoleId());//校验角色      角色不能修改就暂注释了    不用校验了
-			 ValidationUtil.checkBlankStringAndAssignEmptyIfIsBlank(user.getUsername());//校验账号
-			 ValidationUtil.checkBlankStringAndAssignEmptyIfIsBlank(user.getPassword());//校验密码
-			 ValidationUtil.checkBlankStringAndAssignEmptyIfIsBlank(user.getPersonName());//校验名称
-			 List<User> us = userService.findUserByuserIdandusername(user);
-			if (us == null || us.size() < 1) {
-				userService.updateAccountByUserId(user);
-				return JSONUtil.getJsonMap(200, true, "修改成功", null);
-			} else {
-				return JSONUtil.getJsonMap(500, false, "修改失败,该账号已存在了", null);
-			}
+			 userAuthoricationService.queryUserAuthority(user_id, Roles.ADMIN);
+			 Integer userIdb = ValidationUtil.checkAndAssignInt(user.getUserIdb());
+			 userAuthoricationService.queryUserAuthority(userIdb, Roles.PLANNER,Roles.SUPPLIER,Roles.CARRIER,Roles.STOCKER);
+			 ValidationUtil.checkBlankAndAssignString(user.getUsername());//校验账号
+			 ValidationUtil.checkBlankAndAssignString(user.getPassword(),RegexConstant.PWD_REGEX);//校验密码
+			 ValidationUtil.checkBlankAndAssignString(user.getPersonName());//校验名称
+			 ValidationUtil.checkBlankAndAssignString(user.getSign());//校验签名
+			 int num = userService.findUserByuserIdandusername(user);
+			 if(num!=0) throw new RuntimeException("该账号名已存在");
+			 userService.updateAccountByUserId(user);
+			return JSONUtil.getJsonMap(200, true, HintMSG.QUERY_SUCCESS, null);
 		} catch (Exception e) {
-			e.printStackTrace();
-			return JSONUtil.getJsonMap(500, false, "修改失败", null);
+			return JSONUtil.getJsonMap(500, false, HintMSG.QUERY_FAIL+":"+e.getMessage(), null);
 		}
 
 	}
@@ -173,6 +171,7 @@ public class UserAction {
 			ValidationUtil.checkBlankAndAssignString(user.getPassword());//校验密码
 			ValidationUtil.checkBlankAndAssignString(user.getPersonName());//校验名称
 			String random = ValidationUtil.checkBlankAndAssignString(user.getRandom(),RegexConstant.RANDOM_REGEX);//随机数校验
+			ValidationUtil.checkBlankAndAssignString(user.getSign());//校验签名
 		    int uu=userService.queryRondomRepetition(random);//校验拿到的随机数和数据库得随机数校验
 			List<User> us = userService.findUserById(user);
 		    if(uu!=0) throw new RuntimeException("随机数重复");
@@ -199,12 +198,19 @@ public class UserAction {
 			Map<String, Object> map = JSON.parseObject(data, Map.class);
 			Integer user_id = ValidationUtil.checkAndAssignInt(req.getHeader("Authorization").split("&")[1]);
 			userAuthoricationService.queryUserAuthority(user_id, Roles.ADMIN);
-			
+			String sign = ValidationUtil.checkBlankAndAssignString(map.get("sign"));//校验签名
 			String userIds = ValidationUtil.checkBlankStringAndAssignEmptyIfIsBlank(map.get("userIds"),RegexConstant.NUMBER_NO);// 校验前端传来的参数是不是数字(userIds)正则表达式 XXX
-			userService.deleteFromUserId(userIds);
-			return JSONUtil.getJsonMap(200, true, "删除成功", null);
+			if(userIds.contains(String.valueOf(user_id))){
+				throw new RuntimeException("无法删除自己");
+			}
+			User user = new User();
+			user.setUserId(user_id);
+			user.setUserIds(userIds);
+			user.setSign(sign);
+			userService.deleteFromUserId(user);
+			return JSONUtil.getJsonMap(200, true, HintMSG.OPERATION_SUCCESS, null);
 		} catch (Exception e) {
-			return JSONUtil.getJsonMap(500, false, "删除失败:"+e.getMessage(), null);
+			return JSONUtil.getJsonMap(500, false, HintMSG.OPERATION_FAIL+":"+e.getMessage(), null);
 		}
 
 	}