| @@ -9,7 +9,6 @@ | |||||
| <factory-entry name="1068-yexiu-read-model-mybatis" /> | <factory-entry name="1068-yexiu-read-model-mybatis" /> | ||||
| <factory-entry name="Entities" /> | <factory-entry name="Entities" /> | ||||
| </datasource-mapping> | </datasource-mapping> | ||||
| <naming-strategy-map /> | |||||
| </configuration> | </configuration> | ||||
| </facet> | </facet> | ||||
| <facet type="Spring" name="Spring"> | <facet type="Spring" name="Spring"> | ||||
| @@ -8,4 +8,21 @@ import org.springframework.stereotype.Component; | |||||
| @Component("ArticlePreviewContentDao") | @Component("ArticlePreviewContentDao") | ||||
| public interface ArticlePreviewContentDao extends BaseCommonDAO_HI<ArticlePreviewContentEntity> { | public interface ArticlePreviewContentDao extends BaseCommonDAO_HI<ArticlePreviewContentEntity> { | ||||
| /** | |||||
| * 根据文章任务id查询文章正文 | |||||
| * | |||||
| * @param articlePreviewId 文章任务id | |||||
| * @return | |||||
| */ | |||||
| @Select("select preview_content_id,article_preview_id,article_content from yxh_article_preview_content where " + | |||||
| "article_preview_id = " + | |||||
| "#{articlePreviewId," + | |||||
| "jdbcType=BIGINT}") | |||||
| ArticlePreviewContentEntity selectByArticlePreviewId(Long articlePreviewId); | |||||
| @Select("update yxh_article_preview_content set article_content = #{articleContent,jdbcType=VARCHAR} where " + | |||||
| "article_preview_id = " + | |||||
| "#{articlePreviewId," + | |||||
| "jdbcType=BIGINT}") | |||||
| int updateByArticlePreviewId(String articleContent, Long articlePreviewId); | |||||
| } | } | ||||
| @@ -25,4 +25,6 @@ public class ArticlePreviewContentEntity extends BaseEntity<ArticlePreviewConten | |||||
| private String articleContent; | private String articleContent; | ||||
| @ApiModelProperty(value = "租户id") | @ApiModelProperty(value = "租户id") | ||||
| private Long tenantId; | private Long tenantId; | ||||
| @ApiModelProperty(value = "版本号") | |||||
| private Long versionNum; | |||||
| } | } | ||||
| @@ -14,11 +14,11 @@ import java.io.Serializable; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| @Data | @Data | ||||
| @TableName("yx_article_preview") | |||||
| @TableName("yxh_article_preview") | |||||
| @GeneratedKeyValue | @GeneratedKeyValue | ||||
| @ApiModel(value = "文章预览表") | @ApiModel(value = "文章预览表") | ||||
| public class ArticlePreviewEntity extends BaseEntity<ArticlePreviewEntity> implements Serializable{ | public class ArticlePreviewEntity extends BaseEntity<ArticlePreviewEntity> implements Serializable{ | ||||
| @TableId(value = "cost_unit_id", type = IdType.ASSIGN_ID) | |||||
| @TableId(value = "article_preview_id", type = IdType.ASSIGN_ID) | |||||
| @ApiModelProperty(value = "文章预览id") | @ApiModelProperty(value = "文章预览id") | ||||
| private Long articlePreviewId; | private Long articlePreviewId; | ||||
| @ApiModelProperty(value = "文章任务id") | @ApiModelProperty(value = "文章任务id") | ||||
| @@ -36,15 +36,15 @@ public class ArticlePreviewEntity extends BaseEntity<ArticlePreviewEntity> imple | |||||
| @ApiModelProperty(value = "转发限制:1过期可推,2过期不可推") | @ApiModelProperty(value = "转发限制:1过期可推,2过期不可推") | ||||
| private Integer shareType; | private Integer shareType; | ||||
| @ApiModelProperty(value = "建议文案1") | @ApiModelProperty(value = "建议文案1") | ||||
| private String copyWrite1; | |||||
| private String copywrite1; | |||||
| @ApiModelProperty(value = "建议文案2") | @ApiModelProperty(value = "建议文案2") | ||||
| private String copyWrite2; | |||||
| private String copywrite2; | |||||
| @ApiModelProperty(value = "建议文案3") | @ApiModelProperty(value = "建议文案3") | ||||
| private String copyWrite3; | |||||
| private String copywrite3; | |||||
| @ApiModelProperty(value = "建议文案4") | @ApiModelProperty(value = "建议文案4") | ||||
| private String copyWrite4; | |||||
| private String copywrite4; | |||||
| @ApiModelProperty(value = "建议文案5") | @ApiModelProperty(value = "建议文案5") | ||||
| private String copyWrite5; | |||||
| private String copywrite5; | |||||
| @ApiModelProperty(value = "分享摘要") | @ApiModelProperty(value = "分享摘要") | ||||
| private String shareTitle; | private String shareTitle; | ||||
| @ApiModelProperty(value = "分享小图") | @ApiModelProperty(value = "分享小图") | ||||
| @@ -85,4 +85,6 @@ public class ArticlePreviewEntity extends BaseEntity<ArticlePreviewEntity> imple | |||||
| private String codeImg; | private String codeImg; | ||||
| @ApiModelProperty(value = "租户id") | @ApiModelProperty(value = "租户id") | ||||
| private Long tenantId; | private Long tenantId; | ||||
| @ApiModelProperty(value = "版本号") | |||||
| private Long versionNum; | |||||
| } | } | ||||
| @@ -35,4 +35,6 @@ public class ArticlePreviewProjectEntity extends BaseEntity<ArticlePreviewProjec | |||||
| private String projectArea; | private String projectArea; | ||||
| @ApiModelProperty(value = "租户id") | @ApiModelProperty(value = "租户id") | ||||
| private Long tenantId; | private Long tenantId; | ||||
| @ApiModelProperty(value = "版本号") | |||||
| private Long versionNum; | |||||
| } | } | ||||
| @@ -31,4 +31,6 @@ public class ArticlePreviewSpreadEntity extends BaseEntity<ArticlePreviewSpreadE | |||||
| private String spreadDesc; | private String spreadDesc; | ||||
| @ApiModelProperty(value = "租户id") | @ApiModelProperty(value = "租户id") | ||||
| private Long tenantId; | private Long tenantId; | ||||
| @ApiModelProperty(value = "版本号") | |||||
| private Long versionNum; | |||||
| } | } | ||||
| @@ -0,0 +1,45 @@ | |||||
| package com.yuexiu.secp.read.dto; | |||||
| import com.alibaba.fastjson.annotation.JSONField; | |||||
| import com.sie.iot.common.bean.ReqeustCommonDataBean; | |||||
| import io.swagger.annotations.ApiModel; | |||||
| import io.swagger.annotations.ApiModelProperty; | |||||
| import lombok.Data; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| @Data | |||||
| @ApiModel(value = "查询文章任务dto") | |||||
| public class ArticlePreviewQueryDto extends ReqeustCommonDataBean { | |||||
| @ApiModelProperty(value = "文章标题") | |||||
| private String articleTitle; | |||||
| @ApiModelProperty(value = "发布单位") | |||||
| private String publishUnit; | |||||
| @ApiModelProperty(value = "推广状态(1有效期内/2已过有效期/3未开始)") | |||||
| private Integer promotionStatus; | |||||
| @ApiModelProperty(value = "任务状态(1草稿/2待发布/3已发布/4已下架)") | |||||
| private Integer taskStatus; | |||||
| @ApiModelProperty(value = "查询使用,操作人") | |||||
| private String oprator; | |||||
| @ApiModelProperty(value = "推广开始时间") | |||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | |||||
| private String spreadBeginTime; | |||||
| @ApiModelProperty(value = "推广结束时间") | |||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | |||||
| private String spreadEndTime; | |||||
| @ApiModelProperty(value = "计划发布开始时间") | |||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | |||||
| private String releaseBeginTime; | |||||
| @ApiModelProperty(value = "计划发布结束时间") | |||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | |||||
| private String releaseEndTime; | |||||
| @ApiModelProperty(value = "实际发布开始时间") | |||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | |||||
| private String releaseTaskBeginTime; | |||||
| @ApiModelProperty(value = "实际发布结束时间") | |||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | |||||
| private String releaseTaskEndTime; | |||||
| } | |||||
| @@ -11,9 +11,11 @@ import java.util.Date; | |||||
| import java.util.List; | import java.util.List; | ||||
| @Data | @Data | ||||
| @ApiModel(value = "新增文章任务") | |||||
| public class ArticlePreviewDto extends ReqeustCommonDataBean { | |||||
| @ApiModel(value = "新增/编辑文章任务") | |||||
| public class ArticlePreviewSaveDto extends ReqeustCommonDataBean { | |||||
| @ApiModelProperty(value = "文章任务id") | |||||
| private Long articlePreviewId; | |||||
| @ApiModelProperty(value = "发布单位") | @ApiModelProperty(value = "发布单位") | ||||
| private String publishUnit; | private String publishUnit; | ||||
| @ApiModelProperty(value = "文章类别") | @ApiModelProperty(value = "文章类别") | ||||
| @@ -22,15 +24,15 @@ public class ArticlePreviewDto extends ReqeustCommonDataBean { | |||||
| private String articleTypeAlias; | private String articleTypeAlias; | ||||
| @ApiModelProperty(value = "计划发布时间") | @ApiModelProperty(value = "计划发布时间") | ||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | @JSONField(format = "yyyy-MM-dd HH:mm:ss") | ||||
| private Date releaseTime; | |||||
| private String releaseTime; | |||||
| @ApiModelProperty(value = "推广开始时间") | @ApiModelProperty(value = "推广开始时间") | ||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | @JSONField(format = "yyyy-MM-dd HH:mm:ss") | ||||
| private Date spreadBeginTime; | |||||
| private String spreadBeginTime; | |||||
| @ApiModelProperty(value = "推广结束时间") | @ApiModelProperty(value = "推广结束时间") | ||||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | @JSONField(format = "yyyy-MM-dd HH:mm:ss") | ||||
| private Date spreadEndTime; | |||||
| @ApiModelProperty(value = "发布状态(1草稿/2待发布") | |||||
| private Integer publishStatus; | |||||
| private String spreadEndTime; | |||||
| @ApiModelProperty(value = "任务状态(1草稿/2待发布/3已发布/4已下架)") | |||||
| private Integer taskStatus; | |||||
| @ApiModelProperty(value = "建议推广人,1.按CDP标签选择;2.按部门;3.按项目;4.按CDP标签删除") | @ApiModelProperty(value = "建议推广人,1.按CDP标签选择;2.按部门;3.按项目;4.按CDP标签删除") | ||||
| private String spreadType; | private String spreadType; | ||||
| @ApiModelProperty(value = "建议推广人选部门或项目时,需要返回选择项") | @ApiModelProperty(value = "建议推广人选部门或项目时,需要返回选择项") | ||||
| @@ -1,40 +1,113 @@ | |||||
| package com.yuexiu.secp.read.controller; | package com.yuexiu.secp.read.controller; | ||||
| import cn.hutool.core.bean.BeanUtil; | |||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.sie.iot.common.bean.PaginationRequestData; | |||||
| import com.sie.iot.common.bean.RequestData; | import com.sie.iot.common.bean.RequestData; | ||||
| import com.sie.iot.common.bean.ResponseData; | import com.sie.iot.common.bean.ResponseData; | ||||
| import com.sie.iot.common.iotenum.ResponseMsgCode; | |||||
| import com.sie.iot.common.model.inter.IBaseCommon; | import com.sie.iot.common.model.inter.IBaseCommon; | ||||
| import com.sie.iot.common.secure.annotation.CheckToken; | import com.sie.iot.common.secure.annotation.CheckToken; | ||||
| import com.sie.iot.common.services.CommonAbstractService; | import com.sie.iot.common.services.CommonAbstractService; | ||||
| import com.yuexiu.secp.read.dto.ArticlePreviewDto; | |||||
| import com.siefw.hibernate.core.paging.Pagination; | |||||
| import com.yuexiu.secp.read.dto.ArticlePreviewQueryDto; | |||||
| import com.yuexiu.secp.read.dto.ArticlePreviewSaveDto; | |||||
| import com.yuexiu.secp.read.dto.CostUnitDto; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity; | import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity; | ||||
| import com.yuexiu.secp.read.model.entities.CostUnitEntity; | |||||
| import com.yuexiu.secp.read.model.service.IArticlePreview; | import com.yuexiu.secp.read.model.service.IArticlePreview; | ||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| @RestController | @RestController | ||||
| @RequestMapping("/read/article/preview") | @RequestMapping("/read/article/preview") | ||||
| @Api(value = "阅读有礼-预览", tags = "阅读有礼-预览") | |||||
| public class ArticlePreviewController extends CommonAbstractService { | public class ArticlePreviewController extends CommonAbstractService { | ||||
| @Autowired | @Autowired | ||||
| private IArticlePreview iReadService; | private IArticlePreview iReadService; | ||||
| @Override | @Override | ||||
| public IBaseCommon<?> getBaseCommonServer() { | public IBaseCommon<?> getBaseCommonServer() { | ||||
| return this.iReadService; | |||||
| return this.iReadService; | |||||
| } | } | ||||
| @ApiOperation(value = "分页查询文章任务", notes = "分页文章任务") | |||||
| @PostMapping(value = "/findPagination") | |||||
| @CheckToken | |||||
| public ResponseData<Pagination<ArticlePreviewEntity>> findPagination(@RequestBody PaginationRequestData<ArticlePreviewQueryDto> paginationRequestData) { | |||||
| Integer pageIndex = paginationRequestData.getPageIndex(); | |||||
| Integer pageRows = paginationRequestData.getPageRows(); | |||||
| ArticlePreviewQueryDto articlePreviewQueryDto = paginationRequestData.getParams(); | |||||
| JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(articlePreviewQueryDto)); | |||||
| Pagination<ArticlePreviewEntity> pagination = iReadService.findPagination(jsonObject, pageIndex, pageRows, paginationRequestData.getOrderByBean()); | |||||
| return ResponseData.data(pagination); | |||||
| } | |||||
| @ApiOperation(value = "保存成本单位", notes = "保存成本单位") | |||||
| @ApiOperation(value = "保存文章任务", notes = "保存文章任务") | |||||
| @PostMapping(value = "/save") | @PostMapping(value = "/save") | ||||
| @CheckToken | @CheckToken | ||||
| public ResponseData<ArticlePreviewEntity> save(@RequestBody RequestData<ArticlePreviewDto> requestData) { | |||||
| ArticlePreviewDto articlePreviewDto = requestData.getParams(); | |||||
| public ResponseData<ArticlePreviewEntity> save(@RequestBody RequestData<ArticlePreviewSaveDto> requestData) { | |||||
| ArticlePreviewSaveDto articlePreviewDto = requestData.getParams(); | |||||
| return ResponseData.data(iReadService.saveArticlePreview(articlePreviewDto)); | |||||
| } | |||||
| getUserSessionBean().getUserId(); | |||||
| @ApiOperation(value = "更新文章任务", notes = "更新文章任务") | |||||
| @PostMapping(value = "/update") | |||||
| @CheckToken | |||||
| public ResponseData<ArticlePreviewEntity> update(@RequestBody RequestData<ArticlePreviewSaveDto> requestData) { | |||||
| ArticlePreviewSaveDto articlePreviewDto = requestData.getParams(); | |||||
| ArticlePreviewEntity articlePreviewEntity = | |||||
| iReadService.getById(articlePreviewDto.getArticlePreviewId()); | |||||
| if (null != articlePreviewEntity) { | |||||
| return ResponseData.data(iReadService.updateArticlePreview(articlePreviewDto)); | |||||
| } else { | |||||
| return ResponseData.fail(ResponseMsgCode.UPDATE_DATA_NOT_EXIST.msgCode); | |||||
| } | |||||
| } | |||||
| return ResponseData.data(iReadService.saveArticlePreview(articlePreviewDto)); | |||||
| @ApiOperation(value = "根据文章任务id查询相关信息", notes = "根据文章任务id查询相关信息") | |||||
| @PostMapping(value = "/findByArticlePreviewId") | |||||
| @CheckToken | |||||
| public ResponseData<ArticlePreviewSaveDto> findByArticlePreviewId(@RequestParam Long articlePreviewId) { | |||||
| ArticlePreviewSaveDto articlePreviewSaveDto = iReadService.findByArticlePreviewId(articlePreviewId); | |||||
| return ResponseData.data(articlePreviewSaveDto); | |||||
| } | |||||
| @ApiOperation(value = "通过Id删除文章任务", notes = "通过Id删除文章任务") | |||||
| @GetMapping(value = "/delete") | |||||
| @CheckToken | |||||
| public ResponseData deleteById(@RequestParam Long id) { | |||||
| ArticlePreviewEntity articlePreviewEntity = iReadService.getById(id); | |||||
| if (articlePreviewEntity != null) { | |||||
| iReadService.deleteById(id); | |||||
| } | |||||
| return ResponseData.success(); | |||||
| } | |||||
| @ApiOperation(value = "下架", notes = "下架") | |||||
| @PostMapping(value = "/off-the-shelves") | |||||
| // @CheckToken | |||||
| public ResponseData offTheShelves(@RequestParam Long id) { | |||||
| return ResponseData.success(); | |||||
| } | } | ||||
| @ApiOperation(value = "发布", notes = "发布") | |||||
| @PostMapping(value = "/release") | |||||
| // @CheckToken | |||||
| public ResponseData release(@RequestParam Long id) { | |||||
| return ResponseData.success(); | |||||
| } | |||||
| @ApiOperation(value = "重新发布", notes = "重新发布") | |||||
| @PostMapping(value = "/re-release") | |||||
| // @CheckToken | |||||
| public ResponseData reRelease(@RequestParam Long id) { | |||||
| return ResponseData.success(); | |||||
| } | |||||
| } | } | ||||
| @@ -52,7 +52,7 @@ public class Swagger2Config { | |||||
| return new Docket(DocumentationType.SWAGGER_2) | return new Docket(DocumentationType.SWAGGER_2) | ||||
| .apiInfo(apiInfo()) | .apiInfo(apiInfo()) | ||||
| .select() | .select() | ||||
| .apis(basePackage("com.yuexiu.secp.interfaces.controller")) | |||||
| .apis(basePackage("com.yuexiu.secp.read.controller")) | |||||
| .paths(PathSelectors.any()) | .paths(PathSelectors.any()) | ||||
| .build().enable(enableSwagger) | .build().enable(enableSwagger) | ||||
| .globalOperationParameters(pars); | .globalOperationParameters(pars); | ||||
| @@ -1,15 +1,47 @@ | |||||
| package com.yuexiu.secp.read.model.service; | package com.yuexiu.secp.read.model.service; | ||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.sie.iot.common.bean.OrderByBean; | |||||
| import com.sie.iot.common.model.inter.IBaseCommon; | import com.sie.iot.common.model.inter.IBaseCommon; | ||||
| import com.yuexiu.secp.read.dto.ArticlePreviewDto; | |||||
| import com.siefw.hibernate.core.paging.Pagination; | |||||
| import com.yuexiu.secp.read.dto.ArticlePreviewSaveDto; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity; | import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity; | ||||
| import com.yuexiu.secp.read.model.entities.CostUnitEntity; | |||||
| public interface IArticlePreview extends IBaseCommon<CostUnitEntity> { | |||||
| public interface IArticlePreview extends IBaseCommon<ArticlePreviewEntity> { | |||||
| /** | |||||
| * 新增文章任务 | |||||
| * | |||||
| * @param dto | |||||
| * @return | |||||
| */ | |||||
| ArticlePreviewEntity saveArticlePreview(ArticlePreviewSaveDto dto); | |||||
| /** | |||||
| * 编辑文章任务 | |||||
| * | |||||
| * @param dto | |||||
| * @return | |||||
| */ | |||||
| ArticlePreviewEntity updateArticlePreview(ArticlePreviewSaveDto dto); | |||||
| /** | |||||
| * 根据文章任务id查询相关信息 | |||||
| * | |||||
| * @param previewId 文章任务id | |||||
| * @return | |||||
| */ | |||||
| ArticlePreviewSaveDto findByArticlePreviewId(Long previewId); | |||||
| /** | |||||
| * 分页查询 部门列表 | |||||
| * | |||||
| * @param jsonObject 条件参数 | |||||
| * @param pageIndex 第几页 | |||||
| * @param pageRows 每页数量 | |||||
| * @param orderByBean orderByBean | |||||
| * @return | |||||
| */ | |||||
| Pagination<ArticlePreviewEntity> findPagination(JSONObject jsonObject, Integer pageIndex, Integer pageRows, OrderByBean orderByBean); | |||||
| ArticlePreviewEntity saveArticlePreview(ArticlePreviewDto dto); | |||||
| } | } | ||||
| @@ -0,0 +1,9 @@ | |||||
| package com.yuexiu.secp.read.model.service; | |||||
| import com.sie.iot.common.model.inter.IBaseCommon; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewContentEntity; | |||||
| public interface IArticlePreviewContent extends IBaseCommon<ArticlePreviewContentEntity> { | |||||
| } | |||||
| @@ -0,0 +1,10 @@ | |||||
| package com.yuexiu.secp.read.model.service; | |||||
| import com.sie.iot.common.model.inter.IBaseCommon; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewContentEntity; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewProjectEntity; | |||||
| public interface IArticlePreviewProject extends IBaseCommon<ArticlePreviewProjectEntity> { | |||||
| } | |||||
| @@ -0,0 +1,10 @@ | |||||
| package com.yuexiu.secp.read.model.service; | |||||
| import com.sie.iot.common.model.inter.IBaseCommon; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewProjectEntity; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewSpreadEntity; | |||||
| public interface IArticlePreviewSpread extends IBaseCommon<ArticlePreviewSpreadEntity> { | |||||
| } | |||||
| @@ -0,0 +1,16 @@ | |||||
| package com.yuexiu.secp.read.model.service.impl; | |||||
| import com.sie.iot.common.model.inter.server.BaseCommonServer; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewContentEntity; | |||||
| import com.yuexiu.secp.read.model.service.IArticlePreviewContent; | |||||
| import org.springframework.stereotype.Service; | |||||
| /** | |||||
| * @author YuChengLong | |||||
| * @date 2022/5/10 | |||||
| */ | |||||
| @Service | |||||
| public class ArticlePreviewContentServer extends BaseCommonServer<ArticlePreviewContentEntity> implements IArticlePreviewContent { | |||||
| } | |||||
| @@ -0,0 +1,19 @@ | |||||
| package com.yuexiu.secp.read.model.service.impl; | |||||
| import com.sie.iot.common.model.inter.server.BaseCommonServer; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewContentEntity; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewProjectEntity; | |||||
| import com.yuexiu.secp.read.model.service.IArticlePreviewContent; | |||||
| import com.yuexiu.secp.read.model.service.IArticlePreviewProject; | |||||
| import org.springframework.stereotype.Service; | |||||
| /** | |||||
| * @author YuChengLong | |||||
| * @date 2022/5/10 | |||||
| */ | |||||
| @Service | |||||
| public class ArticlePreviewProjectServer extends BaseCommonServer<ArticlePreviewProjectEntity> implements IArticlePreviewProject { | |||||
| } | |||||
| @@ -1,22 +1,26 @@ | |||||
| package com.yuexiu.secp.read.model.service.impl; | package com.yuexiu.secp.read.model.service.impl; | ||||
| import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | |||||
| import com.google.common.collect.Iterables; | |||||
| import cn.hutool.core.util.StrUtil; | |||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.sie.iot.common.bean.OrderByBean; | |||||
| import com.sie.iot.common.model.inter.server.BaseCommonServer; | import com.sie.iot.common.model.inter.server.BaseCommonServer; | ||||
| import com.sie.iot.common.util.SaafToolUtils; | |||||
| import com.sie.iot.common.util.UserSessionHelper; | import com.sie.iot.common.util.UserSessionHelper; | ||||
| import com.yuexiu.secp.read.dto.RecommendDto; | |||||
| import com.siefw.hibernate.core.paging.Pagination; | |||||
| import com.yuexiu.secp.read.model.dao.ArticlePreviewContentDao; | |||||
| import com.yuexiu.secp.read.model.dao.ArticlePreviewDao; | import com.yuexiu.secp.read.model.dao.ArticlePreviewDao; | ||||
| import com.yuexiu.secp.read.dto.ArticlePreviewDto; | |||||
| import com.yuexiu.secp.read.dto.ArticlePreviewSaveDto; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewContentEntity; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity; | import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity; | ||||
| import com.yuexiu.secp.read.model.entities.CostUnitEntity; | |||||
| import com.yuexiu.secp.read.model.service.IArticlePreview; | import com.yuexiu.secp.read.model.service.IArticlePreview; | ||||
| import com.yuexiu.secp.read.model.service.IArticlePreviewContent; | |||||
| import com.yuexiu.secp.read.util.DateUtil; | |||||
| import lombok.extern.slf4j.Slf4j; | |||||
| import org.apache.commons.lang.time.DateUtils; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.data.redis.core.StringRedisTemplate; | import org.springframework.data.redis.core.StringRedisTemplate; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import org.springframework.util.CollectionUtils; | |||||
| import com.sie.iot.common.services.CommonAbstractService; | |||||
| import java.util.*; | import java.util.*; | ||||
| @@ -24,10 +28,9 @@ import java.util.*; | |||||
| * @author YuChengLong | * @author YuChengLong | ||||
| * @date 2022/5/10 | * @date 2022/5/10 | ||||
| */ | */ | ||||
| @Slf4j | |||||
| @Service | @Service | ||||
| public class ArticlePreviewServer extends BaseCommonServer<CostUnitEntity> implements IArticlePreview { | |||||
| public class ArticlePreviewServer extends BaseCommonServer<ArticlePreviewEntity> implements IArticlePreview { | |||||
| @Autowired | @Autowired | ||||
| private StringRedisTemplate redisTemplate; | private StringRedisTemplate redisTemplate; | ||||
| @@ -35,18 +38,195 @@ public class ArticlePreviewServer extends BaseCommonServer<CostUnitEntity> imple | |||||
| @Autowired | @Autowired | ||||
| private ArticlePreviewDao articlePreviewDao; | private ArticlePreviewDao articlePreviewDao; | ||||
| @Autowired | |||||
| private ArticlePreviewContentDao articlePreviewContentDao; | |||||
| @Override | |||||
| public ArticlePreviewEntity saveArticlePreview(ArticlePreviewSaveDto dto) { | |||||
| // TODO 需要加事务 | |||||
| ArticlePreviewEntity entity = new ArticlePreviewEntity(); | |||||
| BeanUtil.copyProperties(dto, entity); | |||||
| //固定 | |||||
| entity.setOperatorUserId(1L); | |||||
| entity.setTenantId(1L); | |||||
| // entity.setOperatorUserId(UserSessionHelper.getCurrentSession().getUserId()); | |||||
| // entity.setTenantId(UserSessionHelper.getCurrentSession().getTenantId()); | |||||
| // 推广状态 | |||||
| Date now = new Date(); | |||||
| if (DateUtil.str2Time(dto.getSpreadBeginTime()).getTime() > now.getTime()) { | |||||
| entity.setPromotionStatus(3); | |||||
| } else if (DateUtil.str2Time(dto.getSpreadEndTime()).getTime() < now.getTime()) { | |||||
| entity.setPromotionStatus(2); | |||||
| } else if (DateUtil.str2Time(dto.getSpreadEndTime()).getTime() > now.getTime() && DateUtil.str2Time(dto.getSpreadBeginTime()).getTime() <= now.getTime()) { | |||||
| entity.setPromotionStatus(1); | |||||
| } | |||||
| // 审批状态 | |||||
| entity.setApprovalStatus(1); | |||||
| // 保存预览记录 | |||||
| entity = (ArticlePreviewEntity) this.save(entity); | |||||
| long articlePreviewId = entity.getArticlePreviewId(); | |||||
| // 保存文章正文详情 | |||||
| ArticlePreviewContentEntity contentEntity = new ArticlePreviewContentEntity(); | |||||
| //固定 | |||||
| contentEntity.setOperatorUserId(1L); | |||||
| contentEntity.setTenantId(1L); | |||||
| contentEntity.setArticlePreviewId(articlePreviewId); | |||||
| contentEntity.setArticleContent(dto.getArticleContent()); | |||||
| articlePreviewContentDao.save(contentEntity); | |||||
| // 关联类型 | |||||
| // int placeOfOrigin = dto.getPlaceOfOrigin(); | |||||
| // TODO 根据类型去CDP查询相关信息,将得到的结果存入yxh_article_preview_project表中 | |||||
| // 推广人 | |||||
| // TODO 同上,需要去CDP查询相关信息 | |||||
| return entity; | |||||
| } | |||||
| @Override | @Override | ||||
| public ArticlePreviewEntity saveArticlePreview(ArticlePreviewDto dto) { | |||||
| public ArticlePreviewEntity updateArticlePreview(ArticlePreviewSaveDto dto) { | |||||
| // TODO 需要加事务 | |||||
| ArticlePreviewEntity entity = new ArticlePreviewEntity(); | ArticlePreviewEntity entity = new ArticlePreviewEntity(); | ||||
| BeanUtil.copyProperties(dto,entity); | |||||
| BeanUtil.copyProperties(dto, entity); | |||||
| //固定 | //固定 | ||||
| entity.setOperatorUserId(1L); | |||||
| entity.setTenantId(1L); | |||||
| // entity.setOperatorUserId(UserSessionHelper.getCurrentSession().getUserId()); | // entity.setOperatorUserId(UserSessionHelper.getCurrentSession().getUserId()); | ||||
| // entity.setTenantId(UserSessionHelper.getCurrentSession().getTenantId()); | // entity.setTenantId(UserSessionHelper.getCurrentSession().getTenantId()); | ||||
| // 推广状态 | |||||
| Date now = new Date(); | |||||
| if (DateUtil.str2Time(dto.getSpreadBeginTime()).getTime() > now.getTime()) { | |||||
| entity.setPromotionStatus(3); | |||||
| } else if (DateUtil.str2Time(dto.getSpreadEndTime()).getTime() < now.getTime()) { | |||||
| entity.setPromotionStatus(2); | |||||
| } else if (DateUtil.str2Time(dto.getSpreadEndTime()).getTime() > now.getTime() && DateUtil.str2Time(dto.getSpreadBeginTime()).getTime() <= now.getTime()) { | |||||
| entity.setPromotionStatus(1); | |||||
| } | |||||
| // 审批状态 | |||||
| entity.setApprovalStatus(1); | |||||
| // 更新预览记录 | |||||
| this.update(entity); | |||||
| long articlePreviewId = entity.getArticlePreviewId(); | |||||
| // 保存文章正文详情 | |||||
| ArticlePreviewContentEntity contentEntity = new ArticlePreviewContentEntity(); | |||||
| //固定 | |||||
| contentEntity.setOperatorUserId(1L); | |||||
| contentEntity.setTenantId(1L); | |||||
| contentEntity.setArticlePreviewId(articlePreviewId); | |||||
| contentEntity.setArticleContent(dto.getArticleContent()); | |||||
| ArticlePreviewContentEntity articlePreviewContentEntity = | |||||
| articlePreviewContentDao.selectByArticlePreviewId(articlePreviewId); | |||||
| contentEntity.setPreviewContentId(articlePreviewContentEntity.getPreviewContentId()); | |||||
| articlePreviewContentDao.update(contentEntity); | |||||
| // 关联类型 | |||||
| // int placeOfOrigin = dto.getPlaceOfOrigin(); | |||||
| // TODO 根据类型去CDP查询相关信息,将得到的结果存入yxh_article_preview_project表中 | |||||
| // 推广人 | |||||
| // TODO 同上,需要去CDP查询相关信息 | |||||
| return entity; | return entity; | ||||
| } | } | ||||
| @Override | |||||
| public ArticlePreviewSaveDto findByArticlePreviewId(Long previewId) { | |||||
| ArticlePreviewSaveDto saveDto = new ArticlePreviewSaveDto(); | |||||
| // 查询文章预览基本信息 | |||||
| ArticlePreviewEntity articlePreviewEntity = articlePreviewDao.getById(previewId); | |||||
| BeanUtil.copyProperties(articlePreviewEntity, saveDto); | |||||
| // 查询文章正文内容 | |||||
| ArticlePreviewContentEntity articlePreviewContentEntity = | |||||
| articlePreviewContentDao.selectByArticlePreviewId(previewId); | |||||
| saveDto.setArticleContent(articlePreviewContentEntity.getArticleContent()); | |||||
| // TODO 查询文章推广人信息 | |||||
| // TODO 查询文章所属城市/项目 | |||||
| return saveDto; | |||||
| } | |||||
| @Override | |||||
| public Pagination<ArticlePreviewEntity> findPagination(JSONObject jsonObject, Integer pageIndex, Integer pageRows, OrderByBean orderByBean) { | |||||
| Map<String, Object> paramsMap = new HashMap<String, Object>(); | |||||
| StringBuffer querySQLSB = new StringBuffer("select * from yxh_article_preview where delete_flag = 0 "); | |||||
| //通过标题查询 | |||||
| if (StrUtil.isNotEmpty(jsonObject.getString("articleTitle"))) { | |||||
| SaafToolUtils.parperParam(jsonObject, "article_title", "articleTitle", querySQLSB, paramsMap, "like"); | |||||
| } | |||||
| //通过发布单位查询 | |||||
| if (StrUtil.isNotEmpty(jsonObject.getString("publishUnit"))) { | |||||
| SaafToolUtils.parperParam(jsonObject, "publish_unit", "publishUnit", querySQLSB, paramsMap, "like"); | |||||
| } | |||||
| //通过推广状态查询 | |||||
| if (jsonObject.getLong("promotionStatus") != null) { | |||||
| SaafToolUtils.parperParam(jsonObject, "promotion_status", "promotionStatus", querySQLSB, paramsMap, "="); | |||||
| } | |||||
| //通过任务状态查询 | |||||
| if (jsonObject.getLong("taskStatus") != null) { | |||||
| SaafToolUtils.parperParam(jsonObject, "task_status", "taskStatus", querySQLSB, paramsMap, "="); | |||||
| } | |||||
| //通过操作人查询 | |||||
| if (StrUtil.isNotEmpty(jsonObject.getString("oprator"))) { | |||||
| // TODO 需要根据用户名查出userId,再去查询created_by | |||||
| SaafToolUtils.parperParam(jsonObject, "created_by", "oprator", querySQLSB, paramsMap, "like"); | |||||
| } | |||||
| //通过推广有效期查询 | |||||
| if (!StrUtil.isBlank(jsonObject.getString("spreadBeginTime"))) { | |||||
| querySQLSB.append(" and ((spread_begin_time between :spreadBeginTime and :spreadEndTime) or " + | |||||
| "(spread_end_time between :spreadBeginTime and :spreadEndTime) or " + | |||||
| "(spread_begin_time <= :spreadBeginTime and spread_end_time >= :spreadEndTime))"); | |||||
| paramsMap.put("spreadBeginTime", jsonObject.getDate("spreadBeginTime")); | |||||
| paramsMap.put("spreadEndTime", jsonObject.getDate("spreadEndTime")); | |||||
| paramsMap.put("spreadBeginTime", jsonObject.getDate("spreadBeginTime")); | |||||
| paramsMap.put("spreadEndTime", jsonObject.getDate("spreadEndTime")); | |||||
| paramsMap.put("spreadBeginTime", jsonObject.getDate("spreadBeginTime")); | |||||
| paramsMap.put("spreadEndTime", jsonObject.getDate("spreadEndTime")); | |||||
| } | |||||
| // 通过计划发布时间查询 | |||||
| if (!StrUtil.isBlank(jsonObject.getString("releaseBeginTime"))) { | |||||
| paramsMap.put("releaseBeginTime", jsonObject.getDate("releaseBeginTime")); | |||||
| querySQLSB.append(" and release_time >= :releaseBeginTime "); | |||||
| } | |||||
| if (!StrUtil.isBlank(jsonObject.getString("releaseEndTime"))) { | |||||
| paramsMap.put("releaseEndTime", jsonObject.getDate("releaseEndTime")); | |||||
| querySQLSB.append(" and release_time <= :releaseEndTime "); | |||||
| } | |||||
| // 通过实际发布时间查询 | |||||
| if (!StrUtil.isBlank(jsonObject.getString("releaseTaskBeginTime"))) { | |||||
| paramsMap.put("releaseTaskBeginTime", jsonObject.getDate("releaseTaskBeginTime")); | |||||
| querySQLSB.append(" and release_task_time >= :releaseTaskBeginTime "); | |||||
| } | |||||
| if (!StrUtil.isBlank(jsonObject.getString("releaseTaskEndTime"))) { | |||||
| paramsMap.put("releaseTaskEndTime", jsonObject.getDate("releaseTaskEndTime")); | |||||
| querySQLSB.append(" and release_task_time <= :releaseTaskEndTime "); | |||||
| } | |||||
| if (orderByBean == null) { | |||||
| orderByBean = new OrderByBean(); | |||||
| orderByBean.setAttributeName("creation_date"); | |||||
| orderByBean.setSortType("desc"); | |||||
| } | |||||
| SaafToolUtils.sortUtil(orderByBean, querySQLSB); | |||||
| return articlePreviewDao.findPagination(querySQLSB.toString(), paramsMap, pageIndex, pageRows); | |||||
| } | |||||
| } | } | ||||
| @@ -0,0 +1,18 @@ | |||||
| package com.yuexiu.secp.read.model.service.impl; | |||||
| import com.sie.iot.common.model.inter.server.BaseCommonServer; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewProjectEntity; | |||||
| import com.yuexiu.secp.read.model.entities.ArticlePreviewSpreadEntity; | |||||
| import com.yuexiu.secp.read.model.service.IArticlePreviewProject; | |||||
| import com.yuexiu.secp.read.model.service.IArticlePreviewSpread; | |||||
| import org.springframework.stereotype.Service; | |||||
| /** | |||||
| * @author YuChengLong | |||||
| * @date 2022/5/10 | |||||
| */ | |||||
| @Service | |||||
| public class ArticlePreviewSpreadServer extends BaseCommonServer<ArticlePreviewSpreadEntity> implements IArticlePreviewSpread { | |||||
| } | |||||
| @@ -0,0 +1,226 @@ | |||||
| package com.yuexiu.secp.read.util; | |||||
| import java.text.ParseException; | |||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.*; | |||||
| /** | |||||
| * @author YuChengLong | |||||
| * @date 2022/5/10 | |||||
| */ | |||||
| public class DateUtil { | |||||
| public static final String DATE_FORMAT_YY_MM_DD = "yyyy-MM-dd"; | |||||
| public static final String DATE_FORMAT_YY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; | |||||
| private static SimpleDateFormat sdf_date_format = new SimpleDateFormat(DATE_FORMAT_YY_MM_DD); | |||||
| private static SimpleDateFormat sdf_time_format = new SimpleDateFormat(DATE_FORMAT_YY_MM_DD_HH_MM_SS); | |||||
| /** | |||||
| * java 获取月周 | |||||
| */ | |||||
| public static Integer getDateOfWeek(String data) { | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| calendar.setFirstDayOfWeek(Calendar.SUNDAY);// 设置星期一为一周开始的第一天 | |||||
| // calendar.setMinimalDaysInFirstWeek(4);//可以不用设置 | |||||
| calendar.setTime(DateUtil.str2Date(data));// 获得当前的时间戳 | |||||
| return calendar.get(Calendar.WEEK_OF_YEAR); | |||||
| } | |||||
| /** | |||||
| * 获取当前日期的上一个月 | |||||
| */ | |||||
| public static Date getLastMonth(Date date) { | |||||
| Calendar c = Calendar.getInstance(); | |||||
| c.setTime(date); | |||||
| c.add(Calendar.MONTH, -1); | |||||
| return c.getTime(); | |||||
| } | |||||
| /** | |||||
| * 获取当前日期的下一个月的日期(下个月日期不能超过2月29) | |||||
| * | |||||
| * @param date 输入日期 | |||||
| * @return | |||||
| */ | |||||
| public static Date getNextMonth(Date date) { | |||||
| Calendar c = Calendar.getInstance(); | |||||
| c.setTime(new Date()); | |||||
| c.add(Calendar.MONTH, -1); | |||||
| return c.getTime(); | |||||
| } | |||||
| /** | |||||
| * 获取当前日期是当年的第几周 | |||||
| * | |||||
| * @param date 日期 | |||||
| * @return | |||||
| */ | |||||
| public static Integer getWeekOfYear(Date date) { | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| calendar.setFirstDayOfWeek(Calendar.SUNDAY); | |||||
| calendar.setTime(date); | |||||
| return calendar.get(Calendar.WEEK_OF_YEAR); | |||||
| } | |||||
| /** | |||||
| * 根据日期获取该天星期几 | |||||
| * | |||||
| * @param date 日期 | |||||
| * @return | |||||
| */ | |||||
| public static String getWeek(Date date) { | |||||
| String[] weeks = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; | |||||
| Calendar cal = Calendar.getInstance(); | |||||
| cal.setTime(date); | |||||
| int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1; | |||||
| if (week_index < 0) { | |||||
| week_index = 0; | |||||
| } | |||||
| return weeks[week_index]; | |||||
| } | |||||
| /** | |||||
| * 根据输入日期获取今天是周几(数值: 1 2 3 4 5 6 7) | |||||
| * | |||||
| * @param date 输入日期 | |||||
| * @return 周几(数值) | |||||
| */ | |||||
| public static int getWeek1(Date date) { | |||||
| int[] weeks = {7, 1, 2, 3, 4, 5, 6}; | |||||
| Calendar cal = Calendar.getInstance(); | |||||
| cal.setTime(date); | |||||
| int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1; | |||||
| if (week_index < 0) { | |||||
| week_index = 0; | |||||
| } | |||||
| return weeks[week_index]; | |||||
| } | |||||
| /** | |||||
| * 获取指定日期的过去第past天的日期 | |||||
| */ | |||||
| public static Date getPastDate(Date date, int past) { | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| calendar.setTime(date); | |||||
| calendar.add(Calendar.DATE, -past); | |||||
| return calendar.getTime(); | |||||
| } | |||||
| /** | |||||
| * 获取指定日期的之后第past天的日期 | |||||
| */ | |||||
| public static Date getLaterDate(Date date, int past) { | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| calendar.setTime(date); | |||||
| calendar.add(Calendar.DATE, past); | |||||
| return calendar.getTime(); | |||||
| } | |||||
| /** | |||||
| * 获取指定日期的字符串之后第past天的日期字符串 | |||||
| */ | |||||
| public static String getLaterDateStr(String date, int past) { | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| calendar.setTime(str2Date(date)); | |||||
| calendar.add(Calendar.DATE, past); | |||||
| return date2Str(calendar.getTime()); | |||||
| } | |||||
| /** | |||||
| * 给时间加上几个小时 | |||||
| * | |||||
| * @param hour 需要加的时间 | |||||
| * @return | |||||
| */ | |||||
| public static Date dateAddHours(Date date, int hour) { | |||||
| Calendar cal = Calendar.getInstance(); | |||||
| cal.setTime(date); | |||||
| cal.add(Calendar.HOUR, hour);// 24小时制 | |||||
| date = cal.getTime(); | |||||
| return date; | |||||
| } | |||||
| /** | |||||
| * 字符串格式转换time | |||||
| * | |||||
| * @param date | |||||
| * @return | |||||
| */ | |||||
| public static Date str2Time(String date) { | |||||
| Date result = null; | |||||
| try { | |||||
| result = sdf_time_format.parse(date); | |||||
| } catch (ParseException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return result; | |||||
| } | |||||
| /** | |||||
| * 字符串格式转换date | |||||
| * | |||||
| * @param date | |||||
| * @return | |||||
| */ | |||||
| public static Date str2Date(String date) { | |||||
| Date result = null; | |||||
| try { | |||||
| result = sdf_date_format.parse(date); | |||||
| } catch (ParseException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return result; | |||||
| } | |||||
| /** | |||||
| * date转换字符串格式 | |||||
| * | |||||
| * @param date | |||||
| * @return | |||||
| */ | |||||
| public static String date2Str(Date date) { | |||||
| String dateString = sdf_date_format.format(date); | |||||
| return dateString; | |||||
| } | |||||
| /** | |||||
| * 计算两个日期之间相隔的天数 | |||||
| * | |||||
| * @param begin | |||||
| * @param end | |||||
| * @return | |||||
| * @throws ParseException | |||||
| */ | |||||
| public static long countDay(String begin, String end) { | |||||
| Date beginDate, endDate; | |||||
| long day = 0; | |||||
| try { | |||||
| beginDate = sdf_date_format.parse(begin); | |||||
| endDate = sdf_date_format.parse(end); | |||||
| day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000); | |||||
| } catch (ParseException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return day; | |||||
| } | |||||
| public static int getMonth(String date) { | |||||
| Calendar c = Calendar.getInstance(); | |||||
| c.setTime(str2Date(date)); | |||||
| return c.get(Calendar.MONTH) + 1; | |||||
| } | |||||
| public static int getYear(String date) { | |||||
| Calendar c = Calendar.getInstance(); | |||||
| c.setTime(str2Date(date)); | |||||
| return c.get(Calendar.YEAR); | |||||
| } | |||||
| public static void main(String[] args) { | |||||
| } | |||||
| } | |||||