Kaynağa Gözat

Merge remote-tracking branch 'origin/dev' into dev

dev
pl 2 yıl önce
ebeveyn
işleme
ab5eca5e61
22 değiştirilmiş dosya ile 1101 ekleme ve 83 silme
  1. +6
    -1
      .idea/encodings.xml
  2. +1
    -0
      1068-yexiu-read-model-mybatis/1068-yexiu-read-model-mybatis.iml
  3. +21
    -0
      1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/infra/constant/ArticleConstant.java
  4. +39
    -0
      1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/infra/util/RedisUtils.java
  5. +17
    -0
      1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/dao/ArticleDao.java
  6. +11
    -0
      1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/dao/ArticleGatherDao.java
  7. +5
    -4
      1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/dao/ArticlePreviewDao.java
  8. +396
    -0
      1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/entities/ArticleEntity.java
  9. +158
    -0
      1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/entities/ArticleGatherEntity.java
  10. +0
    -2
      1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/entities/ArticlePreviewContentEntity.java
  11. +23
    -0
      2068-yexiu-read-api/src/main/java/com/yuexiu/secp/read/dto/ArticleAddCountDto.java
  12. +32
    -0
      2068-yexiu-read-api/src/main/java/com/yuexiu/secp/read/dto/ArticleQueryDto.java
  13. +23
    -0
      2068-yexiu-read-api/src/main/java/com/yuexiu/secp/read/vo/StatisticsRespVo.java
  14. +56
    -0
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/controller/ArticleController.java
  15. +45
    -0
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/controller/ArticleGatherController.java
  16. +1
    -10
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/controller/ArticlePreviewController.java
  17. +29
    -0
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/IArticleGatherServer.java
  18. +0
    -2
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/IArticlePreview.java
  19. +18
    -0
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/IArticleServer.java
  20. +96
    -0
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/impl/ArticleGatherServer.java
  21. +0
    -64
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/impl/ArticlePreviewServer.java
  22. +124
    -0
      2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/impl/ArticleServer.java

+ 6
- 1
.idea/encodings.xml Dosyayı Görüntüle

@@ -3,18 +3,23 @@
<component name="Encoding" native2AsciiForPropertiesFiles="true" defaultCharsetForPropertiesFiles="UTF-8">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/1067-yuexiu-task-model-mybatis" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/1067-yuexiu-task-model-mybatis/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/1068-yexiu-read-model-mybatis" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/1068-yexiu-read-model-mybatis/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/1069-yuexiu-registration-model-mybatis" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/1069-yuexiu-registration-model-mybatis/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2067-yuexiu-task-api" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2067-yuexiu-task-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2067-yuexiu-task-application" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2067-yuexiu-task-application/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2068-yexiu-read-api" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2068-yexiu-read-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2068-yexiu-read-application" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2068-yexiu-read-application/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2069-yuexiu-registration-api" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2069-yuexiu-registration-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2069-yuexiu-registration-application" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/2069-yuexiu-registration-application/src/main/java" charset="UTF-8" />
<file url="PROJECT" charset="UTF-8" />
</component>
</project>
</project>

+ 1
- 0
1068-yexiu-read-model-mybatis/1068-yexiu-read-model-mybatis.iml Dosyayı Görüntüle

@@ -9,6 +9,7 @@
<factory-entry name="1068-yexiu-read-model-mybatis" />
<factory-entry name="Entities" />
</datasource-mapping>
<naming-strategy-map />
</configuration>
</facet>
<facet type="Spring" name="Spring">


+ 21
- 0
1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/infra/constant/ArticleConstant.java Dosyayı Görüntüle

@@ -0,0 +1,21 @@
package com.yuexiu.secp.read.infra.constant;

public class ArticleConstant {

//前缀
public final static String SIE = "SIE";

//阅读标记
public final static String READ = "READ";

//分享标记
public final static String SHARE = "SHARE";

//所有的文章信息标记
public final static String ARTICLE = "ARTICLE";

//我已推荐的文章标记
public final static String RECOMMEND = "RECOMMEND";


}

+ 39
- 0
1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/infra/util/RedisUtils.java Dosyayı Görüntüle

@@ -0,0 +1,39 @@
package com.yuexiu.secp.read.infra.util;

import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import org.apache.commons.lang.StringUtils;

import java.util.ArrayList;

/**
* 生成key的工具类
*/
public class RedisUtils {
//分隔符
public final static String split = ":";
public static String getRedisKey(String... name) {
StringBuffer sb = new StringBuffer();
for (String str : name) {
if (StringUtils.isNotBlank(str)) {
sb.append(str);
sb.append(split);
}
}
sb = sb.deleteCharAt(sb.lastIndexOf(split));

return sb.toString();
}
public static String getRedisKeyJoin(String... name){
ArrayList<String> strlist = Lists.newArrayList();
for (String str : name) {
if (StringUtils.isNotBlank(str)) {
strlist.add(str);
}
}
return Joiner.on("_").join(strlist);
}


}

+ 17
- 0
1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/dao/ArticleDao.java Dosyayı Görüntüle

@@ -0,0 +1,17 @@
package com.yuexiu.secp.read.model.dao;

import com.sie.iot.common.model.dao.BaseCommonDAO_HI;
import com.yuexiu.secp.read.model.entities.ArticleEntity;
import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

/**
* 文章信息Dao
*/
@Component("ArticleDao")
public interface ArticleDao extends BaseCommonDAO_HI<ArticleEntity> {

@Select("select count(1) from yxh_article where promotion_status = 1 and task_status = 1")
int findRecommend();
}

+ 11
- 0
1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/dao/ArticleGatherDao.java Dosyayı Görüntüle

@@ -0,0 +1,11 @@
package com.yuexiu.secp.read.model.dao;

import com.sie.iot.common.model.dao.BaseCommonDAO_HI;
import com.yuexiu.secp.read.model.entities.ArticleGatherEntity;
import org.springframework.stereotype.Component;

@Component("ArticleGatherDao")
public interface ArticleGatherDao extends BaseCommonDAO_HI<ArticleGatherEntity> {


}

+ 5
- 4
1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/dao/ArticlePreviewDao.java Dosyayı Görüntüle

@@ -1,13 +1,14 @@
package com.yuexiu.secp.read.model.dao;

import com.sie.iot.common.model.dao.BaseCommonDAO_HI;
import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity;
import org.apache.ibatis.annotations.Select;
import com.sie.iot.common.model.dao.BaseCommonDAO_HI;
import org.springframework.stereotype.Component;

/**
* 文章信息预览Dao
*/
@Component("ArticlePreviewDao")
public interface ArticlePreviewDao extends BaseCommonDAO_HI<ArticlePreviewEntity> {

@Select("select * from sie_article_preview where promotion_status = 1 and task_status = 1")
int findRecommend();

}

+ 396
- 0
1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/entities/ArticleEntity.java Dosyayı Görüntüle

@@ -0,0 +1,396 @@
package com.yuexiu.secp.read.model.entities;

import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sie.iot.common.idgenerate.GeneratedKeyValue;
import io.swagger.annotations.ApiModel;
import lombok.Data;


