From 3ae4d79b6680570b56f0480dd0685c024e6acff4 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Thu, 10 Aug 2023 14:13:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/sync/controller/UserPushController.java |   76 ++++++++++++++++++--------------------
 1 files changed, 36 insertions(+), 40 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/sync/controller/UserPushController.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/sync/controller/UserPushController.java
index 5331b6b..bef89c0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/sync/controller/UserPushController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/sync/controller/UserPushController.java
@@ -4,22 +4,18 @@
 import cn.gistack.system.user.service.IUserService;
 import cn.gistack.system.user.sync.dto.AccountBean;
 import cn.gistack.system.user.sync.dto.ApiPushDTO;
-import cn.gistack.system.user.sync.util.GenerateUtil;
-import cn.gistack.system.user.sync.util.MD5Util;
-import cn.gistack.system.user.sync.util.SecurityUtil;
-import com.alibaba.fastjson.JSON;
+import cn.gistack.system.user.sync.exception.ErrorCode;
+import cn.gistack.system.user.sync.util.*;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
 import lombok.AllArgsConstructor;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -44,7 +40,30 @@
 	private final static String method = "post";
 
 	@PostMapping("/userpush")
-	public R userPush(@RequestBody ApiPushDTO apiPushDTO) {
+	public Object userPush(@RequestBody ApiPushDTO apiPushDTO, HttpServletRequest request) {
+		Map<String, Object> ret = new HashMap<>();
+
+		String clientId = request.getParameter("clientId");
+		String timestamp = request.getParameter("timestamp");
+		String sign = request.getParameter("sign");
+		String salt = request.getParameter("salt");
+
+		// 校验签名防止篡改参数
+		String sign2 = SignBuilder.create(appId, MD5Util.getMD5String(appSecret))
+			.requestPath("/api/blade-user/sync/userpush")
+			.requestMethod("POST")
+			.salt(salt)
+			.timestamp(Long.valueOf(timestamp))
+			.sign();
+
+		if (!clientId.equals(appId) || !sign.equals(sign2)) {
+			ret.put("code", ErrorCode.SIGN_CHECK_ERROR.getCode());
+			ret.put("msg", ErrorCode.SIGN_CHECK_ERROR.getMsg());
+			ret.put("data", "");
+			return ret;
+		}
+
+		// 解密syncData
 		String syncData = SecurityUtil.decryptAES(apiPushDTO.getSyncData(), MD5Util.getMD5String(appSecret));
 		List<AccountBean> accountBeanList = JSONArray.parseArray(syncData, AccountBean.class);
 
@@ -55,9 +74,9 @@
 			params.setPhone(accountBean.getPrincipalId());
 			User one = userService.getOne(Condition.getQueryWrapper(params));
 
-			if (one == null){
+			if (one == null) {
 				//不在,看status状态,若为1则不操作。0添加进库
-				if (accountBean.getStatus().equals("0")){
+				if (accountBean.getStatus().equals("0")) {
 
 					User saveUser = new User();
 					//设置id为手机号
@@ -75,9 +94,9 @@
 					saveUser.setTenantId("000000");
 					userService.save(saveUser);
 				}
-			}else {
+			} else {
 				//在,看status状态,若为1则删除用户。0更新?
-				if (accountBean.getStatus().equals("1")){
+				if (accountBean.getStatus().equals("1")) {
 					userService.removeUser(accountBean.getPrincipalId());
 				} else { //更新
 					//设置姓名
@@ -86,34 +105,11 @@
 				}
 			}
 		});
-		return R.data(apiPushDTO.getTimestamp());
-	}
 
-//	public static void main(String[] args) {
-//		Map<String,String> attributes = new HashMap<>();
-//		// "staffCode": "15563378977",
-//		//		"realName": "zhliu",
-//		//		"email": null,
-//		//		"phone": "15563378977",
-//		//		"employeeNum": "zhliu",
-//		//		"idCard": null,
-//		//		"employeeStatus": "1",
-//		//		"userType": "0",
-//		//		"sort": "1"
-//		attributes.put("staffCode","15563378977");
-//		attributes.put("realName","zhliu");
-//		attributes.put("email",null);
-//		attributes.put("phone","15563378977");
-//		attributes.put("employeeNum","zhliu");
-//		attributes.put("idCard", null);
-//		attributes.put("employeeStatus","1");
-//		attributes.put("userType","0");
-//		attributes.put("sort","1");
-//		String syncData = SecurityUtil.encryptAES(JSON.toJSONString(attributes), MD5Util.getMD5String(appSecret));
-//		System.out.println("加密后:" + syncData);
-//		String jiemi  = SecurityUtil.decryptAES(syncData, MD5Util.getMD5String(appSecret));
-//		System.out.printf("解密后:" + jiemi);
-//
-//	}
+		ret.put("code", 1000);
+		ret.put("msg", "成功");
+		ret.put("data", apiPushDTO.getSign());
+		return ret;
+	}
 
 }

--
Gitblit v1.9.3