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.

171 lines
5.1 KiB

package com.eco.plugin.xx.bsdsjtb.servertd;
import com.eco.plugin.xx.bsdsjtb.config.PluginSimpleConfig;
import com.eco.plugin.xx.bsdsjtb.utils.FRUtils;
import com.eco.plugin.xx.bsdsjtb.utils.HttpUtils;
import com.eco.plugin.xx.bsdsjtb.utils.Utils;
import com.fr.base.TableData;
import com.fr.data.AbstractDataModel;
import com.fr.general.data.TableDataException;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.context.PluginContexts;
import com.fr.stable.fun.Authorize;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@Authorize(callSignKey = "com.eco.plugin.xx.bsdsjtb")
public class UserHttpDataModel extends AbstractDataModel {
private static String[] COLUMN_NAMES = {"ad", "name", "userid","email","dept","password"};
private int rowCount = TableData.RESULT_ALL;
private DatasetData datas = new DatasetData();
public UserHttpDataModel(int count) {
this.rowCount = count;
if (this.rowCount == 0) {
return;
}
queryData();
}
//获取列的数量
@Override
public int getColumnCount() throws TableDataException {
return COLUMN_NAMES.length;
}
//获取列的名称
@Override
public String getColumnName(int i) throws TableDataException {
return COLUMN_NAMES[i];
}
//是否还有行
@Override
public boolean hasRow(int rowIndex) throws TableDataException {
int count = getRowCount();
return rowIndex < count;
}
//获取行数量
@Override
public int getRowCount() throws TableDataException {
if (this.datas == null) {
return 0;
}
List<List<Object>> values = this.datas.getValues();
if (values == null) {
return 0;
}
int count = values.size();
return count;
}
//获取数据
@Override
public Object getValueAt(int rowIndex, int columnIndex){
if (this.datas == null) {
return "";
}
List<List<Object>> values = this.datas.getValues();
if ((values == null) || (values.size() <= rowIndex)) {
return "";
}
List<Object> rowValues = values.get(rowIndex);
if ((rowValues == null) || (rowValues.size() <= columnIndex)) {
return "";
}
return rowValues.get(columnIndex);
}
//释放
@Override
public void release() {
this.datas = null;
}
/**
* 查询数据
*/
private void queryData() {
if(PluginContexts.currentContext().isAvailable()){
try {
PluginSimpleConfig psc = PluginSimpleConfig.getInstance();
JSONArray data = getUserData(psc);
addRowDatas(data);
} catch (Exception e) {
FRUtils.FRLogInfo("数据集获取用户信息,请求出错:"+e.getMessage());
throw new NullPointerException("数据集获取用户信息为空," + e.getMessage());
}
}
}
/**
* 获取token
* @return
*/
private static String getToken(PluginSimpleConfig psc,Long timestamp){
String str = "programid="+psc.getProgramid()+"&programcode="+psc.getProgramcode()+"&timestamp="+timestamp;
FRUtils.FRLogInfo("token:"+str);
return Utils.getMd5Str(str).toUpperCase(Locale.ROOT);
}
private static JSONArray getUserData(PluginSimpleConfig psc) {
JSONArray result = new JSONArray();
String url = psc.getUrl();
JSONObject param = new JSONObject();
Long timestamp = System.currentTimeMillis();
param.put("programid",psc.getProgramid());
param.put("timestamp",timestamp);
param.put("signature",getToken(psc,timestamp));
String resultStr = HttpUtils.HttpPostJson(url,param.toString(),null);
if(Utils.isNullStr(resultStr)){
return result;
}
JSONObject resultJson = new JSONObject(resultStr);
String code = resultJson.getString("code");
if(!"200".equals(code)){
return result;
}
return resultJson.getJSONObject("data").getJsonArray("userInfoList");
}
/**
* 添加行数据
* @param jsonArray
*/
private void addRowDatas(JSONArray jsonArray) {
if(jsonArray == null || jsonArray.size() <= 0){
return ;
}
for(int i =0;i< jsonArray.size();i++){
JSONObject org = jsonArray.getJSONObject(i);
String AD = org.getString("ad").toLowerCase(Locale.ROOT);
String name = org.getString("username");
String userid = org.getString("userid");
String email = org.getString("usermail");
String dept = org.getString("dept");
List<Object> rowDatas = new ArrayList<Object>();
rowDatas.add(AD);
rowDatas.add(name);
rowDatas.add(userid);
rowDatas.add(email);
rowDatas.add(dept);
rowDatas.add("EE3941B225BA898F");
List<List<Object>> values = this.datas.getValues();
values.add(rowDatas);
}
}
}