2.底库管理

智能商业产品支持-1发表于:2016年06月27日 17:42:28更新于:2017年01月03日 17:02:43

package koalacam.server;

import java.io.File;
import java.util.List;
import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntity;  

/**
 * 底库管理
 * @author Wangshutao
 * 2016年7月4日
 */
public class Subject {

    /**
    * 获取所有用户列表
    * @param cookieStore cookie值
    * @param url 
    * @throws Exception 
    */
    public static void mobileAdminSubjects(CookieStore cookieStore , String url ) throws Exception{
        System.out.println("Start GET /mobile-admin/subjects 获取所有用户列表 ...");
        
        //自定义HttpClients 设置CookieStore 
        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
        HttpGet request = new HttpGet(url);
        
        CloseableHttpResponse response = httpclient.execute(request);
        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
        
        //解析JSON数据
        JSONObject resp = new JSONObject(responseBody);
        int result = resp.optInt("code", -1);
        if (result != 0) {
            System.err.println("code:" + result + ",desc:" + resp.getString("desc"));
        }else{
            JSONArray array = resp.getJSONArray("data");
            for (int i = 0; i < array.length(); i++) {
                JSONObject userInfo = (JSONObject)array.get(i);
                System.out.println("id:" + userInfo.getInt("id") + ",name:" + userInfo.getString("name"));
            }
        }
    }
}


    /**    
    * 创建用户
    * @param cookieStore cookie值
    * @param url
    * @param subject_type 用户类型
    * @param name 姓名
    * @param photo_ids 识别头像列表
    * @throws Exception 
    */
    public static void subject(CookieStore cookieStore , String url,Integer subject_type, String name, List<Integer> photo_ids) throws Exception{
        System.out.println("Start POST /subject 创建用户 ...");
        
        //自定义HttpClient 设置CookieStore
        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
        HttpPost request = new HttpPost(url);
        
        //设置Content-Type
        request.setHeader("Content-Type", "application/json");
        
        JSONObject json = new JSONObject();
        json.put("subject_type", subject_type);//如果subject_type不等于0,必须要指定start_time,end_time
        json.put("name", name);
        json.put("photo_ids", photo_ids);
        request.setEntity(new StringEntity(json.toString(), "UTF-8"));
        
        CloseableHttpResponse response = httpclient.execute(request);
        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
        
        //解析JSON数据
        JSONObject resp = new JSONObject(responseBody);
        int result = resp.optInt("code", -1);
        if (result != 0) {
            System.err.println("code:" + result + ",desc:" + resp.getString("desc"));
        }else{
            System.out.println("id:"+ resp.getJSONObject("data").getInt("id"));
        }
    }


    /**    
    * 获取用户信息
    * @param cookieStore
    * @param url
    */
    public static void getSubject(CookieStore cookieStore , String url) throws Exception{
        System.out.println("Start GET /subject/[id] 获取用户信息 ...");
        
        //自定义HttpClient 设置CookieStore
        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
        HttpGet request = new HttpGet(url);
        
        CloseableHttpResponse response = httpclient.execute(request);
        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
        
        //解析JSON数据
        JSONObject resp = new JSONObject(responseBody);
        int result = resp.optInt("code", -1);
        if (result != 0) {
            System.err.println("code:" + result + ",desc:" + resp.getString("desc"));
        }else{
            JSONObject userInfo = resp.getJSONObject("data");
            System.out.println("id:" + userInfo.getInt("id") + ",name:"+ userInfo.getString("name"));
        }
    }


    /**    
    * 更新用户信息
    * @param cookieStore
    * @param url /subject/[id]
    * @param name 名字
    */
    public static void updateSubject(CookieStore cookieStore , String url, String name) throws Exception{
        System.out.println("Start PUT /subject/[id] 更新用户信息 ...");
        
        //自定义HttpClient 设置CookieStore
        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
        HttpPut request = new HttpPut(url);
        //设置Content-Type
        request.setHeader("Content-Type", "application/json");
        
        JSONObject json = new JSONObject();
        json.put("name", name);
        
        request.setEntity(new StringEntity(json.toString(), "UTF-8"));
        
        CloseableHttpResponse response = httpclient.execute(request);
        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
        
        //解析JSON数据
        JSONObject resp = new JSONObject(responseBody);
        int result = resp.optInt("code", -1);
        if (result != 0) {
            System.err.println("code:" + result + ",desc:" + resp.getString("desc"));
        }else{
            JSONObject userInfo = resp.getJSONObject("data");
            System.out.println("id:" + userInfo.getInt("id") + ",name:"+ userInfo.getString("name"));
        }
    }


    /**    
    * 删除用户
    * @param cookieStore cookie值
    * @param url /subject/[id]
    * @throws Exception
    */
    public static void deleteSubject(CookieStore cookieStore , String url) throws Exception{
        System.out.println("Start DELETE /subject/[id] 删除用户 ...");
        
        //自定义HttpClient 设置CookieStore
        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
        HttpDelete request = new HttpDelete(url);
        
        CloseableHttpResponse response = httpclient.execute(request);
        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
        
        //解析JSON
        JSONObject resp = new JSONObject(responseBody);
        int result = resp.optInt("code", -1);
        if (result != 0) {
            System.err.println("code:" + result + ",desc:" + resp.getString("desc"));
        }else{
            JSONObject userInfo = resp.getJSONObject("data");
            System.out.println("id:" + userInfo.getInt("id") + ",name:"+ userInfo.getString("name"));
        }
    }


    /**    
    * 上传识别照片
    * @param photo 底库照片
    * @param subject_id 用户id
    * @throws Exception
    */
    public static void photo(CookieStore cookieStore , String url ,String photo, Integer subject_id) throws Exception {
        System.out.println("Start POST /subject/photo 上传识别照片 ...");
        
        //自定义HttpClient 设置CookieStore
        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
        HttpPost request = new HttpPost(url);
        
        //设置底库照片 并关联到用户
        MultipartEntity reqEntity = new MultipartEntity();  
        reqEntity.addPart("photo", new FileBody(new File(photo)));
        reqEntity.addPart("subject_id", new StringBody(subject_id.toString()));
        request.setEntity(reqEntity); 
        
        CloseableHttpResponse response = httpclient.execute(request);
        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
        
        //解析JSON数据
        JSONObject resp = new JSONObject(responseBody);
        int result = resp.optInt("code", -1);
        if (result != 0) {
            System.err.println("code:" + result + ",desc:" + resp.getString("desc"));
        }else{
            JSONObject data = resp.getJSONObject("data");
            System.out.println("id:" + data.getInt("id") + "url:"+ data.getString("url"));
        }
    }


