package com.nova.sankuai.security;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.nova.sankuai.domain.entity.CustomerUser;
|
import com.nova.sankuai.domain.entity.Permission;
|
import com.nova.sankuai.domain.entity.SysUser;
|
import com.nova.sankuai.domain.enums.UserTypeEnum;
|
import com.nova.sankuai.service.IPermissionService;
|
import io.swagger.annotations.ApiModel;
|
import lombok.AllArgsConstructor;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.stereotype.Component;
|
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author weikangdi
|
* @create 2021/11/19
|
*/
|
@ApiModel("用户授权工具类")
|
@Component
|
@AllArgsConstructor
|
public class UserDetailUtil {
|
|
private final IPermissionService permissionService;
|
|
|
public UserDetail parse(SysUser sysUser) {
|
UserDetail userDetail = new UserDetail();
|
userDetail.setId(sysUser.getId());
|
userDetail.setUsername(sysUser.getUserName());
|
userDetail.setPhone(sysUser.getUserPhone());
|
userDetail.setIdCard("");
|
userDetail.setType(sysUser.getType());
|
List<Permission> permissionList = permissionService.getPermissionsByUser(sysUser.getId());
|
return parsePermissions(userDetail, permissionList);
|
}
|
|
public UserDetail parseCustomer(CustomerUser customerUser) {
|
UserDetail userDetail = new UserDetail();
|
userDetail.setPhone(customerUser.getPhone());
|
userDetail.setId(customerUser.getId());
|
userDetail.setUsername(customerUser.getName());
|
userDetail.setIdCard(StringUtils.defaultString(customerUser.getIdCard()));
|
userDetail.setType(UserTypeEnum.CUSTOMER.getCode());
|
List<Permission> permissionList = permissionService.getLoginPermissions();
|
return parsePermissions(userDetail, permissionList);
|
}
|
|
private UserDetail parsePermissions(UserDetail userDetail, List<Permission> permissionList) {
|
List<String> permissions = permissionList.stream().map(Permission::getCode).collect(Collectors.toList());
|
userDetail.setPermissions(permissions);
|
return userDetail;
|
}
|
|
public JSONObject getUserJson(UserDetail userDetail, String token) {
|
JSONObject params = new JSONObject();
|
params.put("token", token);
|
params.put("type", userDetail.getType());
|
params.put("userName", userDetail.getUsername());
|
params.put("phone", userDetail.getPhone());
|
params.put("permission", userDetail.getPermissions());
|
params.put("userId", userDetail.getId().toString());
|
params.put("idCard", userDetail.getIdCard());
|
return params;
|
}
|
|
public JSONObject getAutoDownloadUserJson(CustomerUser customerUser, String appId) {
|
JSONObject params = new JSONObject();
|
params.put("userName", customerUser.getName());
|
params.put("phone", customerUser.getPhone());
|
params.put("userId", customerUser.getId().toString());
|
params.put("appId", appId);
|
return params;
|
}
|
}
|