Commit 2ebca5bd authored by 夏敏伟's avatar 夏敏伟

Merge branch 'master' of http://192.168.168.218/wcyuee/szpt

parents cea78c66 1eff820d
package com.zksy.szpt.domain;
public class CurrentUserInfo {
private String userId;
private String userName;
private String deptCode;
private String ip;
public CurrentUserInfo() {
}
private CurrentUserInfo(CurrentUserInfoBuilder builder) {
this.userId = builder.userId;
this.userName = builder.userName;
this.deptCode = builder.deptCode;
this.ip = builder.ip;
}
// 建造器类
public static class CurrentUserInfoBuilder {
private String userId; // 必选项,用 final 修饰
private String userName; // 必选项,用 final 修饰
private String deptCode;
private String ip;// 可选项,不用 final 修饰
public CurrentUserInfoBuilder userId(String userId) { // 可选参数
this.userId = userId;
return this;
}
public CurrentUserInfoBuilder userName(String userName) { // 可选参数
this.userName = userName;
return this;
}
public CurrentUserInfoBuilder deptCode(String deptCode) { // 可选参数
this.deptCode = deptCode;
return this;
}
public CurrentUserInfoBuilder ip(String ip) { // 可选参数
this.ip = ip;
return this;
}
public CurrentUserInfo build() {
return new CurrentUserInfo(this);
}
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getDeptCode() {
return deptCode;
}
public void setDeptCode(String deptCode) {
this.deptCode = deptCode;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
}
\ No newline at end of file
...@@ -13,6 +13,7 @@ public class AppStore { ...@@ -13,6 +13,7 @@ public class AppStore {
private String appSecret; private String appSecret;
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private Date createTime; private Date createTime;
private String deptCode;
public Long getId() { public Long getId() {
return id; return id;
...@@ -45,4 +46,12 @@ public class AppStore { ...@@ -45,4 +46,12 @@ public class AppStore {
public void setCreateTime(Date createTime) { public void setCreateTime(Date createTime) {
this.createTime = createTime; this.createTime = createTime;
} }
public String getDeptCode() {
return deptCode;
}
public void setDeptCode(String deptCode) {
this.deptCode = deptCode;
}
} }
...@@ -184,9 +184,9 @@ public class SzptFwxx { ...@@ -184,9 +184,9 @@ public class SzptFwxx {
private Date jkmhysj; private Date jkmhysj;
/** /**
* 数据归属单位代码 * 数据归属单位代码。不用更新,入库的时候就已经代表了数据归属单位
*/ */
@TableField(fill = FieldFill.INSERT) @TableField(updateStrategy = FieldStrategy.IGNORED)
private String sjgsdwdm; private String sjgsdwdm;
/** /**
......
...@@ -112,7 +112,10 @@ public class SzptGdSbxx { ...@@ -112,7 +112,10 @@ public class SzptGdSbxx {
/** /**
* 数据归属单位代码 * 数据归属单位代码
*/ */
@TableField(fill = FieldFill.INSERT) /**
* 数据归属单位代码。不用更新,入库的时候就已经代表了数据归属单位
*/
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String sjgsdwdm; private String sjgsdwdm;
/** /**
......
...@@ -189,8 +189,9 @@ public class SzptGdXx { ...@@ -189,8 +189,9 @@ public class SzptGdXx {
private String mdjyzt; private String mdjyzt;
/** /**
* 数据归属单位代码 * 数据归属单位代码。不用更新,入库的时候就已经代表了数据归属单位
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String sjgsdwdm; private String sjgsdwdm;
/** /**
......
...@@ -83,8 +83,9 @@ public class SzptQyxx { ...@@ -83,8 +83,9 @@ public class SzptQyxx {
private String zt; private String zt;
/** /**
* 数据归属单位代码 * 数据归属单位代码。不用更新,入库的时候就已经代表了数据归属单位
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String sjgsdwdm; private String sjgsdwdm;
/** /**
......
...@@ -9,12 +9,12 @@ public class XxRwwcqk { ...@@ -9,12 +9,12 @@ public class XxRwwcqk {
/** /**
* IID * IID
*/ */
@TableId(type = IdType.ASSIGN_ID)
private Long iid; private Long iid;
/** /**
* 任务完成ID * 任务完成ID
*/ */
@TableId(type = IdType.ASSIGN_ID)
private String id; private String id;
/** /**
......
...@@ -5,11 +5,14 @@ import cn.hutool.crypto.digest.DigestUtil; ...@@ -5,11 +5,14 @@ import cn.hutool.crypto.digest.DigestUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.zksy.szpt.domain.CurrentUserInfo;
import com.zksy.szpt.domain.HttpResult; import com.zksy.szpt.domain.HttpResult;
import com.zksy.szpt.domain.HttpResultState; import com.zksy.szpt.domain.HttpResultState;
import com.zksy.szpt.domain.po.AppStore;
import com.zksy.szpt.service.AppStoreService; import com.zksy.szpt.service.AppStoreService;
import com.zksy.szpt.util.EncryptUtil; import com.zksy.szpt.util.EncryptUtil;
import com.zksy.szpt.util.SignatureUtil; import com.zksy.szpt.util.SignatureUtil;
import com.zksy.szpt.util.UserContextHolder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
...@@ -96,12 +99,16 @@ public class SignatureVerificationFilter extends OncePerRequestFilter { ...@@ -96,12 +99,16 @@ public class SignatureVerificationFilter extends OncePerRequestFilter {
} }
// 校验appId // 校验appId
String secretKey = this.appStoreService.getAppSecretByAppKey(appId); AppStore appStore = this.appStoreService.getAppSecretInfo(appId);
String secretKey = appStore.getAppSecret();
if (!StringUtils.hasText(secretKey)) { if (!StringUtils.hasText(secretKey)) {
this.write(response, "appId无效"); this.write(response, "appId无效");
return false; return false;
} }
//验证单位 todo
// String deptCode = appStore.getDeptCode();
// 请求体 // 请求体
String body = StreamUtils.copyToString(request.getInputStream(), StandardCharsets.UTF_8); String body = StreamUtils.copyToString(request.getInputStream(), StandardCharsets.UTF_8);
body = objectMapper.writeValueAsString(objectMapper.readValue(body, Map.class)); body = objectMapper.writeValueAsString(objectMapper.readValue(body, Map.class));
...@@ -113,6 +120,9 @@ public class SignatureVerificationFilter extends OncePerRequestFilter { ...@@ -113,6 +120,9 @@ public class SignatureVerificationFilter extends OncePerRequestFilter {
write(response, "签名有误,generatedSignature:" + generatedSignature + ",sign: " + sign + ",appId:" + appId + ",nonce:" + nonce + ",timestamp:" + timestampStr); write(response, "签名有误,generatedSignature:" + generatedSignature + ",sign: " + sign + ",appId:" + appId + ",nonce:" + nonce + ",timestamp:" + timestampStr);
return false; return false;
} }
// 签名验证通过
addUserInfo(request);
return true; return true;
} }
...@@ -131,5 +141,17 @@ public class SignatureVerificationFilter extends OncePerRequestFilter { ...@@ -131,5 +141,17 @@ public class SignatureVerificationFilter extends OncePerRequestFilter {
response.setCharacterEncoding(StandardCharsets.UTF_8.name()); response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.getWriter().write(JSONUtil.toJsonStr(httpResult)); response.getWriter().write(JSONUtil.toJsonStr(httpResult));
} }
/**
* 增加用户信息
* @param request
*/
private void addUserInfo(HttpServletRequest request) {
// 增加用户信息
String userId = request.getHeader(SignatureUtil.APPID);
String ip = request.getRemoteAddr();
CurrentUserInfo currentUserInfo = new CurrentUserInfo.CurrentUserInfoBuilder().userId(userId).userName(userId).ip(ip).build();
UserContextHolder.set(currentUserInfo);
}
} }
...@@ -2,6 +2,8 @@ package com.zksy.szpt.handler; ...@@ -2,6 +2,8 @@ package com.zksy.szpt.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.core.handlers.StrictFill; import com.baomidou.mybatisplus.core.handlers.StrictFill;
import com.zksy.szpt.domain.CurrentUserInfo;
import com.zksy.szpt.util.UserContextHolder;
import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -19,20 +21,25 @@ public class SzptMetaObjectHandler implements MetaObjectHandler { ...@@ -19,20 +21,25 @@ public class SzptMetaObjectHandler implements MetaObjectHandler {
// 新增时自动填充 create_time, update_time 字段 // 新增时自动填充 create_time, update_time 字段
// this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
// this.strictInsertFill(metaObject, "cjsj", Date.class, new Date()); // this.strictInsertFill(metaObject, "cjsj", Date.class, new Date());
CurrentUserInfo currentUserInfo = UserContextHolder.get();
List<StrictFill> fields = Arrays.asList( List<StrictFill> fields = Arrays.asList(
StrictFill.of("createTime", Date.class, new Date()), StrictFill.of("createTime", Date.class, new Date()),
StrictFill.of("cjsj", Date.class, new Date()), StrictFill.of("cjsj", Date.class, new Date()),
StrictFill.of("gxsj", Date.class, new Date()), StrictFill.of("gxsj", Date.class, new Date()),
StrictFill.of("updateTime", Date.class, new Date()), StrictFill.of("updateTime", Date.class, new Date()),
StrictFill.of("sjgsdwdm", String.class, "1"), // StrictFill.of("sjgsdwdm", String.class, "1"),
StrictFill.of("sjgsdwmc", String.class, "1"), // StrictFill.of("sjgsdwmc", String.class, "1"),
StrictFill.of("createGajgjgdm", String.class, "1"), StrictFill.of("createGajgjgdm", String.class, "1"),
StrictFill.of("createGajgmc", String.class, "1"), StrictFill.of("createGajgmc", String.class, "1"),
StrictFill.of("createId", String.class, "1"), // StrictFill.of("createId", String.class, "1"),
StrictFill.of("createId", String.class, currentUserInfo.getUserId()),
StrictFill.of("cjrid", String.class, "1"), StrictFill.of("cjrid", String.class, "1"),
StrictFill.of("createBy", String.class, "1"), // StrictFill.of("createBy", String.class, "1"),
StrictFill.of("createBy", String.class, currentUserInfo.getUserId()),
StrictFill.of("createTerminal", String.class, "1"), StrictFill.of("createTerminal", String.class, "1"),
StrictFill.of("createIp", String.class, "1"), // StrictFill.of("createIp", String.class, "1"),
StrictFill.of("createIp", String.class, currentUserInfo.getIp()),
StrictFill.of("delFlag", Integer.class, 0) StrictFill.of("delFlag", Integer.class, 0)
// StrictFill.of("del_flag", Integer.class,0) // StrictFill.of("del_flag", Integer.class,0)
...@@ -42,6 +49,7 @@ public class SzptMetaObjectHandler implements MetaObjectHandler { ...@@ -42,6 +49,7 @@ public class SzptMetaObjectHandler implements MetaObjectHandler {
@Override @Override
public void updateFill(MetaObject metaObject) { public void updateFill(MetaObject metaObject) {
CurrentUserInfo currentUserInfo = UserContextHolder.get();
List<StrictFill> fields = Arrays.asList( List<StrictFill> fields = Arrays.asList(
StrictFill.of("updateTime", Date.class, new Date()), StrictFill.of("updateTime", Date.class, new Date()),
StrictFill.of("gxrid", String.class, "1"), StrictFill.of("gxrid", String.class, "1"),
...@@ -49,11 +57,14 @@ public class SzptMetaObjectHandler implements MetaObjectHandler { ...@@ -49,11 +57,14 @@ public class SzptMetaObjectHandler implements MetaObjectHandler {
StrictFill.of("gxrxm", String.class, "测试"), StrictFill.of("gxrxm", String.class, "测试"),
StrictFill.of("update_gajgjgdm", String.class, '1'), StrictFill.of("update_gajgjgdm", String.class, '1'),
StrictFill.of("update_gajgmc", String.class, '1'), StrictFill.of("update_gajgmc", String.class, '1'),
StrictFill.of("update_id", String.class, '1'), // StrictFill.of("update_id", String.class, '1'),
StrictFill.of("update_by", String.class, '1'), StrictFill.of("update_id", String.class, currentUserInfo.getUserId()),
// StrictFill.of("update_by", String.class, '1'),
StrictFill.of("update_by", String.class, currentUserInfo.getUserId()),
StrictFill.of("update_time", Date.class, new Date()), StrictFill.of("update_time", Date.class, new Date()),
StrictFill.of("update_terminal", String.class, '1'), StrictFill.of("update_terminal", String.class, '1'),
StrictFill.of("update_ip", String.class, '1') // StrictFill.of("update_ip", String.class, '1'),
StrictFill.of("update_ip", String.class, currentUserInfo.getIp())
// StrictFill.of("del_flag", Integer.class,0) // StrictFill.of("del_flag", Integer.class,0)
); );
this.strictInsertFill(findTableInfo(metaObject), metaObject, fields); this.strictInsertFill(findTableInfo(metaObject), metaObject, fields);
......
...@@ -31,4 +31,14 @@ public class AppStoreService { ...@@ -31,4 +31,14 @@ public class AppStoreService {
AppStore appStore = BeanMapperUtil.map(appStoreDTO, AppStore.class); AppStore appStore = BeanMapperUtil.map(appStoreDTO, AppStore.class);
return appStoreMapper.insert(appStore); return appStoreMapper.insert(appStore);
} }
public AppStore getAppSecretInfo(String appKey) {
LambdaQueryWrapper<AppStore> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AppStore::getAppKey, appKey);
List<AppStore> tbAppStorePOList = appStoreMapper.selectList(queryWrapper);
if (tbAppStorePOList != null && !tbAppStorePOList.isEmpty()) {
return tbAppStorePOList.get(0);
}
return null;
}
} }
package com.zksy.szpt.util;
import com.zksy.szpt.domain.CurrentUserInfo;
/**
* 保存当前http请求的用户登录信息
*/
public class UserContextHolder {
private static final ThreadLocal<CurrentUserInfo> userThread = new ThreadLocal<>();
public static void set(CurrentUserInfo user){
userThread.set(user);
}
public static CurrentUserInfo get(){
return userThread.get();
}
//防止内存泄漏
public static void remove(){
userThread.remove();
}
}
...@@ -28,7 +28,7 @@ public class MainTest { ...@@ -28,7 +28,7 @@ public class MainTest {
String nonce = "2"; String nonce = "2";
String timestampStr = "21"; String timestampStr = "21";
String appId = "1"; String appId = "1872476300466950146";
@Resource @Resource
...@@ -44,7 +44,7 @@ public class MainTest { ...@@ -44,7 +44,7 @@ public class MainTest {
@DisplayName("任务完成情况") @DisplayName("任务完成情况")
public void xxRwwcqkTest() { public void xxRwwcqkTest() {
timestampStr = String.valueOf(System.currentTimeMillis() / 1000); timestampStr = String.valueOf(System.currentTimeMillis() / 1000);
nonce = String.valueOf(System.currentTimeMillis() / 1000);
String secretKey = this.appStoreService.getAppSecretByAppKey(appId); String secretKey = this.appStoreService.getAppSecretByAppKey(appId);
Assertions.assertNotNull(secretKey, "appId不存在");//断言appId存在,为空直接抛出异常不进行下一步测试,提高测试效率 Assertions.assertNotNull(secretKey, "appId不存在");//断言appId存在,为空直接抛出异常不进行下一步测试,提高测试效率
//请求参数 //请求参数
...@@ -52,7 +52,7 @@ public class MainTest { ...@@ -52,7 +52,7 @@ public class MainTest {
xxRwwcqkDTO.setRwid("123456"); xxRwwcqkDTO.setRwid("123456");
xxRwwcqkDTO.setXxyid("123456"); xxRwwcqkDTO.setXxyid("123456");
xxRwwcqkDTO.setShrid("123456"); xxRwwcqkDTO.setShrid("123456");
// xxRwwcqkDTO.setWczt("1"); xxRwwcqkDTO.setWczt("1");
xxRwwcqkDTO.setBmzt("1"); xxRwwcqkDTO.setBmzt("1");
String json = null; String json = null;
try { try {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment