代码合并

master
wujingtao 3 years ago
parent f8fc19eb2b
commit 18b3ea8e99

@ -18,6 +18,12 @@ import java.util.Date;
@EntityListeners(AuditingEntityListener.class)
@Data
public class BaseDoubleCallInfo {
@Column(name = "status")
@ApiModelProperty(value = "状态")
private Integer status;
@Column(name = "session_id")
@ApiModelProperty(value = "回调的sessionId")
private String sessionId;
@Column(name = "request_id")
@ApiModelProperty(value = "请求的唯一id")
private String requestId;

@ -11,13 +11,14 @@ import lombok.Getter;
@AllArgsConstructor
public enum CallStatusEnum {
/**
*
* 使
*/
CALL(0, "call"),
USE(1, "use"),
/**
*
*/
ALERT(1, "alert"),
ALERT(0, "alert"),
/**
*
*/
@ -26,6 +27,7 @@ public enum CallStatusEnum {
*
*/
HANGUP(3, "hangup");
private final int value;
private final String description;

@ -42,58 +42,21 @@ public class ReportController {
return reportService.getReportByTask(s);
}
@GetMapping("/download/task")
@PostMapping("/download/task")
@ApiOperation("导出任务统计信息")
public void downloadTaskReport(HttpServletResponse response, String s) {
StatisticalReportDTO statisticalReportDTO = JSONUtil.toBean(s, StatisticalReportDTO.class);
public void downloadTaskReport(HttpServletResponse response, @RequestBody StatisticalReportDTO statisticalReportDTO) {
reportService.downloadTaskReport(response, statisticalReportDTO);
}
// @GetMapping("/download/task")
// @ApiOperation("hutool导出测试")
// public void downloadTaskReport(HttpServletResponse response) {
// UploadTask uploadTaskDTO = new UploadTask();
// uploadTaskDTO.setCreateTime("2020");
// uploadTaskDTO.setTaskName("ww");
// uploadTaskDTO.setUsrNum(1);
// UploadTask uploadTaskDTO1 = new UploadTask();
// uploadTaskDTO1.setCreateTime("2022");
// uploadTaskDTO1.setTaskName("wwww");
// uploadTaskDTO1.setUsrNum(2);
// List<UploadTask> list = new ArrayList<>();
// list.add(uploadTaskDTO1);
// list.add(uploadTaskDTO);
//
// try {
// ExcelWriter excelWriter = ExcelUtil.getWriter(true);
// excelWriter.write(list);
// response.reset();
// response.setContentType("application/vnd.ms-excel");
// response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("test.xlsx", "UTF-8"));
// excelWriter.flush(response.getOutputStream());
// excelWriter.close();
// } catch (Exception e) {
// log.error("{}", e.getMessage());
// }
// }
//
// @Data
// class UploadTask {
// private String createTime;
// private String taskName;
// private Integer usrNum;
// }
//
// @PostMapping("/report/organize")
// @ApiOperation("按组的统计信息")
// public CommonResponse<Object> getReportByOrganize(@RequestBody StatisticalReportDTO s) {
// return reportService.getReportByOrganize(s);
// }
@PostMapping("/report/organize")
@ApiOperation("按组的统计信息")
public CommonResponse<Object> getReportByOrganize(@RequestBody StatisticalReportDTO s) {
return reportService.getReportByOrganize(s);
}
@PostMapping("/download/organize")
@ApiOperation("导出组成员统计信息")
public void downloadOrganizeReport(@RequestBody StatisticalReportDTO s) {
HttpServletResponse response = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getResponse();
public void downloadOrganizeReport(HttpServletResponse response, @RequestBody StatisticalReportDTO s) {
reportService.downloadOrganizeReport(response, s);
}
@ -105,8 +68,7 @@ public class ReportController {
@GetMapping("/download/member")
@ApiOperation("导出单个成员统计信息")
public void downloadMemberReport(HttpServletResponse response, String beginTime, String endTime, Long memberId) throws IOException {
memberId = 10L;
public void downloadMemberReport(HttpServletResponse response, String beginTime, String endTime, Long memberId) {
reportService.downloadMemberReport(response, beginTime, endTime, memberId);
}
}

@ -1,7 +1,5 @@
package com.baiye.modules.report.entity.vo;
//import com.alibaba.excel.annotation.ExcelIgnore;
//import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

@ -71,5 +71,5 @@ public interface ReportService {
* @param memberId
* @return
*/
void downloadMemberReport(HttpServletResponse response, String beginTime, String endTime, Long memberId) throws IOException;
void downloadMemberReport(HttpServletResponse response, String beginTime, String endTime, Long memberId) ;
}

@ -27,6 +27,7 @@ import com.baiye.modules.telemarkting.entity.DoubleCallInfo;
import com.baiye.util.DateTimeUtil;
import com.baiye.util.ExportExcelUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -105,7 +106,7 @@ public class ReportServiceImpl implements ReportService {
String organizationName = null;
if (CollUtil.isNotEmpty(list)) {
Long organizeId = list.get(0).getTeamId();
Organize organizeById = organizeRepository.findOrganizeById(organizeId);
Organize organizeById = getOrganize(organizeId);
if (ObjectUtil.isNotNull(organizeById)) {
organizationName = organizeById.getOrganizeName();
}
@ -140,8 +141,7 @@ public class ReportServiceImpl implements ReportService {
for (long key : mapByMember.keySet()) {
//每个人的数据
List<CallClueInfo> list = mapByMember.get(key);
User userById = userRepository.findUserById(key);
User userById = getMember(key);
String userName = null;
if (ObjectUtil.isNotNull(userById)) {
userName = userById.getUsername();
@ -149,7 +149,7 @@ public class ReportServiceImpl implements ReportService {
String organizationName = null;
if (CollUtil.isNotEmpty(list)) {
Long organizeId = list.get(0).getTeamId();
Organize organizeById = organizeRepository.findOrganizeById(organizeId);
Organize organizeById = getOrganize(organizeId);
if (ObjectUtil.isNotNull(organizeById)) {
organizationName = organizeById.getOrganizeName();
}
@ -207,14 +207,14 @@ public class ReportServiceImpl implements ReportService {
if (CollUtil.isEmpty(callClueInfos)) {
return;
}
User userById = userRepository.findUserById(memberId);
User userById = getMember(memberId);
String userName = null;
if (ObjectUtil.isNotNull(userById)) {
userName = userById.getUsername();
}
String organizationName = null;
Long organizeId = callClueInfos.get(0).getTeamId();
Organize organizeById = organizeRepository.findOrganizeById(organizeId);
Organize organizeById = getOrganize(organizeId);
if (ObjectUtil.isNotNull(organizeById)) {
organizationName = organizeById.getOrganizeName();
}
@ -503,19 +503,21 @@ public class ReportServiceImpl implements ReportService {
double breatheAverageDuration = 0;
if (CollUtil.isNotEmpty(callClueInfos)) {
for (CallClueInfo info : callClueInfos) {
if (info.getStatus() != 0) {
if (info.getStatus() == CallStatusEnum.ANSWER.getValue()) {
turnOnNum++;
//接通时才会有通话时长
long clueId = info.getClueId();
List<DoubleCallInfo> doubleCallInfo = doubleCallRepository.selectAllByTimeAndClueId(begin, end, clueId);
int doubleClueTime = doubleCallInfo.stream().mapToInt(DoubleCallInfo::getDuration).sum();
breatheTotalDuration += doubleClueTime;
} else {
usrNum++;
if (info.getStatus() == CallStatusEnum.ANSWER.getValue()) {
turnOnNum++;
}
}
long clueId = info.getClueId();
List<DoubleCallInfo> doubleCallInfo = doubleCallRepository.selectAllByTimeAndClueId(begin, end, clueId);
int doubleClueTime = doubleCallInfo.stream().mapToInt(DoubleCallInfo::getDuration).sum();
breatheTotalDuration += doubleClueTime;
}
breatheAverageDuration = NumberUtil.div(breatheTotalDuration, callClueInfos.size(), 2);
}
//这里使用数和接通数是分开的,真实的使用数 为 这里的使用数+接通数
usrNum += turnOnNum;
if (usrNum != 0) {
//接通率=接通数/使用数
turnOnRate = NumberUtil.div(turnOnNum, usrNum, 2);
@ -528,4 +530,19 @@ public class ReportServiceImpl implements ReportService {
memberInfoVO.setBreatheTotalDuration(breatheTotalDuration);
return memberInfoVO;
}
/**
*
*
* @return
*/
@Cacheable(cacheNames = {"organize", "organize"}, key = "'id:' + #id")
public Organize getOrganize(Long id) {
return organizeRepository.findOrganizeById(id);
}
@Cacheable(cacheNames = {"user", "user"}, key = "'id:' + #id")
public User getMember(Long id) {
return userRepository.findUserById(id);
}
}

@ -127,6 +127,13 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers( "/api/report/organize").permitAll()
.antMatchers( "/api/download/task").permitAll()
.antMatchers("/api/task/saveTask").permitAll()
.antMatchers( "/api/users/admin").permitAll()
.antMatchers( "/api/task/query").permitAll()
.antMatchers( "/api/organize/queryAll").permitAll()
.antMatchers( "/api/back/cdrUrl").permitAll()
.antMatchers( "/api/back/status").permitAll()
// 自定义匿名访问所有url放行允许匿名和带Token访问细腻化到每个 Request 类型
// GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()

@ -7,6 +7,7 @@ import com.baiye.http.CommonResponse;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallBackDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallBackStatusDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallStopDTO;
import com.baiye.modules.telemarkting.service.DoubleCallService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -45,7 +46,7 @@ public class DoubleCallController {
if (ObjectUtil.isEmpty(doubleCallReq) || StrUtil.isEmpty(doubleCallReq.getSessionId())) {
return CommonResponse.createByErrorMessage("参数为空");
}
log.info("=======双呼回调 {}", doubleCallReq);
log.info("=======双呼回调话单 {}", doubleCallReq);
doubleCallService.doubleCallBack(doubleCallReq);
} catch (Exception e) {
log.error("双呼回调话单错误 参数 {}", json);
@ -63,7 +64,7 @@ public class DoubleCallController {
if (ObjectUtil.isEmpty(doubleCallBack) || StrUtil.isEmpty(doubleCallBack.getSessionId())) {
return CommonResponse.createByErrorMessage("参数为空");
}
log.info("解析状态后的对象 {}", doubleCallBack);
log.info("=====双呼状态话单 {}", doubleCallBack);
doubleCallService.doubleCallBackStatus(doubleCallBack);
} catch (Exception e) {
log.error("双呼回调状态错误 参数 {}", json);
@ -73,12 +74,9 @@ public class DoubleCallController {
return CommonResponse.createBySuccess();
}
@GetMapping("/double/stop")
@PostMapping("/double/stop")
@ApiOperation("挂断呼叫")
public CommonResponse<Object> doubleCallStop(String sessionId) {
if (StrUtil.isEmpty(sessionId)) {
return CommonResponse.createByErrorMessage("SESSION_ID不存在");
}
return doubleCallService.doubleCallStop(sessionId);
public CommonResponse<Object> doubleCallStop(@RequestBody DoubleCallStopDTO doubleCallStopDTO) {
return doubleCallService.doubleCallStop(doubleCallStopDTO);
}
}

@ -3,6 +3,7 @@ package com.baiye.modules.telemarkting.dao;
import com.baiye.modules.telemarkting.entity.CallClueInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@ -74,4 +75,8 @@ public interface CallClueRepository extends JpaRepository<CallClueInfo, Long>, J
*/
@Query(value = "select * from tb_call_clue d where (d.create_time between ?1 and ?2) and (coalesce (?3,null) is null or d.task_id in (?3))", nativeQuery = true)
List<CallClueInfo> selectAllByTimeAndTaskId(String beginTime, String endTime, List<Long> id);
@Modifying
@Query(value = "update CallClueInfo c set c.status =?1 where c.clueId = ?2")
void updateByStatus(Integer status, Long clueId);
}

@ -3,6 +3,7 @@ package com.baiye.modules.telemarkting.dao;
import com.baiye.modules.telemarkting.entity.DoubleCallInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@ -22,6 +23,13 @@ public interface DoubleCallRepository extends JpaRepository<DoubleCallInfo, Long
*/
DoubleCallInfo findById(String id);
/**
* id
*
* @param sessionId
* @return
*/
DoubleCallInfo findBySessionId(String sessionId);
/**
*
*
@ -41,4 +49,8 @@ public interface DoubleCallRepository extends JpaRepository<DoubleCallInfo, Long
*/
@Query(value = "select * from tb_double_call d where (d.create_time between ?1 and ?2) and d.clue_id = ?3", nativeQuery = true)
List<DoubleCallInfo> selectAllByTimeAndClueId(String beginTime, String endTime, Long id);
@Modifying
@Query(value = "update DoubleCallInfo d set d.status =?1 where d.sessionId = ?2")
void updateByStatus(Integer status, String sessionId);
}

@ -20,9 +20,10 @@ import java.util.Date;
@EntityListeners(AuditingEntityListener.class)
public class DoubleCallInfo extends BaseDoubleCallInfo implements Serializable {
private static final long serialVersionUID = -1452118686043669994L;
@Id
@ApiModelProperty(value = "线索表主键id自动递增")
@Column(name = "id")
@ApiModelProperty(value = "id双呼请求/回调的sessionId")
private String id;
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}

@ -0,0 +1,13 @@
package com.baiye.modules.telemarkting.entity.dto;
import lombok.Data;
/**
* @author wujingtao
* @date 2022/01/18
*/
@Data
public class DoubleCallStopDTO {
private String sessionid;
private String callId;
}

@ -8,6 +8,7 @@ import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallStopDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallSystemDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@ -50,38 +51,31 @@ public class CallReq {
log.info("请求对象:{}", JSONUtil.toJsonPrettyStr(doubleCallSystemDTO));
while (count <= flag) {
HttpResponse httpResponse = sendCallReq(JSONUtil.toJsonPrettyStr(doubleCallSystemDTO), reqUrl);
// if (httpResponse.isOk() && httpResponse.body().contains("success")) {
// log.info("请求成功");
// log.info("返回值:{}", httpResponse.body());
// JSONObject result = JSONUtil.parseObj(httpResponse.body());
// return result.get("sessionId").toString();
// } else {
// count++;
// log.error("请求失败,response==={}", httpResponse.body());
// }
return RandomUtil.randomString(6);
if (httpResponse.isOk() && httpResponse.body().contains("success")) {
log.info("请求呼叫成功,返回值:{}", httpResponse.body());
JSONObject result = JSONUtil.parseObj(httpResponse.body());
return result.get("sessionId").toString();
} else {
count++;
log.error("请求失败,response==={}", httpResponse.body());
}
}
log.info("=======================doubleCallReq end in {}", DateUtil.date());
return null;
}
public Boolean stopReq(String sessionId) {
public Boolean stopReq(DoubleCallStopDTO doubleCallStopDTO) {
log.info("=======================stopReq start in {}", DateUtil.date());
return stopTask(sessionId);
return stopTask(doubleCallStopDTO);
}
private Boolean stopTask(String sessionId) {
JSONObject jsonObject = new JSONObject();
jsonObject.putOpt("sessionId", sessionId);
jsonObject.putOpt("callId", "");
private Boolean stopTask(DoubleCallStopDTO doubleCallStopDTO) {
int count = 0;
int flag = 3;
while (count <= flag) {
log.info("请求对象:{}", jsonObject);
HttpResponse httpResponse = sendCallReq(jsonObject.toString(), stopUrl);
HttpResponse httpResponse = sendCallReq(JSONUtil.toJsonPrettyStr(doubleCallStopDTO), stopUrl);
if (httpResponse.isOk()) {
log.info("请求成功");log.info("返回值:{}", httpResponse.body());
log.info("请求挂断成功,返回值:{}", httpResponse.body());
return Boolean.TRUE;
} else {
count++;

@ -4,6 +4,7 @@ import com.baiye.http.CommonResponse;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallBackDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallBackStatusDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallStopDTO;
/**
* @author wjt
@ -35,8 +36,8 @@ public interface DoubleCallService {
/**
*
*
* @param sessionId
* @param doubleCallStopDTO
* @return
*/
CommonResponse<Object> doubleCallStop(String sessionId);
CommonResponse<Object> doubleCallStop(DoubleCallStopDTO doubleCallStopDTO);
}

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.http.CommonResponse;
import com.baiye.model.enums.CallStatusEnum;
import com.baiye.modules.telemarkting.dao.CallClueRepository;
@ -13,10 +14,12 @@ import com.baiye.modules.telemarkting.entity.DoubleCallInfo;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallBackDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallBackStatusDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.DoubleCallStopDTO;
import com.baiye.modules.telemarkting.httpRequest.CallReq;
import com.baiye.modules.telemarkting.service.DoubleCallService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Objects;
@ -40,19 +43,20 @@ public class DoubleCallServiceImpl implements DoubleCallService {
String requestId = RandomUtil.randomString(10);
doubleCallReq.setRequestId(requestId);
String sessionId = callReq.startReq(doubleCallReq);
log.info("==========sessionId {}", sessionId);
if (StrUtil.isNotBlank(sessionId)) {
DoubleCallInfo doubleCallInfo = new DoubleCallInfo();
doubleCallInfo.setId(sessionId);
doubleCallInfo.setSessionId(sessionId);
doubleCallInfo.setRequestId(requestId);
doubleCallInfo.setClueId(doubleCallReq.getUserData());
doubleCallInfo.setMemberId(doubleCallReq.getMemberId());
doubleCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER);
CallClueInfo clueInfo = new CallClueInfo();
clueInfo.setClueId(Long.parseLong(doubleCallReq.getUserData()));
clueInfo.setTeamId(doubleCallReq.getTeamId());
clueInfo.setMemberId(doubleCallReq.getMemberId());
clueInfo.setStatus(CallStatusEnum.CALL.getValue());
clueInfo.setStatus(DefaultNumberConstants.ONE_NUMBER);
clueInfo.setTaskId(doubleCallReq.getTaskId());
doubleCallRepository.save(doubleCallInfo);
@ -66,29 +70,30 @@ public class DoubleCallServiceImpl implements DoubleCallService {
@Override
public void doubleCallBack(DoubleCallBackDTO doubleCallBack) {
String sessionId = doubleCallBack.getSessionId();
DoubleCallInfo doubleCallInfo = doubleCallRepository.findById(sessionId);
DoubleCallInfo doubleCallInfo = doubleCallRepository.findBySessionId(sessionId);
if (ObjectUtil.isNotEmpty(doubleCallInfo)) {
BeanUtil.copyProperties(doubleCallBack, doubleCallInfo);
log.info("===================话单回调信息: {}", doubleCallInfo);
doubleCallRepository.save(doubleCallInfo);
}
log.info("===========回调话单 未查询到会话信息 id:{}", sessionId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void doubleCallBackStatus(DoubleCallBackStatusDTO doubleCallBackStatus) {
String sessionId = doubleCallBackStatus.getSessionId();
long userDate = Long.parseLong(doubleCallBackStatus.getUserData());
CallClueInfo clueInfo = callClueRepository.findByClueId(userDate);
if (ObjectUtil.isNotEmpty(clueInfo)) {
clueInfo.setStatus(Objects.requireNonNull(CallStatusEnum.find(doubleCallBackStatus.getStatus())).getValue());
String flag = Objects.requireNonNull(CallStatusEnum.find(doubleCallBackStatus.getStatus())).getDescription();
if (CallStatusEnum.ANSWER.getDescription().equals(flag)) {
int status = CallStatusEnum.ANSWER.getValue();
callClueRepository.updateByStatus(status, userDate);
doubleCallRepository.updateByStatus(status, sessionId);
}
log.info("===========回调状态 未查询到会话信息 id:{}", sessionId);
}
@Override
public CommonResponse<Object> doubleCallStop(String sessionId) {
if (callReq.stopReq(sessionId)) {
public CommonResponse<Object> doubleCallStop(DoubleCallStopDTO doubleCallStopDTO) {
if (callReq.stopReq(doubleCallStopDTO)) {
return CommonResponse.createBySuccess();
}
return CommonResponse.createByError();

@ -64,6 +64,6 @@ double:
reqUrl: http://ax.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Hw/CallBack
appid: app1
companyName: 杭州百业互联科技有限公司
cdrUrl: http://118.178.137.129:8866/call/back/cdrUrl
statusUrl: http://118.178.137.129:8866/call/back/status
cdrUrl: http://118.178.137.129:8866/api/back/cdrUrl
statusUrl: http://118.178.137.129:8866/api/back/status
stopUrl: http://ax.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Hw/CallBackStop

@ -12,9 +12,6 @@ elastic:
namespace: elastic-job
serverLists: localhost:2181
logging:
config: classpath:logback-spring.xml
#密码加密传输,前端公钥加密,后端私钥解密
rsa:
private_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A==

@ -51,5 +51,24 @@
</dependencies>
<build>
<plugins>
<!-- springboot 打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.baiye.AdPlatformServiceApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

Loading…
Cancel
Save