| @@ -9,7 +9,6 @@ | |||
| <factory-entry name="1068-yexiu-read-model-mybatis" /> | |||
| <factory-entry name="Entities" /> | |||
| </datasource-mapping> | |||
| <naming-strategy-map /> | |||
| </configuration> | |||
| </facet> | |||
| <facet type="Spring" name="Spring"> | |||
| @@ -8,4 +8,21 @@ import org.springframework.stereotype.Component; | |||
| @Component("ArticlePreviewContentDao") | |||
| 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; | |||
| @ApiModelProperty(value = "租户id") | |||
| private Long tenantId; | |||
| @ApiModelProperty(value = "版本号") | |||
| private Long versionNum; | |||
| } | |||
| @@ -14,11 +14,11 @@ import java.io.Serializable; | |||
| import java.util.Date; | |||
| @Data | |||
| @TableName("yx_article_preview") | |||
| @TableName("yxh_article_preview") | |||
| @GeneratedKeyValue | |||
| @ApiModel(value = "文章预览表") | |||
| 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") | |||
| private Long articlePreviewId; | |||
| @ApiModelProperty(value = "文章任务id") | |||
| @@ -36,15 +36,15 @@ public class ArticlePreviewEntity extends BaseEntity<ArticlePreviewEntity> imple | |||
| @ApiModelProperty(value = "转发限制:1过期可推,2过期不可推") | |||
| private Integer shareType; | |||
| @ApiModelProperty(value = "建议文案1") | |||
| private String copyWrite1; | |||
| private String copywrite1; | |||
| @ApiModelProperty(value = "建议文案2") | |||
| private String copyWrite2; | |||
| private String copywrite2; | |||
| @ApiModelProperty(value = "建议文案3") | |||
| private String copyWrite3; | |||
| private String copywrite3; | |||
| @ApiModelProperty(value = "建议文案4") | |||
| private String copyWrite4; | |||
| private String copywrite4; | |||
| @ApiModelProperty(value = "建议文案5") | |||
| private String copyWrite5; | |||
| private String copywrite5; | |||
| @ApiModelProperty(value = "分享摘要") | |||
| private String shareTitle; | |||
| @ApiModelProperty(value = "分享小图") | |||
| @@ -85,4 +85,6 @@ public class ArticlePreviewEntity extends BaseEntity<ArticlePreviewEntity> imple | |||
| private String codeImg; | |||
| @ApiModelProperty(value = "租户id") | |||
| private Long tenantId; | |||
| @ApiModelProperty(value = "版本号") | |||
| private Long versionNum; | |||
| } | |||
| @@ -35,4 +35,6 @@ public class ArticlePreviewProjectEntity extends BaseEntity<ArticlePreviewProjec | |||
| private String projectArea; | |||
| @ApiModelProperty(value = "租户id") | |||
| private Long tenantId; | |||
| @ApiModelProperty(value = "版本号") | |||
| private Long versionNum; | |||
| } | |||
| @@ -31,4 +31,6 @@ public class ArticlePreviewSpreadEntity extends BaseEntity<ArticlePreviewSpreadE | |||
| private String spreadDesc; | |||
| @ApiModelProperty(value = "租户id") | |||
| 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; | |||
| @Data | |||
| @ApiModel(value = "新增文章任务") | |||
| public class ArticlePreviewDto extends ReqeustCommonDataBean { | |||
| @ApiModel(value = "新增/编辑文章任务") | |||
| public class ArticlePreviewSaveDto extends ReqeustCommonDataBean { | |||
| @ApiModelProperty(value = "文章任务id") | |||
| private Long articlePreviewId; | |||
| @ApiModelProperty(value = "发布单位") | |||
| private String publishUnit; | |||
| @ApiModelProperty(value = "文章类别") | |||
| @@ -22,15 +24,15 @@ public class ArticlePreviewDto extends ReqeustCommonDataBean { | |||
| private String articleTypeAlias; | |||
| @ApiModelProperty(value = "计划发布时间") | |||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | |||
| private Date releaseTime; | |||
| private String releaseTime; | |||
| @ApiModelProperty(value = "推广开始时间") | |||
| @JSONField(format = "yyyy-MM-dd HH:mm:ss") | |||
| private Date spreadBeginTime; | |||
| private String spreadBeginTime; | |||
| @ApiModelProperty(value = "推广结束时间") | |||
| @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标签删除") | |||
| private String spreadType; | |||
| @ApiModelProperty(value = "建议推广人选部门或项目时,需要返回选择项") | |||
| @@ -1,40 +1,113 @@ | |||
| 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.ResponseData; | |||
| import com.sie.iot.common.iotenum.ResponseMsgCode; | |||
| import com.sie.iot.common.model.inter.IBaseCommon; | |||
| import com.sie.iot.common.secure.annotation.CheckToken; | |||
| 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.CostUnitEntity; | |||
| import com.yuexiu.secp.read.model.service.IArticlePreview; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| @RestController | |||
| @RequestMapping("/read/article/preview") | |||
| @Api(value = "阅读有礼-预览", tags = "阅读有礼-预览") | |||
| public class ArticlePreviewController extends CommonAbstractService { | |||
| @Autowired | |||
| private IArticlePreview iReadService; | |||
| @Override | |||
| 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") | |||
| @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) | |||
| .apiInfo(apiInfo()) | |||
| .select() | |||
| .apis(basePackage("com.yuexiu.secp.interfaces.controller")) | |||
| .apis(basePackage("com.yuexiu.secp.read.controller")) | |||
| .paths(PathSelectors.any()) | |||
| .build().enable(enableSwagger) | |||
| .globalOperationParameters(pars); | |||
| @@ -1,15 +1,47 @@ | |||
| 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.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.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; | |||
| 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.util.SaafToolUtils; | |||
| 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.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.CostUnitEntity; | |||
| 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.data.redis.core.StringRedisTemplate; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.util.CollectionUtils; | |||
| import com.sie.iot.common.services.CommonAbstractService; | |||
| import java.util.*; | |||
| @@ -24,10 +28,9 @@ import java.util.*; | |||
| * @author YuChengLong | |||
| * @date 2022/5/10 | |||
| */ | |||
| @Slf4j | |||
| @Service | |||
| public class ArticlePreviewServer extends BaseCommonServer<CostUnitEntity> implements IArticlePreview { | |||
| public class ArticlePreviewServer extends BaseCommonServer<ArticlePreviewEntity> implements IArticlePreview { | |||
| @Autowired | |||
| private StringRedisTemplate redisTemplate; | |||
| @@ -35,18 +38,195 @@ public class ArticlePreviewServer extends BaseCommonServer<CostUnitEntity> imple | |||
| @Autowired | |||
| 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 | |||
| public ArticlePreviewEntity saveArticlePreview(ArticlePreviewDto dto) { | |||
| public ArticlePreviewEntity updateArticlePreview(ArticlePreviewSaveDto dto) { | |||
| // TODO 需要加事务 | |||
| ArticlePreviewEntity entity = new ArticlePreviewEntity(); | |||
| BeanUtil.copyProperties(dto,entity); | |||
| 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); | |||
| // 更新预览记录 | |||
| 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; | |||
| } | |||
| @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) { | |||
| } | |||
| } | |||