Browse Source

新新向党开发测试end.发生产试试

feature/dangjian
yinzuomei 3 years ago
parent
commit
9138f3151a
  1. 30
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiItemController.java
  2. 18
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ItemFeignClient.java
  3. 17
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ItemFeignClientFallback.java
  4. 24
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ItemService.java
  5. 45
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ItemServiceImpl.java
  6. 101
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/form/XxxdEventFormDTO.java
  7. 32
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/form/XxxdFeedBackQuestionFormDTO.java
  8. 28
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/result/XxxdFeedBackResultDTO.java
  9. 88
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/XxxdEventController.java
  10. 6
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/XxxdEventService.java
  11. 127
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/XxxdEventServiceImpl.java
  12. 28
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/XxxdEventDao.xml

30
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiItemController.java

@ -7,6 +7,9 @@ import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.dto.events.XxxdEventDTO;
import com.elink.esua.epdc.dto.events.form.XxxdEventFormDTO;
import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO;
import com.elink.esua.epdc.dto.item.form.*;
import com.elink.esua.epdc.dto.item.result.ItemCategoryStatisticsResultDTO;
import com.elink.esua.epdc.dto.item.result.ItemDetailResultDTO;
@ -167,4 +170,31 @@ public class ApiItemController {
return itemService.getCompany(formDTO);
}
/**
* 新新向党外部调用推送随手拍数据
*
* @param fromDTO
* @return
*/
@PostMapping("/xxxd/question/receive")
public Result saveQuestionReceive(@RequestBody XxxdEventFormDTO fromDTO) {
return itemService.saveQuestionReceive(fromDTO);
}
/**
* 修改
*
* @param formDto
* @return
*/
@PostMapping("/xxxd/question/feedBack")
public Result update(@RequestBody XxxdFeedBackQuestionFormDTO formDto) {
return itemService.feedBack(formDto);
}
@PostMapping(value = "/xxxd/question/detail/{id}")
public Result<XxxdEventDTO> getXxxDQuestion(@PathVariable("id") String id) {
return itemService.getXxxDQuestion(id);
}
}

18
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ItemFeignClient.java

@ -3,6 +3,8 @@ package com.elink.esua.epdc.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.events.XxxdEventDTO;
import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO;
import com.elink.esua.epdc.dto.item.form.*;
import com.elink.esua.epdc.dto.item.result.ItemCategoryStatisticsResultDTO;
import com.elink.esua.epdc.dto.item.result.ItemDetailResultDTO;
@ -12,11 +14,13 @@ import com.elink.esua.epdc.dto.share.ShareEnterpriseDTO;
import com.elink.esua.epdc.dto.share.form.ShareEnterpriseFormDTO;
import com.elink.esua.epdc.dto.share.result.ShareEnterpriseResultDTO;
import com.elink.esua.epdc.feign.fallback.ItemFeignClientFallback;
import oracle.jdbc.proxy.annotation.Post;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@ -25,7 +29,7 @@ import java.util.List;
* @Author LC
* @Date 2019/9/9 16:39
*/
@FeignClient(name = ServiceConstant.EPDC_EVENTS_SERVER, fallback = ItemFeignClientFallback.class)
@FeignClient(name = ServiceConstant.EPDC_EVENTS_SERVER, fallback = ItemFeignClientFallback.class,url = "http://127.0.0.1:9066")
public interface ItemFeignClient {
/**
@ -150,6 +154,18 @@ public interface ItemFeignClient {
@PostMapping(value = "events/item/process/notice", consumes = MediaType.APPLICATION_JSON_VALUE)
Result processNotice(AcceptProcessNoticeDTO formDTO);
/**
* 新新向党外部调用推送随手拍数据
* @param formDto
* @return
*/
@PostMapping("events/xxxd/question/receive")
Result questionReceive(@RequestBody XxxdEventDTO formDto);
@PostMapping("events/xxxd/question/feedBack")
Result feedBack(@RequestBody XxxdFeedBackQuestionFormDTO feedBackQuestionFormDTO);
@PostMapping("events/xxxd/question/detail/{id}")
Result<XxxdEventDTO> getXxxDQuestion(@PathVariable("id") String id);
}

