工作總結-指紋
阿新 • • 發佈:2021-01-15
技術標籤:儲存
1個使用者有多個指紋,
而1個指紋只能有1個使用者。
因此把使用者id放到指紋表,不單獨成中間表。
不過事實上是把finger表叫成user_finger。
create table `t_user_finger` ( `id` bigint (11), `user_id` bigint (11), `finger_name` varchar (90), `finger_desc` varchar (765), `status` varchar (90), `reg_time` datetime , `device_sn` varchar (192), `finger_detail` text , `create_by` varchar (96), `create_at` timestamp ); insert into `t_user_finger` (`id`, `user_id`, `finger_name`, `finger_desc`, `status`, `reg_time`, `device_sn`, `finger_detail`, `create_by`, `create_at`) values('1','4','','','ON','2021-01-12 13:30:54','','TRlTUjIyAAAEWloFBQUHCc7QAAAoW3YAAAAAhOkpo1rPARgOgwBxAA9VzAEAAScPAwCUWpcOYAD0AJoOBlvQARYI5gDXASxVlAFjAI0PkAAUW9sFjwA8ASUOWVpvAXYOsQCJAJJVaQFVAHsPHABGWpwKkwDDAEIP3VrqARwOmgDDAXxT7gG1ABgOZQAaW2AJsQAoAZMI3Fp0AZoP3ADsAStV0wFhABYPIwBjWpcOoQBDARgOkVpMAZoOlQCAABhUYwFMAdYEewDZWpcP3wDBAFAPeVr9AWIPkwBHAINVVwG0AG0OwQHAWpcIyAApAYANvFo7AGIOWQCyAPpV0gE8AUcHRQA4W9oN2QBJAZYBY1pLAQkN','admin','2021-01-12 13:30:54'); insert into `t_user_finger` (`id`, `user_id`, `finger_name`, `finger_desc`, `status`, `reg_time`, `device_sn`, `finger_detail`, `create_by`, `create_at`) values('9','4',NULL,NULL,'ON','2021-01-12 13:31:05','','','admin','2021-01-12 13:31:05');
finger_detail欄位,
https://www.cnblogs.com/wqbin/p/11927456.html
(text欄位描述)
指紋實際資料為一個字串,由指紋採集裝置(對應1個客戶端)-網路-傳入後端。
後端對指紋的操作有:
1.使用者註冊指紋 增
2.使用者對比指紋
3.使用者修改指紋 改
4.使用者指紋列表 查
5.使用者刪除指紋 刪
具體
1.使用者指紋註冊
@Override
public String registerFinger(RegFinger regFinger) throws McServiceException {
UserFinger finger = Convert.convert(UserFinger.class,regFinger);
//把客戶端採集的指紋欄位裡面的fingerDesc轉化為pojo(UserFinger)的欄位,然後接下來為其補充資訊
finger.setRegTime(new Date());
finger.setStatus(NormalStatus.ON.name());//狀態設定為開啟
finger.setCreateAt(new Date());//當前時間
finger.setCreateBy(SysUtil.userName()); //當前登入使用者使用者名稱
finger.setUserId(SysUtil.getUser().getId());//當前登入使用者使用者Id
int rct = UserFingerMapper.insertUseGeneratedKeys(finger);
log.info("使用者[{}]註冊指紋成功,指紋名稱:{}",regFinger.getUserId(),regFinger.getFingerName());//記錄日誌
return finger.getId() + "";
}
2.使用者對比指紋
3.使用者修改指紋
傳入要修改的fingerid以及dto ModifyFinger
@Override
public boolean modifyFinger(String fingerId, ModifyFinger mdFinger) throws ServiceException {
//用fingerid在資料庫中查出對應的指紋pojo
UserFinger oldFinger = UserFingerMapper.selectByPrimaryKey(Long.parseLong(fingerId));
//如果查不到,拋異常
if(oldFinger == null){
throw new ServiceException(ServiceException.ErrorCode.BAD_REQUEST, ResultCode.REQUEST_RESOURCE_NOT_FOUND.getMessage());
}
/**
* 複製Bean物件屬性<br>
* 限制類用於限制拷貝的屬性,例如一個類我只想複製其父類的一些屬性,就可以將editable設定為父類
*
* @param source 源Bean物件
* @param target 目標Bean物件
* @param copyOptions 拷貝選項,見 {@link CopyOptions}
*/
//類似於轉化器,拷貝屬性的 BeanUtil.copyProperties(mdFinger,oldFinger,CopyOptions.create().setIgnoreNullValue(true));
//根據新傳入的和老的進行合併,形成一個新的pojo,然後進行選擇更新。
UserFingerMapper.updateByPrimaryKeySelective(oldFinger);
log.info("使用者[{}]修改指紋成功,指紋名稱:{}",oldFinger.getUserId(),mdFinger.getFingerName());
return true;
}
4.使用者指紋列表 查
5.使用者刪除指紋 刪
@Override
public void deleteFinger(String fingerIds) {
List<Long> idList = Arrays.stream(fingerIds.split(",")).map(p -> Long.valueOf(p)).collect(Collectors.toList());
if (CollUtil.isEmpty(idList)) {
throw new ServiceException("請輸入正確的列表引數");
}
Example example =new Example(McUserFinger.class);
example.createCriteria().andIn("userId", idList);
int cnt = mcUserFingerMapper.deleteByExample(example);
example = new Example(McUser.class);
example.createCriteria().andIn("id", idList);
List<McUser> userName = mcUserMapper.selectByExample(example);
StringBuffer names = new StringBuffer();
int count = 0;
for (McUser n : userName) {
names.append(n.getUserName());
count += 1;
if (count != userName.size()) {
names.append("、");
}
}
McCenterUtil.setLogParam(0, names.toString());
log.info("刪除使用者指紋成功,共刪除記錄:{}", cnt);
}