|
|
@@ -9,13 +9,9 @@ import java.util.Map;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
-import com.taobao.api.DefaultTaobaoClient;
|
|
|
-import com.taobao.api.TaobaoClient;
|
|
|
import com.uas.eis.entity.ActionConfig;
|
|
|
import com.uas.eis.entity.ErrorMsg;
|
|
|
import com.uas.eis.exception.SystemException;
|
|
|
-import com.uas.eis.utils.DateUtil;
|
|
|
-import net.sf.json.JSONArray;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -32,7 +28,6 @@ import com.uas.eis.utils.BaseUtil;
|
|
|
|
|
|
import net.sf.json.JSONObject;
|
|
|
|
|
|
-
|
|
|
@Service
|
|
|
public class QueryServiceImpl implements QueryService {
|
|
|
|
|
|
@@ -43,80 +38,78 @@ public class QueryServiceImpl implements QueryService {
|
|
|
|
|
|
@Override
|
|
|
public String login(String username, String password) {
|
|
|
- if (checkUser(username, password)) {
|
|
|
+ if(checkUser(username, password)) {
|
|
|
return TokenHandler.createToken(username, password);
|
|
|
- } else {
|
|
|
+ }else {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Cacheable(value = "userEnableCache")
|
|
|
+ @Cacheable(value="userEnableCache")
|
|
|
public boolean checkUser(String username, String password) {
|
|
|
return baseDao.checkIf("EIS_USER", "eu_enable=-1 and " + "eu_name='" + username + "' and eu_password='" + password + "'");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Cacheable(value = "userActionEnableCache")
|
|
|
+ @Cacheable(value="userActionEnableCache")
|
|
|
public boolean checkAction(String username, String action) {
|
|
|
boolean flag = false;
|
|
|
|
|
|
String roles = baseDao.queryForObject("select eu_role from eis_user where eu_name='" + username + "'", String.class);
|
|
|
- if (roles == null) {
|
|
|
+ if(roles == null) {
|
|
|
return false;
|
|
|
}
|
|
|
// 开放公共API的权限
|
|
|
String apiAction = actionConfig.getApiAction();
|
|
|
- if (action.startsWith(apiAction)) {
|
|
|
+ if(action.startsWith(apiAction)) {
|
|
|
return true;
|
|
|
}
|
|
|
// 判断是否在不需要权限控制的请求配置中
|
|
|
String[] publicActions = actionConfig.getPublicActions();
|
|
|
- for (String publicAction : publicActions) {
|
|
|
- if (publicAction.equals(action)) {
|
|
|
+ for(String publicAction : publicActions) {
|
|
|
+ if(publicAction.equals(action)) {
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
- String[] fields = {"er_reg", "er_action"};
|
|
|
+ String[] fields = {"er_reg","er_action"};
|
|
|
List<JSONObject> res = baseDao.getFieldsJSONDatasByCondition("EIS_ROLE", fields, "er_id in (" + roles + ")");
|
|
|
- for (int o = 0; o < res.size(); o++) {
|
|
|
+ for(int o = 0; o< res.size(); o++) {
|
|
|
JSONObject data = res.get(o);
|
|
|
String reg = data.containsKey("er_reg") ? data.getString("er_reg") : "(\\S)*";
|
|
|
String act = data.containsKey("er_action") ? data.getString("er_action") : "";
|
|
|
// 通过正则和预设接口校验请求权限
|
|
|
- if (action.matches(reg) || act.indexOf(action) != -1) {
|
|
|
+ if(action.matches(reg) || act.indexOf(action) != -1) {
|
|
|
flag = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
return flag;
|
|
|
}
|
|
|
-
|
|
|
- public String getUsers() {
|
|
|
+ public String getUsers(){
|
|
|
String sql = "SELECT EM_NAME,EM_CODE,TO_CHAR(EM_INDATE,'yyyy-MM-dd hh24:mm:ss') EM_INDATE FROM EMPLOYEE WHERE EM_CODE = 'U0818'";
|
|
|
Map<String, Object> map = baseDao.getJdbcTemplate().queryForMap(sql);
|
|
|
- List<Map<String, Object>> list = baseDao.queryForList("SELECT * FROM UPLOADDOCDETAIL WHERE UDD_UDID=284");
|
|
|
- return BaseUtil.parseDataToJson(map, list);
|
|
|
+ List<Map<String,Object>> list = baseDao.queryForList("SELECT * FROM UPLOADDOCDETAIL WHERE UDD_UDID=284");
|
|
|
+ return BaseUtil.parseDataToJson(map,list);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 标准查询API
|
|
|
- *
|
|
|
- * @param code 查询方案Code
|
|
|
- * @param param 参数
|
|
|
+ * @param code 查询方案Code
|
|
|
+ * @param param 参数
|
|
|
* @return
|
|
|
*/
|
|
|
- public Object query(String code, String param) {
|
|
|
+ public Object query(String code, String param){
|
|
|
Map<String, Object> resultmap = new HashMap<String, Object>();
|
|
|
- List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
|
|
|
+ List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
|
|
|
com.alibaba.fastjson.JSONObject json = JSON.parseObject(param);
|
|
|
//查询参数配置表
|
|
|
String getInOutParamsSql = "select * from queryArgs where qa_qccode = ?";
|
|
|
- List<QueryArgs> inOutParamList = baseDao.query(getInOutParamsSql, QueryArgs.class, code);
|
|
|
- Map<String, String> argsMap = new HashMap<String, String>(); //存参数名对应的参数值
|
|
|
- Map<String, String> argsTypeMap = new HashMap<String, String>(); //存参数名对应的参数类型
|
|
|
- for (QueryArgs args : inOutParamList) {
|
|
|
- argsMap.put(args.getQa_param(), json.getString(args.getQa_param()));
|
|
|
+ List<QueryArgs> inOutParamList = baseDao.query(getInOutParamsSql, QueryArgs.class, code);
|
|
|
+ Map<String, String> argsMap = new HashMap<String, String>(); //存参数名对应的参数值
|
|
|
+ Map<String, String> argsTypeMap = new HashMap<String, String>(); //存参数名对应的参数类型
|
|
|
+ for(QueryArgs args : inOutParamList){
|
|
|
+ argsMap.put(args.getQa_param(),json.getString(args.getQa_param()));
|
|
|
argsTypeMap.put(args.getQa_param(), args.getQa_paramtype());
|
|
|
}
|
|
|
//校验查询方案传入的参数是否正确
|
|
|
@@ -124,19 +117,19 @@ public class QueryServiceImpl implements QueryService {
|
|
|
//code对应的查询方案
|
|
|
String getQueryConfigsql = "select * from queryconfig where qc_code=? order by qc_detno";
|
|
|
List<QueryConfig> queryConfigList = baseDao.query(getQueryConfigsql, QueryConfig.class, code);
|
|
|
- if (queryConfigList != null) {
|
|
|
+ if(queryConfigList != null){
|
|
|
List<String> valueList = new ArrayList<String>();
|
|
|
- Object mainField = baseDao.getFieldDataByCondition("queryArgs", "qa_param", "qa_qccode='" + code + "' and qa_ismainfield=1");
|
|
|
- if (mainField != null && "array".equals(argsTypeMap.get(mainField))) {
|
|
|
+ Object mainField = baseDao.getFieldDataByCondition("queryArgs", "qa_param", "qa_qccode='"+code+"' and qa_ismainfield=1");
|
|
|
+ if(mainField != null && "array".equals(argsTypeMap.get(mainField))){
|
|
|
String argValue = argsMap.get(mainField);
|
|
|
String[] valueArray = argValue.replace("[", "").replace("]", "").replaceAll("\"", "").split(",");
|
|
|
valueList = new ArrayList<String>(Arrays.asList(valueArray));
|
|
|
- } else {
|
|
|
+ }else{
|
|
|
valueList.add(argsMap.get(mainField));
|
|
|
}
|
|
|
- for (int i = 0; i < valueList.size(); i++) {
|
|
|
+ for(int i = 0; i < valueList.size(); i++){
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
|
- for (QueryConfig queryConfig : queryConfigList) {
|
|
|
+ for(QueryConfig queryConfig : queryConfigList){
|
|
|
StringBuilder inParam = new StringBuilder();
|
|
|
StringBuilder outParam = new StringBuilder();
|
|
|
//查询方案明细表,得到要查询的字段
|
|
|
@@ -144,20 +137,20 @@ public class QueryServiceImpl implements QueryService {
|
|
|
List<QueryConfigDetail> queryFieldsList = baseDao.query(getQueryFieldssql, QueryConfigDetail.class, queryConfig.getQc_id());
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.append("select ");
|
|
|
- for (QueryConfigDetail field : queryFieldsList) {
|
|
|
+ for(QueryConfigDetail field : queryFieldsList){
|
|
|
sb.append(field.getQcd_field() + " \"" + field.getQcd_mappingkey() + "\",");
|
|
|
}
|
|
|
- sb.deleteCharAt(sb.length() - 1); //去掉最后一个 ,
|
|
|
+ sb.deleteCharAt(sb.length()-1); //去掉最后一个 ,
|
|
|
sb.append(" from " + queryConfig.getQc_table());
|
|
|
//拼接condition
|
|
|
String condition = queryConfig.getQc_condition();
|
|
|
- Pattern pattern = Pattern.compile("@[\\w]+"); //通过正则替换@变量
|
|
|
+ Pattern pattern = Pattern.compile("@[\\w]+"); //通过正则替换@变量
|
|
|
Matcher m = pattern.matcher(condition);
|
|
|
List<String> matchList = new ArrayList<String>();
|
|
|
- while (m.find()) {
|
|
|
+ while(m.find()){
|
|
|
matchList.add(m.group());
|
|
|
}
|
|
|
- for (String match : matchList) {
|
|
|
+ for(String match : matchList){
|
|
|
/*if("array".equals(argsTypeMap.get(match.replace("@", "")))){
|
|
|
String value = argsMap.get(match.replace("@", ""));
|
|
|
value = value.replaceAll("\"", "'");
|
|
|
@@ -165,160 +158,91 @@ public class QueryServiceImpl implements QueryService {
|
|
|
}else{
|
|
|
condition = condition.replaceAll(match, "'"+argsMap.get(match.replace("@", ""))+"'");
|
|
|
}*/
|
|
|
- if (match.equals("@" + mainField)) {
|
|
|
- condition = condition.replaceAll(match, "'" + valueList.get(i) + "'");
|
|
|
- inParam.append(mainField + "=" + valueList.get(i) + ";");
|
|
|
- } else {
|
|
|
- condition = condition.replaceAll(match, "'" + argsMap.get(match.replace("@", "")) + "'");
|
|
|
- inParam.append(match.replace("@", "") + "=" + argsMap.get(match.replace("@", "")) + ";");
|
|
|
+ if(match.equals("@"+mainField)){
|
|
|
+ condition = condition.replaceAll(match, "'"+valueList.get(i)+"'");
|
|
|
+ inParam.append(mainField+"="+valueList.get(i)+";");
|
|
|
+ }else{
|
|
|
+ condition = condition.replaceAll(match, "'"+argsMap.get(match.replace("@", ""))+"'");
|
|
|
+ inParam.append(match.replace("@","")+"="+argsMap.get(match.replace("@", ""))+";");
|
|
|
}
|
|
|
}
|
|
|
- sb.append(" " + condition); //append where条件
|
|
|
+ sb.append(" " + condition); //append where条件
|
|
|
//append order by语句
|
|
|
- if (!StringUtils.isEmpty(queryConfig.getQc_orderby())) {
|
|
|
+ if(!StringUtils.isEmpty(queryConfig.getQc_orderby())){
|
|
|
sb.append(" " + queryConfig.getQc_orderby());
|
|
|
}
|
|
|
- if (queryFieldsList != null && queryFieldsList.size() > 0) {
|
|
|
- if (queryConfig.getQc_isArray() != null && queryConfig.getQc_isArray() == 0) {
|
|
|
+ if(queryFieldsList != null && queryFieldsList.size()>0){
|
|
|
+ if(queryConfig.getQc_isArray() != null && queryConfig.getQc_isArray() == 0){
|
|
|
map.put(queryConfig.getQc_mapkey(), baseDao.getJdbcTemplate().queryForMap(sb.toString()));
|
|
|
- } else {
|
|
|
+ }else{
|
|
|
map.put(queryConfig.getQc_mapkey(), baseDao.queryForList(sb.toString()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//获取额外返回值
|
|
|
- if (!StringUtils.isEmpty(queryConfig.getQc_return())) {
|
|
|
+ if(!StringUtils.isEmpty(queryConfig.getQc_return())){
|
|
|
String getReturnSql = "select " + queryConfig.getQc_return() + " from " + queryConfig.getQc_table() + " " + condition;
|
|
|
Map<String, Object> returnMap = baseDao.getJdbcTemplate().queryForMap(getReturnSql);
|
|
|
- List<Object> list = baseDao.getFieldDatasByCondition("queryArgs", "qa_param", "qa_qccode='" + queryConfig.getQc_code() + "' and qa_relation=" + queryConfig.getQc_id() + " order by qa_detno");
|
|
|
+ List<Object> list = baseDao.getFieldDatasByCondition("queryArgs", "qa_param", "qa_qccode='"+queryConfig.getQc_code()+"' and qa_relation="+queryConfig.getQc_id()+" order by qa_detno");
|
|
|
Iterator<Object> it = returnMap.values().iterator();
|
|
|
int j = 0;
|
|
|
- while (it.hasNext()) {
|
|
|
+ while(it.hasNext()){
|
|
|
String value = String.valueOf(it.next());
|
|
|
argsMap.put(String.valueOf(list.get(j)), value);
|
|
|
- outParam.append(String.valueOf(list.get(j)) + "=" + value + ";");
|
|
|
+ outParam.append(String.valueOf(list.get(j))+"="+value+";");
|
|
|
j++;
|
|
|
}
|
|
|
}
|
|
|
//记录日志
|
|
|
- String insertSql = "INSERT INTO QUERYLOG(QL_ID,QL_QCCODE,QL_PARAM,QL_RETURN,QL_DATE) VALUES(QUERYLOG_SEQ.NEXTVAL,'" + queryConfig.getQc_code() + "','" + inParam.toString() + "','" + outParam.toString() + "',SYSDATE)";
|
|
|
+ String insertSql = "INSERT INTO QUERYLOG(QL_ID,QL_QCCODE,QL_PARAM,QL_RETURN,QL_DATE) VALUES(QUERYLOG_SEQ.NEXTVAL,'"+queryConfig.getQc_code()+"','"+inParam.toString()+"','"+outParam.toString()+"',SYSDATE)";
|
|
|
baseDao.execute(insertSql);
|
|
|
}
|
|
|
- if (valueList.size() > 1) {
|
|
|
+ if(valueList.size() > 1){
|
|
|
resultList.add(map);
|
|
|
- } else {
|
|
|
+ }else{
|
|
|
resultmap.putAll(map);
|
|
|
}
|
|
|
}
|
|
|
- if (valueList.size() > 1)
|
|
|
+ if(valueList.size() > 1)
|
|
|
return resultList;
|
|
|
else
|
|
|
return resultmap;
|
|
|
- } else {
|
|
|
+ }else{
|
|
|
return resultmap;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public String doAction(String code, String param) {
|
|
|
- try {
|
|
|
- // TOP服务地址,正式环境需要设置为http://gw.api.taobao.com/router/rest
|
|
|
- private static final String serverUrl = "http://gw.api.tbsandbox.com/router/rest";
|
|
|
- private static final String appKey = "test"; // 可替换为您的沙箱环境应用的appKey /* 待修改 */
|
|
|
- private static final String appSecret = "test"; // 可替换为您的沙箱环境应用的appSecret /* 待修改 */
|
|
|
- private static final String sessionKey = "test"; // 必须替换为沙箱账号授权得到的真实有效sessionKey /* 待修改 */
|
|
|
-
|
|
|
- TaobaoClient client = new DefaultTaobaoClient(serverUrl, appKey, appSecret);
|
|
|
-
|
|
|
- //调用原生SDK获得数据
|
|
|
- TradesSoldGetRequest req = new TradesSoldGetRequest();
|
|
|
- req.setFields("tid,type,status,payment,orders,rx_audit_status");
|
|
|
-
|
|
|
- //String sysdate = DateUtil.getCurrentDate();
|
|
|
- //req.setStartCreated(StringUtils.parseDateTime(sysdate));
|
|
|
- //req.setStartCreated(StringUtils.parseDateTime("2000-01-01 00:00:00"));
|
|
|
- //req.setEndCreated(StringUtils.parseDateTime("2000-01-01 23:59:59"));
|
|
|
- //交易成功
|
|
|
- req.setStatus("TRADE_FINISHED");
|
|
|
-// req.setBuyerNick("zhangsan");
|
|
|
-// req.setType("game_equipment");
|
|
|
- req.setExtType("service");
|
|
|
-// req.setRateStatus("RATE_UNBUYER");
|
|
|
-// req.setTag("time_card");
|
|
|
-// req.setPageNo(1L);
|
|
|
-// req.setPageSize(40L);
|
|
|
- req.setUseHasNext(true);
|
|
|
- req.setBuyerOpenId("AAHm5d-EAAeGwJedwSHpg8bT");
|
|
|
- TradesSoldGetResponse rsp = client.execute(req, sessionKey);
|
|
|
- System.out.println(rsp.getBody());
|
|
|
- List<String> insertSqlsList = new ArrayList<String>();
|
|
|
- //这里解析返回的数据
|
|
|
- //解析第一层---对象
|
|
|
- JSONObject jObject1 = new JSONObject(rsp.getBody());
|
|
|
- //解析第二层----数组
|
|
|
- JSONArray jsonArray2 = jObject1.getJSONArray("trades");
|
|
|
- //遍历数组获取元素----对象
|
|
|
-
|
|
|
-
|
|
|
- for (int i = 0; i < jsonArray2.size(); i++) {
|
|
|
- //解析第三层----对象
|
|
|
- JSONObject jObject3 = jsonArray2.getJSONObject(i);
|
|
|
- Long said = baseDao.queryForObject("select sale_seq.nextval from dual", Long.class);
|
|
|
-
|
|
|
- String INSERTSALESql = "insert into sale(sa_id,sa_date,sa_custname,sa_currency,sa_rate" +
|
|
|
- ",sa_apcustname,sa_shcustname,sa_toplace" +
|
|
|
- ",sa_transport,sa_seller,sa_updatedate" +
|
|
|
- ",sa_enddate,sa_statuscode,sa_status,sa_fare,sa_total" +
|
|
|
- ",sa_recamount,sa_plandelivery,sa_printstatuscode)" +
|
|
|
- "values("+said+",to_date(" + jObject3.getString("start_created") + ",'yyyy-MM-dd hh:mm:ss'),"+ jObject3.getString("receiver_name")+",'rmb','1',"
|
|
|
- + jObject3.getString("receiver_name")+","+ jObject3.getString("receiver_name")+","+ jObject3.getString("receiver_address") +","
|
|
|
- + jObject3.getString("shipping_type") + ","+jObject3.getString("o2o_guide_name") + ","+jObject3.getString("modified")
|
|
|
- + ","+jObject3.getString("end_time")+",'entering','在录入',"+jObject3.getInt("post_fee")+","+jObject3.getInt("payment")+","
|
|
|
- +jObject3.getInt("total_fee")+","+ jObject3.getString("consign_time") +",'unprint')";
|
|
|
- insertSqlsList.add(INSERTSALESql);
|
|
|
- String INSERTSALEDETAILSql = "insert into saledetail(sd_said,sd_detno,sd_qty,sd_delivery,sd_price,sd_total,sd_taxrate,sd_costprice" +
|
|
|
- ",sd_taxtotal,sd_description,sd_statuscode,sd_status,sd_enddate,sd_senddate,sd_discount)" +
|
|
|
- "values ("+said+",?,"+jObject3.getInt("num")+","+jObject3.getInt("price")+" ,"+jObject3.getInt("total_fee")+" ,?,"+jObject3.getInt("price")+" /(1+"+jObject3.getInt("sd_taxrate")+" /100)" +
|
|
|
- ",price/(1+"+jObject3.getInt("total_fee")+"/100),customization,'entering','在录入',end_time,consign_time,"+jObject3.getInt("discount_fee")+" )";
|
|
|
- insertSqlsList.add(INSERTSALEDETAILSql);
|
|
|
-
|
|
|
- }
|
|
|
- baseDao.execute(insertSqlsList);
|
|
|
- return "插入销售明细成功";
|
|
|
- } catch (Exception e) {
|
|
|
- return e.getMessage();
|
|
|
- }
|
|
|
+ public Object doAction() {
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 传入参数的合法性校验
|
|
|
- *
|
|
|
* @param code
|
|
|
* @param param
|
|
|
*/
|
|
|
- private void checkParam(String code, String param) {
|
|
|
+ private void checkParam(String code, String param){
|
|
|
com.alibaba.fastjson.JSONObject json = JSON.parseObject(param);
|
|
|
- if (StringUtils.isEmpty(code)) {
|
|
|
+ if(StringUtils.isEmpty(code)){
|
|
|
throw new SystemException(ErrorMsg.NULL_QUERY_CODE);
|
|
|
}
|
|
|
- if (json == null) {
|
|
|
+ if(json == null){
|
|
|
throw new SystemException(ErrorMsg.PARAM_AMOUNT_ERROR);
|
|
|
}
|
|
|
String getInParamsSql = "select * from queryArgs where qa_qccode = ? and qa_relation is null";
|
|
|
- List<QueryArgs> inParamList = baseDao.query(getInParamsSql, QueryArgs.class, code);
|
|
|
- if (inParamList.size() != json.size()) {
|
|
|
+ List<QueryArgs> inParamList = baseDao.query(getInParamsSql, QueryArgs.class, code);
|
|
|
+ if(inParamList.size() != json.size()){
|
|
|
throw new SystemException(ErrorMsg.PARAM_AMOUNT_ERROR);
|
|
|
- } else {
|
|
|
- for (QueryArgs queryArgs : inParamList) {
|
|
|
- if (json.getString(queryArgs.getQa_param()) == null) {
|
|
|
+ }else{
|
|
|
+ for(QueryArgs queryArgs : inParamList){
|
|
|
+ if(json.getString(queryArgs.getQa_param()) == null){
|
|
|
throw new SystemException(ErrorMsg.PARAM_NAME_ERROR);
|
|
|
- } else {
|
|
|
- if ("array".equals(queryArgs.getQa_paramtype())) {
|
|
|
+ }else{
|
|
|
+ if("array".equals(queryArgs.getQa_paramtype())){
|
|
|
String stringArray = json.getString(queryArgs.getQa_param());
|
|
|
- if (!(stringArray.contains("[") && stringArray.contains("]"))) {
|
|
|
- BaseUtil.showError(ErrorMsg.PARAM_FORMAT_ERROR, "传入的参数:" + queryArgs.getQa_param() + "格式不正确");
|
|
|
+ if(!(stringArray.contains("[") && stringArray.contains("]"))){
|
|
|
+ throw new SystemException(ErrorMsg.PARAM_FORMAT_ERROR);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -326,5 +250,11 @@ public class QueryServiceImpl implements QueryService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Object doAction(String code, String param) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|