17
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ItemFeignClientFallback.java

@ -4,6 +4,8 @@ import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.events.XxxdEventDTO;
import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO;
import com.elink.esua.epdc.dto.item.form.*;
import com.elink.esua.epdc.dto.item.result.ItemCategoryStatisticsResultDTO;
import com.elink.esua.epdc.dto.item.result.ItemDetailResultDTO;
@ -89,4 +91,19 @@ public class ItemFeignClientFallback implements ItemFeignClient {
public Result processNotice(AcceptProcessNoticeDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "processNotice", formDTO);
}
@Override
public Result questionReceive(XxxdEventDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "save", formDto);
}
@Override
public Result feedBack(XxxdFeedBackQuestionFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "feedBack", formDTO);
}
@Override
public Result<XxxdEventDTO> getXxxDQuestion(String id) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "get", id);
}
}

24
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ItemService.java

@ -3,6 +3,9 @@ package com.elink.esua.epdc.service;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.events.XxxdEventDTO;
import com.elink.esua.epdc.dto.events.form.XxxdEventFormDTO;
import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO;
import com.elink.esua.epdc.dto.item.form.*;
import com.elink.esua.epdc.dto.item.result.ItemCategoryStatisticsResultDTO;
import com.elink.esua.epdc.dto.item.result.ItemDetailResultDTO;
@ -137,4 +140,25 @@ public interface ItemService {
* @date 2022/9/15 16:06
*/
Result<PageData<ShareEnterpriseDTO>> getCompany(ShareEnterpriseFormDTO formDTO);
/**
* 新新向党外部调用推送随手拍数据
* @param fromDTO
* @return
*/
Result saveQuestionReceive(XxxdEventFormDTO fromDTO);
/**
* 修改新新向党推送过来的数据xxxd_event
* @param formDto
* @return
*/
Result feedBack(XxxdFeedBackQuestionFormDTO formDto);
/**
* 查看xxxd_event详情
* @param id
* @return
*/
Result<XxxdEventDTO> getXxxDQuestion(String id);
}

45
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ItemServiceImpl.java

