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 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 permissionList = permissionService.getLoginPermissions(); return parsePermissions(userDetail, permissionList); } private UserDetail parsePermissions(UserDetail userDetail, List permissionList) { List 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; } }