Commit 957ac6e5 by shuyunhu
parents 3d06297f 302789f6
......@@ -10,9 +10,26 @@ spring:
loadbalancer:
retry:
enabled: true
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
initialSize: 2
minIdle: 5
maxActive: 50
maxWait: 60000
timeBetweenEvictionRunsMillis: 3000
minEvictableIdleTimeMillis: 3600000
validationQuery: SELECT 'x' FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
connectionPropertiesNew: config.decrypt=true;config.decrypt.key=${spring.datasource.publicKey}
filtersNew: config
metrics:
influx:
uri: http://192.168.83.241:8086/write
uri: http://192.168.89.200:8086/write
step: PT10S
db: ${spring.application.name}
enabled: true
......@@ -32,7 +49,7 @@ spring:
retry:
max-attempts: 3 # 最大重试次数
enabled: true # 是否开启消费者重试(为false时关闭消费者重试,这时消费端代码异常会一直重复收到消息)
initial-interval: 5000 # 重试间隔时间(单位毫秒)
initial-interval: 300000 # 重试间隔时间(单位毫秒)
default-requeue-rejected: true # 重试次数超过上面的设置之后是否丢弃(false不丢弃时需要写相应代码将该消息加入死信队列)
data:
solr:
......
......@@ -86,4 +86,6 @@ uedThirdPartyOrderUrl=https://rayscloud.chubanyun.net
## \u7CFB\u7EDF\u73AF\u5883
system.env = pro
jsbj.agent.id = 1000009100
\ No newline at end of file
jsbj.agent.id = 1000009100
product.parentTutor.proLabelId = 7461
\ No newline at end of file
......@@ -10,9 +10,26 @@ spring:
loadbalancer:
retry:
enabled: true
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
initialSize: 2
minIdle: 5
maxActive: 50
maxWait: 60000
timeBetweenEvictionRunsMillis: 3000
minEvictableIdleTimeMillis: 3600000
validationQuery: SELECT 'x' FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
connectionPropertiesNew: config.decrypt=true;config.decrypt.key=${spring.datasource.publicKey}
filtersNew: config
metrics:
influx:
uri: http://192.168.83.241:8086/write
uri: http://192.168.89.200:8086/write
step: PT10S
db: ${spring.application.name}
enabled: false
......@@ -32,7 +49,7 @@ spring:
retry:
max-attempts: 3 # 最大重试次数
enabled: true # 是否开启消费者重试(为false时关闭消费者重试,这时消费端代码异常会一直重复收到消息)
initial-interval: 5000 # 重试间隔时间(单位毫秒)
initial-interval: 300000 # 重试间隔时间(单位毫秒)
default-requeue-rejected: true # 重试次数超过上面的设置之后是否丢弃(false不丢弃时需要写相应代码将该消息加入死信队列)
data:
solr:
......
......@@ -88,4 +88,6 @@ uedThirdPartyOrderUrl=http://deveapi.chubanyun.net
## \u7CFB\u7EDF\u73AF\u5883
system.env = uat
jsbj.agent.id = 12829
\ No newline at end of file
jsbj.agent.id = 12829
product.parentTutor.proLabelId = 812
\ No newline at end of file
package com.pcloud.common.core.biz;
import com.pcloud.common.core.dto.BacklogQueueDto;
import com.pcloud.common.exceptions.BizException;
/**
* @描述:待办事项统计队列
* @作者:zhuyajie
* @创建时间:10:33 2018/10/31
* @版本:1.0
*/
public interface BacklogQueueBiz {
/**
* 发送待办事项
* @param backlogQueueDto
*/
public void sendBacklogQueue(BacklogQueueDto backlogQueueDto)throws BizException;
}
package com.pcloud.common.core.biz;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.MQQueueConstant;
import com.pcloud.common.core.dto.BacklogQueueDto;
import com.pcloud.common.exceptions.BizException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @描述:待办事务统计
* @作者:zhuyajie
* @创建时间:10:46 2018/10/31
* @版本:1.0
*/
@Component("backlogQueueBiz")
public class BacklogQueueBizImpl implements BacklogQueueBiz {
private final static Logger logger = LoggerFactory.getLogger(BacklogQueueBizImpl.class);
@Autowired
private AmqpTemplate amqpTemplate;
@Override
@ParamLog("发送待办事务通知")
public void sendBacklogQueue(BacklogQueueDto backlogQueueDto) throws BizException{
if (backlogQueueDto == null) {
throw BizException.PARAM_IS_NULL;
}
try {
amqpTemplate.convertAndSend(MQQueueConstant.BACKLOG, backlogQueueDto);
} catch (Exception e) {
logger.error("发送失败," + e.getMessage() + "," + backlogQueueDto.toString(), e);
throw BizException.SEND_QUEUE_FAIL;
}
}
}
......@@ -77,7 +77,12 @@ public enum AppTypeEnum {
/**
* 打卡
*/
CLOCK("clock");
CLOCK("clock"),
/**
* 伴读魔法箱
*/
AUDIO_MAGIC("magic");
......
......@@ -85,15 +85,20 @@ public enum ConvertEnum {
*/
AUDIO_LESSON("AUDIO_LESSON"),
/**
* 音频纯听
*/
AUDIO_LISTEN("AUDIO_LISTEN");
/**
* 值
*/
public final String value;
/**
* 音频纯听
*/
AUDIO_LISTEN("AUDIO_LISTEN"),
/**
* 音频魔法箱
*/
AUDIO_MAGIC("AUDIO_MAGIC");
/**
* 值
*/
public final String value;
/**
* 构造
......
......@@ -16,6 +16,11 @@ public class MQQueueConstant {
public static final String TEMPLATE = "templateQueue";
/**
* 音频配音(MP3)
*/
public static final String DUBBING = "dubbingQueue";
/**
* 文件转码(PDF、OFFICE)
*/
public static final String TRANSCODE = "transcodeQueue";
......@@ -86,6 +91,11 @@ public class MQQueueConstant {
public static final String CONVERT_TO_AUDIOLESSON = "convert2AudioLessonQueue";
/**
* 文件转码结束(音视频)->音频课/纯听
*/
public static final String CONVERT_TO_AUDIOMAGIC = "convert2AudioMagicQueue";
/**
* 数据埋点
*/
public static final String FRONT_EVENT = "frontEventQueue";
......@@ -150,4 +160,9 @@ public class MQQueueConstant {
*/
public static final String DEAD = "rays.dlq";
/**
* 待办事项数量统计
*/
public static final String BACKLOG = "backlogQueue";
}
......@@ -16,10 +16,15 @@ public class MQTopicProducer {
*/
public static final String FILE_TRANSCODE = "topic.fileTranscode";
/**
* 报名新增用户
*/
public static final String BM_ADD_USER = "topic.bmAddUser";
/**
* 音频配音结束(MP3)
*/
public static final String FILE_DUBBING = "topic.fileDubbing";
/**
* 报名新增用户
*/
public static final String BM_ADD_USER = "topic.bmAddUser";
/**
* 应用新增
......@@ -70,8 +75,15 @@ public class MQTopicProducer {
* TIP
*/
public static final String TIP = "topic.tip";
/**
* 打赏给读者
*/
public static final String TIP_FOR_WECHAT_USER = "topic.tipForWechatUser";
/**
* GENUINE
*/
public static final String GENUINE = "topic.genuine";
/**
* 订单完成
*/
public static final String FINISH_ORDER = "topic.finishOrder";
......@@ -266,13 +278,28 @@ public class MQTopicProducer {
*/
public static final String RECORD_USER_HABIT = "topic.recordUserHabit";
/**
* topic交换机名称(勿改)
*/
public static final String EXCHAGE = "rays.topic";
/**
* 扫码
*/
public static final String SCAN_QRCODE = "topic.scanQrcode";
/**
* topic交换机名称(勿改)
*/
public static final String EXCHAGE = "rays.topic";
/**
* 更新图书封面图
*/
public static final String UPDATE_BOOK_COVERIMG = "topic.updateBookCoverImg";
/**
* 微信用户关系
*/
public static final String WECHAT_RELATE_INFO = "topic.wechatRelateInfo";
/**
* 更新用户头像
*/
public static final String UPDATE_USER_HEADURL = "topic.updateUserHeadUrl";
}
......@@ -223,6 +223,21 @@ public class ProductTypeConstant {
public static final String EBOOK_APP = "EBOOK_APP";
/**
* 亲子伴读魔法箱
*/
public static final String AUDIO_MAGIC = "AUDIO_MAGIC";
/**
* 音频课
*/
public static final String AUDIO_SCHEDULE = "AUDIO_SCHEDULE";
/**
* 音频课程
*/
public static final String AUDIO_COURSE = "AUDIO_COURSE";
/**
* 热门作品类型
*/
public static final String[] HOT_PRODUCT_TYPE = {QA, PDF, VIDEO, PRETEST};
......@@ -231,7 +246,7 @@ public class ProductTypeConstant {
* 资源型作品(免费即可体验)
*/
public static final String[] RESOURCE_PRODUCT = {AUDIO, VIDEO, PDF, EBOOK, ALBUM, PRETEST, QANEWS,
FORMAT, WORD, ARTICLE, LISTEN, SCHEDULE, PBMUSIC, TUTORIAL, VIDEO_SCHEDULE};
FORMAT, WORD, ARTICLE, LISTEN, SCHEDULE, PBMUSIC, TUTORIAL, VIDEO_SCHEDULE, AUDIO_SCHEDULE};
/**
* 参与促销激励作品
......@@ -248,11 +263,16 @@ public class ProductTypeConstant {
* 应用型作品(伴随应用使用)
*/
public static final String[] APP_PRODUCT = {LOOK, LIVE, TUTOR, GROUP, ZSCORE, VOTE, CLOCK, TEST, AUDIOAPP, ANSWER,
EF, MUSIC, VIDEO_COURSE, PRETESTAPP, AUDIO_RESOURCE, QA_APP, EBOOK_APP};
EF, MUSIC, VIDEO_COURSE, PRETESTAPP, AUDIO_RESOURCE, QA_APP, EBOOK_APP, AUDIO_MAGIC};
/**
* 数据平台埋点型作品
*/
public static final String[] TRACK_PRODUCT = {COMMON, AUDIO, VIDEO, PDF, EBOOK, BOOK, MATCH, ALBUM, NUMBER, MEMBER,
PRETEST, QANEWS, REVIEW, TOOL, QS, FORMAT, WORD, ARTICLE};
/**
* 作品下资源来源于content中心的作品
*/
public static final String[] RESOURCE_CONTENT_PRODUCT = {AUDIO,VIDEO,BOOK,LISTEN,PDF,ALBUM,FORMAT,EBOOK};
}
......@@ -14,7 +14,8 @@ public enum RoleCodeEnum {
merchant("merchant"), // 商户
channel("channel"), // 渠道
agent("agent"), // 代理
adviser("adviser"); // 顾问
adviser("adviser"), // 顾问
platform("platform"); // 平台
/**
* 值
......
......@@ -48,6 +48,8 @@ public enum WeektaskCode {
UPDATE_BOOK_INFO("update_book_info"),
//调整应用顺序
SET_STEP("set_step"),
//确定回复
DEFINITE_REPLY("definite_reply"),
/**
* -------通用埋点------
*/
......@@ -139,6 +141,15 @@ public enum WeektaskCode {
C_PUBLISH_DYNAMIC("c_publish_dynamic"),
//专题问答设置免费
SET_FREE("set_free"),
//选择性格心理类场景
CREATE_TEST_CHARACTER("create_test_character"),
//选择知识抢答类场景
CREATE_TEST_RESPONDER("create_test_responder"),
//读者圈中加入直播课程
W_POST_LIVEAPP_NOTE("w_post_liveapp_note"),
//创建专题扩展应用新增栏目
NEW_COLUMN("new_column"),
//----------------------------------成就任务-------------------
/**
* 读者在读者圈中发动态
......@@ -651,6 +662,62 @@ public enum WeektaskCode {
*创建抽奖应用
*/
W5_CREATE_DRAW_APP("w5_create_draw_app"),
/**
*预览效果
*/
W5_CONFIGURE_NEWS("w5_configure_news"),
/**
*分享排名
*/
W5_SHARE_RANK("w5_share_rank"),
/**
* 新增性格心理类场景应用(周E3)
*/
W5_CREATE_TEST_CHARACTER("w5_create_test_character"),
/**
* 新增知识抢答类场景应用(周F3)
*/
W5_CREATE_TEST_RESPONDER("w5_create_test_responder"),
/**
* 新建直播课应用(周E4)
*/
W5_CREATE_RELATE_LIVEAPP("w5_create_relate_liveapp"),
/**
* 新建读者交流圈应用(周E5)
*/
W5_CREATE_RELATE_GROUP("w5_create_relate_group"),
/**
* 新建读书卡片应用(周E6)
*/
W5_CREATE_BOOKCARD("w5_create_bookcard"),
/**
* 新建电子书应用(周E7)
*/
W5_CREATE_EBOOK("w5_create_ebook"),
/**
* 新建分数排名应用(周F6)
*/
W5_CREATE_SCORE_APP("w5_create_score_app"),
/**
* 新建专题扩展应用(周F7)
*/
W5_CREATE_SPECIAL_APP("w5_create_special_app"),
/**
* 新建作者留言应用(周F8)
*/
W5_CREATE_VOICE_APP("w5_create_voice_app"),
/**
* 新建报名应用(周F9)
*/
W5_CREATE_BM_APP("w5_create_bm_app"),
/**
* 新建专家咨询应用(周F4)
*/
W5_CREATE_QA_APP("w5_create_qa_app"),
/**
*体验专家咨询应用(周F5)
*/
W5_EXPERIENCE_CONSULTING("w5_experience_consulting"),
;
public final String code;
......
package com.pcloud.common.core.dto;
import java.io.Serializable;
/**
* @描述:待办事务统计
* @作者:zhuyajie
* @创建时间:10:36 2018/10/31
* @版本:1.0
*/
public class BacklogQueueDto implements Serializable{
/**
* 编辑id
*/
private Long adviserId;
/**
* 应用id或商品id
*/
private Long targetId;
/**
*类型(APP/PRODUCT)
*/
private String targetType;
/**
*封面图
*/
private String coverImg;
/**
*标题
*/
private String title;
/**
*待审核/确认数量
*/
private Integer waitCount;
/**
*新动态数量
*/
private Integer newCount;
/**
*应用/商品类型编码
*/
private String typeCode;
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getTargetId() {
return targetId;
}
public void setTargetId(Long targetId) {
this.targetId = targetId;
}
public String getTargetType() {
return targetType;
}
public void setTargetType(String targetType) {
this.targetType = targetType;
}
public String getCoverImg() {
return coverImg;
}
public void setCoverImg(String coverImg) {
this.coverImg = coverImg;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getWaitCount() {
return waitCount;
}
public void setWaitCount(Integer waitCount) {
this.waitCount = waitCount;
}
public Integer getNewCount() {
return newCount;
}
public void setNewCount(Integer newCount) {
this.newCount = newCount;
}
public String getTypeCode() {
return typeCode;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
@Override
public String toString() {
return "BacklogQueueDto{" +
"adviserId=" + adviserId +
", targetId=" + targetId +
", targetType='" + targetType + '\'' +
", coverImg='" + coverImg + '\'' +
", title='" + title + '\'' +
", waitCount=" + waitCount +
", newCount=" + newCount +
", typeCode='" + typeCode + '\'' +
'}';
}
}
......@@ -9,216 +9,232 @@ import java.io.Serializable;
/**
* @描述:
*
* @作者:songx
* @创建时间:2017年2月27日,上午11:23:29 @版本:1.0
*/
public class ConvertQueueDto implements Serializable {
/**
*
*/
private static final long serialVersionUID = 7968821573480010447L;
/**
* 标识
*/
private Long id;
/**
* 文件UUID
*/
private String fileId;
/**
* 来源类型
*/
private String fromType;
/**
* 自定义类型,fromType的二级类型
*/
@ApiModelProperty(name = "自定义类型", dataType = "String")
private String customType;
/**
* 来源标识
*/
private Long fromId;
/**
* 文件路径
*/
private String fileUrl;
/**
* 文件大小
*/
private Long fileSize;
/**
* 文件类型
*/
private String fileType;
/**
* 在缓存中被处理的次数
*/
private int processTimes = 0;
/**
* 转换成功标记,true:成功,false失败
*/
private Boolean state;
/**
* 封面图
*/
private String coverImg;
/**
* 使用地址
*/
private String pilotUrl;
/**
* 视频时长
*/
private Integer duration;
/**
* 视频m3u8地址
*/
private String m3u8Url;
public String getCustomType() {
return customType;
}
public void setCustomType(String customType) {
this.customType = customType;
}
public String getM3u8Url() {
return m3u8Url;
}
public void setM3u8Url(String m3u8Url) {
this.m3u8Url = m3u8Url;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public Long getFromId() {
return fromId;
}
public void setFromId(Long fromId) {
this.fromId = fromId;
}
public String getPilotUrl() {
return pilotUrl;
}
public void setPilotUrl(String pilotUrl) {
this.pilotUrl = pilotUrl;
}
public String getCoverImg() {
return coverImg;
}
public void setCoverImg(String coverImg) {
this.coverImg = coverImg;
}
public Boolean getState() {
return state;
}
public void setState(Boolean state) {
this.state = state;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFileId() {
return fileId;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
public String getFromType() {
return fromType;
}
public void setFromType(String fromType) {
this.fromType = fromType;
}
/**
* @return Returns the fileUrl.
*/
public String getFileUrl() {
return fileUrl;
}
/**
* @param fileUrl The fileUrl to set.
*/
public void setFileUrl(String fileUrl) {
this.fileUrl = fileUrl;
}
/**
* @return Returns the fileSize.
*/
public Long getFileSize() {
return fileSize;
}
/**
* @param fileSize The fileSize to set.
*/
public void setFileSize(Long fileSize) {
this.fileSize = fileSize;
}
public int getProcessTimes() {
return processTimes;
}
public void setProcessTimes(int processTimes) {
this.processTimes = processTimes;
}
@Override
public String toString() {
return "ConvertQueueDto [fileId=" + fileId + ", fromType=" + fromType + ", fileUrl=" + fileUrl + ", fileSize="
+ fileSize + ", fileType=" + fileType + ", state=" + state + ", coverImg=" + coverImg + ", pilotUrl="
+ pilotUrl + "]";
}
/**
*
*/
private static final long serialVersionUID = 7968821573480010447L;
/**
* 标识
*/
private Long id;
/**
* 文件UUID
*/
private String fileId;
/**
* 来源类型
*/
private String fromType;
/**
* 自定义类型,fromType的二级类型
*/
@ApiModelProperty(name = "自定义类型", dataType = "String")
private String customType;
/**
* 视频截图时间点
*/
private int snapshotTime;
/**
* 来源标识
*/
private Long fromId;
/**
* 文件路径
*/
private String fileUrl;
/**
* 文件大小
*/
private Long fileSize;
/**
* 文件类型
*/
private String fileType;
/**
* 在缓存中被处理的次数
*/
private int processTimes = 0;
/**
* 转换成功标记,true:成功,false失败
*/
private Boolean state;
/**
* 封面图
*/
private String coverImg;
/**
* 使用地址
*/
private String pilotUrl;
/**
* 视频时长
*/
private Integer duration;
/**
* 视频m3u8地址
*/
private String m3u8Url;
public int getSnapshotTime() {
return snapshotTime;
}
public void setSnapshotTime(int snapshotTime) {
this.snapshotTime = snapshotTime;
}
public String getCustomType() {
return customType;
}
public void setCustomType(String customType) {
this.customType = customType;
}
public String getM3u8Url() {
return m3u8Url;
}
public void setM3u8Url(String m3u8Url) {
this.m3u8Url = m3u8Url;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public Long getFromId() {
return fromId;
}
public void setFromId(Long fromId) {
this.fromId = fromId;
}
public String getPilotUrl() {
return pilotUrl;
}
public void setPilotUrl(String pilotUrl) {
this.pilotUrl = pilotUrl;
}
public String getCoverImg() {
return coverImg;
}
public void setCoverImg(String coverImg) {
this.coverImg = coverImg;
}
public Boolean getState() {
return state;
}
public void setState(Boolean state) {
this.state = state;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFileId() {
return fileId;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
public String getFromType() {
return fromType;
}
public void setFromType(String fromType) {
this.fromType = fromType;
}
/**
* @return Returns the fileUrl.
*/
public String getFileUrl() {
return fileUrl;
}
/**
* @param fileUrl
* The fileUrl to set.
*/
public void setFileUrl(String fileUrl) {
this.fileUrl = fileUrl;
}
/**
* @return Returns the fileSize.
*/
public Long getFileSize() {
return fileSize;
}
/**
* @param fileSize
* The fileSize to set.
*/
public void setFileSize(Long fileSize) {
this.fileSize = fileSize;
}
public int getProcessTimes() {
return processTimes;
}
public void setProcessTimes(int processTimes) {
this.processTimes = processTimes;
}
@Override
public String toString() {
return "ConvertQueueDto [fileId=" + fileId + ", fromType=" + fromType + ", fileUrl=" + fileUrl + ", fileSize="
+ fileSize + ", fileType=" + fileType + ", state=" + state + ", coverImg=" + coverImg + ", pilotUrl="
+ pilotUrl + "]";
}
}
......@@ -32,6 +32,14 @@ public class SendAppMessageDto implements Serializable{
* 模板参数
*/
private Map<String, Object> paramKeyMap;
/**
* 设备类型
*/
private String deviceType;
/**
* 应用id
*/
private Long appId;
public String getRegistrationId() {
return registrationId;
......@@ -64,12 +72,35 @@ public class SendAppMessageDto implements Serializable{
public void setIsNow(Boolean isNow) {
this.isNow = isNow;
}
public String getDeviceType() {
return deviceType;
}
public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}
public Long getAppId() {
return appId;
}
public void setAppId(Long appId) {
this.appId = appId;
}
@Override
public String toString() {
return "SendAppMessageDto [registrationId=" + registrationId + ", adviserId=" + adviserId + ", typeCode="
+ typeCode + ", isNow=" + isNow + ", paramKeyMap=" + paramKeyMap + "]";
return "SendAppMessageDto{" +
"registrationId='" + registrationId + '\'' +
", adviserId=" + adviserId +
", typeCode='" + typeCode + '\'' +
", isNow=" + isNow +
", paramKeyMap=" + paramKeyMap +
", deviceType='" + deviceType + '\'' +
", appId=" + appId +
'}';
}
}
/**
*
*/
package com.pcloud.common.core.dto.dubbing;
import java.io.Serializable;
import com.alibaba.fastjson.JSONObject;
/**
*
* @author:songx
* @date:2018年12月5日,下午5:07:40
*/
public class AudioDTO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1217229671463911762L;
/**
* 文件名称
*/
private String fileName;
/**
* 时长
*/
private int duration;
/**
* 文件地址
*/
private String fileUrl;
/**
* 文件大小
*/
private long fileSize;
/**
* 语音文件插入时间点
*/
private int start;
/**
* id
*/
private int id;
public long getFileSize() {
return fileSize;
}
public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public String getFileUrl() {
return fileUrl;
}
public void setFileUrl(String fileUrl) {
this.fileUrl = fileUrl;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
@Override
public String toString() {
return "DubbingResultDTO : " + JSONObject.toJSONString(this);
}
}
package com.pcloud.common.core.dto.dubbing;
import java.io.Serializable;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
/**
* 绘本配音资源DTO
*
* @author:songx
* @date:2018年12月5日,上午10:07:26
*/
public class DubbingDTO implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5639047705106025465L;
/**
* 用户添加的问题文本(不超过5条)
*/
private List<SpeechDTO> speechDTOs;
/**
* 待合成的背景音乐URL(不超过4条)
*/
private String[] bgms;
/**
* 录音文件地址
*/
private String soundUrl;
/**
* 来源类型
*/
private String fromType;
/**
* 导语
*/
private String beforeText;
/**
* 结束语
*/
private String afterText;
/**
* 应用ID
*/
private Long appId;
/**
* 编辑ID
*/
private Long adviserId;
/**
* 音乐ID
*/
private Long musicId;
public String getSoundUrl() {
return soundUrl;
}
public void setSoundUrl(String soundUrl) {
this.soundUrl = soundUrl;
}
public String getFromType() {
return fromType;
}
public void setFromType(String fromType) {
this.fromType = fromType;
}
public String getBeforeText() {
return beforeText;
}
public void setBeforeText(String beforeText) {
this.beforeText = beforeText;
}
public String getAfterText() {
return afterText;
}
public void setAfterText(String afterText) {
this.afterText = afterText;
}
public Long getAppId() {
return appId;
}
public void setAppId(Long appId) {
this.appId = appId;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getMusicId() {
return musicId;
}
public void setMusicId(Long musicId) {
this.musicId = musicId;
}
public List<SpeechDTO> getSpeechDTOs() {
return speechDTOs;
}
public void setSpeechDTOs(List<SpeechDTO> speechDTOs) {
this.speechDTOs = speechDTOs;
}
public String[] getBgms() {
return bgms;
}
public void setBgms(String[] bgms) {
this.bgms = bgms;
}
@Override
public String toString() {
return "DubbingDTO : " + JSONObject.toJSONString(this);
}
}
package com.pcloud.common.core.dto.dubbing;
import com.alibaba.fastjson.JSONObject;
import com.pcloud.common.core.dto.dubbing.AudioDTO;
import java.io.Serializable;
import java.util.List;
/**
* 绘本配音资源DTO
*
* @author:songx
* @date:2018年12月5日,上午10:07:26
*/
public class DubbingResultDTO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 2458000180158610651L;
/**
* 来源类型
*/
private String fromType;
/**
* 语音文件
*/
private List<AudioDTO> speechs;
/**
* 混合音频
*/
private AudioDTO mixAudio;
/**
* 应用ID
*/
private Long appId;
/**
* 编辑ID
*/
private Long adviserId;
/**
* 音乐ID
*/
private Long musicId;
public String getFromType() {
return fromType;
}
public void setFromType(String fromType) {
this.fromType = fromType;
}
public Long getAppId() {
return appId;
}
public void setAppId(Long appId) {
this.appId = appId;
}
public Long getAdviserId() {
return adviserId;
}
public void setAdviserId(Long adviserId) {
this.adviserId = adviserId;
}
public Long getMusicId() {
return musicId;
}
public void setMusicId(Long musicId) {
this.musicId = musicId;
}
public List<AudioDTO> getSpeechs() {
return speechs;
}
public void setSpeechs(List<AudioDTO> speechs) {
this.speechs = speechs;
}
public AudioDTO getMixAudio() {
return mixAudio;
}
public void setMixAudio(AudioDTO mixAudio) {
this.mixAudio = mixAudio;
}
@Override
public String toString() {
return "DubbingResultDTO : " + JSONObject.toJSONString(this);
}
}
/**
*
*/
package com.pcloud.common.core.dto.dubbing;
import java.io.Serializable;
import com.alibaba.fastjson.JSONObject;
/**
*
* @author:songx
* @date:2018年12月5日,下午5:05:57
*/
public class SpeechDTO implements Serializable{
/**
*
*/
private static final long serialVersionUID = -5054460976926789378L;
/**
* 文本内容
*/
private String text;
/**
* id
*/
private int id;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "SpeechDTO : " + JSONObject.toJSONString(this);
}
}
\ No newline at end of file
package com.pcloud.common.core.enums;
/**
* @描述:代办事务类型
* @作者:zhuyajie
* @创建时间:10:54 2018/10/31
* @版本:1.0
*/
public enum BacklogTypeEnum {
/**
* 应用
*/
APP("APP"),
/**
* 作品
*/
PRODUCT("PRODUCT");
private String value;
public String getValue() {
return value;
}
BacklogTypeEnum(String value) {
this.value = value;
}
}
......@@ -42,7 +42,17 @@ public enum TranscodeFromEnum {
/**
* 直播
*/
LIVE_HOMEWORD("LIVE_HOMEWORD");
LIVE_HOMEWORD("LIVE_HOMEWORD"),
/**
* 音频
*/
AUDIOAPP_PDF("AUDIOAPP_PDF"),
/**
* 文件管理中心
*/
CONVERT_PDF("CONVERT_PDF");
/**
* 值
......
......@@ -9,7 +9,10 @@ import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
......@@ -22,6 +25,8 @@ import com.pcloud.common.permission.PermissionException;
import feign.FeignException;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import java.util.List;
/**
*
* @描述:异常集中处理
......@@ -92,6 +97,23 @@ public class GlobalExceptionHandler {
LOGGER.warn("【响应未结束】" + exception.getMessage(), exception);
return new ResponseEntity<>("响应未结束!", HttpStatus.OK);
}
else if (exception instanceof MethodArgumentNotValidException) {
LOGGER.info("【参数异常】" + exception.getMessage(), exception);
MethodArgumentNotValidException methodArgumentNotValidException = (MethodArgumentNotValidException) exception;
ResponseDto<Object> responseDto = new ResponseDto<>();
BindingResult bindingResult = methodArgumentNotValidException.getBindingResult();
String resultMessage = "参数异常:";
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
for (int i = 0;i<fieldErrors.size();i++) {
if(fieldErrors.size()==1 || i == fieldErrors.size()-1){
resultMessage += fieldErrors.get(i).getDefaultMessage();
}else {
resultMessage += fieldErrors.get(i).getDefaultMessage() + ", ";
}
}
responseDto.setMessage(resultMessage);
return new ResponseEntity<>(responseDto, HttpStatus.OK);
}
// 业务异常
else if (exception instanceof BizException) {
LOGGER.info("【业务异常】" + exception.getMessage(), exception);
......
......@@ -178,6 +178,10 @@
<artifactId>httpcore</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
......@@ -291,13 +295,6 @@
<artifactId>aliyun-java-sdk-mts</artifactId>
</dependency>
<!-- solr add by gaop at 2018-4-23 11:33:47 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
</dependency>
<!-- end -->
<!-- Jackson Begin -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
......@@ -387,6 +384,12 @@
<version>2.0</version>
</dependency>
<!-- util sdk -->
<dependency>
<groupId>com.dcg.sdk</groupId>
<artifactId>util-sdk</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
package com.pcloud.common.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
* @author peidawei
* @version 1.0.0
* @package com.pcloud.common.entity
* @className BasePageRequestVO
* @description 分页请求VO基类
* @date 2018年11月29日 下午 14:46
*/
@ApiModel("分页请求VO基类")
public class BasePageRequestVO implements Serializable {
private static final long serialVersionUID = -4034188768789093041L;
@ApiModelProperty(hidden = true)
private Long userId;
@ApiModelProperty("每页多少条")
private Integer numPerPage;
@ApiModelProperty("当前页")
private Integer currentPage;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Integer getNumPerPage() {
return numPerPage;
}
public void setNumPerPage(Integer numPerPage) {
this.numPerPage = numPerPage;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
}
package com.pcloud.common.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
* @author peidawei
* @version 1.0.0
* @package com.pcloud.common.entity
* @className BaseRequestVO
* @description 请求VO基类
* @date 2018年11月29日 下午 14:44
*/
@ApiModel("请求VO基类")
public class BaseRequestVO implements Serializable {
private static final long serialVersionUID = -1078697162056973900L;
@ApiModelProperty(hidden = true)
private Long userId;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
}
......@@ -54,7 +54,8 @@ public enum AppTypeEnum {
WISH("WISH"),// 愿望单
LIVEAPP("LIVEAPP"), //直播3.0
TASTETEST("TASTETEST"), //趣味测试
VIDEO_CLASSIC("VIDEO_CLASSIC"); //经典版视频
VIDEO_CLASSIC("VIDEO_CLASSIC"), //经典版视频
AUDIO_MAGIC("AUDIO_MAGIC"); //音频伴读魔法箱
/**
* 枚举转换
......
package com.pcloud.common.enums;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @author lily
* @date 2018/12/6 11:36
*/
public enum QrcodeTypeEnum {
MAGIC("AUDIO_MAGIC", 0, "听画书", "AUDIO_MAGIC", "APP", true),
REWARD("CLOCK", 1, "打卡书", "REWARD", "APP", true),
PREVIEW_APP("VIDEO", 2, "预习课", "PREVIEW", "APP", true),
PREVIEW_PRODUCT("VIDEO_SCHEDULE", 3, "预习课", "PREVIEW", "PRODUCT", true),
ZSCORE("ZSCORE", 4, "查分书", "ZSCORE", "APP", true);
/**
* 类型
*/
private String type;
private Integer value;
private String description;
private String scene;
private String typeCode;
private Boolean isNeedCover;
public static final Map<String, QrcodeTypeEnum> QRCODE_TYPE_MAP = new HashMap<>();
QrcodeTypeEnum(String type, Integer value, String description, String scene, String typeCode, Boolean isNeedCover) {
this.type = type;
this.value = value;
this.description = description;
this.scene = scene;
this.typeCode = typeCode;
this.isNeedCover = isNeedCover;
}
static {
Arrays.asList(values()).forEach((m) -> {
QRCODE_TYPE_MAP.put(m.type, m);
});
}
public String getType() {
return type;
}
public Integer getValue() {
return value;
}
public String getDescription() {
return description;
}
public String getScene() {
return scene;
}
public String getTypeCode() {
return typeCode;
}
public Boolean getNeedCover() {
return isNeedCover;
}
}
......@@ -14,9 +14,12 @@ import javax.imageio.ImageIO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.dcg.util.StringUtils;
import com.itextpdf.text.Image;
import com.pcloud.common.constant.AliyunConstant;
import com.pcloud.common.constant.FilePathConst;
import com.pcloud.common.constant.ImageConstant;
import com.pcloud.common.entity.UploadResultInfo;
import com.pcloud.common.enums.ImageEnum;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.exceptions.FileException;
......@@ -688,4 +691,37 @@ public class ImageUtils {
return size;
}
/**
* 上传的图片转换成webpO
*
* @param localFilePath
* 源文件的本地路径
* @param httpUrl
* 源文件上传后的路径,主要用于子文件上传时对应http文件路径
*/
public static UploadResultInfo toWebp(String fileUrl) {
String fileNameAll = FileUtils.getFileNameAll(fileUrl);
String localFilePath = FilePathConst.DOWNLOAD_PATH + fileNameAll;
FileUtils.downloadFileFromUrl(fileUrl, localFilePath);
String tragetPath = null;
try {
tragetPath = com.dcg.util.ImageUtils.transcodeToWebp(localFilePath, 80);
} catch (Exception e) {
LOGGER.error("【IMAGE】图片转换成webp失败:" + e.getMessage(), e);
return null;
}
if (StringUtils.isEmpty(tragetPath)) {
return null;
}
try {
return OssUtils.uploadLocalFile4Child(tragetPath, fileUrl);
} catch (Exception e) {
LOGGER.error("【IMAGE】图片转换成webp,上传失败:" + e.getMessage(), e);
} finally {
FileUtils.deleteFile(localFilePath);
FileUtils.deleteFile(tragetPath);
}
return null;
}
}
......@@ -213,7 +213,7 @@ public class PictureUtil {
header.put("Content-Type", "application/json");
Map<String,String>param = new HashMap<>();
param.put("htmlCode",html);
String postResult = HttpKit.post("http://192.168.92.111:8214/transcode/htm2img/jpg", JSON.toJSONString(param));
String postResult = HttpKit.post("http://192.168.1.7:8216/transcode/htm2img/jpg", JSON.toJSONString(param));
Map map = JSONUtils.jsonToMap(postResult, String.class, String.class);
String pic = (String)map.get("data");
BufferedImage bookPicImage = ImageIO.read(new URL(pic));
......
......@@ -21,6 +21,7 @@ import java.util.Map;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -215,6 +216,42 @@ public class QrcodeUtils {
}
/**
* 创建二维码
*
* @param url
* 二维码响应地址
* @return
* @throws Exception
*/
public static String createWithMargin(String url, Integer marginNum) throws BizException {
String key = "createWithMargin:"+url+"_"+marginNum;
if(JedisClusterUtils.exists(key)){
String s = JedisClusterUtils.get(key);
return s;
}else {
LOGGER.info("【二维码】创建二维码,<START>.[url]=" + url);
Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
hints.put(EncodeHintType.ERROR_CORRECTION, level);
hints.put(EncodeHintType.MARGIN, marginNum); // 设置白边
try {
// 生成矩阵
BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, ImageConstant.QRCODE_WITH,
ImageConstant.QRCODE_HEIGHT, hints);
BufferedImage bufferedImage = toBufferedImage(bitMatrix, onColor);
bufferedImage.flush();
String s = uploadImage(bufferedImage);
JedisClusterUtils.set(key,s,24*3600);
return s;
} catch (Exception e) {
LOGGER.error("【二维码】创建二维码失败,<ERROR>:" + e.getMessage(), e);
throw new FileException(FileException.FILE_UPLOAD_FAILURE, "创建二维码失败");
}
}
}
/**
* 创建带颜色的二维码
* @param url
* @param onColor
......
......@@ -17,43 +17,63 @@ import com.pcloud.common.page.PageBeanNew;
*/
public class ResultUtils {
/**
* 集合查询结果判断
*
* @param lists
* @return
*/
public static <T> List<T> list(List<T> lists) {
if (!ListUtils.isEmpty(lists)) {
return lists;
}
return Lists.newArrayList();
}
/**
* map查询结果判断
*
* @param lists
* @return
*/
public static <K, V> Map<K, V> map(Map<K, V> map) {
if (!MapUtils.isEmpty(map)) {
return map;
}
return Maps.newHashMap();
}
/**
* 分页查询结果判断
*
* @param pageBeanNew
* @return
*/
public static <T> PageBeanNew<T> pageBeanNew(PageBeanNew<T> pageBeanNew, Integer currentPage, Integer numPerPage) {
if (pageBeanNew != null) {
return pageBeanNew;
}
return new PageBeanNew<T>(currentPage, numPerPage, 0, Lists.newArrayList());
}
/**
* 单个对象实例化
*
* @param t
* @param clazz
* @return
* @author songx
* @date 2019年1月14日,下午7:32:35
*/
public static <T> T object(T t, Class<T> clazz) {
if (t == null) {
return null;
}
try {
return clazz.newInstance();
} catch (Exception e) {
}
return null;
}
/**
* 集合查询结果判断
*
* @param lists
* @return
*/
public static <T> List<T> list(List<T> lists) {
if (!ListUtils.isEmpty(lists)) {
return lists;
}
return Lists.newArrayList();
}
/**
* map查询结果判断
*
* @param lists
* @return
*/
public static <K, V> Map<K, V> map(Map<K, V> map) {
if (!MapUtils.isEmpty(map)) {
return map;
}
return Maps.newHashMap();
}
/**
* 分页查询结果判断
*
* @param pageBeanNew
* @return
*/
public static <T> PageBeanNew<T> pageBeanNew(PageBeanNew<T> pageBeanNew, Integer currentPage, Integer numPerPage) {
if (pageBeanNew != null) {
return pageBeanNew;
}
return new PageBeanNew<T>(currentPage, numPerPage, 0, Lists.newArrayList());
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -12,6 +12,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.NumberUtil;
import com.pcloud.common.utils.string.StringUtil;
/**
......@@ -125,25 +126,25 @@ public class Cookie {
String[] channel = userInfoArry[i].split("=");
String channelId = channel[channel.length - 1];
userInfos.put("channelId", StringUtil.isEmpty(channelId) || "undefined".equalsIgnoreCase(channelId)
|| "null".equalsIgnoreCase(channelId) ? null : Long.valueOf(channelId));
|| "null".equalsIgnoreCase(channelId) ? null : NumberUtil.toLong(channelId));
}
if (userInfoArry[i].contains("officialAccountsId")) {
String[] wechat = userInfoArry[i].split("=");
String officialAccountsId = wechat[wechat.length - 1];
userInfos.put("officialAccountsId", StringUtil.isEmpty(officialAccountsId) || "undefined".equalsIgnoreCase(officialAccountsId)
|| "null".equalsIgnoreCase(officialAccountsId) ? null : Long.valueOf(officialAccountsId));
|| "null".equalsIgnoreCase(officialAccountsId) ? null : NumberUtil.toLong(officialAccountsId));
}
if (userInfoArry[i].contains("wechatUserId")) {
String[] user = userInfoArry[i].split("=");
String wechatUserId = user[user.length - 1];
userInfos.put("wechatUserId", StringUtil.isEmpty(wechatUserId) || "undefined".equalsIgnoreCase(wechatUserId)
|| "null".equalsIgnoreCase(wechatUserId) ? null : Long.valueOf(wechatUserId));
|| "null".equalsIgnoreCase(wechatUserId) ? null : NumberUtil.toLong(wechatUserId));
}
if (userInfoArry[i].contains("partyId")) {
String[] party = userInfoArry[i].split("=");
String partyId = party[party.length - 1];
userInfos.put("partyId", StringUtil.isEmpty(partyId) || "undefined".equalsIgnoreCase(partyId) || "null".equalsIgnoreCase(partyId)
? null : Long.valueOf(partyId));
? null : NumberUtil.toLong(partyId));
}
// editBy TC cookie里面需要带上顾问,systemCode,是否系统,场景值
// modify by songx at 2017-05-17 如果值为undefined或者null直接跳过
......@@ -151,7 +152,7 @@ public class Cookie {
String[] adviser = userInfoArry[i].split("=");
String adviserId = adviser[adviser.length - 1];
userInfos.put("adviserId", StringUtil.isEmpty(adviserId) || "undefined".equalsIgnoreCase(adviserId) || "null".equalsIgnoreCase(adviserId)
? null : Long.valueOf(adviserId));
? null : NumberUtil.toLong(adviserId));
}
if (userInfoArry[i].contains("systemCode")) {
String[] systemCode = userInfoArry[i].split("=");
......@@ -168,25 +169,25 @@ public class Cookie {
String[] scene = userInfoArry[i].split("=");
String sceneId = scene[scene.length - 1];
userInfos.put("sceneId", StringUtil.isEmpty(sceneId) || "undefined".equalsIgnoreCase(sceneId) || "null".equalsIgnoreCase(sceneId) ? null
: Long.valueOf(sceneId));
: NumberUtil.toLong(sceneId));
}
if (userInfoArry[i].contains("userId")) {
String[] userLogin = userInfoArry[i].split("=");
String userId = userLogin[userLogin.length - 1];
userInfos.put("userId", StringUtil.isEmpty(userId) || "undefined".equalsIgnoreCase(userId) || "null".equalsIgnoreCase(userId) ? null
: Long.valueOf(userId));
: NumberUtil.toLong(userId));
}
if (userInfoArry[i].contains("merchantMemberId")) {
String[] merchant = userInfoArry[i].split("=");
String merchantMemberId = merchant[merchant.length - 1];
userInfos.put("merchantMemberId", StringUtil.isEmpty(merchantMemberId) || "undefined".equalsIgnoreCase(merchantMemberId)
|| "null".equalsIgnoreCase(merchantMemberId) ? null : Long.valueOf(merchantMemberId));
|| "null".equalsIgnoreCase(merchantMemberId) ? null : NumberUtil.toLong(merchantMemberId));
}
if (userInfoArry[i].contains("agentMemberId")) {
String[] merchant = userInfoArry[i].split("=");
String agentMemberId = merchant[merchant.length - 1];
userInfos.put("agentMemberId", StringUtil.isEmpty(agentMemberId) || "undefined".equalsIgnoreCase(agentMemberId)
|| "null".equalsIgnoreCase(agentMemberId) ? null : Long.valueOf(agentMemberId));
|| "null".equalsIgnoreCase(agentMemberId) ? null : NumberUtil.toLong(agentMemberId));
}
// add by gaop
if (userInfoArry[i].contains(PREVIEW_TYPE)) {
......@@ -205,13 +206,13 @@ public class Cookie {
String[] firstTD = userInfoArry[i].split("=");
String code = firstTD[firstTD.length - 1];
userInfos.put(FIRST_TD, StringUtil.isEmpty(code) || "undefined".equalsIgnoreCase(code) || "null".equalsIgnoreCase(code) ? null
: Long.valueOf(code));
: NumberUtil.toLong(code));
}
if (userInfoArry[i].contains(SECOND_TD)) {
String[] secondTD = userInfoArry[i].split("=");
String code = secondTD[secondTD.length - 1];
userInfos.put(SECOND_TD, StringUtil.isEmpty(code) || "undefined".equalsIgnoreCase(code) || "null".equalsIgnoreCase(code) ? null
: Long.valueOf(code));
: NumberUtil.toLong(code));
}
}
return userInfos;
......@@ -226,7 +227,7 @@ public class Cookie {
*/
public static Long getId(String userInfo, String type) throws BizException {
String value = getString(userInfo, type);
return StringUtil.isEmpty(value) || "undefined".equalsIgnoreCase(value) || "null".equalsIgnoreCase(value) ? null : Long.valueOf(value);
return StringUtil.isEmpty(value) || "undefined".equalsIgnoreCase(value) || "null".equalsIgnoreCase(value) ? null : NumberUtil.toLong(value);
}
/**
......
......@@ -127,6 +127,47 @@ public class WordDataExportor {
}
/**
* 生成word
* @param dataMap
* @param templateName
* @return
* @author linweibin
* @date 2017年5月22日 下午5:22:38
*/
@SuppressWarnings("deprecation")
public static void generateWord(Class clazz, Map<String, Object> dataMap, String templateName, File tmpdir, String fileName) {
logger.info("开始生成word+++");
try {
// 创建配置实例
Configuration configuration = new Configuration();
// 设置编码
configuration.setDefaultEncoding("UTF-8");
// 获取template文件路径
configuration.setClassForTemplateLoading(clazz, "/template");
// 获取模板
Template template = configuration.getTemplate(templateName);
// 输出文件
File outFile = new File(tmpdir, fileName);
// 将模板和数据模型合并生成文件
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
// 生成文件
template.process(dataMap, out);
logger.info("生成word+++成功");
// 关闭流
out.flush();
out.close();
} catch (Exception e) {
logger.error("生成word异常+++" + e.getMessage(), e);
}
}
/**
* 生成随机文件名
* @return
* @author linweibin
......
......@@ -10,8 +10,6 @@ import org.slf4j.LoggerFactory;
import com.pcloud.common.utils.string.StringUtil;
/**
* MD5
*/
......@@ -66,9 +64,22 @@ public class MD5 {
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
return md5StrBuff.toString().toUpperCase();
return md5StrBuff.toString();
}
/**
* MD5字符串,全大写
*
* @param str
* @return
*/
public static String getMD5StrUpper(String str) {
if (StringUtil.isEmpty(str)) {
return str;
}
return getMD5Str(str).toUpperCase();
}
/**
* MD5字符串,全小写
*
......@@ -111,9 +122,9 @@ public class MD5 {
return md5StrBuff.toString().toUpperCase();
}
public static void main(String[] args){
public static void main(String[] args) {
System.out.println(MD5.getMD5Str("chenjianhua"));
System.out.println(DigestUtils.md5Hex("chenjianhua").toUpperCase());
}
}
......@@ -613,7 +613,26 @@ public class StringTools {
* @param array
* @return
*/
public static boolean equalss(String str, String[] array) {
public static boolean equalss(String str, String... array) {
if (StringUtil.isEmpty(str) || array == null) {
return false;
}
for (String s : array) {
if (str.equals(s)) {
return true;
}
}
return false;
}
/**
* 判断字符是否在数组中存在。如果数组为null则返回false
*
* @param str
* @param array
* @return
*/
public static boolean equalss(String str, List<String> array) {
if (StringUtil.isEmpty(str) || array == null) {
return false;
}
......
......@@ -120,8 +120,8 @@ public class CompressUtils {
if (ListUtils.isEmpty(fileUrlList)) {
return null;
}
zipName = FileUtils.formatName(zipName);
String tempZipName = zipName + "_" + LocalDateUtils.getYmdhmss();
String zipNameFormat = FileUtils.formatName(zipName);
String tempZipName = zipNameFormat + "_" + LocalDateUtils.getYmdhmss();
String zipFilePath = ZIP_FILE_PATH + tempZipName + ".zip";
// 检查临时文件夹是否存在,不存在就创建
String fileFolderPath = FILE_LOCAL_PATH + tempZipName;
......@@ -141,7 +141,7 @@ public class CompressUtils {
FileUtils.isDir(ZIP_FILE_PATH);
CompressUtils.zip(fileFolderPath, zipFilePath);
// 上传文件到服务器中
uploadResultInfo = OssUtils.uploadLocalFile4CustomName(zipFilePath, zipName);
uploadResultInfo = OssUtils.uploadLocalFile4CustomName(zipFilePath, zipNameFormat);
uploadResultInfo.setFileName(zipName);
} catch (Exception e) {
LOGGER.error("【压缩】压缩失败,<ERROR>:" + e.getMessage(), e);
......
/**
*
*/
package com.pcloud.common.vo;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
/**
* VO父类
*
* @author:songx
* @date:2019年1月14日,下午8:53:01
*/
@JsonInclude(value = Include.NON_NULL)
public class BaseVO implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5943734920212204836L;
}
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pcloud.common</groupId>
<artifactId>pcloud-common-parent</artifactId>
<version>2.1.0-SNAPSHOT</version>
</parent>
<artifactId>pcloud-solr</artifactId>
<packaging>jar</packaging>
<version>${pcloud-solr.version}</version>
<name>pcloud-solr</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.pcloud.common</groupId>
<artifactId>pcloud-common-config</artifactId>
<version>${pcloud-common-config.version}</version>
</dependency>
<!-- solr add by gaop at 2018-4-23 11:33:47 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>${spring.data.solr.version}</version>
</dependency>
<!-- Spring Cloud Begin -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- Spring Cloud End -->
<!-- Common Dependency Begin -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.18</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.38</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<!-- Common Dependency End -->
</dependencies>
</project>
package com.pcloud.common.utils.solr;
package com.pcloud.solr;
import java.io.Serializable;
import java.util.Calendar;
......
package com.pcloud.common.utils.solr;
package com.pcloud.solr;
import java.util.List;
import java.util.Map;
......
package com.pcloud.common.utils.solr;
package com.pcloud.solr;
import java.io.Serializable;
import java.util.List;
......@@ -8,7 +8,7 @@ import java.util.List;
* @author PENG
* @date 2018/4/24
*/
public class SolrResult implements Serializable {
public class SolrResult<T> implements Serializable {
private static final long serialVersionUID = 1195918725820896691L;
......@@ -25,7 +25,7 @@ public class SolrResult implements Serializable {
/**
* 查询结果列表
*/
private List<SolrDto> list;
private List<T> list;
public Integer getTotalCount() {
return totalCount;
......@@ -43,11 +43,11 @@ public class SolrResult implements Serializable {
this.maxScore = maxScore;
}
public List<SolrDto> getList() {
public List<T> getList() {
return list;
}
public void setList(List<SolrDto> list) {
public void setList(List<T> list) {
this.list = list;
}
......
......@@ -18,6 +18,7 @@
<module>pcloud-common-config</module>
<module>pcloud-common</module>
<module>pcloud-common-core</module>
<module>pcloud-solr</module>
</modules>
<packaging>pom</packaging>
......@@ -47,6 +48,7 @@
<pcloud-common.version>2.1.0-RELEASE</pcloud-common.version>
<pcloud-common-config.version>2.1.0-RELEASE</pcloud-common-config.version>
<pcloud-common-core.version>2.1.0-RELEASE</pcloud-common-core.version>
<pcloud-solr.version>2.1.0-RELEASE</pcloud-solr.version>
</properties>
</profile>
<!-- 压测环境 -->
......@@ -68,6 +70,7 @@
<pcloud-common.version>2.1.0-RELEASE</pcloud-common.version>
<pcloud-common-config.version>2.1.0-RELEASE</pcloud-common-config.version>
<pcloud-common-core.version>2.1.0-RELEASE</pcloud-common-core.version>
<pcloud-solr.version>2.1.0-RELEASE</pcloud-solr.version>
</properties>
</profile>
<!-- 生产环境 RAYS -->
......@@ -89,6 +92,7 @@
<pcloud-common.version>2.1.1-RELEASE</pcloud-common.version>
<pcloud-common-config.version>2.1.1-RELEASE</pcloud-common-config.version>
<pcloud-common-core.version>2.1.1-RELEASE</pcloud-common-core.version>
<pcloud-solr.version>2.1.1-RELEASE</pcloud-solr.version>
</properties>
</profile>
</profiles>
......@@ -227,6 +231,11 @@
<version>4.4.6</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
......@@ -303,13 +312,6 @@
</dependency>
<!-- end -->
<!-- solr add by gaop at 2018-4-23 11:33:47 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>${spring.data.solr.version}</version>
</dependency>
<!-- Jackson Begin -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
......
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment