1811872455@163.com hai 3 semanas
pai
achega
830b8090bd

+ 1 - 1
storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/enums/ErrorMsgCode.java

@@ -10,7 +10,7 @@ public enum ErrorMsgCode {
     /** 协议级返回码 */
     UPGRADE(100, "您当前版本需要升级"),
     UPGRADE_DATA(101, "需更新配置或数据"),
-    SUCCESS(200, "操作成功1"),
+    SUCCESS(200, "操作成功"),
     REDIRECT(300, "重定向"),
     LOGIN_FAIL(401, "登陆鉴权失败"),
     PARAMETER_FAIL(400, "参数错误"),

+ 1 - 1
storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/enums/ResultCode.java

@@ -11,7 +11,7 @@ public enum ResultCode {
     /**
      * 操作成功
      */
-    SC_OK_200(200, "操作成功3"),
+    SC_OK_200(200, "操作成功"),
 
     FAILED(-1, "处理失败"),
 

+ 1 - 1
storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/message/TopMsgCode.java

@@ -7,7 +7,7 @@ public enum TopMsgCode implements MsgCode{
     ERROR(-1, "操作失败"), //
     UPGRADE(100, "您当前版本需要升级"), //
     UPGRADE_DATA(101, "需更新配置或数据"), //
-    SUCCESS(200, "操作成功2"), //
+    SUCCESS(200, "操作成功"), //
     REDIRECT(300, "重定向"), //
     LOGIN_FAIL(401, "登陆鉴权失败"), //
     FORBIDDEN(403, "权限不足"), //

+ 24 - 1
storlead-user/src/main/java/com/storlead/user/service/impl/UserServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.storlead.framework.common.constant.CommonConstant;
 import com.storlead.framework.common.ecode.PasswordEncoder;
 import com.storlead.framework.common.util.RsaUtils;
 import com.storlead.framework.auth.vo.LoginUser;
@@ -153,7 +154,29 @@ public class UserServiceImpl extends MyBaseServiceImpl<UserMapper, UserEntity> i
 
 	@Override
 	public Boolean syncWxId() {
-		 return syncUserOpenIdFormTencent();
+		LambdaQueryWrapper<UserEntity> wp = new LambdaQueryWrapper<>();
+		wp.isNull(UserEntity::getXworkUserId);
+		wp.eq(UserEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
+		wp.eq(UserEntity::getEnabled,true);
+		List<UserEntity> list = list(wp);
+
+		List<com.storlead.framework.common.vo.UserVo> us = new ArrayList<>();
+		List<com.storlead.framework.common.vo.UserVo> finalUs = us;
+		list.forEach(a -> {
+			com.storlead.framework.common.vo.UserVo v = new com.storlead.framework.common.vo.UserVo();
+			BeanUtils.copyProperties(a,v);
+			finalUs.add(v);
+		});
+		corpWeChatService.syncWxUserIdByMobile(finalUs);
+		for (com.storlead.framework.common.vo.UserVo user : us) {
+			if (Objects.nonNull(user.getXworkUserId())) {
+				LambdaUpdateWrapper<UserEntity> updateWrapper = new LambdaUpdateWrapper<>();
+				updateWrapper.eq(UserEntity::getMobile,user.getMobile());
+				updateWrapper.set(UserEntity::getXworkUserId,user.getXworkUserId());
+				update(updateWrapper);
+			}
+		}
+		return Boolean.TRUE;
 	}
 	/**
 	 * 同步project公司

+ 5 - 0
storlead-wx/src/main/java/com/storlead/wx/properties/CorpWeChatConstants.java

@@ -77,6 +77,11 @@ public class CorpWeChatConstants {
      */
     public final static String GET_USER_LIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=ACCESS_TOKEN&department_id=DEPARTMENT_ID&fetch_child=FETCH_CHILD";
 
+    /**
+     * 根据手机号获取微信Id
+     */
+    public final static String GET_USER_ID_BY_MOBILE_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserid?access_token=ACCESS_TOKEN";
+
     /**
      * 获取用户信息详情
      * 请求方式:GET(HTTPS)

+ 1 - 0
storlead-wx/src/main/java/com/storlead/wx/service/CorpWeChatService.java

@@ -97,6 +97,7 @@ public interface CorpWeChatService {
     // boolean sendTextCardMsg(@NotNull String title, @NotNull String description, @NotNull String redirectionUrl, Set<String> userSet, Set<Long> deptSet);
 
 
+    void syncWxUserIdByMobile(List<UserVo> userList);
     /**
      * 发送卡片消息
      *

+ 16 - 1
storlead-wx/src/main/java/com/storlead/wx/service/impl/CorpWeChatServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.google.common.collect.ImmutableMap;
 import com.storlead.framework.common.vo.UserVo;
 import com.storlead.wx.pojo.vo.CorpWeChatUserVO;
@@ -83,7 +84,7 @@ public class CorpWeChatServiceImpl implements CorpWeChatService {
      * @date 2021-3-8 下午 2:59
      */
     private WechatToken getAddressAccessTokenFromTencent() {
-        return CorpWechatUtil.getAccessToken(CorpWeChatConstants.GET_ACCESS_TOKEN_URL, CorpWeChatProperties.getCorpId(), CorpWeChatProperties.getCorpAddressSecret());
+        return CorpWechatUtil.getAccessToken(CorpWeChatConstants.GET_ACCESS_TOKEN_URL, CorpWeChatProperties.getCorpId(), CorpWeChatProperties.getCorpAgentSecret());
     }
 
     /**
@@ -171,6 +172,20 @@ public class CorpWeChatServiceImpl implements CorpWeChatService {
         }
     }
 
+
+    @Override
+    public void syncWxUserIdByMobile(List<UserVo> userList) {
+        String token = getAddressAccessTokenFromTencent().getToken();
+        for(UserVo user : userList) {
+            try{
+                String workUserId = CorpWechatUtil.getWxUserIdByMobile(CorpWeChatConstants.GET_USER_ID_BY_MOBILE_URL, token, user.getMobile());
+                user.setXworkUserId(workUserId);
+            }catch (Exception e) {
+                log.error("syncUserOpenIdFormTencent ------------error = ",e);
+            }
+        }
+    }
+
     /**
      * 向指定用户或部门发送文本信息
      *

+ 19 - 1
storlead-wx/src/main/java/com/storlead/wx/util/CorpWechatUtil.java

@@ -129,7 +129,7 @@ public class CorpWechatUtil {
         if (deptId != null && deptId > 0) {
             url = url.replace("DEPARTMENT_ID", deptId.toString());
         }
-        String resultStr = HttpUtil.get(url.replace("ACCESS_TOKEN", accessToken).replace("FETCH_CHILD", "1"));
+        String resultStr = HttpUtil.get(url.replace("ACCESS_TOKEN", accessToken).replace("FETCH_CHILD", "1")+"&debug=1");
         if (StringUtils.isNotEmpty(resultStr)) {
             log.debug("查询所有用户---> {}", resultStr);
             JSONObject jsonResult = new JSONObject(resultStr);
@@ -146,6 +146,24 @@ public class CorpWechatUtil {
         return null;
     }
 
+    public static String getWxUserIdByMobile(@NotNull String url, @NotNull String accessToken,String mobile) {
+        Map<String,Object> parm = new HashMap();
+        parm.put("mobile",mobile);
+        String resultStr = HttpUtil.post(url.replace("ACCESS_TOKEN", accessToken),JSON.toJSONString(parm));
+        if (StringUtils.isNotEmpty(resultStr)) {
+            log.debug("查询所有用户---> {}", resultStr);
+            JSONObject jsonResult = new JSONObject(resultStr);
+            int errCode = jsonResult.getInt("errcode");
+            String errMsg = jsonResult.getStr("errmsg");
+            if (CorpWeChatConstants.RETURN_SUCCESS_CODE == errCode) {
+                String userid = jsonResult.getStr("userid").toString();
+                // com.alibaba.fastjson.JSONObject.(json,List<CorpWeChatUserVO>)
+                return userid;
+            }
+        }
+        return null;
+    }
+
     /**
      * 获取员工打卡数据
      * @param url