@Data
@TableName("yxh_article")
@GeneratedKeyValue
@ApiModel(value = "文章信息表")
public class ArticleEntity {
private Long articleId;
private String publishUnit;
private String articleTitle;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date spreadBeginTime;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date spreadEndTime;
private Integer shareType;
private String copywrite1;
private String copywrite2;
private String copywrite3;
private String copywrite4;
private String copywrite5;
private String shareTitle;
private String shareImg;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date releaseTime;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date releaseTaskTime;
private Integer releaseTaskUser;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date endTaskTime;
private Integer endTaskUser;
private Integer taskStatus;
private Integer promotionStatus;
private Integer approvalStatus;
private Integer approvalUser;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date approvalTime;
private Integer articleType;
private String articleTypeAlias;
private String authorName;
private String authorLogo;
private String articleUrl;
private String codeImg;
private Long tenantId;
private Long createdBy;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date creationDate;
private Long lastUpdatedBy;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date lastUpdateDate;
private Long lastUpdateLogin;
private Integer deleteFlag;
private Integer versionNum;

public void setArticleId(Long articleId) {
this.articleId = articleId;
}

public Long getArticleId() {
return articleId;
}

public void setPublishUnit(String publishUnit) {
this.publishUnit = publishUnit;
}

public String getPublishUnit() {
return publishUnit;
}

public void setArticleTitle(String articleTitle) {
this.articleTitle = articleTitle;
}

public String getArticleTitle() {
return articleTitle;
}

public void setSpreadBeginTime(Date spreadBeginTime) {
this.spreadBeginTime = spreadBeginTime;
}

public Date getSpreadBeginTime() {
return spreadBeginTime;
}

public void setSpreadEndTime(Date spreadEndTime) {
this.spreadEndTime = spreadEndTime;
}

public Date getSpreadEndTime() {
return spreadEndTime;
}

public void setShareType(Integer shareType) {
this.shareType = shareType;
}

public Integer getShareType() {
return shareType;
}

public void setCopywrite1(String copywrite1) {
this.copywrite1 = copywrite1;
}

public String getCopywrite1() {
return copywrite1;
}

public void setCopywrite2(String copywrite2) {
this.copywrite2 = copywrite2;
}

public String getCopywrite2() {
return copywrite2;
}

public void setCopywrite3(String copywrite3) {
this.copywrite3 = copywrite3;
}

public String getCopywrite3() {
return copywrite3;
}

public void setCopywrite4(String copywrite4) {
this.copywrite4 = copywrite4;
}

public String getCopywrite4() {
return copywrite4;
}

public void setCopywrite5(String copywrite5) {
this.copywrite5 = copywrite5;
}

public String getCopywrite5() {
return copywrite5;
}

public void setShareTitle(String shareTitle) {
this.shareTitle = shareTitle;
}

public String getShareTitle() {
return shareTitle;
}

public void setShareImg(String shareImg) {
this.shareImg = shareImg;
}

public String getShareImg() {
return shareImg;
}

public void setReleaseTime(Date releaseTime) {
this.releaseTime = releaseTime;
}

public Date getReleaseTime() {
return releaseTime;
}

public void setReleaseTaskTime(Date releaseTaskTime) {
this.releaseTaskTime = releaseTaskTime;
}

public Date getReleaseTaskTime() {
return releaseTaskTime;
}

public void setReleaseTaskUser(Integer releaseTaskUser) {
this.releaseTaskUser = releaseTaskUser;
}

public Integer getReleaseTaskUser() {
return releaseTaskUser;
}

public void setEndTaskTime(Date endTaskTime) {
this.endTaskTime = endTaskTime;
}

public Date getEndTaskTime() {
return endTaskTime;
}

public void setEndTaskUser(Integer endTaskUser) {
this.endTaskUser = endTaskUser;
}

public Integer getEndTaskUser() {
return endTaskUser;
}

public void setTaskStatus(Integer taskStatus) {
this.taskStatus = taskStatus;
}

public Integer getTaskStatus() {
return taskStatus;
}

public void setPromotionStatus(Integer promotionStatus) {
this.promotionStatus = promotionStatus;
}

public Integer getPromotionStatus() {
return promotionStatus;
}

public void setApprovalStatus(Integer approvalStatus) {
this.approvalStatus = approvalStatus;
}

public Integer getApprovalStatus() {
return approvalStatus;
}

public void setApprovalUser(Integer approvalUser) {
this.approvalUser = approvalUser;
}

public Integer getApprovalUser() {
return approvalUser;
}

public void setApprovalTime(Date approvalTime) {
this.approvalTime = approvalTime;
}

public Date getApprovalTime() {
return approvalTime;
}

public void setArticleType(Integer articleType) {
this.articleType = articleType;
}

public Integer getArticleType() {
return articleType;
}

public void setArticleTypeAlias(String articleTypeAlias) {
this.articleTypeAlias = articleTypeAlias;
}

public String getArticleTypeAlias() {
return articleTypeAlias;
}

public void setAuthorName(String authorName) {
this.authorName = authorName;
}

public String getAuthorName() {
return authorName;
}

public void setAuthorLogo(String authorLogo) {
this.authorLogo = authorLogo;
}

public String getAuthorLogo() {
return authorLogo;
}

public void setArticleUrl(String articleUrl) {
this.articleUrl = articleUrl;
}

public String getArticleUrl() {
return articleUrl;
}

public void setCodeImg(String codeImg) {
this.codeImg = codeImg;
}

public String getCodeImg() {
return codeImg;
}

public void setTenantId(Long tenantId) {
this.tenantId = tenantId;
}

public Long getTenantId() {
return tenantId;
}

public void setCreatedBy(Long createdBy) {
this.createdBy = createdBy;
}

public Long getCreatedBy() {
return createdBy;
}

public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}

public Date getCreationDate() {
return creationDate;
}

public void setLastUpdatedBy(Long lastUpdatedBy) {
this.lastUpdatedBy = lastUpdatedBy;
}

public Long getLastUpdatedBy() {
return lastUpdatedBy;
}