#! encoding=utf-8

import json
from common import HOST,SESSION

def import_subject(subject_type, name, gender, photo_ids):
    url = HOST + '/subject'
    data = {'subject_type': subject_type, 'name': name, 'gender': gender, 'photo_ids': photo_ids}
    ret = None
    try:
        ret = SESSION.post(url, json=data).content
        data = json.loads(ret)
        if data['code'] == 0:
            return data['data']['id']
        else:
            print data['code'], data['desc']
    except:
        print ret
        import traceback;print traceback.format_exc()
        pass
    return None

def update_subject(subject_type, name, gender, subject_id, photo_ids):
    url = HOST + '/subject/' + str(subject_id)
    data = {'subject_type': subject_type, 'name': name, 'gender': gender, 'photo_ids':photo_ids}
    ret = None
    try:
        ret = SESSION.put(url, json=data).content
        data = json.loads(ret)
        if data['code'] == 0:
            return data['data']['id']
        else:
          print data['code'], data['desc']
    except:
        print ret
        import traceback;print traceback.format_exc()
        pass



def photo(path):
    url = HOST +'/subject/photo'
    img = open(path, 'rb')
    ret = None
    try:
        ret = SESSION.post(url, files={'photo': ('filename.jpg', img)}).content
        data = json.loads(ret)
        if data['code'] == 0:
            return data['data']['id']
        elif data['code'] != 0:
            print data['code'],data['desc']
    except:
        print ret
        import traceback; print traceback.format_exc()
        pass
    return None




if __name__ == '__main__':
    ##上传底库照片
    photo_ids = [photo("/Users/Wangshutao/Desktop/subjects/T1.jpg")]
    print photo_ids
    ##新增一个用户
    subject_id = import_subject(0,'测试员工',1,photo_ids)
    print subject_id
    ##更新底库到用户
    update_subject(0,'测试员工'+str(subject_id),2,subject_id,photo_ids)

