@@ -211,11 +211,11 @@ | |||
</dependency> | |||
<dependency> | |||
<!-- <dependency> | |||
<groupId>org.apache.poi</groupId> | |||
<artifactId>poi</artifactId> | |||
<version>RELEASE</version> | |||
</dependency> | |||
</dependency>--> | |||
<dependency> | |||
<groupId>org.apache.poi</groupId> | |||
<artifactId>poi-ooxml</artifactId> | |||
@@ -250,6 +250,33 @@ | |||
<artifactId>spring-boot-starter-mail</artifactId> | |||
</dependency> | |||
<!--mongodb --> | |||
<dependency> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-data-mongodb</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.jsoup</groupId> | |||
<artifactId>jsoup</artifactId> | |||
<version>1.12.1</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-data-redis</artifactId> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.springframework.boot</groupId> | |||
<artifactId>spring-boot-starter-data-redis-reactive</artifactId> | |||
</dependency> | |||
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> | |||
<dependency> | |||
<groupId>org.apache.poi</groupId> | |||
<artifactId>poi</artifactId> | |||
<version>3.9</version> | |||
</dependency> | |||
</dependencies> |
@@ -0,0 +1,32 @@ | |||
package com.xdf.creative.base.params; | |||
import lombok.AllArgsConstructor; | |||
import lombok.Data; | |||
import lombok.NoArgsConstructor; | |||
import org.springframework.data.annotation.Id; | |||
import org.springframework.data.mongodb.core.mapping.Document; | |||
@Data | |||
@AllArgsConstructor | |||
@NoArgsConstructor | |||
@Document(collection = "xdfWenChuHuiContent") | |||
public class InfoContentHtmlEntity { | |||
@Id | |||
private String s_id; | |||
private String infoContId; | |||
/** | |||
* 标题 | |||
*/ | |||
private String title; | |||
/** | |||
*内容文本 | |||
*/ | |||
private String contentText; | |||
private String content; | |||
} |
@@ -0,0 +1,44 @@ | |||
package com.xdf.creative.base.params.creative; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.xdf.creative.base.params.QueryParam; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.experimental.Accessors; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 信息和关键字关联表 查询参数对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
@ApiModel(value = "InfContentKeywordQueryParam对象", description = "信息和关键字关联表查询参数") | |||
public class InfoContentKeywordQueryParam extends QueryParam { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private Long id; | |||
@ApiModelProperty(value = "信息id") | |||
private Long contentId; | |||
@ApiModelProperty(value = "关键词id") | |||
private Long keywordId; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
} |
@@ -90,4 +90,6 @@ public class InfoContentQueryParam extends QueryParam { | |||
@ApiModelProperty(value = "逻辑删除,0:未删除,1:已删除(收入回收站)") | |||
private Integer deleted; | |||
private String typeId; | |||
} |
@@ -0,0 +1,55 @@ | |||
package com.xdf.creative.base.params.creative; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.xdf.creative.base.params.QueryParam; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.experimental.Accessors; | |||
import javax.validation.constraints.NotBlank; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 信息关键字 查询参数对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
@ApiModel(value = "InfoKeywordQueryParam对象", description = "信息关键字查询参数") | |||
public class InfoKeywordAddParam extends QueryParam { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private Long id; | |||
@ApiModelProperty(value = "关键词") | |||
@NotBlank(message = "关键词不能为空!") | |||
private String keyword; | |||
@ApiModelProperty(value = "是否通用 0 否 1是") | |||
private Integer isUse; | |||
@ApiModelProperty(value = "描述") | |||
private String detail; | |||
@ApiModelProperty(value = "状态 0 不可用 1可用") | |||
private Integer state; | |||
@ApiModelProperty(value = "创建用户") | |||
private Long createUser; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
} |
@@ -0,0 +1,53 @@ | |||
package com.xdf.creative.base.params.creative; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.xdf.creative.base.params.QueryParam; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.experimental.Accessors; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 信息关键字 查询参数对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
@ApiModel(value = "InfoKeywordQueryParam对象", description = "信息关键字查询参数") | |||
public class InfoKeywordQueryParam extends QueryParam { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private Long id; | |||
@ApiModelProperty(value = "关键词") | |||
private String keyword; | |||
@ApiModelProperty(value = "是否通用 0 否 1是") | |||
private Integer isUse; | |||
@ApiModelProperty(value = "描述") | |||
private String detail; | |||
@ApiModelProperty(value = "状态 0 不可用 1可用") | |||
private Integer state; | |||
@ApiModelProperty(value = "创建用户") | |||
private Long createUser; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
} |
@@ -0,0 +1,34 @@ | |||
package com.xdf.creative.base.params.creative; | |||
import com.xdf.creative.base.params.QueryParam; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.experimental.Accessors; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
* 信息关键字 查询参数对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
@ApiModel(value = "InfoKeywordQueryParam对象", description = "信息关键字查询参数") | |||
public class InfoKeywordSaveCheckParam extends QueryParam { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
private long contentId; | |||
@ApiModelProperty(value = "关键词id数组") | |||
private List<Long> keyIds; | |||
} |
@@ -35,6 +35,11 @@ public class WebInitiationApplyQueryParam extends QueryParam { | |||
@ApiModelProperty(value = "单位名称") | |||
private String name; | |||
@ApiModelProperty(value = "统一社会信用代码") | |||
private String creditCode; | |||
@ApiModelProperty(value = "单位logo") | |||
private String logo; | |||
@@ -0,0 +1,56 @@ | |||
package com.xdf.creative.base.params.creative; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.xdf.creative.base.params.QueryParam; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.experimental.Accessors; | |||
import javax.validation.constraints.NotNull; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 微信群二维码 查询参数对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2021-01-28 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
@ApiModel(value = "WxGroupQueryParam对象", description = "微信群二维码查询参数") | |||
public class WxGroupQueryParam extends QueryParam { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
@TableId(value = "id", type = IdType.AUTO) | |||
@NotNull(message = "主键id不能为空") | |||
private Long id; | |||
@ApiModelProperty(value = "产业名") | |||
private String name; | |||
@ApiModelProperty(value = "微信二维码") | |||
private String code; | |||
@ApiModelProperty(value = "状态,0:禁用,1:启用,2:锁定") | |||
private Integer state; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
@ApiModelProperty(value = "更新时间") | |||
private Date updateTime; | |||
@ApiModelProperty(value = "创建者id") | |||
private Long createUserId; | |||
} |
@@ -0,0 +1,37 @@ | |||
package com.xdf.creative.base.vo.creative; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.experimental.Accessors; | |||
import java.io.Serializable; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 信息和关键字关联表 查询结果对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@ApiModel(value = "InfContentKeywordQueryVo对象", description = "信息和关键字关联表查询参数") | |||
public class InfoContentKeywordQueryVo implements Serializable { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
private Long id; | |||
@ApiModelProperty(value = "信息id") | |||
private Long contentId; | |||
@ApiModelProperty(value = "关键词id") | |||
private Long keywordId; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
} |
@@ -83,4 +83,6 @@ public class InfoContentQueryVo implements Serializable { | |||
@ApiModelProperty(value = "逻辑删除,0:未删除,1:已删除") | |||
private Integer deleted; | |||
private String hyperlink; | |||
} |
@@ -91,4 +91,22 @@ public class InfoContentWebAllQueryVo extends QueryParam { | |||
* url列表 | |||
*/ | |||
private List<InfoUrl> urlList; | |||
private String keyWord; | |||
private String upTitle; | |||
private Long upInfoId; | |||
private String upImageUrl; | |||
private String upHyperlink; | |||
private String downTitle; | |||
private Long downInfoId; | |||
private String downImageUrl; | |||
private String downHyperlink; | |||
} |
@@ -0,0 +1,41 @@ | |||
package com.xdf.creative.base.vo.creative; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.experimental.Accessors; | |||
import java.io.Serializable; | |||
/** | |||
* <p> | |||
* 信息关键字 查询结果对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@ApiModel(value = "InfoKeywordQueryVo对象", description = "信息关键字查询参数") | |||
public class InfoKeywordCheckListVo implements Serializable { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
private Long id; | |||
@ApiModelProperty(value = "关键词") | |||
private String keyword; | |||
@ApiModelProperty(value = "是否通用 0 否 1是") | |||
private Integer isUse; | |||
@ApiModelProperty(value = "描述") | |||
private String detail; | |||
@ApiModelProperty(value = "状态 0 不可用 1可用") | |||
private Integer state; | |||
private String checked; | |||
} |
@@ -0,0 +1,46 @@ | |||
package com.xdf.creative.base.vo.creative; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.experimental.Accessors; | |||
import java.io.Serializable; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 信息关键字 查询结果对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@ApiModel(value = "InfoKeywordQueryVo对象", description = "信息关键字查询参数") | |||
public class InfoKeywordQueryVo implements Serializable { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
private Long id; | |||
@ApiModelProperty(value = "关键词") | |||
private String keyword; | |||
@ApiModelProperty(value = "是否通用 0 否 1是") | |||
private Integer isUse; | |||
@ApiModelProperty(value = "描述") | |||
private String detail; | |||
@ApiModelProperty(value = "状态 0 不可用 1可用") | |||
private Integer state; | |||
@ApiModelProperty(value = "创建用户") | |||
private Long createUser; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
} |
@@ -0,0 +1,110 @@ | |||
package com.xdf.creative.base.vo.creative; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.experimental.Accessors; | |||
import java.io.Serializable; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 文促会入会申请表 查询结果对象 | |||
* </p> | |||
* | |||
* @author DeanYe | |||
* @date 2019-10-30 | |||
*/ | |||
@Data | |||
@ApiModel(value = "WebInitiationApplyQueryVo对象", description = "文促会入会申请表查询参数") | |||
public class WebInitiationApplyExportVo { | |||
@ApiModelProperty(value = "单位名称") | |||
private String name; | |||
@ApiModelProperty(value = "统一社会信用代码") | |||
private String creditCode; | |||
@ApiModelProperty(value = "机关类型 1、国营企业 2、事业单位 3、民营企业 4、社会组织") | |||
private String unitTypeStr; | |||
@ApiModelProperty(value = "注册地址省") | |||
private String provinceStr; | |||
@ApiModelProperty(value = "注册地址市") | |||
private String cityStr; | |||
@ApiModelProperty(value = "注册地址区") | |||
private String countyStr; | |||
@ApiModelProperty(value = "主要办公地址") | |||
private String contactAddress; | |||
@ApiModelProperty(value = "邮编") | |||
private String post; | |||
@ApiModelProperty(value = "公司网址") | |||
private String website; | |||
@ApiModelProperty(value = "法人姓名") | |||
private String legalPerson; | |||
@ApiModelProperty(value = "法人职务") | |||
private String legalDuty; | |||
@ApiModelProperty(value = "固定电话") | |||
private String legalPhone; | |||
@ApiModelProperty(value = "手机号") | |||
private String legalMobile; | |||
@ApiModelProperty(value = "日常联系人姓名") | |||
private String linkMan; | |||
@ApiModelProperty(value = "日常联系人职务") | |||
private String linkDuty; | |||
@ApiModelProperty(value = "日常联系人固定电话") | |||
private String linkPhone; | |||
@ApiModelProperty(value = "日常联系人手机号") | |||
private String linkMobile; | |||
@ApiModelProperty(value = "法人简介") | |||
private String legalIntroduction; | |||
@ApiModelProperty(value = "单位简介") | |||
private String introduction; | |||
@ApiModelProperty(value = "专列与荣誉") | |||
private String honner; | |||
@ApiModelProperty(value = "金融服务 1、股权 2、债权 3、担保 4、融资租赁 5、其他") | |||
private String financeServiceStr; | |||
@ApiModelProperty(value = "产业合作 1、对接上下游企业资源 2、展会参展 3、园区入驻") | |||
private String industryStr; | |||
@ApiModelProperty(value = "企业服务 1、扶持资金 2、信用评级 3、知识与版权交易 4、财务与法律资讯 5、投融资对接") | |||
private String companyServiceStr; | |||
@ApiModelProperty(value = "其他") | |||
private String otherService; | |||
@ApiModelProperty(value = "申报产业类别:1、媒体业 2、艺术业 3、工业设计 4、建筑设计业 5、时尚设计业 6、互联网相关服务业 7、软件与信息技术服务业8、咨询服务业9、广告及会展服务业 10、休闲娱乐业 11、文化装备制造业12、文化创意投资运营13、文化创意用品生产") | |||
private String declareCategoryStr; | |||
@ApiModelProperty(value = "希望成为哪一级会员 1、普通会员 2、理事会员 3、常务理事会员") | |||
private String vipLevelStr; | |||
private String logo; | |||
private String attachment; | |||
@ApiModelProperty(value = "申请附件") | |||
private String applyAttachment; | |||
} |
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.experimental.Accessors; | |||
import javax.validation.constraints.NotBlank; | |||
import java.io.Serializable; | |||
import java.util.Date; | |||
@@ -28,6 +29,9 @@ public class WebInitiationApplyQueryVo implements Serializable { | |||
@ApiModelProperty(value = "单位名称") | |||
private String name; | |||
@ApiModelProperty(value = "统一社会信用代码") | |||
private String creditCode; | |||
@ApiModelProperty(value = "单位logo") | |||
private String logo; | |||
@@ -160,4 +164,9 @@ public class WebInitiationApplyQueryVo implements Serializable { | |||
private String nickname; | |||
@ApiModelProperty(value = "申请附件") | |||
private String applyAttachment; | |||
} |
@@ -0,0 +1,47 @@ | |||
package com.xdf.creative.base.vo.creative; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.experimental.Accessors; | |||
import java.io.Serializable; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 微信群二维码 查询结果对象 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @date 2021-01-28 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@ApiModel(value = "WxGroupQueryVo对象", description = "微信群二维码查询参数") | |||
public class WxGroupQueryVo implements Serializable { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
private Long id; | |||
@ApiModelProperty(value = "产业名") | |||
private String name; | |||
@ApiModelProperty(value = "微信二维码") | |||
private String code; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
@ApiModelProperty(value = "更新时间") | |||
private Date updateTime; | |||
@ApiModelProperty(value = "创建者id") | |||
private Long createUserId; | |||
@ApiModelProperty(value = "状态,0:禁用,1:启用,2:锁定") | |||
private Integer state; | |||
} |
@@ -53,7 +53,7 @@ public class CorsFilterUser implements Filter { | |||
private final static Logger log = LoggerFactory.getLogger(CorsFilterUser.class); | |||
private final static List<String> heardSList = Arrays.asList("Accept","Origin","X-Requested-With","Content-Type", "Last-Modified","*"); | |||
private final static List<String> heardSList = Arrays.asList("School-Teacher-Token", "school-teacher-token", "x-access-token", "Referer", "Accept", "Origin", "X-Requested-With", "Content-Type", "Last-Modified", "token", "Authorization"); | |||
private final CorsConfigurationSource configSource; | |||
private CorsProcessor processor = new DefaultCorsProcessor(); | |||
@@ -0,0 +1,54 @@ | |||
package com.xdf.creative.config.redis; | |||
import com.fasterxml.jackson.annotation.JsonAutoDetect; | |||
import com.fasterxml.jackson.annotation.PropertyAccessor; | |||
import com.fasterxml.jackson.databind.ObjectMapper; | |||
import org.springframework.context.annotation.Bean; | |||
import org.springframework.context.annotation.Configuration; | |||
import org.springframework.data.redis.connection.RedisConnectionFactory; | |||
import org.springframework.data.redis.core.RedisTemplate; | |||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; | |||
import org.springframework.data.redis.serializer.StringRedisSerializer; | |||
/** | |||
* redis配置类 | |||
* | |||
* @author ZENG.XIAO.YAN | |||
* @date 2018年6月6日 | |||
*/ | |||
@Configuration | |||
public class RedisConfig { | |||
@Bean | |||
@SuppressWarnings("all") | |||
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { | |||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); | |||
redisTemplate.setConnectionFactory(redisConnectionFactory); | |||
// 使用Jackson2JsonRedisSerialize 替换默认序列化 | |||
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); | |||
ObjectMapper objectMapper = new ObjectMapper(); | |||
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); | |||
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); | |||
jackson2JsonRedisSerializer.setObjectMapper(objectMapper); | |||
// 设置value的序列化规则和 key的序列化规则 | |||
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); | |||
redisTemplate.setKeySerializer(new StringRedisSerializer()); | |||
redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer); | |||
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); | |||
redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer); | |||
redisTemplate.setEnableDefaultSerializer(true); | |||
redisTemplate.afterPropertiesSet(); | |||
return redisTemplate; | |||
} | |||
} |
@@ -37,6 +37,8 @@ public class SQLFilter { | |||
throw new InfoFormException(StatusCode.FORM_INFO_CONTENT_FORDATE_VERIFY); | |||
} | |||
} | |||
str = str.replaceAll("%(?![0-9a-fA-F]{2})", "%25"); | |||
return str; | |||
} | |||
} |
@@ -31,7 +31,7 @@ import java.util.Map; | |||
* | |||
* @author Mark sunlightcs@gmail.com | |||
*/ | |||
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { | |||
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { | |||
private static final Logger logger = LoggerFactory.getLogger(XssHttpServletRequestWrapper.class); | |||
//没被包装过的HttpServletRequest(特殊场景,需要自己过滤) | |||
HttpServletRequest orgRequest; |
@@ -16,6 +16,9 @@ public interface CommonConstant { | |||
*/ | |||
Integer DEFAULT_PAGE_SIZE = 10; | |||
Integer KEY_WORD_MAX_SIZE = 4; | |||
/** | |||
* 默认降序排序 | |||
*/ | |||
@@ -28,6 +31,14 @@ public interface CommonConstant { | |||
String REGION_ROOT_CODE="310000"; | |||
String XDF_CULTURE_PARK_INFO_CONTENT_RECOMMEND_KEY = "parkContentInfoRecommend"; | |||
String XDF_CULTURE_PARK_INFO_CONTENT_RECOMMEND = "xdf:wch:park:content:recommend:%s"; | |||
String XDF_CULTURE_INFO_DETAIL_PARK_RECOMMEND_KEY = "contentInfoParkRecommend"; | |||
String XDF_CULTURE_INFO_DETAIL_PARK_RECOMMEND = "xdf:wch:detail:park:recommend:%s"; | |||
String XDF_CULTURE_INFO_DETAIL_RENT_RECOMMEND_KEY = "contentInfoRentRecommend"; | |||
String XDF_CULTURE_INFO_DETAIL_RENT_RECOMMEND = "xdf:wch:detail:rent:recommend:%s"; | |||
/** | |||
* JWT用户名 | |||
@@ -107,4 +118,11 @@ public interface CommonConstant { | |||
* base64前缀 | |||
*/ | |||
String BASE64_PREFIX = "data:image/png;base64,"; | |||
String VERIFY_CODE_KEY ="f80b2eed0110a7ea5a3428b74862cceb697f8"; | |||
/** | |||
* 图片验证码 | |||
*/ | |||
String VERIFY_CODE_GET = "xdf_wch:verify.code:%s:%s"; | |||
} |
@@ -15,6 +15,8 @@ public enum ServiceFileDirEnum { | |||
SERVICE_FILE_DIR_PUBLIC_TRADE_DYNAMIC(106, "tradeDynamic"), | |||
SERVICE_FILE_DIR_PUBLIC_POLICY(108, "policy"), | |||
SERVICE_FILE_DIR_PUBLIC_ACTIVITY(109, "activity"), | |||
SERVICE_FILE_DIR_PUBLIC_QR(110, "wxqr"), | |||
SERVICE_FILE_DIR_PUBLIC_APPLY(113, "apply"), | |||
//其他 | |||
SERVICE_FILE_DIR_OTHER(999, "other"); | |||
@@ -4,12 +4,15 @@ import com.xdf.creative.base.params.VerifyCode; | |||
import com.xdf.creative.constant.CommonConstant; | |||
import com.xdf.creative.module.service.IVerifyCodeGen; | |||
import com.xdf.creative.module.service.impl.SimpleCharVerifyCodeGenImpl; | |||
import com.xdf.creative.util.PasswordUtil; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.data.redis.core.RedisTemplate; | |||
import org.springframework.web.bind.annotation.RequestMapping; | |||
import org.springframework.web.bind.annotation.RestController; | |||
@@ -19,6 +22,7 @@ import java.io.IOException; | |||
import java.util.Base64; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
import java.util.concurrent.TimeUnit; | |||
/** | |||
* @author : lgw | |||
@@ -30,11 +34,12 @@ import java.util.Map; | |||
@RequestMapping("/auth") | |||
@Api("验证吗 API") | |||
public class CodeController { | |||
@Autowired | |||
private RedisTemplate redisTemplate; | |||
private Logger logger = LoggerFactory.getLogger(CodeController.class); | |||
@ApiOperation(value = "验证码") | |||
/*@ApiOperation(value = "验证码") | |||
@RequestMapping("/code") | |||
public ApiResult verifyCode(HttpServletRequest request, HttpServletResponse response) { | |||
IVerifyCodeGen iVerifyCodeGen = new SimpleCharVerifyCodeGenImpl(); | |||
@@ -48,7 +53,7 @@ public class CodeController { | |||
String code = verifyCode.getCode(); | |||
logger.info(code); | |||
//将VerifyCode绑定session | |||
request.getSession().setAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY, code); | |||
// request.getSession().setAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY, code); | |||
//设置响应头 | |||
response.setHeader("Pragma", "no-cache"); | |||
//设置响应头 | |||
@@ -64,5 +69,45 @@ public class CodeController { | |||
map.put(CommonConstant.IMAGE, CommonConstant.BASE64_PREFIX + base64); | |||
return ApiResult.ok(map); | |||
} | |||
*/ | |||
@ApiOperation(value = "验证码") | |||
@RequestMapping("/code") | |||
public ApiResult verifyCode(HttpServletRequest request, HttpServletResponse response,String userName, Integer type) { | |||
IVerifyCodeGen iVerifyCodeGen = new SimpleCharVerifyCodeGenImpl(); | |||
//设置长宽 | |||
VerifyCode verifyCode = null; | |||
try { | |||
verifyCode = iVerifyCodeGen.generate(100, 50); | |||
} catch (IOException e) { | |||
e.printStackTrace(); | |||
} | |||
String code = verifyCode.getCode(); | |||
logger.info(code); | |||
String encrypt = PasswordUtil.encrypt(userName+type, CommonConstant.VERIFY_CODE_KEY); | |||
//将VerifyCode绑定session | |||
//request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, code); | |||
redisTemplate.opsForValue().set(String.format(CommonConstant.VERIFY_CODE_GET, userName, encrypt), code, 300, TimeUnit.SECONDS); | |||
//将VerifyCode绑定session | |||
// request.getSession().setAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY, code); | |||
//设置响应头 | |||
response.setHeader("Pragma", "no-cache"); | |||
//设置响应头 | |||
response.setHeader("Cache-Control", "no-cache"); | |||
//在代理服务器端防止缓冲 | |||
response.setDateHeader("Expires", 0); | |||
//设置响应内容类型 | |||
response.setContentType("image/jpeg"); | |||
// response.getOutputStream().write(verifyCode.getImgBytes()); | |||
String base64 = Base64.getEncoder().encodeToString(verifyCode.getImgBytes()); | |||
Map<String, Object> map = new HashMap<>(2); | |||
map.put(CommonConstant.IMAGE, CommonConstant.BASE64_PREFIX + base64); | |||
return ApiResult.ok(map); | |||
} | |||
} |
@@ -8,7 +8,6 @@ import com.xdf.creative.module.entity.FileUploadQuery; | |||
import com.xdf.creative.module.service.FileClientService; | |||
import com.xdf.creative.util.StringUtil; | |||
import com.xdf.creative.util.UUIDUtil; | |||
import com.xdf.creative.util.excel.ExcelUtil; | |||
import com.xdf.creative.util.file.ServerUploadDirUtil; | |||
import com.xdf.creative.util.file.UploadUtil; | |||
import com.xdf.creative.util.image.FileToBase64; | |||
@@ -52,7 +51,20 @@ public class FileUploadController { | |||
} | |||
} | |||
@PostMapping("/doExcelFile") | |||
@PostMapping("/doApplyFile") | |||
@ApiOperation(value = "添加MultipartFile对象", notes = "添加文件上传", response = ApiResult.class) | |||
public ApiResult<String> doApplyFile(MultipartFile file, @RequestParam Integer uploadPath) throws Exception { | |||
String finalPath = ServerUploadDirUtil.getFileUploadDir(uploadPath); | |||
ApiResult result = UploadUtil.upload(basePath + "/" + finalPath, file, ServiceFileUploadTypeEnum.SERVICE_FILE_UPLOAD_TYPE_FILE.getCode()); | |||
if (result.getCode() == ApiCode.SUCCESS.getCode()) { | |||
String saveName = result.getData().toString(); | |||
return result.ok(finalPath + "/" + saveName); | |||
} else { | |||
return result; | |||
} | |||
} | |||
/* @PostMapping("/doExcelFile") | |||
@ApiOperation(value = "添加MultipartFile对象", notes = "添加文件上传", response = ApiResult.class) | |||
public ApiResult<String> doExcelFile(MultipartFile file, @RequestParam Integer uploadPath) throws Exception { | |||
@@ -70,7 +82,7 @@ public class FileUploadController { | |||
} else { | |||
return result; | |||
} | |||
} | |||
}*/ | |||
/** | |||
* 上传图片文件 |
@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.web.bind.annotation.*; | |||
import javax.validation.Valid; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
@@ -242,6 +243,18 @@ public class InfoContentController extends BaseController { | |||
return ApiResult.ok(pageList); | |||
} | |||
@GetMapping("/getSearchParkRecommendWebInfo") | |||
@ApiOperation(value = "获取InfoContentWeb分页列表", notes = "信息内容分页列表", response = InfoContentWebSearchQueryVo.class) | |||
public ApiResult<List<InfoContentWebSearchQueryVo>> getSearchParkRecommendWebInfo() throws Exception { | |||
InfoContentWebSearchQueryParam infoContentWebSearchQueryParam = new InfoContentWebSearchQueryParam(); | |||
infoContentWebSearchQueryParam.setTitle("文化"); | |||
return ApiResult.ok(infoContentService.getSearchParkRecommendWebInfo(infoContentWebSearchQueryParam)); | |||
} | |||
@PostMapping("/getSearchWebsInfo") | |||
@ApiOperation(value = "获取InfoContentWeb分页列表", notes = "信息内容分页列表", response = InfoContentWebSearchQueryVo.class) | |||
public ApiResult<PageTool<InfoContentWebSearchQueryVo>> getSearchWebsInfo(@Valid @RequestBody InfoContentWebSearchListParam infoContentWebSearchListParam) throws Exception { | |||
@@ -311,6 +324,29 @@ public class InfoContentController extends BaseController { | |||
return ApiResult.result(flag); | |||
} | |||
@PostMapping("/getInfoHtml") | |||
@ApiOperation(value = "删除InfoContent对象", notes = "删除信息内容", response = ApiResult.class) | |||
public ApiResult getInfoHtml(@RequestBody IdParam idParam) throws Exception { | |||
return infoContentService.getInfoHtml(idParam.getValue()); | |||
} | |||
/** | |||
* @description: 初始化超链接新闻爬取 | |||
* @param: | |||
* @return: com.xdf.creative.util.page.ApiResult | |||
* @author 一路心飞扬 lgw | |||
* @date: 2020/12/25 14:08 | |||
*/ | |||
@GetMapping("/getHtmlByInfo") | |||
@ApiOperation(value = "删除InfoContent对象", notes = "删除信息内容", response = ApiResult.class) | |||
public ApiResult getHtmlByInfo() { | |||
return infoContentService.getHtmlByInfo(); | |||
} | |||
/** | |||
* 信息内容分页列表 | |||
*/ |
@@ -0,0 +1,141 @@ | |||
package com.xdf.creative.module.controller; | |||
import com.xdf.creative.base.controller.BaseController; | |||
import com.xdf.creative.base.params.IdParam; | |||
import com.xdf.creative.base.params.creative.InfoKeywordAddParam; | |||
import com.xdf.creative.base.params.creative.InfoKeywordQueryParam; | |||
import com.xdf.creative.base.params.creative.InfoKeywordSaveCheckParam; | |||
import com.xdf.creative.base.vo.creative.InfoKeywordQueryVo; | |||
import com.xdf.creative.module.service.InfoKeywordService; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.web.bind.annotation.PostMapping; | |||
import org.springframework.web.bind.annotation.RequestBody; | |||
import org.springframework.web.bind.annotation.RequestMapping; | |||
import org.springframework.web.bind.annotation.RestController; | |||
import javax.validation.Valid; | |||
/** | |||
* <p> | |||
* 信息关键字 前端控制器 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
@Slf4j | |||
@RestController | |||
@RequestMapping("/infoKeyword") | |||
@Api("信息关键字 API") | |||
public class InfoKeywordController extends BaseController { | |||
@Autowired | |||
private InfoKeywordService infoKeywordService; | |||
/** | |||
* 添加信息关键字 | |||
*/ | |||
@PostMapping("/add") | |||
@ApiOperation(value = "添加InfoKeyword对象", notes = "添加信息关键字", response = ApiResult.class) | |||
public ApiResult addInfoKeyword(@Valid @RequestBody InfoKeywordAddParam infoKeywordAddParam) throws Exception { | |||
return infoKeywordService.add(infoKeywordAddParam); | |||
} | |||
/** | |||
* 删除信息 | |||
* @param idParam | |||
* @return | |||
* @throws Exception | |||
*/ | |||
@PostMapping("/del") | |||
@ApiOperation(value = "删除关键词", notes = "删除关键词", response = ApiResult.class) | |||
public ApiResult del(@Valid @RequestBody IdParam idParam) throws Exception { | |||
return infoKeywordService.del(idParam.getId()); | |||
} | |||
/** | |||
* 修改信息关键字 | |||
*/ | |||
@PostMapping("/edit") | |||
@ApiOperation(value = "修改InfoKeyword对象", notes = "修改信息关键字", response = ApiResult.class) | |||
public ApiResult edit(@Valid @RequestBody InfoKeywordAddParam infoKeywordAddParam) throws Exception { | |||
return infoKeywordService.edit(infoKeywordAddParam); | |||
} | |||
/** | |||
* 保存已选择的信息列表 | |||
* @param infoKeywordSaveCheckParam | |||
* @return | |||
* @throws Exception | |||
*/ | |||
@PostMapping("/saveCheckList") | |||
@ApiOperation(value = "修改InfoKeyword对象", notes = "修改信息关键字", response = ApiResult.class) | |||
public ApiResult saveCheckList(@Valid @RequestBody InfoKeywordSaveCheckParam infoKeywordSaveCheckParam) throws Exception { | |||
return infoKeywordService.saveCheckList(infoKeywordSaveCheckParam); | |||
} | |||
/** | |||
* 启用停用关键字 | |||
* @param idParam | |||
* @return | |||
* @throws Exception | |||
*/ | |||
@PostMapping("/enable") | |||
@ApiOperation(value = "启用停用", notes = "删除信息关键字", response = ApiResult.class) | |||
public ApiResult enable(@Valid @RequestBody IdParam idParam) throws Exception { | |||
return infoKeywordService.enable(idParam.getId()); | |||
} | |||
/** | |||
* 获取已选择的关键字列表 | |||
* @param idParam | |||
* @return | |||
* @throws Exception | |||
*/ | |||
@PostMapping("/getCheckList") | |||
@ApiOperation(value = "启用停用", notes = "删除信息关键字", response = ApiResult.class) | |||
public ApiResult getCheckList(@Valid @RequestBody IdParam idParam) throws Exception { | |||
return infoKeywordService.getCheckList(idParam.getId()); | |||
} | |||
/** | |||
* 删除信息关键字 | |||
*/ | |||
@PostMapping("/delete") | |||
@ApiOperation(value = "删除InfoKeyword对象", notes = "删除信息关键字", response = ApiResult.class) | |||
public ApiResult<Boolean> deleteInfoKeyword(@Valid @RequestBody IdParam idParam) throws Exception { | |||
boolean flag = infoKeywordService.removeById(idParam.getId()); | |||
return ApiResult.result(flag); | |||
} | |||
/** | |||
* 获取信息关键字 | |||
*/ | |||
@PostMapping("/info") | |||
@ApiOperation(value = "获取InfoKeyword对象详情", notes = "查看信息关键字", response = InfoKeywordQueryVo.class) | |||
public ApiResult<InfoKeywordQueryVo> getInfoKeyword(@Valid @RequestBody IdParam idParam) throws Exception { | |||
InfoKeywordQueryVo infoKeywordQueryVo = infoKeywordService.getInfoKeywordById(idParam.getId()); | |||
return ApiResult.ok(infoKeywordQueryVo); | |||
} | |||
/** | |||
* 信息关键字分页列表 | |||
*/ | |||
@PostMapping("/getPageList") | |||
@ApiOperation(value = "获取InfoKeyword分页列表", notes = "信息关键字分页列表", response = InfoKeywordQueryVo.class) | |||
public ApiResult<PageTool<InfoKeywordQueryVo>> getInfoKeywordPageList(@Valid @RequestBody InfoKeywordQueryParam infoKeywordQueryParam) throws Exception { | |||
PageTool<InfoKeywordQueryVo> pageList = infoKeywordService.getInfoKeywordPageList(infoKeywordQueryParam); | |||
return ApiResult.ok(pageList); | |||
} | |||
} | |||
@@ -235,5 +235,12 @@ public class WebInitiationApplyController extends BaseController { | |||
return ApiResult.ok(pageList); | |||
} | |||
@PostMapping("/getExportPageList") | |||
@ApiOperation(value = "获取WebInitiationApply分页列表", notes = "文促会入会申请终审人员查询", response = WebInitiationApplyQueryVo.class) | |||
public ApiResult getExportPageList(@RequestBody WebInitiationApplyQueryParam webInitiationApplyQueryParam) throws Exception { | |||
return webInitiationApplyService.getExportPageList(webInitiationApplyQueryParam,getRequest()); | |||
} | |||
} | |||
@@ -0,0 +1,117 @@ | |||
package com.xdf.creative.module.controller; | |||
import com.xdf.creative.base.controller.BaseController; | |||
import com.xdf.creative.base.params.IdParam; | |||
import com.xdf.creative.base.params.creative.WxGroupQueryParam; | |||
import com.xdf.creative.base.vo.creative.WxGroupQueryVo; | |||
import com.xdf.creative.enums.StateEnum; | |||
import com.xdf.creative.module.entity.WxGroup; | |||
import com.xdf.creative.module.service.WxGroupService; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.web.bind.annotation.PostMapping; | |||
import org.springframework.web.bind.annotation.RequestBody; | |||
import org.springframework.web.bind.annotation.RequestMapping; | |||
import org.springframework.web.bind.annotation.RestController; | |||
import javax.validation.Valid; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 微信群二维码 前端控制器 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2021-01-28 | |||
*/ | |||
@Slf4j | |||
@RestController | |||
@RequestMapping("/wxGroup") | |||
@Api("微信群二维码 API") | |||
public class WxGroupController extends BaseController { | |||
@Autowired | |||
private WxGroupService wxGroupService; | |||
/** | |||
* 添加微信群二维码 | |||
*/ | |||
@PostMapping("/add") | |||
@ApiOperation(value = "添加WxGroup对象", notes = "添加微信群二维码", response = ApiResult.class) | |||
public ApiResult<Boolean> addWxGroup(@Valid @RequestBody WxGroup wxGroup) throws Exception { | |||
boolean flag = wxGroupService.save(wxGroup); | |||
return ApiResult.result(flag); | |||
} | |||
/** | |||
* 修改微信群二维码 | |||
*/ | |||
@PostMapping("/update") | |||
@ApiOperation(value = "修改WxGroup对象", notes = "修改微信群二维码", response = ApiResult.class) | |||
public ApiResult<Boolean> updateWxGroup(@Valid @RequestBody WxGroup wxGroup) throws Exception { | |||
wxGroup.setUpdateTime(new Date()); | |||
boolean flag = wxGroupService.updateById(wxGroup); | |||
return ApiResult.result(flag); | |||
} | |||
/** | |||
* 删除微信群二维码 | |||
*/ | |||
@PostMapping("/delete") | |||
@ApiOperation(value = "删除WxGroup对象", notes = "删除微信群二维码", response = ApiResult.class) | |||
public ApiResult<Boolean> deleteWxGroup(@Valid @RequestBody IdParam idParam) throws Exception { | |||
boolean flag = wxGroupService.removeById(idParam.getId()); | |||
return ApiResult.result(flag); | |||
} | |||
/** | |||
* 获取微信群二维码 | |||
*/ | |||
@PostMapping("/info") | |||
@ApiOperation(value = "获取WxGroup对象详情", notes = "查看微信群二维码", response = WxGroupQueryVo.class) | |||
public ApiResult<WxGroupQueryVo> getWxGroup(@Valid @RequestBody IdParam idParam) throws Exception { | |||
WxGroupQueryVo wxGroupQueryVo = wxGroupService.getWxGroupById(idParam.getId()); | |||
return ApiResult.ok(wxGroupQueryVo); | |||
} | |||
/** | |||
* 微信群二维码分页列表 | |||
*/ | |||
@PostMapping("/getPageList") | |||
@ApiOperation(value = "获取WxGroup分页列表", notes = "微信群二维码分页列表", response = WxGroupQueryVo.class) | |||
public ApiResult<PageTool<WxGroupQueryVo>> getWxGroupPageList(@RequestBody WxGroupQueryParam wxGroupQueryParam) throws Exception { | |||
PageTool<WxGroupQueryVo> pageList = wxGroupService.getWxGroupPageList(wxGroupQueryParam); | |||
return ApiResult.ok(pageList); | |||
} | |||
@PostMapping("/getWebList") | |||
@ApiOperation(value = "获取WxGroup分页列表", notes = "微信群二维码分页列表", response = WxGroupQueryVo.class) | |||
public ApiResult<PageTool<WxGroupQueryVo>> getWebList() throws Exception { | |||
WxGroupQueryParam wxGroupQueryParam =new WxGroupQueryParam(); | |||
wxGroupQueryParam.setState(StateEnum.ENABLE.getKey()); | |||
wxGroupQueryParam.setPageNum(1); | |||
wxGroupQueryParam.setPageSize(30); | |||
PageTool<WxGroupQueryVo> pageList = wxGroupService.getWxGroupPageList(wxGroupQueryParam); | |||
return ApiResult.ok(pageList); | |||
} | |||
/** | |||
* 启用停用关键字 | |||
* @param idParam | |||
* @return | |||
* @throws Exception | |||
*/ | |||
@PostMapping("/enable") | |||
@ApiOperation(value = "启用停用", notes = "删除信息关键字", response = ApiResult.class) | |||
public ApiResult enable(@Valid @RequestBody IdParam idParam) throws Exception { | |||
return wxGroupService.enable(idParam.getId()); | |||
} | |||
} | |||
@@ -0,0 +1,43 @@ | |||
package com.xdf.creative.module.entity; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.xdf.creative.base.entity.BaseEntity; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.experimental.Accessors; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 信息和关键字关联表 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
@ApiModel(value = "InfContentKeyword对象", description = "信息和关键字关联表") | |||
public class InfoContentKeyword extends BaseEntity { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private Long id; | |||
@ApiModelProperty(value = "信息id") | |||
private Long contentId; | |||
@ApiModelProperty(value = "关键词id") | |||
private Long keywordId; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
} |
@@ -0,0 +1,52 @@ | |||
package com.xdf.creative.module.entity; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.xdf.creative.base.entity.BaseEntity; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.experimental.Accessors; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 信息关键字 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
@ApiModel(value = "InfoKeyword对象", description = "信息关键字") | |||
public class InfoKeyword extends BaseEntity { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private Long id; | |||
@ApiModelProperty(value = "关键词") | |||
private String keyword; | |||
@ApiModelProperty(value = "是否通用 0 否 1是") | |||
private Integer isUse; | |||
@ApiModelProperty(value = "描述") | |||
private String detail; | |||
@ApiModelProperty(value = "状态 0 不可用 1可用") | |||
private Integer state; | |||
@ApiModelProperty(value = "创建用户") | |||
private Long createUser; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
} |
@@ -39,6 +39,11 @@ public class WebInitiationApply extends BaseEntity { | |||
@NotBlank(message = "单位名称不能为空") | |||
private String name; | |||
@ApiModelProperty(value = "统一社会信用代码") | |||
@NotBlank(message = "统一社会信用代码不能为空") | |||
private String creditCode; | |||
@ApiModelProperty(value = "单位logo") | |||
private String logo; | |||
@@ -174,6 +179,9 @@ public class WebInitiationApply extends BaseEntity { | |||
@ApiModelProperty(value = "其他") | |||
private String otherService; | |||
@ApiModelProperty(value = "申请附件") | |||
private String applyAttachment; | |||
@TableField(exist = false) | |||
@ApiModelProperty(value = "审核类型 1 初审 2 二审 ") | |||
protected Integer auditType; |
@@ -0,0 +1,56 @@ | |||
package com.xdf.creative.module.entity; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.xdf.creative.base.entity.BaseEntity; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.experimental.Accessors; | |||
import javax.validation.constraints.NotBlank; | |||
import java.util.Date; | |||
/** | |||
* <p> | |||
* 微信群二维码 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2021-01-28 | |||
*/ | |||
@Data | |||
@Accessors(chain = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
@ApiModel(value = "WxGroup对象", description = "微信群二维码") | |||
public class WxGroup extends BaseEntity { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty(value = "主键id") | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private Long id; | |||
@ApiModelProperty(value = "产业名") | |||
@NotBlank(message = "产业名不能为空") | |||
private String name; | |||
@ApiModelProperty(value = "状态,0:禁用,1:启用,2:锁定") | |||
private Integer state; | |||
@ApiModelProperty(value = "微信二维码") | |||
@NotBlank(message = "二维码不能为空") | |||
private String code; | |||
@ApiModelProperty(value = "创建时间") | |||
private Date createTime; | |||
@ApiModelProperty(value = "更新时间") | |||
private Date updateTime; | |||
@ApiModelProperty(value = "创建者id") | |||
private Long createUserId; | |||
} |
@@ -0,0 +1,10 @@ | |||
package com.xdf.creative.module.listener; | |||
import com.xdf.creative.module.entity.InfoContent; | |||
import org.springframework.context.ApplicationEvent; | |||
public class InfoContentHtmlListenEven extends ApplicationEvent { | |||
public InfoContentHtmlListenEven(InfoContent infoContent) { | |||
super(infoContent); | |||
} | |||
} |
@@ -0,0 +1,57 @@ | |||
package com.xdf.creative.module.listener; | |||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||
import com.xdf.creative.base.params.InfoContentHtmlEntity; | |||
import com.xdf.creative.module.entity.InfoContent; | |||
import com.xdf.creative.module.entity.InfoDetail; | |||
import com.xdf.creative.module.service.InfoDetailService; | |||
import com.xdf.creative.util.StringUtil; | |||
import com.xdf.creative.util.image.HtmlUtils; | |||
import org.jsoup.nodes.Document; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.context.ApplicationListener; | |||
import org.springframework.data.mongodb.core.MongoTemplate; | |||
import org.springframework.scheduling.annotation.Async; | |||
import org.springframework.stereotype.Component; | |||
@Component | |||
public class InfoContentHtmlListener implements ApplicationListener<InfoContentHtmlListenEven> { | |||
@Autowired | |||
private InfoDetailService infoDetailService; | |||
@Autowired | |||
private MongoTemplate mongoTemplate; | |||
/** | |||
* 异步抓取html | |||
* | |||
* @param infoContentHtmlListenEven | |||
*/ | |||
@Async | |||
public void onApplicationEvent(InfoContentHtmlListenEven infoContentHtmlListenEven) { | |||
Object source = infoContentHtmlListenEven.getSource(); | |||
if (source instanceof InfoContent) { | |||
//取出超链接 | |||
InfoDetail infoDetail = infoDetailService.getOne(new QueryWrapper<InfoDetail>().eq("foreign_id",((InfoContent) source).getForeignId())); | |||
if(null!=infoDetail){ | |||
String html = HtmlUtils.sendGetTwo(infoDetail.getHyperlink()); | |||
if(!StringUtil.isEmpty(html)){ | |||
Document document = HtmlUtils.getDocument(html); | |||
if(document.hasText()){ | |||
InfoContentHtmlEntity infoContentHtmlEntity = new InfoContentHtmlEntity(); | |||
String content =document.html(); | |||
infoContentHtmlEntity.setContent(content.replaceAll("data-src=\"","src=\"http://img01.sogoucdn.com/net/a/04/link?appid=100520033&url=").replaceFirst("<head>","<head><meta name=\"referrer\" content=\"no-referrer\" />")); | |||
// infoContentHtmlEntity.setContent(content); | |||
infoContentHtmlEntity.setContentText(document.text()); | |||
infoContentHtmlEntity.setInfoContId(((InfoContent) source).getId().toString()); | |||
infoContentHtmlEntity.setTitle(((InfoContent) source).getTitle()); | |||
mongoTemplate.save(infoContentHtmlEntity); | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,42 @@ | |||
package com.xdf.creative.module.mapper; | |||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.InfoContentKeywordQueryParam; | |||
import com.xdf.creative.base.vo.creative.InfoContentKeywordQueryVo; | |||
import com.xdf.creative.module.entity.InfoContentKeyword; | |||
import org.apache.ibatis.annotations.Param; | |||
import org.springframework.stereotype.Repository; | |||
import java.io.Serializable; | |||
/** | |||
* <p> | |||
* 信息和关键字关联表 Mapper 接口 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
@Repository | |||
public interface InfoContentKeywordMapper extends BaseMapper<InfoContentKeyword> { | |||
/** | |||
* 根据ID获取查询对象 | |||
* | |||
* @param id | |||
* @return | |||
*/ | |||
InfoContentKeywordQueryVo getInfoContentKeywordById(Serializable id); | |||
/** | |||
* 获取分页对象 | |||
* | |||
* @param page | |||
* @param infoContentKeywordQueryParam | |||
* @return | |||
*/ | |||
IPage<InfoContentKeywordQueryVo> getInfoContentKeywordPageList(@Param("page") Page page, @Param("param") InfoContentKeywordQueryParam infoContentKeywordQueryParam); | |||
} |
@@ -23,6 +23,10 @@ import java.util.List; | |||
@Repository | |||
public interface InfoContentMapper extends BaseMapper<InfoContent> { | |||
InfoContentQueryVo getUpInfoContent(@Param("param") InfoContentQueryParam infoContentQueryParam); | |||
InfoContentQueryVo getDownInfoContent(@Param("param") InfoContentQueryParam infoContentQueryParam); | |||
/** | |||
* 首页显示新闻 | |||
* | |||
@@ -32,6 +36,10 @@ public interface InfoContentMapper extends BaseMapper<InfoContent> { | |||
List<InfoContentHomePageQueryVo> getHomePageInfo(@Param("param") InfoContentHomePageQueryParam infoContentHomePageQueryParam); | |||
List<InfoContentWebSearchQueryVo> getSearchParkRecommendWebInfo(@Param("param") InfoContentWebSearchQueryParam infoContentWebSearchQueryParam); | |||
List<InfoContentHomePageQueryVo> getHomePagesInfo(InfoContentHomePageListParam infoContentHomePageListParam); | |||
@@ -0,0 +1,61 @@ | |||
package com.xdf.creative.module.mapper; | |||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.InfoKeywordQueryParam; | |||
import com.xdf.creative.base.vo.creative.InfoKeywordCheckListVo; | |||
import com.xdf.creative.base.vo.creative.InfoKeywordQueryVo; | |||
import com.xdf.creative.module.entity.InfoKeyword; | |||
import org.apache.ibatis.annotations.Param; | |||
import org.springframework.stereotype.Repository; | |||
import java.io.Serializable; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
* 信息关键字 Mapper 接口 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
@Repository | |||
public interface InfoKeywordMapper extends BaseMapper<InfoKeyword> { | |||
/** | |||
* 获取已经选择的关键词 | |||
* @param id 内容id | |||
* @return | |||
*/ | |||
List<InfoKeywordCheckListVo> getCheckList(Serializable id); | |||
/** | |||
* 根据内容id获取关键词列表 | |||
* @param id | |||
* @return | |||
*/ | |||
List<InfoKeywordCheckListVo> getKeywordListByContentId(Serializable id); | |||
/** | |||
* 根据ID获取查询对象 | |||
* | |||
* @param id | |||
* @return | |||
*/ | |||
InfoKeywordQueryVo getInfoKeywordById(Serializable id); | |||
/** | |||
* 获取分页对象 | |||
* | |||
* @param page | |||
* @param infoKeywordQueryParam | |||
* @return | |||
*/ | |||
IPage<InfoKeywordQueryVo> getInfoKeywordPageList(@Param("page") Page page, @Param("param") InfoKeywordQueryParam infoKeywordQueryParam); | |||
} |
@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.WebInitiationApplyQueryParam; | |||
import com.xdf.creative.base.vo.creative.WebInitiationApplyExportVo; | |||
import com.xdf.creative.base.vo.creative.WebInitiationApplyQueryVo; | |||
import com.xdf.creative.module.entity.WebInitiationApply; | |||
import org.apache.ibatis.annotations.Param; | |||
import org.springframework.stereotype.Repository; | |||
import java.io.Serializable; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
@@ -78,4 +80,7 @@ public interface WebInitiationApplyMapper extends BaseMapper<WebInitiationApply> | |||
*/ | |||
IPage<WebInitiationApplyQueryVo> getPageListByFinalAudit(@Param("page") Page page, @Param("param") WebInitiationApplyQueryParam webInitiationApplyQueryParam); | |||
List<WebInitiationApplyExportVo> getExportPageList(@Param("param") WebInitiationApplyQueryParam webInitiationApplyQueryParam); | |||
} |
@@ -0,0 +1,42 @@ | |||
package com.xdf.creative.module.mapper; | |||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.WxGroupQueryParam; | |||
import com.xdf.creative.base.vo.creative.WxGroupQueryVo; | |||
import com.xdf.creative.module.entity.WxGroup; | |||
import org.apache.ibatis.annotations.Param; | |||
import org.springframework.stereotype.Repository; | |||
import java.io.Serializable; | |||
/** | |||
* <p> | |||
* 微信群二维码 Mapper 接口 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2021-01-28 | |||
*/ | |||
@Repository | |||
public interface WxGroupMapper extends BaseMapper<WxGroup> { | |||
/** | |||
* 根据ID获取查询对象 | |||
* | |||
* @param id | |||
* @return | |||
*/ | |||
WxGroupQueryVo getWxGroupById(Serializable id); | |||
/** | |||
* 获取分页对象 | |||
* | |||
* @param page | |||
* @param wxGroupQueryParam | |||
* @return | |||
*/ | |||
IPage<WxGroupQueryVo> getWxGroupPageList(@Param("page") Page page, @Param("param") WxGroupQueryParam wxGroupQueryParam); | |||
} |
@@ -0,0 +1,37 @@ | |||
package com.xdf.creative.module.service; | |||
import com.xdf.creative.base.params.creative.InfoContentKeywordQueryParam; | |||
import com.xdf.creative.base.service.BaseService; | |||
import com.xdf.creative.base.vo.creative.InfoContentKeywordQueryVo; | |||
import com.xdf.creative.module.entity.InfoContentKeyword; | |||
import com.xdf.creative.util.page.PageTool; | |||
import java.io.Serializable; | |||
/** | |||
* <p> | |||
* 信息和关键字关联表 服务类 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
public interface InfoContentKeywordService extends BaseService<InfoContentKeyword> { | |||
/** | |||
* 根据ID获取查询对象 | |||
* | |||
* @param id | |||
* @return | |||
*/ | |||
InfoContentKeywordQueryVo getInfoContentKeywordById(Serializable id) throws Exception; | |||
/** | |||
* 获取分页对象 | |||
* | |||
* @param infoContentKeywordQueryParam | |||
* @return | |||
*/ | |||
PageTool<InfoContentKeywordQueryVo> getInfoContentKeywordPageList(InfoContentKeywordQueryParam infoContentKeywordQueryParam) throws Exception; | |||
} |
@@ -116,6 +116,15 @@ public interface InfoContentService extends BaseService<InfoContent> { | |||
PageTool<InfoContentWebSearchQueryVo> getSearchWebsInfo(InfoContentWebSearchListParam infoContentWebSearchListParam) throws Exception; | |||
/** | |||
* 园区推荐列表 | |||
* @param infoContentWebSearchQueryParam | |||
* @return | |||
* @throws Exception | |||
*/ | |||
List<InfoContentWebSearchQueryVo> getSearchParkRecommendWebInfo(InfoContentWebSearchQueryParam infoContentWebSearchQueryParam) throws Exception; | |||
/** | |||
* 手机端搜索新闻 | |||
* @param infoContentWebSearchQueryParam | |||
@@ -175,6 +184,9 @@ public interface InfoContentService extends BaseService<InfoContent> { | |||
*/ | |||
InfoContentQueryVo getInfoContentById(Serializable id) throws Exception; | |||
/** | |||
* 获取分页对象 | |||
* | |||
@@ -183,4 +195,12 @@ public interface InfoContentService extends BaseService<InfoContent> { | |||
*/ | |||
PageTool<InfoContentQueryVo> getInfoContentPageList(InfoContentQueryParam infoContentQueryParam) throws Exception; | |||
ApiResult getInfoHtml(String infoId); | |||
ApiResult getHtmlByInfo(); | |||
} |
@@ -0,0 +1,87 @@ | |||
package com.xdf.creative.module.service; | |||
import com.xdf.creative.base.params.creative.InfoKeywordAddParam; | |||
import com.xdf.creative.base.params.creative.InfoKeywordQueryParam; | |||
import com.xdf.creative.base.params.creative.InfoKeywordSaveCheckParam; | |||
import com.xdf.creative.base.service.BaseService; | |||
import com.xdf.creative.base.vo.creative.InfoKeywordCheckListVo; | |||
import com.xdf.creative.base.vo.creative.InfoKeywordQueryVo; | |||
import com.xdf.creative.module.entity.InfoKeyword; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import java.io.Serializable; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
* 信息关键字 服务类 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
public interface InfoKeywordService extends BaseService<InfoKeyword> { | |||
/** | |||
* 增加关键词 | |||
* @param infoKeywordAddParam | |||
* @return | |||
*/ | |||
ApiResult add(InfoKeywordAddParam infoKeywordAddParam); | |||
/** | |||
* 编辑关键词 | |||
* @param infoKeywordAddParam | |||
* @return | |||
*/ | |||
ApiResult edit(InfoKeywordAddParam infoKeywordAddParam); | |||
/** | |||
* 启用停用 | |||
* @param id | |||
* @return | |||
*/ | |||
ApiResult enable(Serializable id); | |||
/** | |||
* 删除 | |||
* @param id | |||
* @return | |||
*/ | |||
ApiResult del(Serializable id); | |||
/** | |||
* 获取已购选的list | |||
* @param contentId | |||
* @return | |||
*/ | |||
ApiResult getCheckList(Serializable contentId); | |||
/*** | |||
* 获取保存的list | |||
* @param infoKeywordSaveCheckParam | |||
* @return | |||
*/ | |||
ApiResult saveCheckList(InfoKeywordSaveCheckParam infoKeywordSaveCheckParam); | |||
List<InfoKeywordCheckListVo> getKeywordListByContentId(Serializable contentId); | |||
/** | |||
* 根据ID获取查询对象 | |||
* | |||
* @param id | |||
* @return | |||
*/ | |||
InfoKeywordQueryVo getInfoKeywordById(Serializable id) throws Exception; | |||
/** | |||
* 获取分页对象 | |||
* | |||
* @param infoKeywordQueryParam | |||
* @return | |||
*/ | |||
PageTool<InfoKeywordQueryVo> getInfoKeywordPageList(InfoKeywordQueryParam infoKeywordQueryParam) throws Exception; | |||
} |
@@ -7,6 +7,7 @@ import com.xdf.creative.module.entity.WebInitiationApply; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import javax.servlet.http.HttpServletRequest; | |||
import java.io.Serializable; | |||
/** | |||
@@ -81,4 +82,11 @@ public interface WebInitiationApplyService extends BaseService<WebInitiationAppl | |||
*/ | |||
ApiResult<Boolean> sendAudit(WebInitiationApply webInitiationApply); | |||
/** | |||
* @description: 导出 | |||
* @param: [] | |||
* @return: com.xdf.creative.util.page.ApiResult | |||
*/ | |||
ApiResult getExportPageList(WebInitiationApplyQueryParam webInitiationApplyQueryParam, HttpServletRequest request); | |||
} |
@@ -0,0 +1,45 @@ | |||
package com.xdf.creative.module.service; | |||
import com.xdf.creative.base.params.creative.WxGroupQueryParam; | |||
import com.xdf.creative.base.service.BaseService; | |||
import com.xdf.creative.base.vo.creative.WxGroupQueryVo; | |||
import com.xdf.creative.module.entity.WxGroup; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import java.io.Serializable; | |||
/** | |||
* <p> | |||
* 微信群二维码 服务类 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2021-01-28 | |||
*/ | |||
public interface WxGroupService extends BaseService<WxGroup> { | |||
/** | |||
* 启用停用 | |||
* @param id | |||
* @return | |||
*/ | |||
ApiResult enable(Serializable id); | |||
/** | |||
* 根据ID获取查询对象 | |||
* | |||
* @param id | |||
* @return | |||
*/ | |||
WxGroupQueryVo getWxGroupById(Serializable id) throws Exception; | |||
/** | |||
* 获取分页对象 | |||
* | |||
* @param wxGroupQueryParam | |||
* @return | |||
*/ | |||
PageTool<WxGroupQueryVo> getWxGroupPageList(WxGroupQueryParam wxGroupQueryParam) throws Exception; | |||
} |
@@ -0,0 +1,48 @@ | |||
package com.xdf.creative.module.service.impl; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.InfoContentKeywordQueryParam; | |||
import com.xdf.creative.base.service.impl.BaseServiceImpl; | |||
import com.xdf.creative.base.vo.creative.InfoContentKeywordQueryVo; | |||
import com.xdf.creative.module.entity.InfoContentKeyword; | |||
import com.xdf.creative.module.mapper.InfoContentKeywordMapper; | |||
import com.xdf.creative.module.service.InfoContentKeywordService; | |||
import com.xdf.creative.util.page.PageTool; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.io.Serializable; | |||
/** | |||
* <p> | |||
* 信息和关键字关联表 服务实现类 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
@Slf4j | |||
@Service | |||
@Transactional(rollbackFor = Exception.class) | |||
public class InfoContentKeywordServiceImpl extends BaseServiceImpl<InfoContentKeywordMapper, InfoContentKeyword> implements InfoContentKeywordService { | |||
@Autowired | |||
private InfoContentKeywordMapper infoContentKeywordMapper; | |||
@Override | |||
public InfoContentKeywordQueryVo getInfoContentKeywordById(Serializable id) throws Exception { | |||
return infoContentKeywordMapper.getInfoContentKeywordById(id); | |||
} | |||
@Override | |||
public PageTool<InfoContentKeywordQueryVo> getInfoContentKeywordPageList(InfoContentKeywordQueryParam infoContentKeywordQueryParam) throws Exception { | |||
Page page = setPageParam(infoContentKeywordQueryParam); | |||
IPage<InfoContentKeywordQueryVo> iPage = infoContentKeywordMapper.getInfoContentKeywordPageList(page, infoContentKeywordQueryParam); | |||
return new PageTool(iPage); | |||
} | |||
} |
@@ -3,24 +3,35 @@ package com.xdf.creative.module.service.impl; | |||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.InfoContentHtmlEntity; | |||
import com.xdf.creative.base.params.creative.*; | |||
import com.xdf.creative.base.service.impl.BaseServiceImpl; | |||
import com.xdf.creative.base.vo.creative.*; | |||
import com.xdf.creative.constant.CommonConstant; | |||
import com.xdf.creative.enums.*; | |||
import com.xdf.creative.module.entity.*; | |||
import com.xdf.creative.module.listener.InfoContentHtmlListenEven; | |||
import com.xdf.creative.module.mapper.InfoContentMapper; | |||
import com.xdf.creative.module.service.*; | |||
import com.xdf.creative.util.StringUtil; | |||
import com.xdf.creative.util.UUIDUtil; | |||
import com.xdf.creative.util.image.HtmlUtils; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.jsoup.nodes.Document; | |||
import org.springframework.beans.BeanUtils; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.context.ApplicationContext; | |||
import org.springframework.data.mongodb.core.MongoTemplate; | |||
import org.springframework.data.mongodb.core.query.Criteria; | |||
import org.springframework.data.mongodb.core.query.Query; | |||
import org.springframework.data.redis.core.RedisTemplate; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.io.Serializable; | |||
import java.time.Duration; | |||
import java.util.ArrayList; | |||
import java.util.Date; | |||
import java.util.List; | |||
@@ -55,6 +66,24 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
@Autowired | |||
private SysUserService sysUserService; | |||
@Autowired | |||
private InfoKeywordService infoKeywordService; | |||
@Autowired | |||
private InfoContentKeywordService infoContentKeywordService; | |||
@Autowired | |||
private MongoTemplate mongoTemplate; | |||
@Autowired | |||
private RedisTemplate redisTemplate; | |||
@Autowired | |||
private ApplicationContext applicationContext; | |||
/** | |||
* t添加信息内容 | |||
* @param infoContentAddQueryParam | |||
@@ -209,6 +238,32 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
infoContentWebAllQueryVo.setUrlList(infoUrlList); | |||
} | |||
} | |||
//获取关键字 | |||
List<InfoKeywordCheckListVo> infoKeywordCheckListVoList = infoKeywordService.getKeywordListByContentId(id); | |||
if(null!=infoKeywordCheckListVoList&&infoKeywordCheckListVoList.size()>0){ | |||
List<String> keyWords = infoKeywordCheckListVoList.stream().map(t->t.getKeyword()).distinct().collect(Collectors.toList()); | |||
if(null!=keyWords||keyWords.size()>0){ | |||
infoContentWebAllQueryVo.setKeyWord(keyWords.toString()); | |||
} | |||
} | |||
//上一篇下一篇 | |||
InfoContentQueryParam infoContentQueryParam =new InfoContentQueryParam(); | |||
infoContentQueryParam.setId(infoContent.getId()).setTypeId(infoType.getTypeId().substring(0,3)); | |||
InfoContentQueryVo infoContentQueryVoUp = baseMapper.getUpInfoContent(infoContentQueryParam); | |||
if(null!=infoContentQueryVoUp){ | |||
infoContentWebAllQueryVo.setUpTitle(infoContentQueryVoUp.getTitle()).setUpInfoId(infoContentQueryVoUp.getId()).setUpImageUrl(infoContentQueryVoUp.getImageUrl()).setUpHyperlink(infoContentQueryVoUp.getHyperlink()); | |||
} | |||
InfoContentQueryVo infoContentQueryVoDown = baseMapper.getDownInfoContent(infoContentQueryParam); | |||
if(null!=infoContentQueryVoDown){ | |||
infoContentWebAllQueryVo.setDownTitle(infoContentQueryVoDown.getTitle()).setDownInfoId(infoContentQueryVoDown.getId()).setDownImageUrl(infoContentQueryVoDown.getImageUrl()).setDownHyperlink(infoContentQueryVoDown.getHyperlink()); | |||
} | |||
return ApiResult.ok(infoContentWebAllQueryVo); | |||
} | |||
@@ -413,6 +468,27 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
infoContent.setFinalAuditTime(new Date()); | |||
infoContent.setFinalAuditUser(getUserId()); | |||
this.saveOrUpdate(infoContent); | |||
//添加关键词 | |||
List<InfoKeyword> infoKeywordList = infoKeywordService.list(new QueryWrapper<InfoKeyword>().eq("state",StateEnum.ENABLE.getKey()).eq("is_use",StateEnum.ENABLE.getKey())); | |||
List<InfoContentKeyword> infoContentKeywordList = new ArrayList<>(); | |||
infoContentKeywordService.remove(new QueryWrapper<InfoContentKeyword>().eq("content_id",infoContent.getId())); | |||
for (InfoKeyword infoKeyWord:infoKeywordList | |||
) { | |||
InfoContentKeyword infoContentKeyword = new InfoContentKeyword(); | |||
infoContentKeyword.setKeywordId(infoKeyWord.getId()).setContentId(infoContent.getId()).setCreateTime(new Date()); | |||
infoContentKeywordList.add(infoContentKeyword); | |||
} | |||
infoContentKeywordService.saveBatch(infoContentKeywordList); | |||
if(InfoAuditTypeEnum.INFO_STATE_TYPE_AUDIT_PASS.getCode().equals(infoContentAuditQueryParam.getAuditState())){ | |||
if(StateEnum.ENABLE.getKey().equals(infoContent.getContentType())){ | |||
applicationContext.publishEvent(new InfoContentHtmlListenEven(infoContent)); | |||
} | |||
} | |||
return ApiResult.ok(); | |||
} | |||
@@ -627,6 +703,21 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
return new PageTool(iPage); | |||
} | |||
@Override | |||
public List<InfoContentWebSearchQueryVo> getSearchParkRecommendWebInfo(InfoContentWebSearchQueryParam infoContentWebSearchQueryParam) throws Exception { | |||
List<InfoContentWebSearchQueryVo> list = new ArrayList<>(); | |||
if(!redisTemplate.hasKey(String.format(CommonConstant.XDF_CULTURE_PARK_INFO_CONTENT_RECOMMEND, CommonConstant.XDF_CULTURE_PARK_INFO_CONTENT_RECOMMEND_KEY))){ | |||
list = infoContentMapper.getSearchParkRecommendWebInfo(infoContentWebSearchQueryParam); | |||
redisTemplate.opsForValue().set(String.format(CommonConstant.XDF_CULTURE_PARK_INFO_CONTENT_RECOMMEND, CommonConstant.XDF_CULTURE_PARK_INFO_CONTENT_RECOMMEND_KEY),list, Duration.ofSeconds(72000)); | |||
}else{ | |||
Object o = redisTemplate.opsForValue().get(String.format(CommonConstant.XDF_CULTURE_PARK_INFO_CONTENT_RECOMMEND, CommonConstant.XDF_CULTURE_PARK_INFO_CONTENT_RECOMMEND_KEY)); | |||
list = (List<InfoContentWebSearchQueryVo>) o; | |||
} | |||
return list; | |||
} | |||
@Override | |||
public PageTool<InfoContentWebSearchQueryVo> getSearchWebsInfo(InfoContentWebSearchListParam infoContentWebSearchListParam) throws Exception { | |||
Page page = setPageParam(infoContentWebSearchListParam); | |||
@@ -724,4 +815,67 @@ public class InfoContentServiceImpl extends BaseServiceImpl<InfoContentMapper, I | |||
return new PageTool(iPage); | |||
} | |||
@Override | |||
public ApiResult getInfoHtml(String infoId) { | |||
if(StringUtil.isEmpty(infoId)){ | |||
return ApiResult.fail("新闻标识不能为空!"); | |||
} | |||
Criteria criteria = new Criteria(); | |||
//组织名称 | |||
criteria.and("infoContId").is(infoId); | |||
Query query = new Query(); | |||
query.addCriteria(criteria); | |||
InfoContentHtmlEntity infoContentHtmlEntity = mongoTemplate.findOne(query, InfoContentHtmlEntity.class); | |||
/* String content = infoContentHtmlEntity.getContent(); | |||
infoContentHtmlEntity.setContent(content.replaceAll("data-src=\"","src=\"http://img01.sogoucdn.com/net/a/04/link?appid=100520033&url=").replaceFirst("<head>","<head><meta name=\"referrer\" content=\"no-referrer\" />"));*/ | |||
return ApiResult.ok(infoContentHtmlEntity); | |||
} | |||
@Override | |||
@Transactional | |||
public ApiResult getHtmlByInfo() { | |||
List<InfoContent> infoContentList = this.list(new QueryWrapper<InfoContent>().eq("content_type",StateEnum.ENABLE.getKey()).eq("online_type",InfoOnlineStateEnum.PUBLIC_INFO_STATE_ONLINE.getCode()).ge("id",423)); | |||
int count = infoContentList.size(); | |||
int successCount = 0; | |||
for (InfoContent infoContent:infoContentList | |||
) { | |||
//取出超链接 | |||
Criteria criteria = new Criteria(); | |||
//组织名称 | |||
criteria.and("infoContId").is(infoContent.getId().toString()); | |||
Query query = new Query(); | |||
query.addCriteria(criteria); | |||
InfoContentHtmlEntity infoContentHtmlEntity = mongoTemplate.findOne(query, InfoContentHtmlEntity.class); | |||
if(null==infoContentHtmlEntity) { | |||
InfoDetail infoDetail = infoDetailService.getOne(new QueryWrapper<InfoDetail>().eq("foreign_id", infoContent.getForeignId())); | |||
if (null != infoDetail) { | |||
try{ | |||
String html = HtmlUtils.sendGetTwo(infoDetail.getHyperlink()); | |||
if (!StringUtil.isEmpty(html)) { | |||
Document document = HtmlUtils.getDocument(html); | |||
if (document.hasText()) { | |||
infoContentHtmlEntity = new InfoContentHtmlEntity(); | |||
String content =document.html(); | |||
infoContentHtmlEntity.setContent(content.replaceAll("data-src=\"","src=\"http://img01.sogoucdn.com/net/a/04/link?appid=100520033&url=").replaceFirst("<head>","<head><meta name=\"referrer\" content=\"no-referrer\" />")); | |||
infoContentHtmlEntity.setContentText(document.text()); | |||
infoContentHtmlEntity.setInfoContId(infoContent.getId().toString()); | |||
infoContentHtmlEntity.setTitle(infoContent.getTitle()); | |||
mongoTemplate.save(infoContentHtmlEntity); | |||
successCount++; | |||
} | |||
} | |||
}catch (Exception e){ | |||
log.error("错误id"+infoContent.getId()+"错误信息:"+e.getMessage()); | |||
} | |||
} | |||
} | |||
} | |||
return ApiResult.ok("总计"+count+"条,爬取"+successCount+"条!"); | |||
} | |||
} |
@@ -0,0 +1,202 @@ | |||
package com.xdf.creative.module.service.impl; | |||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.InfoKeywordAddParam; | |||
import com.xdf.creative.base.params.creative.InfoKeywordQueryParam; | |||
import com.xdf.creative.base.params.creative.InfoKeywordSaveCheckParam; | |||
import com.xdf.creative.base.service.impl.BaseServiceImpl; | |||
import com.xdf.creative.base.vo.creative.InfoKeywordCheckListVo; | |||
import com.xdf.creative.base.vo.creative.InfoKeywordQueryVo; | |||
import com.xdf.creative.constant.CommonConstant; | |||
import com.xdf.creative.enums.StateEnum; | |||
import com.xdf.creative.enums.StatusCode; | |||
import com.xdf.creative.module.entity.InfoContent; | |||
import com.xdf.creative.module.entity.InfoContentKeyword; | |||
import com.xdf.creative.module.entity.InfoKeyword; | |||
import com.xdf.creative.module.mapper.InfoKeywordMapper; | |||
import com.xdf.creative.module.service.InfoContentKeywordService; | |||
import com.xdf.creative.module.service.InfoContentService; | |||
import com.xdf.creative.module.service.InfoKeywordService; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.BeanUtils; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.io.Serializable; | |||
import java.util.ArrayList; | |||
import java.util.Date; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
* 信息关键字 服务实现类 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2020-11-27 | |||
*/ | |||
@Slf4j | |||
@Service | |||
@Transactional(rollbackFor = Exception.class) | |||
public class InfoKeywordServiceImpl extends BaseServiceImpl<InfoKeywordMapper, InfoKeyword> implements InfoKeywordService { | |||
@Autowired | |||
private InfoKeywordMapper infoKeywordMapper; | |||
@Autowired | |||
private InfoContentKeywordService infoContentKeywordService; | |||
@Autowired | |||
private InfoContentService infoContentService; | |||
/** | |||
* 添加关键词 | |||
* @param infoKeywordAddParam | |||
* @return | |||
*/ | |||
@Override | |||
public ApiResult add(InfoKeywordAddParam infoKeywordAddParam) { | |||
InfoKeyword infoKeyword = new InfoKeyword(); | |||
BeanUtils.copyProperties(infoKeywordAddParam, infoKeyword); | |||
infoKeyword.setId(null); | |||
infoKeyword.setCreateUser(getUserId()); | |||
infoKeyword.setState(StateEnum.ENABLE.getKey()); | |||
if (StateEnum.ENABLE.getKey().equals(infoKeyword.getIsUse())) { | |||
if (this.count(new QueryWrapper<InfoKeyword>().eq("state", StateEnum.ENABLE.getKey()).eq("is_use", StateEnum.ENABLE.getKey())) >= CommonConstant.KEY_WORD_MAX_SIZE) { | |||
return ApiResult.fail("常用关键字不能操作"+ CommonConstant.KEY_WORD_MAX_SIZE+"个"); | |||
} | |||
} | |||
this.saveOrUpdate(infoKeyword); | |||
return ApiResult.ok(); | |||
} | |||
/** | |||
* 编辑关键词 | |||
* @param infoKeywordAddParam | |||
* @return | |||
*/ | |||
@Override | |||
public ApiResult edit(InfoKeywordAddParam infoKeywordAddParam) { | |||
InfoKeyword infoKeyword = this.getById(infoKeywordAddParam.getId()); | |||
if (null == infoKeyword) { | |||
return ApiResult.error(StatusCode.FORM_SUBMIT_UPDATE_VERIFY); | |||
} | |||
if (StateEnum.ENABLE.getKey().equals(infoKeywordAddParam.getIsUse())) { | |||
if (this.count(new QueryWrapper<InfoKeyword>().eq("state", StateEnum.ENABLE.getKey()).eq("is_use", StateEnum.ENABLE.getKey())) >= CommonConstant.KEY_WORD_MAX_SIZE) { | |||
return ApiResult.fail("常用关键字不能操作"+ CommonConstant.KEY_WORD_MAX_SIZE+"个"); | |||
} | |||
} | |||
BeanUtils.copyProperties(infoKeywordAddParam, infoKeyword); | |||
this.saveOrUpdate(infoKeyword); | |||
return ApiResult.ok(); | |||
} | |||
/** | |||
* 启用停用关键词 | |||
* @param id | |||
* @return | |||
*/ | |||
@Override | |||
public ApiResult enable(Serializable id) { | |||
InfoKeyword infoKeyword = this.getById(id); | |||
if (null == infoKeyword) { | |||
return ApiResult.error(StatusCode.FORM_SUBMIT_UPDATE_VERIFY); | |||
} | |||
if (StateEnum.ENABLE.getKey().equals(infoKeyword.getState())) { | |||
infoKeyword.setState(StateEnum.DISABLE.getKey()); | |||
} else { | |||
infoKeyword.setState(StateEnum.ENABLE.getKey()); | |||
} | |||
this.saveOrUpdate(infoKeyword); | |||
return ApiResult.ok(); | |||
} | |||
/** | |||
* 删除关键字 | |||
* @param id | |||
* @return | |||
*/ | |||
@Override | |||
public ApiResult del(Serializable id) { | |||
InfoKeyword infoKeyword = this.getById(id); | |||
if(null==infoKeyword){ | |||
return ApiResult.error(StatusCode.FORM_SUBMIT_UPDATE_VERIFY); | |||
} | |||
if(StateEnum.ENABLE.getKey().equals(infoKeyword.getState())){ | |||
return ApiResult.fail("只能删除已停用的关键词!"); | |||
} | |||
if(infoContentKeywordService.count(new QueryWrapper<InfoContentKeyword>().eq("keyword_id",id))>0){ | |||
return ApiResult.fail("当前关键字已经被绑定,只能停用!"); | |||
} | |||
this.removeById(infoKeyword); | |||
return ApiResult.ok(); | |||
} | |||
/** | |||
* 获取已选择关键词列表 | |||
* @param contentId | |||
* @return | |||
*/ | |||
@Override | |||
public ApiResult getCheckList(Serializable contentId) { | |||
return ApiResult.ok(baseMapper.getCheckList(contentId)); | |||
} | |||
/** | |||
* 给新闻添加关键字 | |||
* @param infoKeywordSaveCheckParam | |||
* @return | |||
*/ | |||
@Override | |||
@Transactional | |||
public ApiResult saveCheckList(InfoKeywordSaveCheckParam infoKeywordSaveCheckParam) { | |||
List<Long> keyIds =infoKeywordSaveCheckParam.getKeyIds(); | |||
if(null==keyIds||keyIds.size()<=0){ | |||
return ApiResult.fail("请选择关键词!"); | |||
} | |||
InfoContent infoContent = infoContentService.getById(infoKeywordSaveCheckParam.getContentId()); | |||
if(null == infoContent){ | |||
return ApiResult.error(StatusCode.FORM_SUBMIT_UPDATE_VERIFY); | |||
} | |||
List<InfoContentKeyword> infoContentKeywordList = new ArrayList<>(); | |||
if(infoContentKeywordService.remove(new QueryWrapper<InfoContentKeyword>().eq("content_id",infoContent.getId()))){ | |||
for (Long keyId:keyIds | |||
) { | |||
InfoKeyword infoKeyword = this.getById(keyId); | |||
if(null!=infoKeyword&& StateEnum.ENABLE.getKey().equals(infoKeyword.getState())){ | |||
InfoContentKeyword infoContentKeyword = new InfoContentKeyword(); | |||
infoContentKeyword.setContentId(infoContent.getId()).setKeywordId(infoKeyword.getId()).setCreateTime(new Date()); | |||
infoContentKeywordList.add(infoContentKeyword); | |||
} | |||
} | |||
} | |||
infoContentKeywordService.saveBatch(infoContentKeywordList); | |||
return ApiResult.ok(); | |||
} | |||
@Override | |||
public List<InfoKeywordCheckListVo> getKeywordListByContentId(Serializable contentId) { | |||
return baseMapper.getKeywordListByContentId(contentId); | |||
} | |||
@Override | |||
public InfoKeywordQueryVo getInfoKeywordById(Serializable id) throws Exception { | |||
return infoKeywordMapper.getInfoKeywordById(id); | |||
} | |||
@Override | |||
public PageTool<InfoKeywordQueryVo> getInfoKeywordPageList(InfoKeywordQueryParam infoKeywordQueryParam) throws Exception { | |||
Page page = setPageParam(infoKeywordQueryParam); | |||
IPage<InfoKeywordQueryVo> iPage = infoKeywordMapper.getInfoKeywordPageList(page, infoKeywordQueryParam); | |||
return new PageTool(iPage); | |||
} | |||
} |
@@ -11,6 +11,7 @@ import com.xdf.creative.base.params.creative.*; | |||
import com.xdf.creative.base.service.impl.BaseServiceImpl; | |||
import com.xdf.creative.base.vo.creative.*; | |||
import com.xdf.creative.base.vo.tyrz.SysUserCurrentInfoVo; | |||
import com.xdf.creative.constant.CommonConstant; | |||
import com.xdf.creative.enums.*; | |||
import com.xdf.creative.module.entity.*; | |||
import com.xdf.creative.module.mapper.SysRegionMapper; | |||
@@ -38,6 +39,7 @@ import org.springframework.beans.BeanUtils; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.beans.factory.annotation.Value; | |||
import org.springframework.context.annotation.Lazy; | |||
import org.springframework.data.redis.core.RedisTemplate; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
@@ -93,6 +95,10 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser> | |||
@Autowired | |||
private SysRegionMapper sysRegionMapper; | |||
@Autowired | |||
private RedisTemplate redisTemplate; | |||
// @Value("${tyrz.app_id}") | |||
private String appId; | |||
@@ -121,9 +127,20 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser> | |||
public ApiResult login(LoginParam loginParam, HttpServletRequest request) throws Exception { | |||
// 校验验证码 | |||
// if (!CodeUtil.checkVerifyCode(request, loginParam.getVerifyCodeActual())) { | |||
// return ApiResult.fail("验证码错误"); | |||
// } | |||
if (StringUtil.isEmpty(loginParam.getVerifyCodeActual() )){ | |||
return ApiResult.fail("验证码不能为空!"); | |||
} | |||
String encrypt = PasswordUtil.encrypt(loginParam.getUsername()+loginParam.getType(), CommonConstant.VERIFY_CODE_KEY); | |||
String key = String.format(CommonConstant.VERIFY_CODE_GET, loginParam.getUsername(), encrypt); | |||
String cacheVerifyCode = (String) redisTemplate.opsForValue().get(key); | |||
if (!loginParam.getVerifyCodeActual().equalsIgnoreCase(cacheVerifyCode)) { | |||
return ApiResult.fail("验证码错误!"); | |||
} | |||
String userName = loginParam.getUsername(); | |||
SysUser sysUser = getSysUserByUserName(userName); | |||
if (sysUser == null) { |
@@ -2,9 +2,11 @@ package com.xdf.creative.module.service.impl; | |||
import com.alibaba.druid.util.StringUtils; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.api.R; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.WebInitiationApplyQueryParam; | |||
import com.xdf.creative.base.service.impl.BaseServiceImpl; | |||
import com.xdf.creative.base.vo.creative.WebInitiationApplyExportVo; | |||
import com.xdf.creative.base.vo.creative.WebInitiationApplyQueryVo; | |||
import com.xdf.creative.enums.InitiationApplryAduitStateEnum; | |||
import com.xdf.creative.enums.InitiationApplryAduitTypeEnum; | |||
@@ -12,15 +14,21 @@ import com.xdf.creative.enums.StatusCode; | |||
import com.xdf.creative.module.entity.WebInitiationApply; | |||
import com.xdf.creative.module.mapper.WebInitiationApplyMapper; | |||
import com.xdf.creative.module.service.WebInitiationApplyService; | |||
import com.xdf.creative.util.excel.ExportExcel; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.beans.factory.annotation.Value; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.io.Serializable; | |||
import javax.servlet.http.HttpServletRequest; | |||
import java.io.*; | |||
import java.util.Date; | |||
import java.util.HashMap; | |||
import java.util.List; | |||
import java.util.Map; | |||
/** | |||
@@ -39,6 +47,9 @@ public class WebInitiationApplyServiceImpl extends BaseServiceImpl<WebInitiation | |||
@Autowired | |||
private WebInitiationApplyMapper webInitiationApplyMapper; | |||
@Value("${upload_basePath}") | |||
private String basePath; | |||
@Override | |||
public WebInitiationApplyQueryVo getWebInitiationApplyById(Serializable id) throws Exception { | |||
return webInitiationApplyMapper.getWebInitiationApplyById(id); | |||
@@ -180,6 +191,44 @@ public class WebInitiationApplyServiceImpl extends BaseServiceImpl<WebInitiation | |||
} | |||
} | |||
; | |||
/** | |||
* @description: 导出excel | |||
* @param: [webInitiationApplyQueryParam] | |||
* @return: com.xdf.creative.util.page.ApiResult | |||
* @author 一路心飞扬 lgw | |||
* @date: 2021/3/1 14:57 | |||
*/ | |||
@Override | |||
public ApiResult getExportPageList(WebInitiationApplyQueryParam webInitiationApplyQueryParam, HttpServletRequest request) { | |||
List<WebInitiationApplyExportVo> list=baseMapper.getExportPageList(webInitiationApplyQueryParam); | |||
String[] headers = {"单位名称", "统一社会信用代码 ", "单位类型","省","市","区","详细地址","邮编","网址","法人姓名","法人职务","法人固定电话","法人手机号", "日常联系人姓名", "日常联系人职务", "日常联系电话", "日常联系人手机号", "法人简介", "单位介绍", "专利与荣誉", "金融服务", "产业合作", "企业服务", "其他服务", "行业类别", "申请成为哪级会员","LOGO","执照","申请附件"}; | |||
String fileName = "入会申请列表"; | |||
String excelDirPath = basePath+"/excel/"; | |||
File fileDir = new File(excelDirPath); | |||
if (!fileDir.isDirectory()) { | |||
fileDir.mkdirs(); | |||
} | |||
String excelPath = excelDirPath + fileName + ".xls";// UUIDGenerator.getUUID() | |||
File file = new File(excelPath); | |||
try { | |||
OutputStream out = new FileOutputStream(file); | |||
ExportExcel<WebInitiationApplyExportVo> excel = new ExportExcel<WebInitiationApplyExportVo>(); | |||
excel.exportExcel(fileName, headers, list, out); | |||
out.close(); | |||
Map<String, String> mapResult = new HashMap<String, String>(); | |||
mapResult.put("path", "/excel/" + fileName + ".xls"); | |||
mapResult.put("fileName", fileName + ".xls"); | |||
return ApiResult.ok(mapResult); | |||
} catch (FileNotFoundException e) { | |||
e.printStackTrace(); | |||
return ApiResult.fail("当前记录导出失败,文件创建异常"); | |||
} catch (IOException e) { | |||
e.printStackTrace(); | |||
return ApiResult.fail("当前记录导出失败,文件读写异常"); | |||
} | |||
} | |||
} |
@@ -0,0 +1,66 @@ | |||
package com.xdf.creative.module.service.impl; | |||
import com.baomidou.mybatisplus.core.metadata.IPage; | |||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.xdf.creative.base.params.creative.WxGroupQueryParam; | |||
import com.xdf.creative.base.service.impl.BaseServiceImpl; | |||
import com.xdf.creative.base.vo.creative.WxGroupQueryVo; | |||
import com.xdf.creative.enums.StateEnum; | |||
import com.xdf.creative.enums.StatusCode; | |||
import com.xdf.creative.module.entity.WxGroup; | |||
import com.xdf.creative.module.mapper.WxGroupMapper; | |||
import com.xdf.creative.module.service.WxGroupService; | |||
import com.xdf.creative.util.page.ApiResult; | |||
import com.xdf.creative.util.page.PageTool; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.io.Serializable; | |||
/** | |||
* <p> | |||
* 微信群二维码 服务实现类 | |||
* </p> | |||
* | |||
* @author lgw | |||
* @since 2021-01-28 | |||
*/ | |||
@Slf4j | |||
@Service | |||
@Transactional(rollbackFor = Exception.class) | |||
public class WxGroupServiceImpl extends BaseServiceImpl<WxGroupMapper, WxGroup> implements WxGroupService { | |||
@Autowired | |||
private WxGroupMapper wxGroupMapper; | |||
@Override | |||
public ApiResult enable(Serializable id) { | |||
WxGroup wxGroup = this.getById(id); | |||
if (null == wxGroup) { | |||
return ApiResult.error(StatusCode.FORM_SUBMIT_UPDATE_VERIFY); | |||
} | |||
if (StateEnum.ENABLE.getKey().equals(wxGroup.getState())) { | |||
wxGroup.setState(StateEnum.DISABLE.getKey()); | |||
} else { | |||
wxGroup.setState(StateEnum.ENABLE.getKey()); | |||
} | |||
this.saveOrUpdate(wxGroup); | |||
return ApiResult.ok(); | |||
} | |||
@Override | |||
public WxGroupQueryVo getWxGroupById(Serializable id) throws Exception { | |||
return wxGroupMapper.getWxGroupById(id); | |||
} | |||
@Override | |||
public PageTool<WxGroupQueryVo> getWxGroupPageList(WxGroupQueryParam wxGroupQueryParam) throws Exception { | |||
Page page = setPageParam(wxGroupQueryParam); | |||
IPage<WxGroupQueryVo> iPage = wxGroupMapper.getWxGroupPageList(page, wxGroupQueryParam); | |||
return new PageTool(iPage); | |||
} | |||
} |
@@ -87,7 +87,7 @@ public class ConfigPathInterceptor implements HandlerInterceptor { | |||
/** | |||
* 验证token | |||
* | |||
* 以前版本遗留问题,token处理方式不对 后期整改 | |||
* @param token | |||
* @return | |||
*/ | |||
@@ -96,9 +96,9 @@ public class ConfigPathInterceptor implements HandlerInterceptor { | |||
String requestUrl = request.getRequestURI(); | |||
ApiResult result = new ApiResult(); | |||
//token失效 先检查是否存在 不存在则直接令牌过去重新登录 | |||
OauthTokenQueryVo oauthTokenQueryVo= oauthTokenService.getOauthTokenByToken(token); | |||
if (JwtUtil.isExpired(token)) { | |||
//先查token是否存在 | |||
OauthTokenQueryVo oauthTokenQueryVo =oauthTokenService.getOauthTokenByToken(token); | |||
if(null==oauthTokenQueryVo){ | |||
log.error("令牌过期"); | |||
result.setCode(ApiCode.TOKEN_INVALID.getCode()); | |||
@@ -113,10 +113,10 @@ public class ConfigPathInterceptor implements HandlerInterceptor { | |||
result.setMsg(ApiCode.TOKEN_INVALID.getMsg()); | |||
getResponseResult(response, result); | |||
return false; | |||
}else{ | |||
}/*else{ | |||
return true; | |||
} | |||
}*/ | |||
// setJwtPropertiesBean(); | |||
// String oldToken = oauthTokenQueryVo.getAccessToken(); | |||
@@ -152,7 +152,6 @@ public class ConfigPathInterceptor implements HandlerInterceptor { | |||
return false; | |||
} | |||
//先查token是否存在 | |||
OauthTokenQueryVo oauthTokenQueryVo =oauthTokenService.getOauthTokenByToken(token); | |||
if(null==oauthTokenQueryVo){ | |||
log.error("该token未登录,非法访问!"); | |||
result.setCode(ApiCode.TOKEN_INVALID.getCode()); | |||
@@ -161,10 +160,13 @@ public class ConfigPathInterceptor implements HandlerInterceptor { | |||
return false; | |||
}else{ | |||
//更新更新时间 | |||
OauthToken oauthToken = new OauthToken(); | |||
BeanUtils.copyProperties(oauthTokenQueryVo,oauthToken); | |||
oauthToken.setUpdateTime(new Date()); | |||
oauthTokenService.saveOrUpdate(oauthToken); | |||
if (new Date().getTime() - oauthTokenQueryVo.getUpdateTime().getTime() > jwtProperties.getRefreshTokenCountdown() * 1000) { | |||
//更新更新时间 | |||
OauthToken oauthToken = new OauthToken(); | |||
BeanUtils.copyProperties(oauthTokenQueryVo, oauthToken); | |||
oauthToken.setUpdateTime(new Date()); | |||
oauthTokenService.saveOrUpdate(oauthToken); | |||
} | |||
} | |||
//根据用户名去数据库查询用户信息 | |||
SysUser user = null; |
@@ -34,6 +34,8 @@ public class LoginParam { | |||
private Long userId; | |||
private Integer type; | |||
} |
@@ -1,3 +1,4 @@ | |||
/* | |||
package com.xdf.creative.util.excel; | |||
import com.xdf.creative.util.page.ApiResult; | |||
@@ -13,10 +14,12 @@ import java.lang.reflect.Method; | |||
import java.text.SimpleDateFormat; | |||
import java.util.*; | |||
*/ | |||
/** | |||
* @author : lgw | |||
* @date : 14:15 2020/5/7 | |||
*/ | |||
*//* | |||
public class ExcelUtil { | |||
@@ -199,7 +202,7 @@ public class ExcelUtil { | |||
if (cell == null) { | |||
return ""; | |||
} | |||
switch (cell.getCellTypeEnum()) { | |||
switch (cell.getCellType()) { | |||
case STRING: | |||
return cell.getStringCellValue(); | |||
case NUMERIC: | |||
@@ -208,8 +211,12 @@ public class ExcelUtil { | |||
Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()); | |||
return sdf.format(date); | |||
} else { | |||
/* return String.format("%.2f", cell.getNumericCellValue());*/ | |||
/**String.valueOf(cell.getNumericCellValue());*/ | |||
*/ | |||
/* return String.format("%.2f", cell.getNumericCellValue());*//* | |||
*/ | |||
/**String.valueOf(cell.getNumericCellValue());*//* | |||
return String.valueOf(cell.getNumericCellValue()); | |||
} | |||
case BOOLEAN: | |||
@@ -231,3 +238,4 @@ public class ExcelUtil { | |||
} | |||
} | |||
*/ |
@@ -0,0 +1,195 @@ | |||
package com.xdf.creative.util.excel; | |||
import org.apache.poi.hssf.usermodel.*; | |||
import java.io.IOException; | |||
import java.io.OutputStream; | |||
import java.lang.reflect.Field; | |||
import java.lang.reflect.InvocationTargetException; | |||
import java.lang.reflect.Method; | |||
import java.text.SimpleDateFormat; | |||
import java.util.Collection; | |||
import java.util.Date; | |||
import java.util.Iterator; | |||
import java.util.regex.Matcher; | |||
import org.apache.poi.hssf.util.Region; | |||
import java.util.regex.Pattern; | |||
public class ExportExcel<T> { | |||
public void exportExcel(String title, String[] headers, | |||
Collection<T> dataset, OutputStream out) { | |||
doExportExcel(title, headers, dataset, out, "yyyy-MM-dd"); | |||
} | |||
public void exportExcel(String title, String[] headers, | |||
Collection<T> dataset, OutputStream out, String pattern) { | |||
doExportExcel(title, headers, dataset, out, pattern); | |||
} | |||
/** | |||
* 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上 | |||
* | |||
* @param title 表格标题名 | |||
* @param headers 表格属性列名数组 | |||
* @param dataset 需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。此方法支持的 | |||
* javabean属性的数据类型有基本数据类型及String,Date,byte[](图片数据) | |||
* @param out 与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中 | |||
* @param pattern 如果有时间数据,设定输出格式。默认为"yyy-MM-dd" | |||
*/ | |||
@SuppressWarnings("unchecked") | |||
public void doExportExcel(String title, String[] headers, | |||
Collection<T> dataset, OutputStream out, String pattern) { | |||
// 声明一个工作薄 | |||
HSSFWorkbook workbook = new HSSFWorkbook(); | |||
// 生成一个表格 | |||
HSSFSheet sheet = workbook.createSheet(title); | |||
// 设置表格默认列宽度为15个字节 | |||
sheet.setDefaultColumnWidth((short) 15); | |||
// 生成一个样式 | |||
HSSFCellStyle style = workbook.createCellStyle(); | |||
// 设置这些样式 | |||
// style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); | |||
style.setBorderBottom(HSSFCellStyle.BORDER_THIN); | |||
style.setBorderLeft(HSSFCellStyle.BORDER_THIN); | |||
style.setBorderRight(HSSFCellStyle.BORDER_THIN); | |||
style.setBorderTop(HSSFCellStyle.BORDER_THIN); | |||
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); | |||
// 生成一个字体 | |||
HSSFFont font = workbook.createFont(); | |||
font.setFontHeightInPoints((short) 10); | |||
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); | |||
// 把字体应用到当前的样式 | |||
style.setFont(font); | |||
// 生成并设置另一个样式 | |||
HSSFCellStyle style2 = workbook.createCellStyle(); | |||
// style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); | |||
style2.setBorderBottom(HSSFCellStyle.BORDER_THIN); | |||
style2.setBorderLeft(HSSFCellStyle.BORDER_THIN); | |||
style2.setBorderRight(HSSFCellStyle.BORDER_THIN); | |||
style2.setBorderTop(HSSFCellStyle.BORDER_THIN); | |||
style2.setAlignment(HSSFCellStyle.ALIGN_CENTER); | |||
style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); | |||
// 生成另一个字体 | |||
HSSFFont font2 = workbook.createFont(); | |||
font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); | |||
// 把字体应用到当前的样式 | |||
style2.setFont(font2); | |||
// 声明一个画图的顶级管理器 | |||
HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); | |||
// 定义注释的大小和位置,详见文档 | |||
HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0, | |||
0, 0, 0, (short) 4, 2, (short) 6, 5)); | |||
// 设置注释内容 | |||
comment.setString(new HSSFRichTextString("可以在POI中添加注释!")); | |||
// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容. | |||
comment.setAuthor("leno"); | |||
HSSFRow row1 = sheet.createRow(0); | |||
row1.setHeight((short) 400); | |||
HSSFCell cell1 = row1.createCell(0); | |||
// 定义单元格为字符串类型 | |||
//cell1.setCellType(HSSFCell.ENCODING_UTF_16); | |||
cell1.setCellValue(new HSSFRichTextString(title)); | |||
cell1.setCellStyle(style); | |||
sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) (headers.length - 1))); | |||
// 产生表格标题行 | |||
HSSFRow row = sheet.createRow(1); | |||
for (short i = 0; i < headers.length; i++) { | |||
HSSFCell cell = row.createCell(i); | |||
cell.setCellStyle(style); | |||
HSSFRichTextString text = new HSSFRichTextString(headers[i]); | |||
cell.setCellValue(text); | |||
} | |||
// 遍历集合数据,产生数据行 | |||
Iterator<T> it = dataset.iterator(); | |||
int index = 1; | |||
while (it.hasNext()) { | |||
index++; | |||
row = sheet.createRow(index); | |||
T t = (T) it.next(); | |||
// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值 | |||
Field[] fields = t.getClass().getDeclaredFields(); | |||
for (short i = 0; i < fields.length; i++) { | |||
HSSFCell cell = row.createCell(i); | |||
cell.setCellStyle(style2); | |||
Field field = fields[i]; | |||
String fieldName = field.getName(); | |||
String getMethodName = "get" | |||
+ fieldName.substring(0, 1).toUpperCase() | |||
+ fieldName.substring(1); | |||
try { | |||
Class tCls = t.getClass(); | |||
Method getMethod = tCls.getMethod(getMethodName, | |||
new Class[]{}); | |||
Object value = getMethod.invoke(t, new Object[]{}); | |||
// 判断值的类型后进行强制类型转换 | |||
String textValue = null; | |||
if (value instanceof Boolean) { | |||
boolean bValue = (Boolean) value; | |||
textValue = "男"; | |||
if (!bValue) { | |||
textValue = "女"; | |||
} | |||
} else if (value instanceof Date) { | |||
Date date = (Date) value; | |||
SimpleDateFormat sdf = new SimpleDateFormat(pattern); | |||
textValue = sdf.format(date); | |||
} else if (value instanceof byte[]) { | |||
row.setHeightInPoints(60); | |||
// 设置图片所在列宽度为80px,注意这里单位的一个换算 | |||
sheet.setColumnWidth(i, (short) (35.7 * 80)); | |||
// sheet.autoSizeColumn(i); | |||
byte[] bsValue = (byte[]) value; | |||
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, | |||
1023, 255, (short) 6, index, (short) 6, index); | |||
anchor.setAnchorType(2); | |||
patriarch.createPicture(anchor, workbook.addPicture( | |||
bsValue, HSSFWorkbook.PICTURE_TYPE_JPEG)); | |||
} else { | |||
// 其它数据类型都当作字符串简单处理 | |||
if (null != value) { | |||
textValue = value.toString(); | |||
} else { | |||
textValue = ""; | |||
} | |||
} | |||
// 如果不是图片数据,就利用正则表达式判断textValue是否全部由数字组成 | |||
if (textValue != null) { | |||
Pattern p = Pattern.compile("^//d+(//.//d+)?$"); | |||
Matcher matcher = p.matcher(textValue); | |||
if (matcher.matches()) { | |||
// 是数字当作double处理 | |||
cell.setCellValue(Double.parseDouble(textValue)); | |||
} else { | |||
HSSFRichTextString richString = new HSSFRichTextString( | |||
textValue); | |||
cell.setCellValue(richString); | |||
} | |||
} | |||
} catch (SecurityException e) { | |||
e.printStackTrace(); | |||
} catch (NoSuchMethodException e) { | |||
e.printStackTrace(); | |||
} catch (IllegalArgumentException e) { | |||
e.printStackTrace(); | |||
} catch (IllegalAccessException e) { | |||
e.printStackTrace(); | |||
} catch (InvocationTargetException e) { | |||
e.printStackTrace(); | |||
} finally { | |||
// 清理资源 | |||
} | |||
} | |||
} | |||
try { | |||
workbook.write(out); | |||
} catch (IOException e) { | |||
e.printStackTrace(); | |||
} | |||
} | |||
} |
@@ -26,7 +26,12 @@ public class ServerUploadDirUtil { | |||
case 109: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_ACTIVITY.getName(); | |||
break; | |||
case 113: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_APPLY.getName(); | |||
break; | |||
case 110: | |||
uploadDir =ServiceFileDirEnum.SERVICE_FILE_DIR_PUBLIC_QR.getName(); | |||
break; | |||
case 999: | |||
uploadDir = ServiceFileDirEnum.SERVICE_FILE_DIR_OTHER.getName(); | |||
break; |
@@ -0,0 +1,154 @@ | |||
package com.xdf.creative.util.image; | |||
/** | |||
* @author : lgw | |||
* @date : 15:23 2020/12/23 | |||
*/ | |||
import org.apache.http.HttpEntity; | |||
import org.apache.http.HttpStatus; | |||
import org.apache.http.client.ClientProtocolException; | |||
import org.apache.http.client.methods.CloseableHttpResponse; | |||
import org.apache.http.client.methods.HttpGet; | |||
import org.apache.http.client.utils.HttpClientUtils; | |||
import org.apache.http.impl.client.CloseableHttpClient; | |||
import org.apache.http.impl.client.HttpClients; | |||
import org.apache.http.util.EntityUtils; | |||
import org.jsoup.Jsoup; | |||
import org.jsoup.nodes.Document; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import java.io.BufferedReader; | |||
import java.io.IOException; | |||
import java.io.InputStreamReader; | |||
import java.net.URL; | |||
import java.net.URLConnection; | |||
import java.util.List; | |||
import java.util.Map; | |||
/** | |||
* @ClassName HtmlUtils | |||
* @Date 2020/12/23 15:23 | |||
* @Version 1.0 | |||
**/ | |||
public class HtmlUtils { | |||
private static Logger log = LoggerFactory.getLogger(HtmlUtils.class); | |||
public static String sendGetOne(String url) { | |||
String result = ""; | |||
BufferedReader in = null; | |||
try { | |||
String urlNameString = url; | |||
URL realUrl = new URL(urlNameString); | |||
// 打开和URL之间的连接 | |||
URLConnection connection = realUrl.openConnection(); | |||
// 设置通用的请求属性 | |||
connection.setRequestProperty("accept", "*/*"); | |||
connection.setRequestProperty("connection", "Keep-Alive"); | |||
connection.setRequestProperty("user-agent", | |||
"Mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.16 Safari/537.36"); | |||
// 建立实际的连接 | |||
connection.connect(); | |||
// 获取所有响应头字段 | |||
Map<String, List<String>> map = connection.getHeaderFields(); | |||
// 定义 BufferedReader输入流来读取URL的响应 | |||
in = new BufferedReader(new InputStreamReader( | |||
connection.getInputStream())); //这里如果出现乱码,请使用带编码的InputStreamReader构造方法,将需要的编码设置进去 | |||
String line; | |||
while ((line = in.readLine()) != null) { | |||
result += line; | |||
} | |||
} catch (Exception e) { | |||
log.error(url+"获取失败:"+e.getMessage()); | |||
e.printStackTrace(); | |||
} | |||
// 使用finally块来关闭输入流 | |||
finally { | |||
try { | |||
if (in != null) { | |||
in.close(); | |||
} | |||
} catch (Exception e2) { | |||
e2.printStackTrace(); | |||
} | |||
} | |||
return result; | |||
} | |||
public static String sendGetTwo(String url) { | |||
CloseableHttpClient httpClient = HttpClients.createDefault(); | |||
CloseableHttpResponse response = null; | |||
//2.创建get请求,相当于在浏览器地址栏输入 网址 | |||
HttpGet request = new HttpGet(url); | |||
String html = ""; | |||
request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.16 Safari/537.36"); | |||
try { | |||
//3.执行get请求,相当于在输入地址栏后敲回车键 | |||
response = httpClient.execute(request); | |||
//4.判断响应状态为200,进行处理 | |||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { | |||
//5.获取响应内容 | |||
HttpEntity httpEntity = response.getEntity(); | |||
html = EntityUtils.toString(httpEntity, "utf-8"); | |||
} else { | |||
//如果返回状态不是200,比如404(页面不存在)等,根据情况做处理,这里略 | |||
log.error(url+"获取失败返回状态不是200:"+EntityUtils.toString(response.getEntity(), "utf-8")); | |||
html =""; | |||
} | |||
} catch (ClientProtocolException e) { | |||
log.error(url+"获取失败:"+e.getMessage()); | |||
e.printStackTrace(); | |||
} catch (IOException e) { | |||
log.error(url+"获取失败:"+e.getMessage()); | |||
e.printStackTrace(); | |||
} finally { | |||
//6.关闭 | |||
HttpClientUtils.closeQuietly(response); | |||
HttpClientUtils.closeQuietly(httpClient); | |||
} | |||
return html; | |||
} | |||
public static Document getDocument(String html) { | |||
//获取的数据,存放在到Bid的对象中,自己可以重新建立一个对象存储 | |||
return Jsoup.parse(html); | |||
} | |||
public static String getData(String html) { | |||
//获取的数据,存放在到Bid的对象中,自己可以重新建立一个对象存储 | |||
Document document = Jsoup.parse(html); | |||
if (document.hasText()) { | |||
return document.text(); | |||
} else { | |||
return ""; | |||
} | |||
} | |||
/* | |||
//像js一样,通过标签获取title | |||
System.out.println(document.getElementsByTag("title").first()); | |||
//像js一样,通过id 获取文章列表元素对象 | |||
Element postList = document.getElementById("post_list"); | |||
Elements postItems = postList.getElementsByClass("post_item"); | |||
for (Element postItem : postItems) { | |||
//像jquery选择器一样,获取文章标题元素 | |||
Elements titleEle = postItem.select(".post_item_body a[class='titlelnk']"); | |||
System.out.println("文章标题:" + titleEle.text()); | |||
; | |||
System.out.println("文章地址:" + titleEle.attr("href")); | |||
Elements footEle = postItem.select(".post_item_foot a[class='lightblue']"); | |||
System.out.println("文章作者:" + footEle.text()); | |||
; | |||
System.out.println("作者主页:" + footEle.attr("href")); | |||
System.out.println("*********************************"); | |||
}*/ | |||
public static void main(String args[]) { | |||
String url = "https://mp.weixin.4b4591f203f&token=738234688&lang=zh_CN#rd"; | |||
String html = sendGetTwo(url); | |||
System.out.println(getData(html)); | |||
} | |||
} |
@@ -6,6 +6,7 @@ auth_skip_urls=\ | |||
/upload/findRandomId,\ | |||
/upload/doPictureFile,\ | |||
/upload/uploadByDecoder,\ | |||
/upload/doApplyFile,\ | |||
/sysRegion/getRegionList,\ | |||
/user/login,\ | |||
/infoContent/getHomePageInfo,\ | |||
@@ -35,7 +36,13 @@ auth_skip_urls=\ | |||
/index,\ | |||
/loginHome,\ | |||
/webInitiationApply/add,\ | |||
/webInitiationApply/info | |||
/webInitiationApply/info,\ | |||
/infoContent/getSearchParkRecommendWebInfo,\ | |||
/infoContent/getInfoHtml,\ | |||
/infoContent/getHtmlByInfo,\ | |||
/wxGroup/getWebList,\ | |||
/webInitiationApply/getExportPageList | |||
upload_basePath:@upload_basePath@ | |||
wx_basePath=wx/ | |||
@@ -34,6 +34,13 @@ spring: | |||
charset: UTF-8 | |||
location: classpath:banner.txt | |||
data: | |||
mongodb: | |||
host: 47.101.71.64 | |||
port: 27018 | |||
database: companyInfo | |||
username: dbSpider | |||
password: f0fb3d94c2a1338d | |||
datasource: | |||
driver-class-name: com.mysql.jdbc.Driver | |||
@@ -78,8 +85,8 @@ spring: | |||
servlet: | |||
multipart: | |||
enabled: true | |||
max-file-size: 5MB | |||
max-request-size: 2MB | |||
max-file-size: 6MB | |||
max-request-size: 6MB | |||
mail: | |||
host: smtp.aliyun.com | |||
@@ -99,6 +106,20 @@ spring: | |||
fallback: false | |||
port: 465 | |||
redis: | |||
database: 0 | |||
host: @redis_host@ | |||
password: @redis_pass@ | |||
port: @redis_port@ | |||
timeout: 10s | |||
lettuce: | |||
pool: | |||
max-active: 200 | |||
max-idle: 8 | |||
max-wait: 10s | |||
min-idle: 2 | |||
shutdown-timeout: 3s | |||
############################ JWT start ############################# | |||
spring-boot-plus: | |||
jwt: | |||
@@ -115,7 +136,7 @@ spring-boot-plus: | |||
# 是否刷新token | |||
refresh-token: true | |||
# 刷新token的时间间隔,默认10分钟,单位:秒 | |||
refresh-token-countdown: 3600 | |||
refresh-token-countdown: 1200 | |||
# redis校验jwt token是否存在,可选 | |||
redis-check: true | |||
# true: 同一个账号只能是最后一次登陆token有效,false:同一个账号可多次登陆 |
@@ -0,0 +1,46 @@ | |||
<?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.xdf.creative.module.mapper.InfoContentKeywordMapper"> | |||
<!-- 通用查询结果列 --> | |||
<sql id="Base_Column_List"> | |||
id, content_id, keyword_id, create_time | |||
</sql> | |||
<sql id="Base_If_Condition"> | |||
<where> | |||
<if test="param.id !=null and param.id!=''"> | |||
and id=#{param.id} | |||
</if> | |||
<if test="param.contentId !=null and param.contentId!=''"> | |||
and content_id=#{param.contentId} | |||
</if> | |||
<if test="param.keywordId !=null and param.keywordId!=''"> | |||
and keyword_id=#{param.keywordId} | |||
</if> | |||
<if test="param.createTime !=null and param.createTime!=''"> | |||
and create_time=#{param.createTime} | |||
</if> | |||
</where> | |||
</sql> | |||
<!--根据ID查询--> | |||
<select id="getInfoContentKeywordById" resultType="com.xdf.creative.base.vo.creative.InfoContentKeywordQueryVo"> | |||
select | |||
<include refid="Base_Column_List"/> | |||
from inf_content_keyword where id = #{id} | |||
</select> | |||
<!--分页查询--> | |||
<select id="getInfoContentKeywordPageList" | |||
resultType="com.xdf.creative.base.vo.creative.InfoContentKeywordQueryVo" | |||
parameterType="com.xdf.creative.base.params.creative.InfoContentKeywordQueryParam"> | |||
select | |||
<include refid="Base_Column_List"/> | |||
from inf_content_keyword | |||
<include refid="Base_If_Condition"/> | |||
</select> | |||
</mapper> |
@@ -156,6 +156,49 @@ | |||
</select> | |||
<select id="getSearchParkRecommendWebInfo" | |||
resultType="com.xdf.creative.base.vo.creative.InfoContentWebSearchQueryVo" | |||
parameterType="com.xdf.creative.base.params.creative.InfoContentWebSearchQueryParam"> | |||
select | |||
a.id,a.title,a.final_audit_time,a.image_url,a.sort,a.istop,a.istop_time,b.type_id,b.info_name,c.digest,c.hyperlink,a.content_type | |||
from info_content a left join info_detail c on a.foreign_id = c.foreign_id left join info_type b on | |||
a.info_type_id =b.id where | |||
a.deleted=0 and a.online_type=1 and a.state = 3 | |||
<if test="param.typeId !=null and param.typeId!=''"> | |||
and b.type_id like CONCAT('',#{param.typeId},'%') | |||
</if> | |||
<if test="param.title !=null and param.title!=''"> | |||
and a.title like CONCAT('%',#{param.title},'%') | |||
</if> | |||
union select | |||
a.id,a.title,a.final_audit_time,a.image_url,a.sort,a.istop,a.istop_time,b.type_id,b.info_name,c.digest,c.hyperlink,a.content_type | |||
from info_content a left join info_detail c on a.foreign_id = c.foreign_id left join info_type b on | |||
a.info_type_id =b.id where | |||
a.deleted=0 and a.online_type=1 and a.state = 3 | |||
<if test="param.typeId !=null and param.typeId!=''"> | |||
and b.type_id like CONCAT('',#{param.typeId},'%') | |||
</if> | |||
<if test="param.title !=null and param.title!=''"> | |||
and c.digest like CONCAT('%',#{param.title},'%') | |||
</if> | |||
union select | |||
a.id,a.title,a.final_audit_time,a.image_url,a.sort,a.istop,a.istop_time,b.type_id,b.info_name,c.digest,c.hyperlink,a.content_type | |||
from info_content a left join info_detail c on a.foreign_id = c.foreign_id left join info_type b on | |||
a.info_type_id =b.id where | |||
a.deleted=0 and a.online_type=1 and a.state = 3 | |||
<if test="param.typeId !=null and param.typeId!=''"> | |||
and b.type_id like CONCAT('',#{param.typeId},'%') | |||
</if> | |||
<if test="param.title !=null and param.title!=''"> | |||
and c.content like CONCAT('%',#{param.title},'%') | |||
</if> | |||
ORDER BY id desc | |||
limit 30 | |||
</select> | |||
@@ -366,6 +409,19 @@ | |||
</select> | |||
<!--上一篇--> | |||
<select id="getUpInfoContent" | |||
parameterType="com.xdf.creative.base.params.creative.InfoContentQueryParam" | |||
resultType="com.xdf.creative.base.vo.creative.InfoContentQueryVo"> | |||
select a.id,a.title,a.image_url,c.hyperlink from info_content a left join info_type b on a.info_type_id = b.id left join info_detail c on a.foreign_id = c.foreign_id where a.id < #{param.id} and b.type_id like CONCAT('',#{param.typeId},'%') and a.online_type=1 ORDER BY a.id desc limit 1 | |||
</select> | |||
<select id="getDownInfoContent" | |||
parameterType="com.xdf.creative.base.params.creative.InfoContentQueryParam" | |||
resultType="com.xdf.creative.base.vo.creative.InfoContentQueryVo"> | |||
select a.id,a.title,a.image_url,c.hyperlink from info_content a left join info_type b on a.info_type_id = b.id left join info_detail c on a.foreign_id = c.foreign_id where a.id > #{param.id} and b.type_id like CONCAT('',#{param.typeId},'%') and a.online_type=1 ORDER BY a.id limit 1 | |||
</select> | |||
@@ -0,0 +1,67 @@ | |||
<?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.xdf.creative.module.mapper.InfoKeywordMapper"> | |||
<!-- 通用查询结果列 --> | |||
<sql id="Base_Column_List"> | |||
id, keyword, is_use, detail, state, create_user, create_time | |||
</sql> | |||
<sql id="Base_If_Condition"> | |||
<where> | |||
<if test="param.id !=null and param.id!=''"> | |||
and id=#{param.id} | |||
</if> | |||
<if test="param.keyword !=null and param.keyword!=''"> | |||
and keyword=#{param.keyword} | |||
</if> | |||
<if test="param.isUse !=null and param.isUse!=''"> | |||
and is_use=#{param.isUse} | |||
</if> | |||
<if test="param.detail !=null and param.detail!=''"> | |||
and detail=#{param.detail} | |||
</if> | |||
<if test="param.state !=null and param.state!=''"> | |||
and state=#{param.state} | |||
</if> | |||
<if test="param.createUser !=null and param.createUser!=''"> | |||
and create_user=#{param.createUser} | |||
</if> | |||
<if test="param.createTime !=null and param.createTime!=''"> | |||
and create_time=#{param.createTime} | |||
</if> | |||
</where> | |||
</sql> | |||
<!--获取选择的词库--> | |||
<select id="getCheckList" resultType="com.xdf.creative.base.vo.creative.InfoKeywordCheckListVo"> | |||
select a.id,a.keyword,a.is_use,a.state,case when b.content_id is null then 'false' else 'true' end as checked from info_keyword a left join (select * from info_content_keyword where content_id = #{id})b on a.id = b.keyword_id where a.state =1 | |||
</select> | |||
<select id="getKeywordListByContentId" resultType="com.xdf.creative.base.vo.creative.InfoKeywordCheckListVo"> | |||
select a.id,a.keyword,a.is_use,a.state from info_keyword a left join info_content_keyword b on a.id = b.keyword_id where a.state =1 and b.content_id = #{id} order by a.create_time desc | |||
</select> | |||
<!--根据ID查询--> | |||
<select id="getInfoKeywordById" resultType="com.xdf.creative.base.vo.creative.InfoKeywordQueryVo"> | |||
select | |||
<include refid="Base_Column_List"/> | |||
from info_keyword where id = #{id} | |||
</select> | |||
<!--分页查询--> | |||
<select id="getInfoKeywordPageList" | |||
resultType="com.xdf.creative.base.vo.creative.InfoKeywordQueryVo" | |||
parameterType="com.xdf.creative.base.params.creative.InfoKeywordQueryParam"> | |||
select | |||
<include refid="Base_Column_List"/> | |||
from info_keyword | |||
<include refid="Base_If_Condition"/> | |||
</select> | |||
</mapper> |
@@ -15,7 +15,7 @@ | |||
${alias}.credit_audit_cause, | |||
${alias}.credit_audit_time, ${alias}.credit_audit_user_id, ${alias}.final_audit, ${alias}.final_audit_cause, | |||
${alias}.final_audit_time, ${alias}.finance_service, ${alias}.industry, ${alias}.company_service, ${alias}.other_service, | |||
${alias}.final_audit_user_id, ${alias}.create_time, ${alias}.update_time | |||
${alias}.final_audit_user_id, ${alias}.create_time, ${alias}.update_time, ${alias}.credit_code,${alias}.apply_attachment | |||
</sql> | |||
<sql id="Base_Column_Sys_UserName"> | |||
@@ -280,4 +280,39 @@ | |||
order by credit_audit_time desc | |||
</select> | |||
<!--导出申请excel列表--> | |||
<select id="getExportPageList" | |||
resultType="com.xdf.creative.base.vo.creative.WebInitiationApplyExportVo" | |||
parameterType="com.xdf.creative.base.params.creative.WebInitiationApplyQueryParam"> | |||
SELECT a.name,a.credit_code, case when a.unit_type =1 then '国营企业' when a.unit_type =2 then '事业单位' when a.unit_type =3 then '民营企业' when a.unit_type =4 then '社会组织' end as unit_type_str,b.region_name as province_str,c.region_name as city_str,d.region_name as county_str,a.contact_address,a.post,a.website,a.legal_person,a.legal_duty,a.legal_phone,a.legal_mobile,a.link_man,a.link_duty,a.link_phone,a.link_mobile,a.legal_introduction,a.introduction,a.honner, | |||
case when a.finance_service =1 then '股权' when a.finance_service =2 then '债权' when a.finance_service =3 then '担保' when a.finance_service =4 then '其他' end as finance_service_str,case when a.industry=1 then '对接上下游企业资源' when a.industry=2 then '展会参展' when a.industry=3 then '园区入驻' end as industry_str,case when a.company_service=1 then '扶持资金' when a.company_service=2 then '信用评级' when a.company_service=3 then '知产与版权交易' when a.company_service=4 then '财务与法律咨询' when a.company_service=5 then '投融资对接' end as company_service_str,a.other_service, case when a.declare_category =1 then '媒体业' when a.declare_category =2 then '艺术业' when a.declare_category =3 then '工业设计业' when a.declare_category =4 then '建筑设计业' | |||
when a.declare_category =5 then '时尚设计业' when a.declare_category =6 then '互联网和相关服务业' when a.declare_category =7 then '软件与信息技术服务业' when a.declare_category =8 then '咨询服务业' | |||
when a.declare_category =9 then '广告及会展服务业' when a.declare_category =10 then '休闲娱乐服务业' when a.declare_category =11 then '文化装备制造业' when a.declare_category =12 then '文化创意投资运营' | |||
when a.declare_category =13 then '文化创意用品生产' end as declare_category_str, | |||
case when a.vip_level=1 then '普通会员' when a.vip_level=2 then '理事单位' when a.vip_level=3 then '副会长单位' end | |||
as vip_level_str,CONCAT("http://xdfdata.com/static/image/dfzx_wch/",logo) as logo,CONCAT("http://xdfdata.com/static/image/dfzx_wch/",attachment) as attachment,CONCAT("http://xdfdata.com/static/image/dfzx_wch/",apply_attachment) as applyAttachment FROM `web_initiation_apply` a left join sys_region b on a.province = b.id left join sys_region c on a.city = c.id left join sys_region d on a.county = d.id | |||
<where> | |||
<if test="param.id !=null"> | |||
and a.id=#{param.id} | |||
</if> | |||
<if test="param.name !=null and param.name!=''"> | |||
and a.name like CONCAT('%',#{param.name},'%') | |||
</if> | |||
<if test="param.firstAudit !=null"> | |||
and a.first_audit=#{param.firstAudit} | |||
</if> | |||
<if test="param.startFirstAuditTime !=null and param.endFirstAuditTime !=null "> | |||
and a.first_audit_time >= #{param.startFirstAuditTime} and a.first_audit_time <= | |||
#{param.endFirstAuditTime} | |||
</if> | |||
<if test="param.startCreateTime !=null and param.endCreateTime !=null "> | |||
and a.create_time >= #{param.startCreateTime} and a.create_time <= | |||
#{param.endCreateTime} | |||
</if> | |||
</where> | |||
</select> | |||
</mapper> |
@@ -0,0 +1,56 @@ | |||
<?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.xdf.creative.module.mapper.WxGroupMapper"> | |||
<!-- 通用查询结果列 --> | |||
<sql id="Base_Column_List"> | |||
id, name, code, create_time, update_time,state, create_user_id | |||
</sql> | |||
<sql id="Base_If_Condition"> | |||
<where> | |||
<if test="param.id !=null and param.id!=''"> | |||
and id=#{param.id} | |||
</if> | |||
<if test="param.name !=null and param.name!=''"> | |||
and name like CONCAT('%',#{param.name},'%') | |||
</if> | |||
<if test="param.code !=null and param.code!=''"> | |||
and code=#{param.code} | |||
</if> | |||
<if test="param.state !=null"> | |||
and state=#{param.state} | |||
</if> | |||
<if test="param.createTime !=null and param.createTime!=''"> | |||
and create_time=#{param.createTime} | |||
</if> | |||
<if test="param.updateTime !=null and param.updateTime!=''"> | |||
and update_time=#{param.updateTime} | |||
</if> | |||
<if test="param.createUserId !=null and param.createUserId!=''"> | |||
and create_user_id=#{param.createUserId} | |||
</if> | |||
</where> | |||
</sql> | |||
<!--根据ID查询--> | |||
<select id="getWxGroupById" resultType="com.xdf.creative.base.vo.creative.WxGroupQueryVo"> | |||
select | |||
<include refid="Base_Column_List"/> | |||
from wx_group where id = #{id} | |||
</select> | |||
<!--分页查询--> | |||
<select id="getWxGroupPageList" | |||
resultType="com.xdf.creative.base.vo.creative.WxGroupQueryVo" | |||
parameterType="com.xdf.creative.base.params.creative.WxGroupQueryParam"> | |||
select | |||
<include refid="Base_Column_List"/> | |||
from wx_group | |||
<include refid="Base_If_Condition"/> | |||
</select> | |||
</mapper> |