UNPKG

nyx_server

Version:

Node内容发布

239 lines (211 loc) 5.7 kB
import fetch from 'isomorphic-fetch'; import * as types from "../constants/ActionTypes" //import _ from "lodash"; function queryString(object){ return _.transform(object, function(result, value, key) { result.push(key+"="+value); }, []).join("&"); } function _fetch(url , params , fn){ fetch(url , { credentials: "include", method : "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: queryString(params)+"" }).then(function(response){ return response.json(); }).then(function(result){ if(result.success){ return fn(result.data); } console.log("load "+url+" error , "+result.message) }).catch(function(err){ console.log("load "+url+" error , "+err.message) }) } function getFetch(url , fn){ fetch(url, {credentials: "include"}).then(function(response){ return response.json(); }).then(function(result){ if(result.success){ return fn(result.data) } console.log("load "+url+" error , "+result.message) }).catch(function(err){ console.log("load "+url+" error , "+err.message) }) } /* function dispatch(dispatch){ return function(action){ dispatch(action) } } function action(type){ return (payload) =>{ return { type:type, payload:payload, error: payload instanceof Error } } } function fetchOptions(){ return (method) => (header) =>(body) =>{ return { method:method, header:header, body:body } } } var postOptions = fetchOption("POST")({"Content-Type": "application/x-www-form-urlencoded"}); var getOptions = fetchOption("GET")({}); function queryString(object){ return _.transform(object, function(result, value, key) { result += "&"+ key+"="+value; }, ""); } function userInfo(userId){ var _fetch = _.curry(fetch); const userInfoFetch = _.flowRight(map(action(type)) , _fetch(url) , postOption) dispatch =>{ var _fn = _.flowRight(dispatch , userInfoFetch , queryString); _fn({userId:userId}); } } */ /** * 查询组列表 */ export function groupList(pagination){ dispatch => { getFetch(REQUESTADDRESS+"/auth/groups" , pagination , function(groups){ dispatch({ type:types.LOAD_GROUP_LIST, payload:{ groups:groups, pagination:pagination }, error:false }); }) } } export function addUser(user){ return dispatch =>{ fetch(REQUESTADDRESS+"/users/user" , { credentials: "include", method : "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: queryString(user)+"" }).then(function(response){ return response.json(); }).then(function(result){ if(result.success){ dispatch({ type:types.ADD_USER, payload:{ user:user }, error:false }) } throw new Error(result.message); }).catch(function(err){ dispatch({ type:types.ADD_USER, payload:new Error(err.message), error:true }) }) } } /** *查询用户列表 */ export function userList(pagination){ return dispatch => { _fetch(REQUESTADDRESS+"/users/users" , pagination , function(result){ var users = result.data; var total = result.total; pagination.total = total; dispatch({ type:types.LOAD_USER_LIST, payload:{ userList:users, pagination:pagination }, error:false }) }) } } export function permissionList(pagination){ return dispatch => { _fetch(REQUESTADDRESS+"/auth/permissions" , pagination , function(permissions){ dispatch({ type:types.LOAD_GROUP_LIST, payload:{ permissions:permissions, pagination:pagination }, error:false }) }) } } //用户信息 export function userInfo(userName){ return dispatch => { getFetch(REQUESTADDRESS+"/users/user/"+ userName , function(userInfo){ dispatch({ type:types.USER_INFO, payload:{ userInfo:userInfo }, error:false }) }) } } export function openAddUser(opened){ return { type: types.OPEN_ADD_USER, payload : {opened:opened} } } export function setUserFormField(fieldName, value , message){ return { type: types.SET_USER_FROM_FIELD, payload: { fieldName: fieldName, value: value, error: message } } } export function userExist(userName){ return dispatch => { getFetch(REQUESTADDRESS+"/users/exist/"+ userName , function(exist){ dispatch({ type:types.SET_USER_FROM_FIELD, payload:{ fieldName :"name", value : userName, error : (exist ? "用户已经存在":"") }, error:false }) }) } } export function cleanAddUserState(){ return { type: types.CLEAN_ADD_USER_STATE } }