Commit 34dfca6b authored by 周亚武's avatar 周亚武

钉钉相关接口

parent cc1cdaf7
......@@ -20,6 +20,9 @@ import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity;
import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordQuery;
import com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService;
import com.mortals.xhx.module.dingding.personal.service.IDingPersonService;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.model.StaffQuery;
import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.logging.Log;
import org.apache.poi.ss.formula.functions.T;
......@@ -54,7 +57,8 @@ public class DingMessageController {
private IDingPersonService dingPersonService;
@Autowired
private AttendanceLeaveRecordService attendanceLeaveRecordService;
@Autowired
private StaffService staffService;
/**
* appKey
......@@ -109,12 +113,18 @@ public class DingMessageController {
AttendanceLeaveRecordEntity leaveRecordEntity = new AttendanceLeaveRecordEntity();
leaveRecordEntity.initAttrValue();
leaveRecordEntity.setRemark(processInstanceId); //将钉钉的事物id作为备注填入数据库
leaveRecordEntity.setLeavePersonId(Long.parseLong(result.getOriginatorUserId()));
leaveRecordEntity.setLeavePerson(result.getTitle().substring(0,result.getTitle().indexOf("提交")));
leaveRecordEntity.setDeptId(Long.parseLong(result.getOriginatorDeptId()));
leaveRecordEntity.setDeptName(result.getOriginatorDeptName());
Rest<String> mobileRest = dingPersonService.getPersonById(result.getOriginatorUserId());
if(mobileRest.getCode() == Rest.SUCCESS) {
String mobile = mobileRest.getData();
StaffEntity staffEntity = staffService.selectOne(new StaffQuery().phoneNumber(mobile));
if(!ObjectUtils.isEmpty(staffEntity)){
leaveRecordEntity.setLeavePersonId(staffEntity.getId());
leaveRecordEntity.setLeavePerson(staffEntity.getName());
leaveRecordEntity.setDeptId(staffEntity.getDeptId());
leaveRecordEntity.setDeptName(staffEntity.getDeptName());
leaveRecordEntity.setPhoneNumber(staffEntity.getPhoneNumber());
if(result.getTasks().size() >0 ){
Date startTime = dateFormat(result.getTasks().get(0).getCreateTime());
......@@ -252,6 +262,20 @@ public class DingMessageController {
}
}else {
log.info("该号码("+mobile +")未在本系统绑定");
}
}else {
log.info("根据id在钉钉平台查询电话失败"+mobileRest.getMsg());
}
}
}
......
......@@ -2,6 +2,7 @@ package com.mortals.xhx.module.dingding.personal.service;
import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody;
import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.module.dingding.IDingTalkService;
import com.mortals.xhx.module.dingding.personal.model.req.workmsg.WorkMsgReq;
......@@ -27,6 +28,14 @@ public interface IDingPersonService extends IDingTalkService {
*/
Rest<String> getPersonByMobile(String mobile);
/**
* 根据id获取用户电话
*
* @param id
* @return
*/
Rest<String> getPersonById(String id);
/**
* 根据code获取钉钉用户id
*
......
......@@ -6,9 +6,11 @@ import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody;
import com.aliyun.tea.TeaException;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
import com.dingtalk.api.request.OapiV2UserGetRequest;
import com.dingtalk.api.request.OapiV2UserGetbymobileRequest;
import com.dingtalk.api.request.OapiV2UserGetuserinfoRequest;
import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.dingtalk.api.response.OapiV2UserGetbymobileResponse;
import com.dingtalk.api.response.OapiV2UserGetuserinfoResponse;
import com.mortals.framework.common.Rest;
......@@ -50,6 +52,26 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
}
}
@Override
public Rest<String> getPersonById(String id) {
try {
DingTalkClient client = getDingTalkClient("/topapi/v2/user/get");
OapiV2UserGetRequest req = new OapiV2UserGetRequest();
req.setUserid(id); //用户id
log.info("getPersonByID:{}",id);
OapiV2UserGetResponse rsp = client.execute(req, getToken());
log.info("钉钉返回用户信息:{}", rsp.getBody());
if (rsp.getErrcode() == 0) {
return Rest.ok("成功", rsp.getResult().getMobile());
} else {
return Rest.fail(String.format("code:%s,msg:%s", rsp.getErrcode(), rsp.getErrmsg()));
}
} catch (ApiException e) {
log.info("根据手机号码查询人员异常", e);
return Rest.fail(e.getMessage());
}
}
@Override
public Rest<String> getPersonByCode(String code) {
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