问题知识库-country_card-管理发布、明细开发。

项目飞书交互开发。
This commit is contained in:
wangzhijiang
2022-08-04 14:27:54 +08:00
parent c81bea2dea
commit ecf8a3daed
19 changed files with 1235 additions and 0 deletions
@@ -692,3 +692,31 @@ CREATE TABLE `laws_weilai`.`problem_knowledge_base_collect` (
`collect_status` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '收藏状态',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '问题知识库收藏表' ROW_FORMAT = Dynamic;
-- 问题知识库-country_card-管理发布表 2022-08-04
CREATE TABLE `laws_weilai`.`country_card_manage_release` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属部门',
`apply_market` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '适用市场',
`release_status` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布状态',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '问题知识库-country_card-管理发布表' ROW_FORMAT = Dynamic;
-- 问题知识库-country_card-管理发布明细表 2022-08-04
CREATE TABLE `laws_weilai`.`country_card_manage_release_detail` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属部门',
`country_card_manage_release_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'country_card管理发布表id',
`country_card_temp_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板表id',
`description` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
`content` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '内容',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '问题知识库-country_card-管理发布明细表' ROW_FORMAT = Dynamic;
@@ -151,6 +151,9 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/lawsTechnologyEvaluation/lawsTechnologyEvaluationEO/processCall", "anon");
// 法规技术评估-条款信息评估结果表 工作流处理数据接口排除
filterChainDefinitionMap.put("/lawsTechnologyEvaluation/lawsTechnologyEvaluationItemResultEO/processCall", "anon");
filterChainDefinitionMap.put("/lark/larkEventSubscriptionConfig", "anon"); //飞书调用接口,事件订阅配置。
filterChainDefinitionMap.put("/lark/larkCardMessageConfig", "anon"); //飞书调用接口,卡片消息配置。
filterChainDefinitionMap.put("/sys/user/querySysUserListByIdList", "anon"); // 工作流根据用户idList获取用户信息接口
// 添加自己的过滤器并且取名为jwt
@@ -0,0 +1,91 @@
package com.jero.modules.feishu.controller;
import com.alibaba.fastjson.JSONObject;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.feishu.utils.LarkDecryptUtil;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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;
@Api(tags="飞书交互控制层")
@RestController
@RequestMapping("/lark")
@Slf4j
public class LarkController {
@Autowired
private IFeishuService feishuService;
//加密密钥
@Value("${Feishu.eventSubscription.encryptKey}")
private String encryptKey;
/**
* 飞书调用接口,飞书事件订阅配置。
* @param jsonObject
* @return
*/
@PostMapping(value = "/larkEventSubscriptionConfig")
public String larkEventSubscriptionConfig(@RequestBody JSONObject jsonObject){
String encrypt = jsonObject.getString("encrypt");
log.info(encrypt);
LarkDecryptUtil d = new LarkDecryptUtil(encryptKey);
String decrypt = null;
try {
decrypt = d.decrypt(encrypt);
} catch (Exception exception) {
exception.printStackTrace();
}
log.info("decrypt:==========================================================" + decrypt);
//解析密钥json
JSONObject decryptJson = JSONObject.parseObject(decrypt);
Object event = decryptJson.get("event");
if(event != null){
JSONObject eventJson = JSONObject.parseObject(decryptJson.get("event").toString());
// 消息类型 与飞书开放平台文档应该一致
String msgType = eventJson.getString("msg_type");
//如果是文本类型消息,进入处理,
if(StringUtils.equals(msgType,"text")){
//用户发送的内容
String textWithoutAtBot = eventJson.getString("text_without_at_bot");
//用户发送的内容 与上方textWithoutAtBot变量一致(迷惑行为,同样的内容,用了两个字段返回)
String text = eventJson.getString("text");
//用户id
String employeeId = eventJson.getString("employee_id");
//判断用户发送的消息内容,如果包含"知识库" 那么给用户推送知识库分类菜单
if(StringUtils.contains(text,"知识库")){
log.info(""+employeeId+"用户推送知识库一级分类菜单:==========================================================");
feishuService.sendKnowledgeBaseTypeCard(employeeId.split(","));
}
}
}
return decrypt;
}
/**
* 飞书卡片消息配置
* @param jsonObject
* @return
*/
@PostMapping(value = "/larkCardMessageConfig")
public JSONObject larkCardMessageConfig(@RequestBody JSONObject jsonObject){
JSONObject result = new JSONObject();
String challenge = jsonObject.getString("challenge");
if(StringUtils.isEmpty(challenge)){
this.feishuService.sendKnowledgeBaseInfoCard(jsonObject);
}
result.put("challenge",challenge);
log.info(result.toString());
return result;
}
}
@@ -1,5 +1,6 @@
package com.jero.modules.feishu.service;
import com.alibaba.fastjson.JSONObject;
import com.jero.modules.feishu.vo.FeishuMsgVo;
import java.io.IOException;
@@ -43,4 +44,16 @@ public interface IFeishuService {
* @return
*/
String translateText(Map<String,Object> params);
/**
* 发送知识库分类卡片消息 (用户输入知识库的时候)
* @param userIds
*/
void sendKnowledgeBaseTypeCard(String[] userIds);
/**
* 发送知识库信息卡片消息 (用户点击某一个分类的时候)
* @param jsonObject
*/
void sendKnowledgeBaseInfoCard(JSONObject jsonObject);
}
@@ -3,11 +3,13 @@ package com.jero.modules.feishu.service.impl;
import cn.hutool.core.util.StrUtil;
import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jero.modules.feishu.service.IFeishuService;
import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.system.util.HttpRequestUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -306,4 +308,175 @@ public class FeishuServiceImpl implements IFeishuService {
return result;
}
/**
* 发送知识库分类卡片消息 (用户输入知识库的时候)
* @param userIds
*/
@Override
public void sendKnowledgeBaseTypeCard(String[] userIds){
String token = null;
try {
token = getTenantAccessToken();
} catch (IOException e) {
e.printStackTrace();
}
// 设置请求头
Map<String, String> headerMap = new HashMap<>();
headerMap.put("Authorization", "Bearer " + token);
headerMap.put("Content-Type", "application/json; charset=utf-8");
String sendJson = " {\n" +
" \"config\": {\n" +
" \"wide_screen_mode\": true\n" +
" },\n" +
" \"header\": {\n" +
" \"title\": {\n" +
" \"tag\": \"plain_text\",\n" +
" \"content\": \"点击下方的分类查看常见问题\"\n" +
" }\n" +
" }\n" +
"}";
JSONObject jsonObject = JSONObject.parseObject(sendJson);
JSONArray elements = new JSONArray();
JSONObject element = new JSONObject();
element.put("tag","action");
element.put("layout","bisected");
JSONArray actions = new JSONArray();
//组装推送过去的点击按钮
for (int i=0; i<5; i++){
JSONObject buttonObject = new JSONObject();
JSONObject text = new JSONObject();
JSONObject value = new JSONObject();
buttonObject.put("tag","button");
if(i==0){
text.put("tag","plain_text");
text.put("content","content1");
value.put("chosen","chosen1");
}
if(i==1){
text.put("tag","plain_text");
text.put("content","content2");
value.put("chosen","chosen2");
}
if(i==2){
text.put("tag","plain_text");
text.put("content","content3");
value.put("chosen","chosen3");
}
if(i==3){
text.put("tag","plain_text");
text.put("content","content4");
value.put("chosen","chosen4");
}
if(i==4){
text.put("tag","plain_text");
text.put("content","content5");
value.put("chosen","chosen5");
}
if(i==5){
text.put("tag","plain_text");
text.put("content","content6");
value.put("chosen","chosen6");
}
buttonObject.put("text",text);
buttonObject.put("type","primary");
buttonObject.put("value",value);
actions.add(buttonObject);
}
element.put("actions",actions);
elements.add(element);
jsonObject.put("elements",elements);
// 设置请求参数
JSONObject paramsMap = new JSONObject();
paramsMap.put("user_ids", userIds);
paramsMap.put("msg_type", "interactive");
paramsMap.put("card", jsonObject);
// 发送请求给飞书
String response = null;
try {
response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
} catch (IOException e) {
e.printStackTrace();
}
// 获取返回结果
JSONObject tokenJson = JSONObject.parseObject(response);
if(!tokenJson.get("code").toString().equals("0")) {
log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
}
}
@Override
public void sendKnowledgeBaseInfoCard(JSONObject jsonObject) {
String[] userIds = jsonObject.getString("user_id").split(",");
String clickStr = JSONObject.toJSONString(JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("action"))).get("value"));
log.info("用户点击的数据: " + clickStr);
String sendJson = " ";
JSONObject clickJson = JSONObject.parseObject(clickStr);
if(StringUtils.isNotEmpty(clickJson.getString("chosen"))){
sendJson = clickJson.getString("chosen");
}
String token = null;
try {
token = getTenantAccessToken();
} catch (IOException e) {
e.printStackTrace();
}
// 设置请求头
Map<String, String> headerMap = new HashMap<>();
headerMap.put("Authorization", "Bearer " + token);
headerMap.put("Content-Type", "application/json; charset=utf-8");
// 设置消息标题
JSONObject zh_cn = new JSONObject();
zh_cn.put("title", "title");
// 设置消息内容
// 第一行
JSONObject contentOne = new JSONObject();
contentOne.put("tag", "text");
contentOne.put("text", sendJson);
List<JSONObject> contentList = new ArrayList<>();
contentList.add(contentOne);
List<List<JSONObject>> list = new ArrayList<>();
list.add(contentList);
zh_cn.put("content", list);
JSONObject post = new JSONObject();
post.put("zh_cn", zh_cn);
JSONObject contentObj = new JSONObject();
contentObj.put("post", post);
// 设置请求参数
JSONObject paramsMap = new JSONObject();
paramsMap.put("user_ids", userIds);
paramsMap.put("msg_type", "post");
paramsMap.put("content", contentObj);
// 发送请求给飞书
String response = null;
try {
response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
} catch (IOException e) {
e.printStackTrace();
}
// 返回结果样例:{"code":0,"data":{"invalid_department_ids":[],"invalid_open_ids":[],"invalid_union_ids":[],"invalid_user_ids":[],"message_id":"bm-d595567e4f448fafe397bc916f0be646"},"msg":"ok"}
// 获取返回结果
JSONObject tokenJson = JSONObject.parseObject(response);
if(!tokenJson.get("code").toString().equals("0")) {
log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
}
}
}
@@ -0,0 +1,55 @@
package com.jero.modules.feishu.utils;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
/**
* 飞书解密工具类
* @Author: wzj
* @Date: 2022/8/4 10:52
**/
public class LarkDecryptUtil {
public static void main(String[] args) throws Exception {
LarkDecryptUtil d = new LarkDecryptUtil("test key");
System.out.println(d.decrypt("P37w+VZImNgPEO1RBhJ6RtKl7n6zymIbEG1pReEzghk=")); //hello world
}
private byte[] keyBs;
public LarkDecryptUtil(String key) {
MessageDigest digest = null;
try {
digest = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
// won't happen
}
keyBs = digest.digest(key.getBytes(StandardCharsets.UTF_8));
}
public String decrypt(String base64) throws Exception {
byte[] decode = Base64.getDecoder().decode(base64);
Cipher cipher = Cipher.getInstance("AES/CBC/NOPADDING");
byte[] iv = new byte[16];
System.arraycopy(decode, 0, iv, 0, 16);
byte[] data = new byte[decode.length - 16];
System.arraycopy(decode, 16, data, 0, data.length);
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(keyBs, "AES"), new IvParameterSpec(iv));
byte[] r = cipher.doFinal(data);
if (r.length > 0) {
int p = r.length - 1;
for (; p >= 0 && r[p] <= 16; p--) {
}
if (p != r.length - 1) {
byte[] rr = new byte[p + 1];
System.arraycopy(r, 0, rr, 0, p + 1);
r = rr;
}
}
return new String(r, StandardCharsets.UTF_8);
}
}
@@ -0,0 +1,170 @@
package com.jero.modules.problemKnowledgeBase.controller;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseDetailEO;
import com.jero.modules.problemKnowledgeBase.service.ICountryCardManageReleaseDetailEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
/**
* @Description: 问题知识库-country_card-管理发布明细表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
@Api(tags="问题知识库-country_card-管理发布明细表")
@RestController
@RequestMapping("/problemKnowledgeBase/countryCardManageReleaseDetailEO")
@Slf4j
public class CountryCardManageReleaseDetailEOController extends JeroController<CountryCardManageReleaseDetailEO, ICountryCardManageReleaseDetailEOService> {
@Autowired
private ICountryCardManageReleaseDetailEOService countryCardManageReleaseDetailEOService;
/**
* 分页列表查询
*
* @param countryCardManageReleaseDetailEO
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布明细表-分页列表查询")
@ApiOperation(value="问题知识库-country_card-管理发布明细表-分页列表查询", notes="问题知识库-country_card-管理发布明细表-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<CountryCardManageReleaseDetailEO> queryWrapper = QueryGenerator.initQueryWrapper(countryCardManageReleaseDetailEO, req.getParameterMap());
Page<CountryCardManageReleaseDetailEO> page = new Page<CountryCardManageReleaseDetailEO>(pageNo, pageSize);
IPage<CountryCardManageReleaseDetailEO> pageList = countryCardManageReleaseDetailEOService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布明细表-列表查询")
@ApiOperation(value="问题知识库-country_card-管理发布明细表-列表查询", notes="问题知识库-country_card-管理发布明细表-列表查询")
@GetMapping(value = "/list")
public Result<List<CountryCardManageReleaseDetailEO>> queryList() {
List<CountryCardManageReleaseDetailEO> list = countryCardManageReleaseDetailEOService.queryList();
return Result.OK(list);
}
/**
* 添加
*
* @param countryCardManageReleaseDetailEO
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布明细表-添加")
@ApiOperation(value="问题知识库-country_card-管理发布明细表-添加", notes="问题知识库-country_card-管理发布明细表-添加")
@PostMapping(value = "/add")
public Result<?> add(@Validated @RequestBody CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO) {
countryCardManageReleaseDetailEOService.add(countryCardManageReleaseDetailEO);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param countryCardManageReleaseDetailEO
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布明细表-编辑")
@ApiOperation(value="问题知识库-country_card-管理发布明细表-编辑", notes="问题知识库-country_card-管理发布明细表-编辑")
@PutMapping(value = "/edit")
public Result<?> edit(@Validated @RequestBody CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO) {
countryCardManageReleaseDetailEOService.editById(countryCardManageReleaseDetailEO);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布明细表-通过id删除")
@ApiOperation(value="问题知识库-country_card-管理发布明细表-通过id删除", notes="问题知识库-country_card-管理发布明细表-通过id删除")
@DeleteMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
countryCardManageReleaseDetailEOService.deleteById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布明细表-批量删除")
@ApiOperation(value="问题知识库-country_card-管理发布明细表-批量删除", notes="问题知识库-country_card-管理发布明细表-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.countryCardManageReleaseDetailEOService.deleteByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布明细表-通过id查询")
@ApiOperation(value="问题知识库-country_card-管理发布明细表-通过id查询", notes="问题知识库-country_card-管理发布明细表-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO = countryCardManageReleaseDetailEOService.queryById(id);
if(countryCardManageReleaseDetailEO==null) {
return Result.error("未找到对应数据");
}
return Result.OK(countryCardManageReleaseDetailEO);
}
/**
* 导出excel
*
* @param request
* @param countryCardManageReleaseDetailEO
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO) {
return super.exportXls(request, countryCardManageReleaseDetailEO, CountryCardManageReleaseDetailEO.class, "问题知识库-country_card-管理发布明细表");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, CountryCardManageReleaseDetailEO.class);
}
}
@@ -0,0 +1,170 @@
package com.jero.modules.problemKnowledgeBase.controller;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseEO;
import com.jero.modules.problemKnowledgeBase.service.ICountryCardManageReleaseEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
/**
* @Description: 问题知识库-country_card-管理发布表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
@Api(tags="问题知识库-country_card-管理发布表")
@RestController
@RequestMapping("/problemKnowledgeBase/countryCardManageReleaseEO")
@Slf4j
public class CountryCardManageReleaseEOController extends JeroController<CountryCardManageReleaseEO, ICountryCardManageReleaseEOService> {
@Autowired
private ICountryCardManageReleaseEOService countryCardManageReleaseEOService;
/**
* 分页列表查询
*
* @param countryCardManageReleaseEO
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布表-分页列表查询")
@ApiOperation(value="问题知识库-country_card-管理发布表-分页列表查询", notes="问题知识库-country_card-管理发布表-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(CountryCardManageReleaseEO countryCardManageReleaseEO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<CountryCardManageReleaseEO> queryWrapper = QueryGenerator.initQueryWrapper(countryCardManageReleaseEO, req.getParameterMap());
Page<CountryCardManageReleaseEO> page = new Page<CountryCardManageReleaseEO>(pageNo, pageSize);
IPage<CountryCardManageReleaseEO> pageList = countryCardManageReleaseEOService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布表-列表查询")
@ApiOperation(value="问题知识库-country_card-管理发布表-列表查询", notes="问题知识库-country_card-管理发布表-列表查询")
@GetMapping(value = "/list")
public Result<List<CountryCardManageReleaseEO>> queryList() {
List<CountryCardManageReleaseEO> list = countryCardManageReleaseEOService.queryList();
return Result.OK(list);
}
/**
* 添加
*
* @param countryCardManageReleaseEO
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布表-添加")
@ApiOperation(value="问题知识库-country_card-管理发布表-添加", notes="问题知识库-country_card-管理发布表-添加")
@PostMapping(value = "/add")
public Result<?> add(@Validated @RequestBody CountryCardManageReleaseEO countryCardManageReleaseEO) {
countryCardManageReleaseEOService.add(countryCardManageReleaseEO);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param countryCardManageReleaseEO
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布表-编辑")
@ApiOperation(value="问题知识库-country_card-管理发布表-编辑", notes="问题知识库-country_card-管理发布表-编辑")
@PutMapping(value = "/edit")
public Result<?> edit(@Validated @RequestBody CountryCardManageReleaseEO countryCardManageReleaseEO) {
countryCardManageReleaseEOService.editById(countryCardManageReleaseEO);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布表-通过id删除")
@ApiOperation(value="问题知识库-country_card-管理发布表-通过id删除", notes="问题知识库-country_card-管理发布表-通过id删除")
@DeleteMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
countryCardManageReleaseEOService.deleteById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布表-批量删除")
@ApiOperation(value="问题知识库-country_card-管理发布表-批量删除", notes="问题知识库-country_card-管理发布表-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.countryCardManageReleaseEOService.deleteByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "问题知识库-country_card-管理发布表-通过id查询")
@ApiOperation(value="问题知识库-country_card-管理发布表-通过id查询", notes="问题知识库-country_card-管理发布表-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
CountryCardManageReleaseEO countryCardManageReleaseEO = countryCardManageReleaseEOService.queryById(id);
if(countryCardManageReleaseEO==null) {
return Result.error("未找到对应数据");
}
return Result.OK(countryCardManageReleaseEO);
}
/**
* 导出excel
*
* @param request
* @param countryCardManageReleaseEO
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, CountryCardManageReleaseEO countryCardManageReleaseEO) {
return super.exportXls(request, countryCardManageReleaseEO, CountryCardManageReleaseEO.class, "问题知识库-country_card-管理发布表");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, CountryCardManageReleaseEO.class);
}
}
@@ -0,0 +1,84 @@
package com.jero.modules.problemKnowledgeBase.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 问题知识库-country_card-管理发布明细表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
@Data
@TableName("country_card_manage_release_detail")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="country_card_manage_release_detail对象", description="问题知识库-country_card-管理发布明细表")
public class CountryCardManageReleaseDetailEO implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private java.lang.String sysOrgCode;
/**country_card管理发布表id*/
@Excel(name = "country_card管理发布表id", width = 15)
@ApiModelProperty(value = "country_card管理发布表id")
private java.lang.String countryCardManageReleaseId;
/**模板表id*/
@Excel(name = "模板表id", width = 15)
@ApiModelProperty(value = "模板表id")
private java.lang.String countryCardTempId;
/**描述*/
@Excel(name = "描述", width = 15)
@ApiModelProperty(value = "描述")
private java.lang.String description;
/**内容*/
@Excel(name = "内容", width = 15)
@ApiModelProperty(value = "内容")
private java.lang.String content;
}
@@ -0,0 +1,74 @@
package com.jero.modules.problemKnowledgeBase.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 问题知识库-country_card-管理发布表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
@Data
@TableName("country_card_manage_release")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="country_card_manage_release对象", description="问题知识库-country_card-管理发布表")
public class CountryCardManageReleaseEO implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private java.lang.String sysOrgCode;
/**适用市场*/
@Excel(name = "适用市场", width = 15)
@ApiModelProperty(value = "适用市场")
private java.lang.String applyMarket;
/**发布状态*/
@Excel(name = "发布状态", width = 15)
@ApiModelProperty(value = "发布状态")
private java.lang.String releaseStatus;
}
@@ -0,0 +1,17 @@
package com.jero.modules.problemKnowledgeBase.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseDetailEO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 问题知识库-country_card-管理发布明细表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
public interface CountryCardManageReleaseDetailEOMapper extends BaseMapper<CountryCardManageReleaseDetailEO> {
}
@@ -0,0 +1,17 @@
package com.jero.modules.problemKnowledgeBase.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseEO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 问题知识库-country_card-管理发布表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
public interface CountryCardManageReleaseEOMapper extends BaseMapper<CountryCardManageReleaseEO> {
}
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.problemKnowledgeBase.mapper.CountryCardManageReleaseDetailEOMapper">
<resultMap id="CountryCardManageReleaseDetailEOResultMap" type="com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseDetailEO">
<id column="id" property="id" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="sys_org_code" property="sysOrgCode" />
<result column="country_card_manage_release_id" property="countryCardManageReleaseId" />
<result column="country_card_temp_id" property="countryCardTempId" />
<result column="description" property="description" />
<result column="content" property="content" />
</resultMap>
</mapper>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.problemKnowledgeBase.mapper.CountryCardManageReleaseEOMapper">
<resultMap id="CountryCardManageReleaseEOResultMap" type="com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseEO">
<id column="id" property="id" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="sys_org_code" property="sysOrgCode" />
<result column="apply_market" property="applyMarket" />
<result column="release_status" property="releaseStatus" />
</resultMap>
</mapper>
@@ -0,0 +1,61 @@
package com.jero.modules.problemKnowledgeBase.service;
import com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseDetailEO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 问题知识库-country_card-管理发布明细表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
public interface ICountryCardManageReleaseDetailEOService extends IService<CountryCardManageReleaseDetailEO> {
/**
* 保存
*
* @param countryCardManageReleaseDetailEO
* @return
*/
void add(CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO);
/**
* 更新
*
* @param countryCardManageReleaseDetailEO
* @return
*/
void editById(CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
CountryCardManageReleaseDetailEO queryById(String id);
/**
* 列表查询
*
* @return
*/
List<CountryCardManageReleaseDetailEO> queryList();
}
@@ -0,0 +1,61 @@
package com.jero.modules.problemKnowledgeBase.service;
import com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseEO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 问题知识库-country_card-管理发布表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
public interface ICountryCardManageReleaseEOService extends IService<CountryCardManageReleaseEO> {
/**
* 保存
*
* @param countryCardManageReleaseEO
* @return
*/
void add(CountryCardManageReleaseEO countryCardManageReleaseEO);
/**
* 更新
*
* @param countryCardManageReleaseEO
* @return
*/
void editById(CountryCardManageReleaseEO countryCardManageReleaseEO);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
CountryCardManageReleaseEO queryById(String id);
/**
* 列表查询
*
* @return
*/
List<CountryCardManageReleaseEO> queryList();
}
@@ -0,0 +1,89 @@
package com.jero.modules.problemKnowledgeBase.service.impl;
import com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseDetailEO;
import com.jero.modules.problemKnowledgeBase.mapper.CountryCardManageReleaseDetailEOMapper;
import com.jero.modules.problemKnowledgeBase.service.ICountryCardManageReleaseDetailEOService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Date;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 问题知识库-country_card-管理发布明细表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
@Service
public class CountryCardManageReleaseDetailEOServiceImpl extends ServiceImpl<CountryCardManageReleaseDetailEOMapper, CountryCardManageReleaseDetailEO> implements ICountryCardManageReleaseDetailEOService {
/**
* 保存
*
* @param countryCardManageReleaseDetailEO
* @return
*/
@Override
public void add(CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO) {
Date now = new Date();
countryCardManageReleaseDetailEO.setCreateTime(now);
countryCardManageReleaseDetailEO.setUpdateTime(now);
save(countryCardManageReleaseDetailEO);
}
/**
* 更新
*
* @param countryCardManageReleaseDetailEO
* @return
*/
@Override
public void editById(CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO) {
Date now = new Date();
countryCardManageReleaseDetailEO.setUpdateTime(now);
saveOrUpdate(countryCardManageReleaseDetailEO);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public CountryCardManageReleaseDetailEO queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<CountryCardManageReleaseDetailEO> queryList() {
return list();
}
}
@@ -0,0 +1,89 @@
package com.jero.modules.problemKnowledgeBase.service.impl;
import com.jero.modules.problemKnowledgeBase.entity.CountryCardManageReleaseEO;
import com.jero.modules.problemKnowledgeBase.mapper.CountryCardManageReleaseEOMapper;
import com.jero.modules.problemKnowledgeBase.service.ICountryCardManageReleaseEOService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Date;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 问题知识库-country_card-管理发布表
* @Author: jero-boot
* @Date: 2022-08-04
* @Version: V1.0
*/
@Service
public class CountryCardManageReleaseEOServiceImpl extends ServiceImpl<CountryCardManageReleaseEOMapper, CountryCardManageReleaseEO> implements ICountryCardManageReleaseEOService {
/**
* 保存
*
* @param countryCardManageReleaseEO
* @return
*/
@Override
public void add(CountryCardManageReleaseEO countryCardManageReleaseEO) {
Date now = new Date();
countryCardManageReleaseEO.setCreateTime(now);
countryCardManageReleaseEO.setUpdateTime(now);
save(countryCardManageReleaseEO);
}
/**
* 更新
*
* @param countryCardManageReleaseEO
* @return
*/
@Override
public void editById(CountryCardManageReleaseEO countryCardManageReleaseEO) {
Date now = new Date();
countryCardManageReleaseEO.setUpdateTime(now);
saveOrUpdate(countryCardManageReleaseEO);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public CountryCardManageReleaseEO queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<CountryCardManageReleaseEO> queryList() {
return list();
}
}
@@ -413,15 +413,25 @@ Feishu:
# appId: cli_a16d47ca9f381013
# appSecret: DSfCrj70xku2VUjqwHBIuuY6HZnz7ppe
# wzj测试账号配置
appId: cli_a25c9fdae5bc100c
appSecret: zIS7BLzcWaFvlpdz7CqRJbwVml4g4ESy
# 事件订阅配置
eventSubscription:
# 加密密钥
encryptKey: EKdOsbNapPj0EFdFiBIINfn5FQrZ2QvQ
# 正式
# appId: cli_a2a1a6014679500d
# appSecret: AeHwisC82S0fhiREJg6bkdxhIZMevnZZ
# 事件订阅配置
#eventSubscription:
# 加密密钥 需要登录这个正式飞书账号,去事件订阅中获取
#encryptKey:
getTenantAccessTokenUrl: https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
batchSendMessageUrl: https://open.feishu.cn/open-apis/message/v4/batch_send/
translateTextUrl: https://open.feishu.cn/open-apis/translation/v1/text/translate
local-tool:
uri: http://139.9.235.66:9022
opensso: