提交 e050fc07 authored 作者: liupengfei's avatar liupengfei

--no commit message

上级 198a32dd
......@@ -3,6 +3,7 @@ package com.zrqx.core.client.member.fg;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import com.zrqx.core.client.vo.member.OrganVO;
import com.zrqx.core.util.response.CallBack;
......@@ -32,4 +33,22 @@ public interface FgOrganClient {
*/
@GetMapping("/organ/{oid}")
CallBack<OrganVO> getById(@PathVariable("oid")Integer oid);
/**
* 根据机构id查询机构的关联资源, code:0:成功;1:机构不存在;
* @return
* @author ycw
* @date: 2019年2月14日 上午9:21:27
*/
@GetMapping("/service/organ/diytypes/code")
CallBack<String> getCurrentOrganByMemberCode(@PathVariable("code")String code);
/**
* 根据机构id查询机构
* @return
* @author ycw
* @date: 2019年2月14日 上午9:21:27
*/
@GetMapping("/organ/code}")
CallBack<OrganVO> getByCode(@RequestParam("code")String code);
}
......@@ -25,4 +25,18 @@ public class FgOrganClientHystric implements FgOrganClient {
logger.info("通过机构id:"+ organId +"调用机构服务失败");
return CallBack.fail();
}
@Override
public CallBack<String> getCurrentOrganByMemberCode(String code) {
logger.info("通过机构code:"+ code +"调用机构服务失败");
return CallBack.fail();
}
@Override
public CallBack<OrganVO> getByCode(String code) {
logger.info("通过机构code:"+ code +"调用机构服务失败");
return CallBack.fail();
}
}
package com.zrqx.core.commons.model.member;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.zrqx.core.util.excelutil.ExcelResources;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
/**
* @author lpf
* @date 2020-06-24
*/
@Data
@Table(name = "m_member")
@ApiModel(value = "Member", description = "用户基础信息")
public class Member {
@Id
@GeneratedValue(strategy =GenerationType.IDENTITY, generator = "SELECT REPLACE (UUID(), '-', '')")
@ApiModelProperty("会员id,新增时不需填写")
private String id;
@ApiModelProperty("会员账号")
private String account;
@ApiModelProperty("昵称")
private String nickName;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("邮箱")
private String email;
/** @see com.zrqx.core.enums.StatusEnum */
@ApiModelProperty("用户状态 0 禁用 1启用 ")
private Integer status;
/** @see com.zrqx.core.enums.SourceEnum */
@ApiModelProperty("用户来源")
private String sourceType;
/** @see com.zrqx.core.enums.member.RegisterTypeEnum */
@ApiModelProperty("注册方式")
private String registerType;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("微信Key")
@JsonIgnore
private String wechatKey;
@ApiModelProperty("qqKey")
@JsonIgnore
private String qqKey;
@ApiModelProperty("创建时间")
@JsonIgnore
private Date uploadTime;
@ApiModelProperty("机构码")
private String code;
//新增用户类型
@ApiModelProperty("用户类别:0 普通用户,1专家用户,2机构用户")
private Integer level;
@Transient
private String cover;
}
......@@ -30,8 +30,8 @@ public abstract class BaseRedis {
private final String SET_ERROR = "redis 存储信息时错误";
private final String GET_NULL_ERROR = "redis获取信息时为空;";
/** 默认失效时间 7天 */
private final int DEFAULT_LOSE_TIME = 7;
/** 默认失效时间 1天 */
protected final int DEFAULT_LOSE_TIME = 1;
protected abstract void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate);
/**
......
package com.zrqx.core.commons.redis;
import java.io.IOException;
import java.util.Enumeration;
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.DefaultStringRedisConnection;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.zrqx.core.commons.form.LoginMemberInfo;
import com.zrqx.core.commons.model.member.Member;
import com.zrqx.core.commons.model.sysuser.User;
import com.zrqx.core.components.member.RedisMember;
import com.zrqx.core.enums.ResponseCodeEnum;
import com.zrqx.core.enums.TimeUnitEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.util.JsonUtil.JsonUtil;
import lombok.extern.slf4j.Slf4j;
/**
* Redis消息管理 ,调用时不能用多线程调用
* @author lpf
*/
@Slf4j
@Component
public class Redis extends BaseRedis{
......@@ -29,10 +38,32 @@ public class Redis extends BaseRedis{
protected void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) {
super.stringRedisTemplate = stringRedisTemplate;
}
@Autowired
StringRedisTemplate stringRedisTemplate;
private final String FG_TOKEN = "y-token";
private final String BG_TOKEN = "x-token";
/**
* 获取当前登录名称
*
* @return
*/
public String getOpName() {
return getMember().getNickName();
}
/**
* 获取登录id
*
* @return
*/
public String getOpId() {
return getMember().getId();
}
public final String FG_TOKEN = "y-token";
public final String BG_TOKEN = "x-token";
public String getBgToken() {
......@@ -44,47 +75,88 @@ public class Redis extends BaseRedis{
}
public User getUser() {
return super.get(getBgToken(), User.class);
}
public User getUserByToken(String token) {
try {
return super.get(getBgToken(), User.class);
return this.get(User.class, token);
} catch (Exception e) {
throw new BaseException(ResponseCodeEnum.NO_LOGIN);
log.error(e.getMessage(), e);
return null;
}
}
public LoginMemberInfo getMember() {
try {
return super.get(getFgToken(), LoginMemberInfo.class);
} catch (Exception e) {
throw new BaseException(ResponseCodeEnum.NO_LOGIN);
public <T> T get(Class<T> clazz, String token) {
if(token != null){
return get(token, clazz);
}
throw new BaseException("RedisAdapter#get请登录后进行此操作");
}
// TODO 存储redis中的 用户解析不一致
public LoginMemberInfo getOrderMember() {
return super.get(getFgToken(), LoginMemberInfo.class);
public void setRedisMember(RedisMember redisMember) {
redisMember.getMember().setPassword(null);
redisMember.getMember().setQqKey(null);
redisMember.getMember().setWechatKey(null);
redisMember.getMember().setPhone(null);
this.set(redisMember.getLoginVo().getToken(), redisMember, DEFAULT_LOSE_TIME, TimeUnit.DAYS);
}
// TODO 待删除
public String getOpId() {
return getOrderMember().getId() + "";
public RedisMember getRedisMember() {
return super.get(getFgToken(), RedisMember.class);
}
public boolean isExistMember() {
try {
getMember();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
public RedisMember getRedisMember(String token) {
return super.get(token, RedisMember.class);
}
public RedisMember getNotNullRedisMember() {
RedisMember redisMember = this.getRedisMember();
if (redisMember == null) {
throw new BaseException("fg用户不存在");
}
return redisMember;
}
public Member getMember() {
RedisMember redisMember = this.getRedisMember();
if (redisMember != null) {
return redisMember.getMember();
}
throw new BaseException("fg用户不存在");
}
public Member getNotNullMember() {
Member m = this.getMember();
if (m != null) {
return m;
}
throw new BaseException("fg用户不存在");
}
public Member getNotNullMember(String token) {
RedisMember redisMember = this.getRedisMember(token);
if (redisMember == null || redisMember.getMember() == null) {
throw new BaseException("fg用户不存在");
}
return redisMember.getMember();
}
public String getMemberId() {
Member m = this.getNotNullMember();
return m.getId()+"";
}
public boolean isExistUser() {
public boolean isExistMember() {
try {
getUser();
getNotNullMember();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public String getToken(String tokenName) {
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
......@@ -101,6 +173,126 @@ public class Redis extends BaseRedis{
return token;
}
/**
* 添加到redis
* @param token
* Key
* @param obj
* Value
* @param timeout
* 过期时间
* @param unit
* TimeUnitEnum 时间格式
* @throws IOException
*/
public void add(String token, Object obj, long timeout, TimeUnitEnum unit) throws IOException {
stringRedisTemplate.opsForValue().set(token, JsonUtil.bean2Json(obj),timeout,TimeUnitEnum.getValue(unit.name()));
}
public void add(String token, Object obj, long timeout, TimeUnit unit) throws IOException {
stringRedisTemplate.opsForValue().set(token, JsonUtil.bean2Json(obj),timeout,unit);
}
/**
* 根据key查询redis中的数据
*
* @param token
* @return
*/
@Override
public String get(String token) {
return stringRedisTemplate.opsForValue().get(token);
}
/**
* 根据X-Token查询redis中的数据
*
* @return
*/
public String get() {
String str=stringRedisTemplate.opsForValue().get(getBgToken());
return str;
}
/**
*写入redis并指定库
* @param key
* @param value 为对象时flag_json必须为true
* @param db 缓存的数据库
* @param flagJson 是否将value值转为json
* @param timeOut 时效(秒) 永久传null
* @param unit
* TimeUnitEnum 时间格式
* @return
* @author zzg
*/
public boolean set(final String key, Object value,int db,boolean flagJson,long timeOut,TimeUnit unit) {
boolean result = false;
try {
// TODO 共享连接无法切换
RedisConnection redisConnection = stringRedisTemplate.getConnectionFactory().getConnection();
DefaultStringRedisConnection stringRedisConnection = new DefaultStringRedisConnection(redisConnection);
stringRedisConnection.select(db);
if(flagJson){
stringRedisConnection.set(key, JsonUtil.bean2Json(value));
}else{
stringRedisConnection.set(key, value.toString());
}
if(timeOut != 0){
stringRedisConnection.expire(key, timeOut);
}
stringRedisConnection.close();
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 读取指定db的缓存
* @param key
* @param db
* @return
* @author zzg
*/
public String get(final String key,int db) {
String result = null;
try {
RedisConnection redisConnection = stringRedisTemplate.getConnectionFactory().getConnection();
DefaultStringRedisConnection stringRedisConnection = new DefaultStringRedisConnection(redisConnection);
stringRedisConnection.select(db);
result = stringRedisConnection.get(key);
stringRedisConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 删除指定db的key
* @param key
* @param db
* @author zzg
*/
public void remove(final String key ,int db) {
try {
RedisConnection redisConnection = stringRedisTemplate.getConnectionFactory().getConnection();
DefaultStringRedisConnection stringRedisConnection = new DefaultStringRedisConnection(redisConnection);
stringRedisConnection.select(db);
if(stringRedisConnection.exists(key)){
stringRedisConnection.del(key);
}
stringRedisConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public <T> T getInfoObjectRedis(String key,Class<T> objClass){
try {
String userInfo = get(key);
......@@ -109,9 +301,8 @@ public class Redis extends BaseRedis{
}
return JsonUtil.json2Bean(userInfo, objClass);
} catch (Exception e) {
throw new BaseException("获取用户信息错误!"+e.getMessage());
throw new BaseException("获取用户信息失败!"+e.getMessage());
}
}
}
package com.zrqx.core.components;
/**
* @author lpf
* @date 2020-06-16
*/
public interface CacheService {
/**
* key:value:expiresInSeconds
* @param key
* @param value
* @param expiresInSeconds
*/
void set(String key, String value, long expiresInSeconds);
/**
* exists key
* @param key
* @return
*/
boolean exists(String key);
/**
* delete key
* @param key
*/
void delete(String key);
/**
* get key
* @param key
* @return
*/
String get(String key);
}
package com.zrqx.core.components;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
* redis 缓存实现
* @author lpf
* @date 2020-06-17
*/
@Component
@Primary
@Order(Ordered.LOWEST_PRECEDENCE)
public class RedisCacheServiceImpl implements CacheService{
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Override
public void set(String key, String value, long expiresInSeconds) {
stringRedisTemplate.opsForValue().set(key, value, expiresInSeconds, TimeUnit.SECONDS);
}
@Override
public boolean exists(String key) {
return stringRedisTemplate.hasKey(key);
}
@Override
public void delete(String key) {
stringRedisTemplate.delete(key);
}
@Override
public String get(String key) {
return stringRedisTemplate.opsForValue().get(key);
}
}
package com.zrqx.core.components.member;
import com.zrqx.core.commons.model.member.Member;
import com.zrqx.core.components.member.vo.LoginVo;
import com.zrqx.core.enums.BooleanStatusEnum;
import com.zrqx.core.util.datatype.UUIDUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* member 存储到redis中的对象, 所有和用户依赖相关,可以添加此类的属性
* @author lpf
* @date 2020-06-28
*/
@Data
public class RedisMember {
@ApiModelProperty("用户基本信息")
private Member member;
@ApiModelProperty("用户登录信息")
private LoginVo loginVo;
@ApiModelProperty("用户是否可以重置密码")
private boolean canResetPassword;
@ApiModelProperty("vip会员 0否 1是 2已过期")
private Integer vip;
@ApiModelProperty("机构用户所属机构id")
private Integer organId;
@ApiModelProperty("关联资源分类(机构用户)")
private String relatedResourceTypes;
public static RedisMember build(){
RedisMember redisMember = new RedisMember();
LoginVo loginVo = new LoginVo();
loginVo.setIsExsit(BooleanStatusEnum.YES.getCode());
loginVo.setToken(UUIDUtil.getUUID());
redisMember.setLoginVo(loginVo);
redisMember.setCanResetPassword(false);
return redisMember;
}
}
package com.zrqx.core.components.member.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 登录 vo
* @author lpf
* @date 2020-06-28
*/
@Data
@ApiModel(value = "LoginVo", description = "用户登录信息")
public class LoginVo {
@ApiModelProperty("y-token")
private String token;
/** @see com.zrqx.core.enums.BooleanStatusEnum */
@ApiModelProperty("判断用户是否存在 不存在0 存在1")
private String isExsit;
}
package com.zrqx.core.enums;
import java.util.concurrent.TimeUnit;
/**
*
* @author lpf
* @date 2020-07-01 13:46
*/
public enum TimeUnitEnum {
// 微秒 一百万分之一秒(就是毫秒/1000)
微秒(TimeUnit.MICROSECONDS),
// 毫秒 千分之一秒
毫秒(TimeUnit.MILLISECONDS),
// 毫微秒 十亿分之一秒(就是微秒/1000)
毫微秒(TimeUnit.NANOSECONDS),
// 秒
(TimeUnit.SECONDS),
// 分钟
分钟(TimeUnit.MINUTES),
// 小时
小时(TimeUnit.HOURS),
// 天
(TimeUnit.DAYS);
private final TimeUnit value;
private TimeUnitEnum(TimeUnit value) {
this.value = value;
}
public static void main(String[] args) {
System.out.println(分钟.value);
System.out.println(TimeUnitEnum.getValue("小时"));
}
public static TimeUnit getValue(String name) {
if (name == null) {
throw new IllegalArgumentException("TimeUnitEnum name is not null");
}
for (TimeUnitEnum mt : values()) {
if (mt.name().equals(name)) {
return mt.value;
}
}
return .value;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论