public void setLastUpdateDate(Date lastUpdateDate) {
this.lastUpdateDate = lastUpdateDate;
}

public Date getLastUpdateDate() {
return lastUpdateDate;
}

public void setLastUpdateLogin(Long lastUpdateLogin) {
this.lastUpdateLogin = lastUpdateLogin;
}

public Long getLastUpdateLogin() {
return lastUpdateLogin;
}

public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}

public Integer getDeleteFlag() {
return deleteFlag;
}

public void setVersionNum(Integer versionNum) {
this.versionNum = versionNum;
}

public Integer getVersionNum() {
return versionNum;
}
}


+ 158
- 0
1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/entities/ArticleGatherEntity.java Dosyayı Görüntüle

@@ -0,0 +1,158 @@
package com.yuexiu.secp.read.model.entities;

import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sie.iot.common.idgenerate.GeneratedKeyValue;
import com.sie.iot.common.model.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;

/**
* 文章推广汇总表
*/
@Data
@TableName("yxh_article_gather")
@GeneratedKeyValue
@ApiModel(value = "文章推广汇总表")
public class ArticleGatherEntity extends BaseEntity<ArticleGatherEntity> {
@TableId(value = "article_gather_id", type = IdType.ASSIGN_ID)
private Long articleGatherId;
private Long articleId;
private Integer readCount;
private Integer totalPoint;
private Integer shareCount;
private Integer thumbsCount;
private Long tenantId;
private Long createdBy;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date creationDate;
private Long lastUpdatedBy;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date lastUpdateDate;
private Long lastUpdateLogin;
private Integer deleteFlag;

public void setArticleGatherId(Long articleGatherId) {
this.articleGatherId = articleGatherId;
}



public Long getArticleGatherId() {
return articleGatherId;
}

public void setArticleId(Long articleId) {
this.articleId = articleId;
}


public Long getArticleId() {
return articleId;
}

public void setReadCount(Integer readCount) {
this.readCount = readCount;
}


public Integer getReadCount() {
return readCount;
}

public void setTotalPoint(Integer totalPoint) {
this.totalPoint = totalPoint;
}


public Integer getTotalPoint() {
return totalPoint;
}

public void setShareCount(Integer shareCount) {
this.shareCount = shareCount;
}


public Integer getShareCount() {
return shareCount;
}

public void setThumbsCount(Integer thumbsCount) {
this.thumbsCount = thumbsCount;
}


public Integer getThumbsCount() {
return thumbsCount;
}

public void setTenantId(Long tenantId) {
this.tenantId = tenantId;
}


public Long getTenantId() {
return tenantId;
}

public void setCreatedBy(Long createdBy) {
this.createdBy = createdBy;
}


public Long getCreatedBy() {
return createdBy;
}

public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}


public Date getCreationDate() {
return creationDate;
}

public void setLastUpdatedBy(Long lastUpdatedBy) {
this.lastUpdatedBy = lastUpdatedBy;
}


public Long getLastUpdatedBy() {
return lastUpdatedBy;
}

public void setLastUpdateDate(Date lastUpdateDate) {
this.lastUpdateDate = lastUpdateDate;
}


public Date getLastUpdateDate() {
return lastUpdateDate;
}

public void setLastUpdateLogin(Long lastUpdateLogin) {
this.lastUpdateLogin = lastUpdateLogin;
}


public Long getLastUpdateLogin() {
return lastUpdateLogin;
}

public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}


public Integer getDeleteFlag() {
return deleteFlag;
}


}


+ 0
- 2
1068-yexiu-read-model-mybatis/src/main/java/com/yuexiu/secp/read/model/entities/ArticlePreviewContentEntity.java Dosyayı Görüntüle

@@ -1,6 +1,5 @@
package com.yuexiu.secp.read.model.entities;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -11,7 +10,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
@TableName("yx_article_preview_content")


+ 23
- 0
2068-yexiu-read-api/src/main/java/com/yuexiu/secp/read/dto/ArticleAddCountDto.java Dosyayı Görüntüle

@@ -0,0 +1,23 @@
package com.yuexiu.secp.read.dto;
/**
* 用于增加文章统计数 + 1
*/

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@NoArgsConstructor
@ApiModel(value = "增加文章统计数Dto")
public class ArticleAddCountDto {

@ApiModelProperty(value = "文章id")
private String articleId;

@ApiModelProperty(value = "类型 - 1:阅读数 2:分享数")
private Integer type;

}

