Skip to content

Commit

Permalink
add: 新增分页查询赞助者信息接口
Browse files Browse the repository at this point in the history
add: 新增赞助者信息查询Finder支持
  • Loading branch information
carolcoral committed May 20, 2024
1 parent 8220083 commit cbf27a2
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 57 deletions.
5 changes: 1 addition & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,14 +95,11 @@ halo:
### 查询赞助者
* api: `/apis/api.plugin.halo.run/v1alpha1/plugins/plugin-afdian/afdian/getSponsorList`

### 分页查询赞助者
* api: `/apis/api.plugin.halo.run/v1alpha1/plugins/plugin-afdian/afdian/getSponsorList/{pageNumber}`

## Finder

### 分页查询赞助者
* afdianFinder.listSponsor(String pageNumber)
* 例如: <div th:text="${afdianFinder.listSponsor('1')}"></div>
* 例如: <div th:text="${afdianFinder.listSponsor(1)}"></div>

### 查询全部赞助者
* afdianFinder.listAllSponsor()
Expand Down
12 changes: 4 additions & 8 deletions src/main/java/site/xindu/afdian/controller/AfdianController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

import com.fasterxml.jackson.databind.JsonNode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.repository.query.Param;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
import site.xindu.afdian.service.SponsorService;
import run.halo.app.plugin.ApiVersion;
import site.xindu.afdian.service.SponsorService;

@ApiVersion("v1alpha1")
@RequestMapping("/afdian")
Expand All @@ -25,12 +25,8 @@ public AfdianController(SponsorService sponsorService) {


@GetMapping("/getSponsorList")
public Mono<JsonNode> getFirstSponsorList(){
return sponsorService.getSponsorList("1");
public Mono<JsonNode> listAllSponsor(){
return sponsorService.listAllSponsor();
}

@GetMapping(value = "/getSponsorList/{pageNumber}")
public Mono<JsonNode> getFirstSponsorList(@PathVariable String pageNumber){
return sponsorService.getSponsorList(pageNumber);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public interface AfdianFinderService {
* 分页获取赞助者信息
* @return {@link SponsorEntity}
*/
Mono<JsonNode> listSponsor(String pageNumber);
Mono<JsonNode> listSponsor(int pageNumber);

/**
* 获取全部赞助者信息
Expand Down
58 changes: 35 additions & 23 deletions src/main/java/site/xindu/afdian/service/SponsorService.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
package site.xindu.afdian.service;

import com.fasterxml.jackson.databind.JsonNode;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
import run.halo.app.infra.utils.JsonUtils;
import run.halo.app.plugin.ReactiveSettingFetcher;
import site.xindu.afdian.entity.SponsorEntity;
import site.xindu.afdian.utils.EncryptUtils;
import run.halo.app.plugin.ReactiveSettingFetcher;

@Service
@Slf4j
Expand All @@ -32,15 +33,8 @@ public SponsorService(ReactiveSettingFetcher settingFetcher) {
/**
* 获取第一页的爱发电赞助用户
*/
public Mono<JsonNode> getFirstSponsorList() {
return getSponsorList("1");
}

/**
* 获取第一页的爱发电赞助用户
*/
public Mono<JsonNode> getSponsorList(String pageNumber) {
var mono = this.settingFetcher.get("basic").flatMap(base -> {
public Mono<JsonNode> getSponsorList(int pageNumber) {
return this.settingFetcher.get("basic").flatMap(base -> {
String token = base.get("token").asText();
String userId = base.get("userId").asText();
String url = "/api/open/query-sponsor";
Expand All @@ -53,24 +47,42 @@ public Mono<JsonNode> getSponsorList(String pageNumber) {
String signMd5 = EncryptUtils.encrypt32(sign);

params.put("user_id", userId);
params.put("params", "{\"page\":" + pageNumber + "}");
params.put("params", "{\"page\":" + String.valueOf(pageNumber) + "}");
params.put("ts", timeInMillis);
params.put("sign", signMd5);

var body =
webClient.post().uri(url).contentType(MediaType.APPLICATION_JSON) // JSON数据类型
return webClient.post().uri(url).contentType(MediaType.APPLICATION_JSON) // JSON数据类型
.body(BodyInserters.fromValue(params)) // JSON字符串数据
.retrieve() // 获取响应体
.bodyToMono(JsonNode.class);// 响应数据类型转换
return body;
.bodyToMono(JsonNode.class);
});
mono.doOnSuccess(result -> {
SponsorEntity sponsorEntity =
JsonUtils.jsonToObject(result.toString(), SponsorEntity.class);
log.info("content: {}", sponsorEntity);
log.info("data: {}", sponsorEntity.getData());
}).subscribe();
return mono;
}

/**
* 获取全部赞助者信息
*
* @return {@link SponsorEntity}
*/
public Mono<JsonNode> listAllSponsor() {
List<SponsorEntity.SponsorJsonData> sources = new ArrayList<>();
var firstSponsorList = getSponsorList(1);
firstSponsorList.doOnSuccess(result -> {
SponsorEntity sponsorEntity =
JsonUtils.jsonToObject(result.asText(), SponsorEntity.class);
var data = sponsorEntity.getData();
int totalPage = data.getTotal_page();
List<SponsorEntity.SponsorJsonData> dataList = data.getList();
sources.addAll(dataList);
for (int i = 2; i <= totalPage; i++) {
var sponsorList = getSponsorList(i);
sponsorList.doOnSuccess(jsonNode -> {
SponsorEntity sponsor =
JsonUtils.jsonToObject(jsonNode.asText(), SponsorEntity.class);
sources.addAll(sponsor.getData().getList());
}).subscribe();
}
data.setList(sources);
});
return firstSponsorList;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class AfdianFinderServiceImpl implements AfdianFinderService {
* @return {@link SponsorEntity}
*/
@Override
public Mono<JsonNode> listSponsor(String pageNumber) {
public Mono<JsonNode> listSponsor(int pageNumber) {
return sponsorService.getSponsorList(pageNumber);
}

Expand All @@ -34,25 +34,6 @@ public Mono<JsonNode> listSponsor(String pageNumber) {
*/
@Override
public Mono<JsonNode> listAllSponsor() {
List<SponsorEntity.SponsorJsonData> sources = new ArrayList<>();
var firstSponsorList = sponsorService.getFirstSponsorList();
firstSponsorList.doOnSuccess(result -> {
SponsorEntity sponsorEntity =
JsonUtils.jsonToObject(result.asText(), SponsorEntity.class);
var data = sponsorEntity.getData();
int totalPage = data.getTotal_page();
List<SponsorEntity.SponsorJsonData> dataList = data.getList();
sources.addAll(dataList);
for (int i = 2; i <= totalPage; i++) {
var sponsorList = sponsorService.getSponsorList(String.valueOf(i));
sponsorList.doOnSuccess(jsonNode -> {
SponsorEntity sponsor =
JsonUtils.jsonToObject(jsonNode.asText(), SponsorEntity.class);
sources.addAll(sponsor.getData().getList());
});
}
data.setList(sources);
});
return firstSponsorList;
return sponsorService.listAllSponsor();
}
}

0 comments on commit cbf27a2

Please sign in to comment.