回复(12)

  • 你好!请问有没有C#的demo,JAVA的一直过不去,没有JAR包。

  • 数格

    您好,在线版的,java 调用 “更新用户信息”接口时,一直返回“code:-1000,desc:未知错误”,请问这个接口是变了吗

  • 深圳华颐智能系统有限公司

    有没有 api:   /subject/file  的java 调用示例 ? 

  • 黄静

    都可以更新的只有photo_ids是必要参数,别的你需要修改那个传哪个就好了。

    引用 1292908770 的回复:

     /**        * 更新用户信息    * @param cookieStore    * @param url /subject/[id]    * @param name 名字    */    public static void updateSubject(CookieStore cookieStore , String url, String name) throws Exception{        System.out.println("Start PUT /subject/[id] 更新用户信息 ...");                 //自定义HttpClient 设置CookieStore        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();        HttpPut request = new HttpPut(url);        //设置Content-Type        request.setHeader("Content-Type", "application/json");                 JSONObject json = new JSONObject();        json.put("name", name);                 request.setEntity(new StringEntity(json.toString(), "UTF-8"));                 CloseableHttpResponse response = httpclient.execute(request);        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");                 //解析JSON数据        JSONObject resp = new JSONObject(responseBody);        int result = resp.optInt("code", -1);        if (result != 0) {            System.err.println("code:" + result + ",desc:" + resp.getString("desc"));        }else{            JSONObject userInfo = resp.getJSONObject("data");            System.out.println("id:" + userInfo.getInt("id") + ",name:"+ userInfo.getString("name"));        }    }代码里面json.put("name", name); 只能修改name的值么?如果我仅仅只修department提示我传值错误?难道不能修改一个值得信息,如果修改必须把所要的字段你都传一遍么?

  • 1292908770

     /**        * 更新用户信息    * @param cookieStore    * @param url /subject/[id]    * @param name 名字    */    public static void updateSubject(CookieStore cookieStore , String url, String name) throws Exception{        System.out.println("Start PUT /subject/[id] 更新用户信息 ...");                 //自定义HttpClient 设置CookieStore        CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();        HttpPut request = new HttpPut(url);        //设置Content-Type        request.setHeader("Content-Type""application/json");                 JSONObject json = new JSONObject();        json.put("name", name);                 request.setEntity(new StringEntity(json.toString(), "UTF-8"));                 CloseableHttpResponse response = httpclient.execute(request);        String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");                 //解析JSON数据        JSONObject resp = new JSONObject(responseBody);        int result = resp.optInt("code", -1);        if (result != 0) {            System.err.println("code:" + result + ",desc:" + resp.getString("desc"));        }else{            JSONObject userInfo = resp.getJSONObject("data");            System.out.println("id:" + userInfo.getInt("id") + ",name:"+ userInfo.getString("name"));        }    }





    代码里面json.put("name", name); 

    只能修改name的值么?

    如果我仅仅只修

    department
    提示我传值错误?难道不能修改一个值得信息,如果修改必须把所要的字段你都传一遍么?



  • EasonRyu

    请问一下,上传照片的大小有没有建议值?仅仅只是返回图片过大或者过小,不方便用户快速进行修正。

  • share

    c# 上传识别照片,要怎么调用

  • tangh233

    请问,Android写请求程序要加入什么第三方包

  • Koala售后支持-2
    /subject/[id]2.4 获取用户信息

    此部分中返回的 name,是 name + subject_id 格式。

    这个是因为示例代码最后调用了update方法的缘故。

  • 智能商业产品支持-1
    1. 请求参数请参考API的接口定义部分

    2. 返回值请参考API的附录部分

           三、模型定义

           四、错误码定义

           五、分页信息定义


  • F19

    请问字段说明呢

  • 智能商业产品支持-1
    GET/mobile-admin/subjects2.1 获取所有用户列表
    GET/mobile-admin/subjects/list/2.2 获取用户列表(分页分类可搜索)
    POST/subject2.3 创建用户
    GET/subject/[id]2.4 获取用户信息
    PUT/subject/[id]2.5 更新用户信息
    DELETE/subject/[id]2.6 删除用户
    POST/subject/photo2.7上传识别照片


您需要登录后才可以回复