+ 32
- 0
2068-yexiu-read-api/src/main/java/com/yuexiu/secp/read/dto/ArticleQueryDto.java Dosyayı Görüntüle

@@ -0,0 +1,32 @@
package com.yuexiu.secp.read.dto;
/**
* 查询最新推荐和我已推荐的Dto
*/

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@NoArgsConstructor
@ApiModel(value = "查询最新推荐和我已推荐的Dto")
public class ArticleQueryDto {

@ApiModelProperty(value = "推广状态")
private int promotionStatus;

@ApiModelProperty(value = "任务状态")
private int taskStatus;

@ApiModelProperty(value = "项目id")
private int projectId;

@ApiModelProperty(value = "城市id")
private int cityId;

@ApiModelProperty(value = "用户id")
private int userId;

}

+ 23
- 0
2068-yexiu-read-api/src/main/java/com/yuexiu/secp/read/vo/StatisticsRespVo.java Dosyayı Görüntüle

@@ -0,0 +1,23 @@
package com.yuexiu.secp.read.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
* 封装统计数返回对象
*/
@Data
@NoArgsConstructor
public class StatisticsRespVo {

@ApiModelProperty(value = "文章id")
private String articleId;

@ApiModelProperty(value = "阅读数")
private String read;

@ApiModelProperty(value = "分享数")
private String share;

}

+ 56
- 0
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/controller/ArticleController.java Dosyayı Görüntüle

@@ -0,0 +1,56 @@
package com.yuexiu.secp.read.controller;

import com.sie.iot.common.bean.ResponseData;
import com.sie.iot.common.secure.annotation.CheckToken;
import com.yuexiu.secp.read.dto.ArticleQueryDto;
import com.yuexiu.secp.read.model.entities.ArticleEntity;
import com.yuexiu.secp.read.model.service.IArticleServer;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@Validated
@Api(value = "阅读有礼-文章", tags = "阅读有礼-文章")
@RestController
@RequestMapping("/ArticleController")
public class ArticleController {


@Autowired
private IArticleServer iArticleServer;

/**
* 最新推查询
* @param articleQueryDto
* @return
*/
@ApiOperation(value = "查询最新推荐", notes = "根据城市与项目查询最新推荐数据")
@PostMapping(value = "/findNewest")
@CheckToken
public ResponseData<List<ArticleEntity>> findNewest(@RequestBody ArticleQueryDto articleQueryDto) {
List<ArticleEntity> recommendedAndPast = iArticleServer.findNewest(articleQueryDto);
return ResponseData.data(recommendedAndPast);
}

/**
* 查询往期推荐
*/
@ApiOperation(value = "查询往期推荐", notes = "根据城市与项目查询往期推荐数据")
@PostMapping(value = "/findPrevious")
@CheckToken
public ResponseData<List<ArticleEntity>> findPrevious(@RequestBody ArticleQueryDto articleQueryDto) {
List<ArticleEntity> recommendedAndPast = iArticleServer.findPrevious(articleQueryDto);
return ResponseData.data(recommendedAndPast);
}






}

+ 45
- 0
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/controller/ArticleGatherController.java Dosyayı Görüntüle

@@ -0,0 +1,45 @@
package com.yuexiu.secp.read.controller;


import com.sie.iot.common.secure.annotation.CheckToken;
import com.yuexiu.secp.read.dto.ArticleAddCountDto;
import com.yuexiu.secp.read.model.service.IArticleGatherServer;
import com.yuexiu.secp.read.vo.StatisticsRespVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;


@Validated
@Api(value = "阅读有礼-文章推广汇总", tags = "阅读有礼-文章推广汇总")
@RestController
@RequestMapping("/ArticleGatherController")
public class ArticleGatherController {


@Autowired
private IArticleGatherServer iArticleGatherServer;

@ApiOperation(value = "根据文章id阅读数和分享数", notes = "根据文章id阅读数和分享数")
@GetMapping(value = "/find/{articleId}/count")
@CheckToken
public StatisticsRespVo findByArticleIdCount(@PathVariable Long articleId) {
return iArticleGatherServer.findByArticleIdCount(articleId);
}


/**
* 根据文章id增加相关的文章阅读数和分享数
*/
@ApiOperation(value = "根据文章id增加相关的文章阅读数和分享数", notes = "根据文章id增加相关的文章阅读数和分享数")
@PostMapping(value = "/add/ArticleCount")
@CheckToken
public void addArticleCount(@RequestBody ArticleAddCountDto articlePreviewDto) {
iArticleGatherServer.addArticleCount(articlePreviewDto);

}


}

