Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
holmes
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
holmes
Commits
867570df
Commit
867570df
authored
Apr 20, 2021
by
黎博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增jira robot相关接口
parent
237a17e5
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
167 additions
and
8 deletions
+167
-8
JiraWebhookController.java
...a/cn/qg/holmes/controller/jira/JiraWebhookController.java
+82
-7
DingRobot.java
src/main/java/cn/qg/holmes/entity/jira/DingRobot.java
+23
-0
DingRobotMapper.java
src/main/java/cn/qg/holmes/mapper/jira/DingRobotMapper.java
+7
-0
DingRobotService.java
...main/java/cn/qg/holmes/service/jira/DingRobotService.java
+9
-0
DingRobotServiceImpl.java
.../cn/qg/holmes/service/jira/impl/DingRobotServiceImpl.java
+45
-0
DingdingUtils.java
src/main/java/cn/qg/holmes/utils/DingdingUtils.java
+1
-1
No files found.
src/main/java/cn/qg/holmes/controller/jira/JiraWebhookController.java
View file @
867570df
package
cn
.
qg
.
holmes
.
controller
.
jira
;
package
cn
.
qg
.
holmes
.
controller
.
jira
;
import
cn.qg.holmes.utils.JiraWebhookUtils
;
import
cn.qg.holmes.common.JsonResult
;
import
cn.qg.holmes.entity.jira.DingRobot
;
import
cn.qg.holmes.service.jira.DingRobotService
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.BufferedReader
;
import
java.io.BufferedReader
;
import
java.util.HashMap
;
import
java.util.Map
;
@Slf4j
@RestController
@RestController
@RequestMapping
(
"/jira"
)
@RequestMapping
(
"/jira"
)
@Slf4j
public
class
JiraWebhookController
{
public
class
JiraWebhookController
{
@Autowired
DingRobotService
dingRobotService
;
/**
* jira webhook
* @param request
*/
@PostMapping
(
"/webhook"
)
@PostMapping
(
"/webhook"
)
public
void
jiraWebhook
(
HttpServletRequest
request
)
{
public
void
jiraWebhook
(
HttpServletRequest
request
)
{
try
{
try
{
...
@@ -24,10 +36,73 @@ public class JiraWebhookController {
...
@@ -24,10 +36,73 @@ public class JiraWebhookController {
jiraData
.
append
(
str
);
jiraData
.
append
(
str
);
}
}
br
.
close
();
br
.
close
();
log
.
info
(
String
.
valueOf
(
jiraData
));
dingRobotService
.
sendMsgToDing
(
String
.
valueOf
(
jiraData
));
JiraWebhookUtils
.
sendDingdingMsg
(
String
.
valueOf
(
jiraData
));
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
}
}
/**
* 项目机器人列表
* @param pageNum 第几页
* @param pageSize 每页多少个
* @return
*/
@GetMapping
(
"/list/robot"
)
public
JsonResult
getProjectRobotList
(
Integer
pageNum
,
Integer
pageSize
)
{
IPage
<
DingRobot
>
page
=
new
Page
<>(
pageNum
,
pageSize
);
IPage
<
DingRobot
>
projectRobotIPage
=
dingRobotService
.
page
(
page
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"total"
,
projectRobotIPage
.
getTotal
());
map
.
put
(
"list"
,
projectRobotIPage
.
getRecords
());
return
JsonResult
.
buildSuccessResult
(
map
);
}
/**
* 新增项目机器人
* @param dingRobot 项目机器人实体
* @return
*/
@PostMapping
(
"/add/robot"
)
public
JsonResult
addProjectRobot
(
@RequestBody
DingRobot
dingRobot
)
{
if
(
dingRobot
.
getProjectName
()
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"项目名称不能为空!"
,
false
);
}
if
(
dingRobot
.
getDingUrl
()
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"钉钉url不能为空!"
,
false
);
}
return
JsonResult
.
buildSuccessResult
(
dingRobotService
.
save
(
dingRobot
));
}
/**
* 修改项目机器人
* @param dingRobot 项目机器人实体
* @return
*/
@PostMapping
(
"/modify/robot"
)
public
JsonResult
editProjectRobot
(
@RequestBody
DingRobot
dingRobot
)
{
if
(
dingRobot
.
getId
()
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"id不能为空!"
,
false
);
}
if
(
dingRobot
.
getProjectName
()
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"项目名称不能为空!"
,
false
);
}
if
(
dingRobot
.
getDingUrl
()
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"钉钉url不能为空!"
,
false
);
}
return
JsonResult
.
buildSuccessResult
(
dingRobotService
.
save
(
dingRobot
));
}
/**
* 删除项目机器人
* @param projectRobotId 项目机器人实体id
* @return
*/
@PostMapping
(
"/delete/robot"
)
public
JsonResult
deleteProjectRobot
(
Integer
projectRobotId
)
{
if
(
dingRobotService
.
getById
(
projectRobotId
)
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"项目机器人不存在!"
,
false
);
}
return
JsonResult
.
buildSuccessResult
(
dingRobotService
.
removeById
(
projectRobotId
));
}
}
}
src/main/java/cn/qg/holmes/entity/jira/DingRobot.java
0 → 100644
View file @
867570df
package
cn
.
qg
.
holmes
.
entity
.
jira
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.util.Date
;
@Data
@TableName
(
value
=
"ding_robot"
)
public
class
DingRobot
{
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
id
;
private
String
projectName
;
private
String
dingUrl
;
private
String
creator
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
}
src/main/java/cn/qg/holmes/mapper/jira/DingRobotMapper.java
0 → 100644
View file @
867570df
package
cn
.
qg
.
holmes
.
mapper
.
jira
;
import
cn.qg.holmes.entity.jira.DingRobot
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
public
interface
DingRobotMapper
extends
BaseMapper
<
DingRobot
>
{
}
src/main/java/cn/qg/holmes/service/jira/DingRobotService.java
0 → 100644
View file @
867570df
package
cn
.
qg
.
holmes
.
service
.
jira
;
import
cn.qg.holmes.entity.jira.DingRobot
;
import
com.baomidou.mybatisplus.extension.service.IService
;
public
interface
DingRobotService
extends
IService
<
DingRobot
>
{
Boolean
sendMsgToDing
(
String
jiraData
);
}
src/main/java/cn/qg/holmes/
utils/JiraWebhookUtils
.java
→
src/main/java/cn/qg/holmes/
service/jira/impl/DingRobotServiceImpl
.java
View file @
867570df
package
cn
.
qg
.
holmes
.
utils
;
package
cn
.
qg
.
holmes
.
service
.
jira
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
cn.qg.holmes.entity.jira.DingRobot
;
import
cn.qg.holmes.mapper.jira.DingRobotMapper
;
import
cn.qg.holmes.service.jira.DingRobotService
;
import
cn.qg.holmes.utils.DingdingUtils
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.jayway.jsonpath.JsonPath
;
import
com.jayway.jsonpath.JsonPath
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@S
lf4j
@S
ervice
public
class
JiraWebhookUtils
{
public
class
DingRobotServiceImpl
extends
ServiceImpl
<
DingRobotMapper
,
DingRobot
>
implements
DingRobotService
{
public
static
void
sendDingdingMsg
(
String
jiraData
)
{
@Autowired
String
url
=
"https://oapi.dingtalk.com/robot/send?access_token=835663338d638e40daaf3ab358af741ef0680a826a962c91bedc53b149d85ee1"
;
DingRobotMapper
dingRobotMapper
;
@Override
public
Boolean
sendMsgToDing
(
String
jiraData
)
{
String
webhookEvent
=
JsonPath
.
read
(
jiraData
,
"$.webhookEvent"
);
String
webhookEvent
=
JsonPath
.
read
(
jiraData
,
"$.webhookEvent"
);
if
(
StringUtils
.
equals
(
webhookEvent
,
"jira:issue_created"
))
{
if
(
StringUtils
.
equals
(
webhookEvent
,
"jira:issue_created"
))
{
String
creator
=
JsonPath
.
read
(
jiraData
,
"$.issue.fields.creator.displayName"
);
String
creator
=
JsonPath
.
read
(
jiraData
,
"$.issue.fields.creator.displayName"
);
...
@@ -21,19 +27,19 @@ public class JiraWebhookUtils {
...
@@ -21,19 +27,19 @@ public class JiraWebhookUtils {
String
key
=
JsonPath
.
read
(
jiraData
,
"$.issue.key"
);
String
key
=
JsonPath
.
read
(
jiraData
,
"$.issue.key"
);
String
summary
=
JsonPath
.
read
(
jiraData
,
"$.issue.fields.summary"
);
String
summary
=
JsonPath
.
read
(
jiraData
,
"$.issue.fields.summary"
);
String
priority
=
JsonPath
.
read
(
jiraData
,
"$.issue.fields.priority.name"
);
String
priority
=
JsonPath
.
read
(
jiraData
,
"$.issue.fields.priority.name"
);
String
markdownMsg
=
DingdingUtils
.
buildMarkdownMsg
(
key
,
summary
,
creator
,
assignee
,
priority
);
String
robotUrl
=
null
;
DingdingUtils
.
sendToDingding
(
markdownMsg
,
url
);
List
<
DingRobot
>
dingRobots
=
dingRobotMapper
.
selectList
(
null
);
for
(
DingRobot
dingRobot
:
dingRobots
)
{
if
(
summary
.
contains
(
dingRobot
.
getProjectName
()))
{
robotUrl
=
dingRobot
.
getDingUrl
();
break
;
}
}
if
(
robotUrl
!=
null
)
{
String
markdownMsg
=
DingdingUtils
.
buildMarkdownMsg
(
key
,
summary
,
creator
,
assignee
,
priority
);
return
DingdingUtils
.
sendToDingding
(
markdownMsg
,
robotUrl
);
}
}
}
}
return
false
;
public
static
void
main
(
String
[]
args
)
{
String
url
=
"https://oapi.dingtalk.com/robot/send?access_token=835663338d638e40daaf3ab358af741ef0680a826a962c91bedc53b149d85ee1"
;
Map
<
String
,
Object
>
markdown
=
new
HashMap
<>();
Map
<
String
,
String
>
content
=
new
HashMap
<>();
markdown
.
put
(
"msgtype"
,
"markdown"
);
content
.
put
(
"title"
,
"黎博提交了BUG:CSXT-142"
);
content
.
put
(
"text"
,
"## 黎博提交了BUG:CSXT-142"
+
"\n"
+
"### 概要:[【羊小咩v7.6.00】【iOS】【搜索】首页主搜索和专题页或者满减页等搜索逻辑问题]"
+
"(http://jira2.quantgroup.cn/browse/CSXT-143)"
+
"\n"
+
"优先级:"
+
"P3一般"
+
"\n"
+
"经办人:"
+
"于巧玲"
);
markdown
.
put
(
"markdown"
,
content
);
DingdingUtils
.
sendToDingding
(
JSON
.
toJSONString
(
markdown
),
url
);
}
}
}
}
src/main/java/cn/qg/holmes/utils/DingdingUtils.java
View file @
867570df
...
@@ -25,7 +25,7 @@ public class DingdingUtils {
...
@@ -25,7 +25,7 @@ public class DingdingUtils {
String
title
=
creator
+
"提交了BUG:"
+
key
;
String
title
=
creator
+
"提交了BUG:"
+
key
;
String
issueUrl
=
"http://jira2.quantgroup.cn/browse/"
+
key
;
String
issueUrl
=
"http://jira2.quantgroup.cn/browse/"
+
key
;
content
.
put
(
"title"
,
title
);
content
.
put
(
"title"
,
title
);
content
.
put
(
"text"
,
"##
"
+
title
+
"\n"
+
"
### 概要:["
+
summary
+
"]("
+
issueUrl
+
")"
+
"\n"
+
"- 优先级:"
+
priority
+
"\n"
+
"- 经办人:"
+
assignee
);
content
.
put
(
"text"
,
"##
# "
+
title
+
"\n"
+
"#
### 概要:["
+
summary
+
"]("
+
issueUrl
+
")"
+
"\n"
+
"- 优先级:"
+
priority
+
"\n"
+
"- 经办人:"
+
assignee
);
markdown
.
put
(
"markdown"
,
content
);
markdown
.
put
(
"markdown"
,
content
);
return
JSON
.
toJSONString
(
markdown
);
return
JSON
.
toJSONString
(
markdown
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment