package com.fuzamei.service.serviceImpl; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.alibaba.fastjson.JSON; import com.fuzamei.constant.OperationType; import com.fuzamei.constant.Roles; import com.fuzamei.entity.OperationHistoryAdmin; import com.fuzamei.entity.Role; import com.fuzamei.entity.User; import com.fuzamei.mapperInterface.ReceivingClerkMapper; import com.fuzamei.mapperInterface.UserMapper; import com.fuzamei.service.UserService; import com.fuzamei.util.PageDTO; import com.fuzamei.util.blockchain.BlockChainUtil; @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Autowired private ReceivingClerkMapper receivingClerkMapper; @Autowired private BlockChainUtil blockChainUtil; /** * 查询所有角色 */ @Override public List getAllRoles() { return userMapper.getAllRoles(); } /** * 查看用户列表 */ public PageDTO queryUsers(Map map) { PageDTO pageDtO = new PageDTO(); List users = userMapper.queryUsers(map); int count = userMapper.queryUserscount(map); pageDtO.setTotal(count); pageDtO.setRows(users); return pageDtO; } /** * 【添加用户信息】 */ @Override @Transactional(rollbackFor=Exception.class) public void insertUsers(User user){ Long currentTime = System.currentTimeMillis();//得到当前系统时间 //做添加操作时set一个添加时间和更新时间 user.setCreateTime(currentTime); user.setUpdateTime(currentTime); userMapper.insertUsers(user); //往{操作记录}表插入数据 String sign = user.getSign(); @SuppressWarnings("unchecked") Map map = JSON.parseObject(sign, Map.class); String hash = (String) map.get("sid"); user.setUserId(user.getUserId());//操作人(管理员) user.setOperationTypeId(OperationType.ADD);//操作类型 (添加) user.setUserIdb(user.getUserIdb());//被操作人账号 ??????????????待 user.setOperationTime(currentTime);//操作时间 user.setHash(hash);//操作hash userMapper.insertOperationHistory(user); /*boolean flag = blockChainUtil.sendBlockChain(user.getSign());//发送签名直接转发到区块链 if(!flag) { throw new RuntimeException("区块链操作失败1"); }*/ } /** * 【编辑修改】 * 根据u用户id 编辑修改,角色,账号,密码,名称,信息 */ @Override @Transactional(rollbackFor=Exception.class) public void updateAccountByUserId(User user) { //【编辑账户信息】 Long currentTime = System.currentTimeMillis();//得到当前系统时间 user.setUpdateTime(currentTime); userMapper.updateAccountByUserId(user); //下面往【操作记录】表插入一条数据 String sign = user.getSign(); @SuppressWarnings("unchecked") Map map = JSON.parseObject(sign, Map.class); String hash = (String) map.get("sid"); user.setUserId(user.getUserId());//操作人(管理员) user.setOperationTypeId(OperationType.EDIT);//操作类型 (编辑) user.setUserIdb(user.getUserIdb());//被操作人账号 ??????????????待 user.setOperationTime(currentTime);//操作时间 user.setHash(hash);//操作hash userMapper.insertOperationHistory(user);//插入到操作记录表去 /*boolean flag = blockChainUtil.sendBlockChain(user.getSign());//发送签名直接转发到区块链 if(!flag) { throw new RuntimeException("区块链操作失败"); }*/ } /** ** 批量删除【删除】----------TODO */ @Override @Transactional(rollbackFor=Exception.class) public void deleteFromUserId(User user) { Long currentTime = System.currentTimeMillis();//得到当前系统时间 String[] strs=user.getUserIds().split(","); userMapper.deleteFromUserId(strs); //下面往【操作记录】表插入一条数据 String sign = user.getSign(); @SuppressWarnings("unchecked") Map 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("区块链操作失败"); }*/ } /** * 根据用户id查询用户是否存在 */ @Override public List findUserById(User user) { return userMapper.findUserById(user); } @Override public int findUserByuserIdandusername(User user){ return userMapper.findUserByuserIdandusername(user); } @Override public int queryUserIdMax() {//查询最大得userid+1 return userMapper.queryUserIdMax(); } @Override public int queryRondomRepetition(String random) {//查询前端传来得随机数 数据库判断是否有一样得 return userMapper.queryRondomRepetition(random); } }