+ 1
- 10
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/controller/ArticlePreviewController.java Dosyayı Görüntüle

@@ -1,16 +1,12 @@
package com.yuexiu.secp.read.controller;

import com.alibaba.fastjson.JSONObject;
import com.sie.iot.common.bean.RequestData;
import com.sie.iot.common.bean.ResponseData;
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.yuexiu.secp.read.dto.CostUnitDto;
import com.yuexiu.secp.read.dto.RecommendDto;
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.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,14 +22,9 @@ public class ArticlePreviewController extends CommonAbstractService {

@Override
public IBaseCommon<?> getBaseCommonServer() {
return this.iReadService;;
return this.iReadService;
}

@GetMapping(value = "/findRecommendedAndPast")
public String findRecommendedAndPast(RecommendDto articlePreviewDto) {

return iReadService.findRecommendedAndPast(articlePreviewDto);
}

@ApiOperation(value = "保存成本单位", notes = "保存成本单位")
@PostMapping(value = "/save")


+ 29
- 0
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/IArticleGatherServer.java Dosyayı Görüntüle

@@ -0,0 +1,29 @@
package com.yuexiu.secp.read.model.service;

import com.yuexiu.secp.read.dto.ArticleAddCountDto;
import com.yuexiu.secp.read.model.entities.ArticleGatherEntity;
import com.yuexiu.secp.read.vo.StatisticsRespVo;

public interface IArticleGatherServer {

/**
* 根据类型和文章id,获取统计数
* @param articleId
*/
String findByArticleIdAndTypeCount(Long articleId , int type);

/**
* 根据文章id获取相关统计数
* @param articleId
*/
StatisticsRespVo findByArticleIdCount(Long articleId);


/**
* 根据文章和类型,增加相关的统计数
* @param articlePreviewDto
*/
void addArticleCount(ArticleAddCountDto articlePreviewDto);


}

+ 0
- 2
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/IArticlePreview.java Dosyayı Görüntüle

@@ -3,14 +3,12 @@ package com.yuexiu.secp.read.model.service;

import com.sie.iot.common.model.inter.IBaseCommon;
import com.yuexiu.secp.read.dto.ArticlePreviewDto;
import com.yuexiu.secp.read.dto.RecommendDto;
import com.yuexiu.secp.read.model.entities.ArticlePreviewEntity;
import com.yuexiu.secp.read.model.entities.CostUnitEntity;

public interface IArticlePreview extends IBaseCommon<CostUnitEntity> {


String findRecommendedAndPast(RecommendDto articlePreviewDto);


ArticlePreviewEntity saveArticlePreview(ArticlePreviewDto dto);


+ 18
- 0
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/IArticleServer.java Dosyayı Görüntüle

@@ -0,0 +1,18 @@
package com.yuexiu.secp.read.model.service;



import com.yuexiu.secp.read.dto.ArticleQueryDto;
import com.yuexiu.secp.read.model.entities.ArticleEntity;


import java.util.List;

public interface IArticleServer {

List<ArticleEntity> findNewest(ArticleQueryDto articleQueryDto);


List<ArticleEntity> findPrevious(ArticleQueryDto articleQueryDto);

}

+ 96
- 0
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/impl/ArticleGatherServer.java Dosyayı Görüntüle

@@ -0,0 +1,96 @@
package com.yuexiu.secp.read.model.service.impl;

import com.itextpdf.text.log.Logger;
import com.itextpdf.text.log.LoggerFactory;
import com.sie.iot.common.model.inter.server.BaseCommonServer;
import com.yuexiu.secp.read.dto.ArticleAddCountDto;
import com.yuexiu.secp.read.infra.constant.ArticleConstant;
import com.yuexiu.secp.read.infra.util.RedisUtils;
import com.yuexiu.secp.read.model.entities.ArticleGatherEntity;
import com.yuexiu.secp.read.model.service.IArticleGatherServer;
import com.yuexiu.secp.read.vo.StatisticsRespVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

@Service
public class ArticleGatherServer extends BaseCommonServer<ArticleGatherEntity> implements IArticleGatherServer {

private static final Logger LOGGER = LoggerFactory.getLogger(ArticleGatherServer.class);

//阅读标记
public final static Integer READ_TYPE = 1;

//阅读标记
public final static Integer SHARE_TYPE = 2;


/**
* redis
*/
@Autowired
private StringRedisTemplate redisTemplate;


/**
* 获取文章统计数
* type:
* 1:阅读数
* 2:转发数
*
* @param articleId
*/
public String findByArticleIdAndTypeCount(Long articleId, int type) {
LOGGER.info("articleId : {}" + articleId + "type --> {}" + type);
String count = "";
if (type == READ_TYPE) {
count = redisTemplate.opsForValue().get(RedisUtils.getRedisKey(ArticleConstant.SIE, ArticleConstant.READ, String.valueOf(articleId)));
} else if (type == SHARE_TYPE) {
count = redisTemplate.opsForValue().get(RedisUtils.getRedisKey(ArticleConstant.SIE, ArticleConstant.SHARE, String.valueOf(articleId)));
}
return count;
}

/**
* 根据文章id获取相关统计数
*
* @param articleId
*/
@Override
public StatisticsRespVo findByArticleIdCount(Long articleId) {
LOGGER.info("articleId : {}" + articleId);

StatisticsRespVo statisticsRespVo = new StatisticsRespVo();
//获取阅读数
String read = this.findByArticleIdAndTypeCount(articleId, READ_TYPE);
String share = this.findByArticleIdAndTypeCount(articleId, SHARE_TYPE);
LOGGER.info("该文章id:" + articleId + "获取到的阅读数:" + read + "和分享数:" + share);
//组装数据
statisticsRespVo.setRead(!StringUtils.isEmpty(read) ? read : "0");
statisticsRespVo.setShare(!StringUtils.isEmpty(share) ? read : "0");

return statisticsRespVo;

}


/**
* 根据文章和类型,增加相关的统计数
*
* @param articlePreviewDto
*/
@Override
public void addArticleCount(ArticleAddCountDto articlePreviewDto) {
LOGGER.info("articlePreviewDto : {}" + articlePreviewDto);
if (articlePreviewDto.getType() == READ_TYPE) {
redisTemplate.opsForValue().increment(RedisUtils.getRedisKey(ArticleConstant.SIE, ArticleConstant.READ, articlePreviewDto.getArticleId()), 1L);
} else if (articlePreviewDto.getType() == SHARE_TYPE) {
redisTemplate.opsForValue().increment(RedisUtils.getRedisKey(ArticleConstant.SIE, ArticleConstant.SHARE, articlePreviewDto.getArticleId()), 1L);
} else {
LOGGER.error("传参有误,没有定义该类型:" + articlePreviewDto.getType());
}
}


}

+ 0
- 64
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/impl/ArticlePreviewServer.java Dosyayı Görüntüle

@@ -36,70 +36,6 @@ public class ArticlePreviewServer extends BaseCommonServer<CostUnitEntity> imple
private ArticlePreviewDao articlePreviewDao;


@Override
public String findRecommendedAndPast(RecommendDto articlePreviewDto) {
//项目的集合信息
List<ArticlePreviewEntity> projectList = new ArrayList<>();

//城市的集合信息
List<ArticlePreviewEntity> articlePreviewList = new ArrayList<>();

List<ArticlePreviewEntity> dataList = new ArrayList<>();

//查询是否有最新推荐
int count = articlePreviewDao.findRecommend();
if (count < 1) {
return "为空";
}
//获取当前登录用户

//获取我已推荐的文章
Set<String> recommendIdList = redisTemplate.opsForSet().members("sie:recommend:1");
//获取所有文章的信息
Map<Object, Object> entries = redisTemplate.opsForHash().entries("sie:read:article");

ObjectMapper objectMapper = new ObjectMapper();
//剔除我已推荐文章
for (String recommendId : recommendIdList) {
entries.remove(recommendId);
}
Collection<Object> values = entries.values();

//判断是否有房产
if (true) {
for (Object value : values) {
//匹配项目,任务状态为已发布 , 推广状态为有效
ArticlePreviewEntity articlePreview = objectMapper.convertValue(value,ArticlePreviewEntity.class);
if(articlePreview.getPromotionStatus() == articlePreviewDto.getPromotionStatus() &&
articlePreview.getTaskStatus() == articlePreviewDto.getTaskStatus()){
//往城市里的集合塞数据
projectList.add(articlePreview);
}
System.out.println(value);
}
}


for (Object value : values) {
//匹配城市,任务状态为已发布 , 推广状态为有效
ArticlePreviewEntity articlePreview = objectMapper.convertValue(value,ArticlePreviewEntity.class);
if(articlePreview.getPromotionStatus() == articlePreviewDto.getPromotionStatus() &&
articlePreview.getTaskStatus() == articlePreviewDto.getTaskStatus()){
//往城市里的集合塞数据
articlePreviewList.add(articlePreview);
}
System.out.println(value);
}

//如果项目类型不为空,合并项目和城市
if(!CollectionUtils.isEmpty(projectList)){
Iterables.addAll(dataList, projectList);
Iterables.addAll(dataList, articlePreviewList);
}


return "不为空";
}

@Override
public ArticlePreviewEntity saveArticlePreview(ArticlePreviewDto dto) {


+ 124
- 0
2068-yexiu-read-application/src/main/java/com/yuexiu/secp/read/model/service/impl/ArticleServer.java Dosyayı Görüntüle

@@ -0,0 +1,124 @@
package com.yuexiu.secp.read.model.service.impl;


import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Iterables;
import com.yuexiu.secp.read.dto.ArticleQueryDto;
import com.yuexiu.secp.read.infra.constant.ArticleConstant;
import com.yuexiu.secp.read.infra.util.RedisUtils;
import com.yuexiu.secp.read.model.dao.ArticleDao;
import com.yuexiu.secp.read.model.entities.ArticleEntity;

import com.yuexiu.secp.read.model.service.IArticleServer;

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 java.util.*;

/**
* @author YuChengLong
* @date 2022/5/10
*/

@Service
public class ArticleServer implements IArticleServer{


/**
* redis
*/
@Autowired
private StringRedisTemplate redisTemplate;

/**
* 文章DAO
*/
@Autowired
private ArticleDao articleDao;


/**
* 最新推荐
* @param articleQueryDto
* @return
*/
@Override
public List<ArticleEntity> findNewest(ArticleQueryDto articleQueryDto) {
//项目的集合信息
List<ArticleEntity> projectList = new ArrayList<>();

//城市的集合信息
List<ArticleEntity> articlePreviewList = new ArrayList<>();

List<ArticleEntity> dataList = new ArrayList<>();

//查询是否有最新推荐
int count = articleDao.findRecommend();
if (count < 1) {
return null;
}
//获取当前登录用户

//获取我已推荐的文章
Set<String> recommendIdList = redisTemplate.opsForSet().members(RedisUtils.getRedisKey(ArticleConstant.SIE , ArticleConstant.RECOMMEND ,String.valueOf(articleQueryDto.getUserId())));
//获取所有文章的信息
Map<Object, Object> entries = redisTemplate.opsForHash().entries(RedisUtils.getRedisKey(ArticleConstant.SIE , ArticleConstant.READ ,ArticleConstant.ARTICLE));
ObjectMapper objectMapper = new ObjectMapper();
//剔除我已推荐文章
for (String recommendId : recommendIdList) {
entries.remove(recommendId);
}
Collection<Object> values = entries.values();

//判断是否有房产
//todo 调用第三方接口cdp,查询是否有房产
if (true) {
for (Object value : values) {
//匹配项目,任务状态为已发布 , 推广状态为有效
ArticleEntity articlePreview = objectMapper.convertValue(value,ArticleEntity.class);
if(articlePreview.getPromotionStatus() == articleQueryDto.getPromotionStatus() &&
articlePreview.getTaskStatus() == articleQueryDto.getTaskStatus()){
//往城市里的集合塞数据
projectList.add(articlePreview);
}
System.out.println(value);
}
}


for (Object value : values) {
//匹配城市,任务状态为已发布 , 推广状态为有效
ArticleEntity articlePreview = objectMapper.convertValue(value,ArticleEntity.class);
if(articlePreview.getPromotionStatus() == articleQueryDto.getPromotionStatus() &&
articlePreview.getTaskStatus() == articleQueryDto.getTaskStatus()){
//往城市里的集合塞数据
articlePreviewList.add(articlePreview);
}
System.out.println(value);
}

//如果项目类型不为空,合并项目和城市
if(!CollectionUtils.isEmpty(projectList)){
Iterables.addAll(dataList, projectList);
Iterables.addAll(dataList, articlePreviewList);
}

return dataList;
}

/**
* 往期推荐
* @param articleQueryDto
* @return
*/
@Override
public List<ArticleEntity> findPrevious(ArticleQueryDto articleQueryDto) {
return null;
}



}

Yükleniyor…
İptal
Kaydet