You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.7 KiB
104 lines
3.7 KiB
3 years ago
|
/*
|
||
|
* Copyright (C), 2018-2021
|
||
|
* Project: starter
|
||
|
* FileName: WechatTableDataModel
|
||
|
* Author: xxx
|
||
|
* Date: 2021/12/8 19:09
|
||
|
*/
|
||
|
package com.fr.plugin.xxx.data;
|
||
|
|
||
|
import com.fanruan.api.i18n.I18nKit;
|
||
|
import com.fanruan.api.log.LogKit;
|
||
|
import com.fr.json.JSONArray;
|
||
|
import com.fr.json.JSONObject;
|
||
|
import com.fr.log.FineLoggerFactory;
|
||
|
import com.fr.plugin.context.PluginContexts;
|
||
|
import com.fr.plugin.xxx.kit.HttpKit;
|
||
|
import com.fr.plugin.xxx.util.RSAUtils;
|
||
|
import com.fr.stable.ParameterProvider;
|
||
|
import com.fr.third.org.apache.commons.codec.binary.Base64;
|
||
|
|
||
|
import java.io.IOException;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.HashMap;
|
||
|
import java.util.Map;
|
||
|
|
||
|
/**
|
||
|
* <Function Description><br>
|
||
|
* <UsersTableDataModel>
|
||
|
*
|
||
|
* @author xxx
|
||
|
* @since 1.0.0
|
||
|
*/
|
||
|
public class UsersTableDataModel extends WebTableDataModel {
|
||
|
public static final String TOTAL_CAGE_SUM = "totalCageSum";
|
||
|
public static final String FREE_PRE = "freePre";
|
||
|
public static final String NAME = "name";
|
||
|
public static final String FREE_CAGE_SUM = "freeCageSum";
|
||
|
public static final String FEED_ANIMAL_SUM = "feedAnimalSum";
|
||
|
private static final long serialVersionUID = 1561845127687781184L;
|
||
|
|
||
|
public UsersTableDataModel(ParameterProvider[] parameters) {
|
||
|
super(parameters);
|
||
|
// this.columnNames = new String[]{TOTAL_CAGE_SUM, FREE_PRE, NAME, FREE_CAGE_SUM, FEED_ANIMAL_SUM};
|
||
|
this.columnNames = new String[]{"总笼位", "空置率", "名称", "空笼位", "在笼猴子数"};
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void init() {
|
||
|
if (!PluginContexts.currentContext().isAvailable()) {
|
||
|
LogKit.error(I18nKit.getLocText("Plugin-xxx_Licence_Expired"));
|
||
|
return;
|
||
|
}
|
||
|
if (this.valueList != null) {
|
||
|
return;
|
||
|
}
|
||
|
this.valueList = new ArrayList();
|
||
|
// 域名
|
||
|
this.host = this.parameters[0].getValue().toString();
|
||
|
// 应用标识
|
||
|
String apiKey = this.parameters[1].getValue().toString();
|
||
|
// 公钥
|
||
|
String publicKey = this.parameters[2].getValue().toString();
|
||
|
try {
|
||
|
JSONArray usersInfo = getUserInfo(apiKey, publicKey);
|
||
|
addFRUserInfo2List(usersInfo);
|
||
|
} catch (Exception e) {
|
||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 人员获取
|
||
|
*
|
||
|
* @param apiKey
|
||
|
* @param publicKey
|
||
|
* @return
|
||
|
* @throws IOException
|
||
|
*/
|
||
|
private JSONArray getUserInfo(String apiKey, String publicKey) throws Exception {
|
||
|
Map<String, String> header = new HashMap<>();
|
||
|
header.put("API_KEY", apiKey);
|
||
|
String response = HttpKit.get(this.host, new HashMap<>(), header);
|
||
|
LogKit.info("xxx-UsersTableDataModel-getUserInfo-response:{}", response);
|
||
|
byte[] bytes = Base64.decodeBase64(response);
|
||
|
byte[] decodedData = RSAUtils.decryptByPublicKey(bytes, publicKey);
|
||
|
String decodedDataStr = new String(decodedData);
|
||
|
LogKit.info("xxx-UsersTableDataModel-getUserInfo-decodedData:{}", decodedDataStr);
|
||
|
return new JSONArray(decodedDataStr);
|
||
|
}
|
||
|
|
||
|
private void addFRUserInfo2List(JSONArray usersInfo) {
|
||
|
ArrayList<String> frUserInfo;
|
||
|
for (Object o : usersInfo) {
|
||
|
JSONObject userInfo = (JSONObject) o;
|
||
|
frUserInfo = new ArrayList<>();
|
||
|
frUserInfo.add(userInfo.getString(TOTAL_CAGE_SUM));
|
||
|
frUserInfo.add(userInfo.getString(FREE_PRE));
|
||
|
frUserInfo.add(userInfo.getString(NAME));
|
||
|
frUserInfo.add(userInfo.getString(FREE_CAGE_SUM));
|
||
|
frUserInfo.add(userInfo.getString(FEED_ANIMAL_SUM));
|
||
|
this.valueList.add(frUserInfo.toArray());
|
||
|
}
|
||
|
}
|
||
|
}
|