dp2API之GetReaderInfo - DigitalPlatform/dp2 GitHub Wiki
LibraryServerResult GetReaderInfo(string strBarcode,
string strResultTypeList,
out string[] results,
out string strRecPath,
out byte[] baTimestamp);
用途:获取读者信息。获得一条读者记录,以多种格式。
参数表:
类型 参数名 说明
string strBarcode 读者证条码号。也可以用”@path:”引导以读者记录路径来使用此参数。
string strResultTypeList 希望获得的返回结果的类型列表
out string[] results 返回的结果字符串数组
out string strRecPath 返回读者记录路径
out byte[] baTimestamp 返回读者记录时间戳
返回值:
成员 返回值 说明
LibraryServerResult.Value
-1 出错
0 没有找到读者记录
1 找到读者记录
>1 找到多于一条读者记录,返回值是找到的记录数,这是一种不正常的情况
LibraryServerResult.ErrorInfo 出错信息
权限:需要getreaderinfo权限。读者身份的账户使用此API只能获得自己的读者记录
除了使用读者证条码号外,strBarcode参数值还可以用“@path:”引导读者记录路径字符串,表示根据读者记录路径来获取读者记录信息。在此种情况下,strBarcode参数值末尾还可以接续”$prev”或”$next”,表示希望获得指定记录路径位置的前一条或者后一条(也就是记录ID较小或者较大的)读者记录。
strBarcode参数值还可以用“@displayName:”引导读者的显示名字符串,表示根据读者的显示名来获取读者记录。
strBarcode参数值中还可以直接用身份证号字符串,即便读者记录中不是用身份证号来作为证条码号字段内容的,dp2Library也会自动去探测检索全部读者库的身份证号途径,如果能命中则返回相应的记录信息。
特殊情况下,可以在strBarcode参数中包含一条完整的读者记录的XML字符串,本API将使用这个字符串来当作读者记录(而不是从数据库中读取记录)进行获取各种信息的操作。在这种情况下,dp2Library软件是利用strBarcode参数值的第一个字符为为’<’作为标志的。
strResultTypeList参数值是一个组合型的字符串,可以用逗号连接后面的基本字符串构造内容。下表是可用的返回值类型:
返回值类型 说明
xml 读者记录XML格式
html 读者记录的HTML格式。这是由dp2Library数据目录下cfgs/readerxml2html.cs和cfgs/readerxml2html.cs.ref脚本程序所发生的
text 读者记录的纯文本格式。这是由dp2Library数据目录下cfgs/readerxml2text.cs和cfgs/readerxml2text.cs.ref脚本程序所发生的
calendar 读者记录所关联的日历名。
在library.xml的读者权限配置表中,每个读者类型关联了具体的日历名,本API就是根据相关读者记录的元素中指明的读者类型,从library.xml中找到这个类型所对应的日历名的
advancexml 读者记录高级XML格式。这种格式下,增补了一些必要的信息字段在XML记录中
timestamp 读者记录的时间戳。用十六进制文本的方式表达
results参数所返回的字符串数组中所包含的元素的个数,和strResultTypeList参数中所包含的子串的个数是一致的,顺序也是一致的。
高级XML格式:当本API的strResultTypeList中包含子串” advancexml”的时候,表示要以高级XML格式返回读者记录信息。方法是在读者库中本来的原始读者XML记录的基础上,软件动态添加一些新的XML元素和属性,使前端能在一次API请求的响应中获得尽可能丰富的信息。
高级XML格式只是本API返回信息的一种方式,所添加的XML元素和属性只存在于API返回的结果中,原始的读者库记录并未发生任何改变
dp2OPAC就是利用从dp2Library返回的这种高级XML格式来构造读者借阅情况页面的。
软件会在XML记录的根元素下添加一个元素。元素下添加若干元素。对于添加的元素,name属性值有如下可能的值:可借总册数/日历名/当前还可借,value属性值中是具体的数字值。如果value属性值为“error”,表示获取对应的值的过程中发生了错误。
当本API的strResultTypeList参数中包含子串“advancexml_borrow_bibliosummary”的时候, XML记录中原有的元素下的每个元素中会被增补一个summary属性,其值是这一册记录的书目摘要内容。
原有的元素下的每个元素会被增补一个isOverdue属性,其值为”yes”表示这一册当前已经超期,为”no”表示尚未超期,为”error”表示软件在检测是否超期的过程中遇到出错。元素还会被增补一个overdueInfo属性,其值为超期或者应还期的描述文字。元素还会被增补一个overdueInfo1属性,其值为超期或者应还期的描述文字,以不同的风格。元素还会被增补一个timeReturning属性,其值为此册的应还日期,格式为RFC1123时间字符串。
如果获取信息的过程中出现了报错信息,则会被放入XML记录的根元素下的元素的正文中。 当本API的strResultTypeList参数中包含子串“advancexml_overdue_bibliosummary”的时候,原有的元素下的每个元素会被增补一个summary属性,其值是这一册记录的书目摘要内容。 如果原有的元素下的元素中具有overduePeriod属性的时候,并且library.xml文件中配置有以停代金的特性(即,library.xml文件中配置有,overdueStyle属性中包含子串” pauseBorrowing”),则软件会计算出以停代金的周期,然后为元素增补一个priceString属性,里面是关于以停代金周期的提示文字。这种情况下如果元素本来就有price属性,则priceString的内容为“XXX 或 XXX”形态,对金额和以停代金周期进行综合说明。 在library.xml中配置有以停代金特性的情况下,软件还会整体构造出一条关于以停代金的提示信息,放入XML记录的元素的pauseMessage属性中。
dp2library新版本GetReaderInfo接口的读者证条码号参数的几种形态
@path:中文图书/1
@path:中文图书/1$next
@path:中文图书/1$next|withresmetadata