package com.moral.api.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.moral.api.entity.UserGroup;
import com.moral.api.mapper.GroupMapper;
import com.moral.api.mapper.UserGroupMapper;
import com.moral.api.mapper.UserMapper;
import com.moral.api.service.UserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.utils.OperationLogUtils;
import com.moral.constant.Constants;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
*
* 前台用户角色关系表 服务实现类
*
*
* @author moral
* @since 2021-03-09
*/
@Service
public class UserGroupServiceImpl extends ServiceImpl implements UserGroupService {
@Autowired
private UserGroupMapper userGroupMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private GroupMapper groupMapper;
@Autowired
private OperationLogUtils operationLogUtils;
@Override
@Transactional
public void allotGroups(Map parameters) {
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
String token = request.getHeader("token");
Integer userId = Integer.parseInt(parameters.get("userId").toString());
List groupIds = (ArrayList) parameters.get("groupIds");
Map currentUserInfo = (Map) TokenUtils.getUserInfoByToken(token);
Map orgInfo = (Map) currentUserInfo.get("organization");
UpdateWrapper deleteWrapper = new UpdateWrapper<>();
deleteWrapper.eq("user_id", userId);
userGroupMapper.delete(deleteWrapper);
List groups = new ArrayList<>();
if (!ObjectUtils.isEmpty(groupIds)) {
groupIds.forEach(groupId -> {
groups.add(groupMapper.selectById(groupId).getGroupName());
UserGroup userGroup = new UserGroup();
userGroup.setUserId(userId);
userGroup.setGroupId(groupId);
userGroup.setOrganizationId((Integer) orgInfo.get("id"));
userGroupMapper.insert(userGroup);
});
}
//日志
String account = userMapper.selectById((Integer) parameters.get("userId")).getAccount();
String content = "给用户:" + account + "分配了组:" + groups;
operationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
}
@Override
public List getGroupIds(Integer userId) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId).eq("is_delete", Constants.NOT_DELETE);
List userGroups = userGroupMapper.selectList(queryWrapper);
List groupIds = new ArrayList<>();
userGroups.forEach(userGroup -> groupIds.add(userGroup.getGroupId()));
return groupIds;
}
}