@ -1,14 +1,19 @@
package com.elink.esua.epdc.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.enums.BehaviorEnum;
import com.elink.esua.epdc.commons.tools.enums.UserTagEnum;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.ParentAndAllDeptDTO;
import com.elink.esua.epdc.dto.events.XxxdEventDTO;
import com.elink.esua.epdc.dto.events.form.XxxdEventFormDTO;
import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO;
import com.elink.esua.epdc.dto.form.PointLogFormDTO;
import com.elink.esua.epdc.dto.item.form.*;
import com.elink.esua.epdc.dto.item.result.ItemCategoryStatisticsResultDTO;
@ -25,9 +30,11 @@ import com.elink.esua.epdc.feign.UserFeignClient;
import com.elink.esua.epdc.service.ItemService;
import com.elink.esua.epdc.user.dto.epdc.form.EpdcUserMatchTagFormDTO;
import com.elink.esua.epdc.utils.UserTagUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import springfox.documentation.spring.web.json.Json;
import java.util.List;
import java.util.Optional;
@ -39,6 +46,7 @@ import java.util.stream.Collectors;
* @Author LC
* @Date 2019/9/9 16:34
*/
@Slf4j
@Service
public class ItemServiceImpl implements ItemService {
@ -232,4 +240,41 @@ public class ItemServiceImpl implements ItemService {
public Result<PageData<ShareEnterpriseDTO>> getCompany(ShareEnterpriseFormDTO formDTO) {
return itemFeignClient.getCompany(formDTO);
}
/**
* 新新向党外部调用推送随手拍数据
*
* @param formDto
* @return
*/
@Override
public Result saveQuestionReceive(XxxdEventFormDTO formDto) {
log.info("新新向党_接收随手拍接口(api/events/item/xxxd/question/receive)入参:"+ JSON.toJSONString(formDto));
XxxdEventDTO xxxdEventDTO= ConvertUtils.sourceToTarget(formDto,XxxdEventDTO.class);
return itemFeignClient.questionReceive(xxxdEventDTO);
}
/**
* 修改新新向党推送过来的数据xxxd_event
*
* @param formDto
* @return
*/
@Override
public Result feedBack(XxxdFeedBackQuestionFormDTO formDto) {
log.info("新新向党_修改随手拍接口(api/events/item/xxxd/question/update)入参:"+ JSON.toJSONString(formDto));
return itemFeignClient.feedBack(formDto);
}
/**
* 查看xxxd_event详情
*
* @param id
* @return
*/
@Override
public Result<XxxdEventDTO> getXxxDQuestion(String id) {
log.info("新新向党_查看随手拍接口(api/events/item/xxxd/question/detail/{id})入参id:"+id);
return itemFeignClient.getXxxDQuestion(id);
}
}

101
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/form/XxxdEventFormDTO.java

@ -0,0 +1,101 @@
package com.elink.esua.epdc.dto.events.form;
import lombok.Data;
/**
* @Description
* @Author yzm
* @Date 2023/5/22 15:28
*/
@Data
public class XxxdEventFormDTO {
private String id;
/**
* 问题标识可唯一识别用户问题的id
*/
private String questionId;
/**
* 问题描述
*/
private String description;
/**
* 上报人姓名
*/
private String name;
/**
* 上报人联系方式
*/
private String contact;
/**
* 问题类别1生态环境,2矛盾纠纷,3社会治安,4其他
*/
private String type;
/**
* 发生位置
*/
private String location;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
/**
* 发布时间yyyy-MM-dd HH:mm:ss
*/
private String pubTime;
// /**
// * 问题图片列表
// */
// private String pics;
//
// /**
// * 问题语音列表
// */
// private String audios;
/**
* 问题图片列表
*/
private String[] pics;
/**
* 问题语音列表
*/
private String[] audios;
/**
* 处理状态0-未处理1-已处理5-不予处理
*/
private String status;
/**
* 处理结果
*/
private String processResult;
/**
* 处理时间yyyy-MM-dd HH:mm:ss
*/
private String processTime;
/**
* 处理人
*/
private String processUser;
}

32
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/form/XxxdFeedBackQuestionFormDTO.java

@ -0,0 +1,32 @@
package com.elink.esua.epdc.dto.events.form;
import lombok.Data;
/**
* @Description https://xxxd.dtdjzx.gov.cn/xxxd/api/v1/feedback/[path]
* 随手拍处理反馈
* 路径question
* @Author yzm
* @Date 2023/5/22 16:32
*/
@Data
public class XxxdFeedBackQuestionFormDTO {
/**
* 问题标识:可唯一识别问题信息的标识
*/
private String questionId;
/**
* 处理状态 0-未处理1-已处理5-不予处理
*/
private String status;
/**
* 处理结果
*/
private String processResult;
/**
* 处理时间 yyyy-MM-dd HH:mm:ss
*/
private String processTime;
}

28
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/result/XxxdFeedBackResultDTO.java

@ -0,0 +1,28 @@
package com.elink.esua.epdc.dto.events.result;
import lombok.Data;
/**
* @Description
* @Author yzm
* @Date 2023/5/22 16:37
*/
@Data
public class XxxdFeedBackResultDTO {
// 接口统一返回json数据,具体格式为
// {“success”:true,”message”:””}
// success--是否成功,成功为true,失败为false
// message--返回提示信息
private Boolean success;
private String message;
public XxxdFeedBackResultDTO error() {
this.success = false;
this.message = "error";
return this;
}
}

88
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/XxxdEventController.java

@ -3,10 +3,16 @@ package com.elink.esua.epdc.modules.events.controller;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.XxxdConstant;
import com.elink.esua.epdc.dto.events.XxxdEventDTO;
import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO;
import com.elink.esua.epdc.dto.events.result.XxxdFeedBackResultDTO;
import com.elink.esua.epdc.modules.events.service.XxxdEventService;
import com.fasterxml.jackson.core.JsonParser;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -17,7 +23,9 @@ import org.springframework.web.client.RestTemplate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -42,25 +50,25 @@ public class XxxdEventController {
*/
@PostMapping("receive")
public Result save(@RequestBody XxxdEventDTO dto) {
xxxdEventService.save(dto);
return new Result();
String id = xxxdEventService.save(dto);
Map resMap = new HashMap();
resMap.put("id", id);
return new Result().ok(resMap);
}
/**
* 修改
*
* @param dto
* @param formDTO
* @return
*/
@PostMapping("update")
public Result update(@RequestBody XxxdEventDTO dto) {
xxxdEventService.update(dto);
// 向新新向党反馈数据结果
submitFeedback(dto.getQuestionId(), dto.getStatus(), dto.getProcessResult());
return new Result();
@PostMapping("feedBack")
public Result<XxxdFeedBackResultDTO> feedBack(@RequestBody XxxdFeedBackQuestionFormDTO formDTO) {
XxxdFeedBackResultDTO resultDTO=xxxdEventService.feedBack(formDTO);
return new Result().ok(resultDTO);
}
@RequestMapping(value = "{id}", method = {RequestMethod.POST})
@RequestMapping(value = "detail/{id}", method = {RequestMethod.POST})
public Result<XxxdEventDTO> get(@PathVariable("id") String id) {
XxxdEventDTO data = xxxdEventService.get(id);
return new Result<XxxdEventDTO>().ok(data);
@ -75,53 +83,25 @@ public class XxxdEventController {
}
private ResponseEntity<String> submitFeedback(String questionId, String status, String processResult) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", genAuthorization());
LocalDateTime currentTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String processTime = currentTime.format(formatter);
// 构建请求体数据,这里以示例数据为准
String requestBody = "{\"questionId\":\"" + questionId + "\", \"status\":\"" + status + "\", \"processResult\":\"" + processResult + "\", \"processTime\":\"" + processTime + "\"}";
public static void main(String[] args) {
XxxdEventDTO test=new XxxdEventDTO();
test.setQuestionId("问题id");
test.setDescription("问题描述");
test.setName("上报人姓名");
test.setContact("上报人联系方式");
// 问题类别:1生态环境,2矛盾纠纷,3社会治安,4其他
test.setType("1");
test.setLocation("temp");
test.setLongitude("经度");
test.setLatitude("纬度");
test.setPubTime("2022-01-01 06:01:01");
String[] temp = {"a","b"};
test.setPics(temp);
test.setAudios(temp);
System.out.println(JSON.toJSONString(test));
HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
RestTemplate restTemplate = new RestTemplate();
try {
ResponseEntity<String> response = restTemplate.exchange(XxxdConstant.XXXD_QUESTION_FEED_BACK_URL, HttpMethod.POST, entity, String.class);
log.warn("新新向党反馈处理结果返参:" + response.getBody());
return response;
} catch (HttpClientErrorException e) {
// 处理异常情况
HttpStatus statusCode = e.getStatusCode();
// 进一步处理异常...
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
/**
* 生成认证信息
*
* @return
*/
public String genAuthorization() {
String key = XxxdConstant.APP_KEY;
String secret = XxxdConstant.APP_SECRET;
LocalDateTime currentTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
String time = currentTime.format(formatter);
String version = "1.0";
String beforeSignStr = key + time + version;// 拼接要加密的字符串
AES aes = SecureUtil.aes(secret.getBytes());
String signStr = aes.encryptBase64(beforeSignStr);// 执行aes加密并转base64编码
String authStr = String.format("{\"ak_key\":\"%s\",\"ak_time\":\"%s\",\"ac_version\":\"%s\",\"ac_signature\":\"%s\"}", key, time, version, signStr);// 组装认证信息
return Base64Encoder.encode(authStr);// 认证信息执行base64
}
}

6
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/XxxdEventService.java

@ -3,6 +3,8 @@ package com.elink.esua.epdc.modules.events.service;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.dto.events.XxxdEventDTO;
import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO;
import com.elink.esua.epdc.dto.events.result.XxxdFeedBackResultDTO;
import com.elink.esua.epdc.modules.events.entity.XxxdEventEntity;
import java.util.List;
@ -24,13 +26,13 @@ public interface XxxdEventService extends BaseService<XxxdEventEntity> {
* @author generator
* @date 2023-05-22
*/
void save(XxxdEventDTO dto);
String save(XxxdEventDTO dto);
/**
* 更新
* @param dto
*/
void update(XxxdEventDTO dto);
XxxdFeedBackResultDTO feedBack(XxxdFeedBackQuestionFormDTO dto);
/**
* 单条查询
*

127
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/XxxdEventServiceImpl.java

@ -1,16 +1,37 @@
package com.elink.esua.epdc.modules.events.service.impl;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.constant.StrConstant;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.constant.XxxdConstant;
import com.elink.esua.epdc.dto.events.XxxdEventDTO;
import com.elink.esua.epdc.dto.events.form.XxxdFeedBackQuestionFormDTO;
import com.elink.esua.epdc.dto.events.result.XxxdFeedBackResultDTO;
import com.elink.esua.epdc.modules.events.dao.XxxdEventDao;
import com.elink.esua.epdc.modules.events.entity.XxxdEventEntity;
import com.elink.esua.epdc.modules.events.service.XxxdEventService;
import com.google.zxing.oned.UPCAReader;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
/**
@ -19,6 +40,7 @@ import java.util.List;
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-22
*/
@Slf4j
@Service
public class XxxdEventServiceImpl extends BaseServiceImpl<XxxdEventDao, XxxdEventEntity> implements XxxdEventService {
@ -29,7 +51,7 @@ public class XxxdEventServiceImpl extends BaseServiceImpl<XxxdEventDao, XxxdEven
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void save(XxxdEventDTO dto) {
public String save(XxxdEventDTO dto) {
XxxdEventEntity entity = ConvertUtils.sourceToTarget(dto, XxxdEventEntity.class);
// 将图片与声音的数组转换为字符串,中间用分号分隔
String[] pics = dto.getPics();
@ -40,25 +62,57 @@ public class XxxdEventServiceImpl extends BaseServiceImpl<XxxdEventDao, XxxdEven
if (audios != null && audios.length > 0) {
entity.setAudios(String.join(StrConstant.SEMICOLON, audios));
}
insert(entity);
LambdaQueryWrapper<XxxdEventEntity> queryWrapper=new LambdaQueryWrapper<>();
queryWrapper.eq(XxxdEventEntity::getQuestionId,dto.getQuestionId())
.eq(XxxdEventEntity::getDelFlag, NumConstant.ZERO_STR);
XxxdEventEntity origin=baseDao.selectOne(queryWrapper);
if (null == origin) {
insert(entity);
} else {
entity.setId(origin.getId());
updateById(entity);
}
return entity.getId();
}
/**
* 更新
*
* @param dto
* @param formDTO
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void update(XxxdEventDTO dto) {
public XxxdFeedBackResultDTO feedBack(XxxdFeedBackQuestionFormDTO formDTO) {
// 向新新向党反馈数据结果
XxxdFeedBackResultDTO resultDTO=submitFeedback(formDTO.getQuestionId(), formDTO.getStatus(), formDTO.getProcessResult(),formDTO.getProcessTime());
if(!resultDTO.getSuccess()){
throw new RenException("调用新新向党随手拍处理反馈接口失败:"+resultDTO.getMessage());
}
LambdaUpdateWrapper<XxxdEventEntity> updateWrapper=new LambdaUpdateWrapper<>();
updateWrapper.eq(XxxdEventEntity::getQuestionId,formDTO.getQuestionId())
.set(XxxdEventEntity::getStatus,formDTO.getStatus())
.set(XxxdEventEntity::getProcessResult,formDTO.getProcessResult())
.set(XxxdEventEntity::getProcessTime,formDTO.getProcessTime())
.set(XxxdEventEntity::getUpdatedTime,new Date());
baseDao.update(null,updateWrapper);
return resultDTO;
}
@Override
public XxxdEventDTO get(String id) {
XxxdEventEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, XxxdEventDTO.class);
XxxdEventDTO xxxdEventDTO=ConvertUtils.sourceToTarget(entity, XxxdEventDTO.class);
if(StringUtils.isNotBlank(entity.getPics())){
String[] arr1 = entity.getPics().split(StrConstant.SEMICOLON);
xxxdEventDTO.setPics(arr1);
}
if(StringUtils.isNotBlank(entity.getAudios())){
String[] arr2 = entity.getAudios().split(StrConstant.SEMICOLON);
xxxdEventDTO.setAudios(arr2);
}
return xxxdEventDTO;
}
@ -68,4 +122,65 @@ public class XxxdEventServiceImpl extends BaseServiceImpl<XxxdEventDao, XxxdEven
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(ids);
}
private XxxdFeedBackResultDTO submitFeedback(String questionId, String status, String processResult, String processTime) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", genAuthorization());
/* LocalDateTime currentTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String processTime = currentTime.format(formatter);*/
// 构建请求体数据,这里以示例数据为准
// String requestBody = "{\"questionId\":\"" + questionId + "\", \"status\":\"" + status + "\", \"processResult\":\"" + processResult + "\", \"processTime\":\"" + processTime + "\"}";
XxxdFeedBackQuestionFormDTO formDTO=new XxxdFeedBackQuestionFormDTO();
formDTO.setQuestionId(questionId);
formDTO.setStatus(status);
formDTO.setProcessResult(processResult);
formDTO.setProcessTime(processTime);
HttpEntity<XxxdFeedBackQuestionFormDTO> requestEntity = new HttpEntity<>(formDTO, headers);
RestTemplate restTemplate = new RestTemplate();
try {
ResponseEntity<String> response = restTemplate.exchange(XxxdConstant.XXXD_QUESTION_FEED_BACK_URL, HttpMethod.POST, requestEntity, String.class);
log.warn("新新向党_随手拍处理反馈原始返参:" + JSON.toJSONString(response.getBody()));
JSONObject shopNameArr = JSONObject.parseObject(response.getBody());
XxxdFeedBackResultDTO resultDTO = JSON.parseObject(shopNameArr.toJSONString(), XxxdFeedBackResultDTO.class);
log.warn("新新向党_随手拍处理反馈返参XxxdFeedBackResultDTO:" + JSON.toJSONString(resultDTO));
return resultDTO;
} catch (HttpClientErrorException e) {
// 处理异常情况
HttpStatus statusCode = e.getStatusCode();
// 进一步处理异常...
}
return new XxxdFeedBackResultDTO().error();
}
/**
* 生成认证信息
*
* @return
*/
public String genAuthorization() {
String key = XxxdConstant.APP_KEY;
String secret = XxxdConstant.APP_SECRET;
LocalDateTime currentTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
String time = currentTime.format(formatter);
String version = "1.0";
String beforeSignStr = key + time + version;// 拼接要加密的字符串
AES aes = SecureUtil.aes(secret.getBytes());
String signStr = aes.encryptBase64(beforeSignStr);// 执行aes加密并转base64编码
String authStr = String.format("{\"ak_key\":\"%s\",\"ak_time\":\"%s\",\"ac_version\":\"%s\",\"ac_signature\":\"%s\"}", key, time, version, signStr);// 组装认证信息
return Base64Encoder.encode(authStr);// 认证信息执行base64
}
}

28
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/XxxdEventDao.xml

@ -1,34 +1,8 @@
<?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.epmet.dao.XxxdEventDao">
<mapper namespace="com.elink.esua.epdc.modules.events.dao.XxxdEventDao">
<resultMap type="com.epmet.entity.XxxdEventEntity" id="xxxdEventMap">
<result property="id" column="ID"/>
<result property="questionId" column="QUESTION_ID"/>
<result property="description" column="DESCRIPTION"/>
<result property="name" column="NAME"/>
<result property="contact" column="CONTACT"/>
<result property="type" column="TYPE"/>
<result property="location" column="LOCATION"/>
<result property="longitude" column="LONGITUDE"/>
<result property="latitude" column="LATITUDE"/>
<result property="pubTime" column="PUB_TIME"/>
<result property="pics" column="PICS"/>
<result property="audios" column="AUDIOS"/>
<result property="bssbEventId" column="BSSB_EVENT_ID"/>
<result property="status" column="STATUS"/>
<result property="processResult" column="PROCESS_RESULT"/>
<result property="processTime" column="PROCESS_TIME"/>
<result property="processUser" column="PROCESS_USER"/>
<result property="sync" column="SYNC"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>
Loading…
Cancel
Save