Skip to content

Circulation()

任延华 edited this page Jan 20, 2020 · 1 revision

流通操作。借书、续借、还书、丢失声明、读过、盘点。 包装了dp2library的Borrow() Return() Reservation() API。

borrow 借书。对应dp2library的Borrow() API。

案例1: Operation:borrow Patron:R0000001 Item:0000001 Style: Patron Format List:xml Item Format List:xml Biblio Format List:xml 读者证条码号为R0000001借阅册条码号为0000001的图书。返回三种XML格式的记录。

renew 续借。对应dp2library的Borrow() API。

案例1: Operation:renew Patron:R0000001 Item:0000001 Style: Patron Format List:xml Item Format List:xml Biblio Format List:xml 读者证条码号为R0000001续借册条码号为0000001的图书。这是所谓“验证续借”。返回三种XML格式的记录。

案例2: Operation:renew Patron: Item:0000001 Style: Patron Format List:xml Item Format List:xml Biblio Format List:xml 续借册条码号为0000001的图书。读者没有声明。这是所谓“非验证续借”。返回三种XML格式的记录。

return 还书。对应dp2library的Return() API。

案例1: Operation:return Patron:R0000001 Item:0000001 Style: Patron Format List:xml Item Format List:xml Biblio Format List:xml 读者证条码号为R0000001还册条码号为0000001的图书。这是所谓“验证还书”。返回三种XML格式的记录。

案例2: Operation:return Patron: Item:0000001 Style: Patron Format List:xml Item Format List:xml Biblio Format List:xml 还册条码号为0000001的图书。读者没有声明。这是所谓“非验证还”。返回三种XML格式的记录。

lost 丢失声明。对应dp2library的Return() API。

案例1: Operation:lost Patron: Item:0000001 Style: Patron Format List:xml Item Format List:xml Biblio Format List:xml 声明丢失册条码号为0000001的图书。读者没有声明。这是所谓“非验证丢失声明”。返回三种XML格式的记录。

read 读过。对应dp2library的Return() API。 案例1: Operation:read Patron:R0000001 Item:0000001 Style: Patron Format List:xml Item Format List:xml Biblio Format List:xml 读者证条码号为R0000001的读者读过册条码号为0000001的图书。返回三种XML格式的记录。

reservation 预约图书。对应于dp2library的Reservation() API。 有以下子功能: "new" "delete" "merge" "split" 子功能通过Style参数指定。

案例1: Operation:reservation Patron:R0000001 Item:0000001 Style:new 创建一个单独的预约请求,包含一个册条码号0000001。

案例2: Operation:reservation Patron:R0000001 Item:0000001,0000002 Style:new 创建一个单独的预约请求,包含两个册条码号0000001,0000002。

案例3: Operation:reservation Patron:R0000001 Item:0000001,0000002 Style:split 把两个册条码号0000001,0000002从现有的预约请求中拆分为独立的预约请求。

案例4: Operation:reservation Patron:R0000001 Item:0000001,0000002 Style:merge 把两个册条码号0000001,0000002从现有的分开的预约请求中抽出合并为一个预约请求。

案例5: Operation:reservation Patron:R0000001 Item:0000001 Style:delete 从现有预约请求中,删除一个册条码号0000001。

建议预约界面能在提交前自由组合、编辑、增删每个独立的预约请求。每个独立的预约请求中,可以包含一个或者多个册。组合好以后,再统一提交,每次API创建一个预约请求。 对已经提交的预约请求的编辑修改界面,可以作为辅助界面。为什么说这是辅助界面呢?因为如果读者直接在辅助界面上编辑修改预约请求,因为这是已经提交的预约请求,所以随时可能会遇到有人还书,就触发了预约请求,也许这时还在编辑中途,那么这种触发会导致不如意的到书通知。更何况在允许在架预约的情况下,提交预约请求立即会触发到书通知,根本就没有机会让读者在界面上编辑预约请求了。

resetPassword 重设读者密码。对应于dp2library的ResetPassword() API。 dp2library的ResetPassword() API 返回值定义如下: // return: // -1 出错 // 0 因为条件不具备功能没有成功执行 // 1 功能成功执行

注意,请求参数结构中,Patron成员对应于ResetPassword() API的strParameters参数;Item成员对应于strMessageTemplate参数。返回结构的PatronBarcode成员对应于strMessage参数。 dp2Capo端所对应的dp2library账户应该具有resetpasswordreturnmessage权限。 返回结构的PatronBarcode成员里面,是调用者需要用手机短信发给读者的内容,是一个XML格式的字符串。注意只能发给指定的手机号码,不要让任何其他人员得知里面的包括临时密码的敏感内容。

Patron成员里面需要放一个参数字符串。其中包含若干参数,参数之间用逗号间隔。 其中queryword参数是检索读者记录的检索词。如果直接放内容,表示检索读者证条码号。如果使用前缀,可以表示多种检索途径: 0) 如果以"RI:"开头,表示利用 参考ID 进行检索

  1. 如果以"NB:"开头,表示利用姓名生日进行检索。姓名和生日之间间隔以'|'。姓名必须完整,生日为8字符形式。如果只想包含姓名部分,不包含生日部分,要这样表达”NB:姓名|”才能实现精确命中的效果。如果最后不包含一个竖线字符,可能会检索命中较长的一个姓名,那就不准确了。
  2. 如果以"EM:"开头,表示利用email地址进行检索。注意 email 本身应该是 email:xxxx 这样的形态。也就是说,整个加起来是 EM:email:xxxxx
  3. 如果以"TP:"开头,表示利用电话号码进行检索
  4. 如果以"ID:"开头,表示利用身份证号进行检索
  5. 如果以"CN:"开头,表示利用证件号码进行检索

style参数如果为returnMessage,表示不要dp2library给读者手机发送短信,而是在strMessage也就是PatronBarcode成员中返回一个XML字符串,然后由调主来给读者手机发送短信。

当style参数为returnMessage时,对Patron成员中参数的要求较低,最少只要具备queryword和tel两个参数即可(当然不要忘了包含style参数)。

返回的XML记录中,patron元素可能会出现多次,表示有多个读者记录符合条件。请求者可以选择其中一个构造文字发出手机短信,也可以选择多个。patron元素下有refID元素,可以记下来,在后期需要绑定读者记录的阶段使用它,比其它特征唯一性更强。 返回的成员String中,如果为”NotFound”,表示该读者尚未在账户中注册过手机号码。

案例1: Operation:resetPassword Patron:style=returnMessage,queryword=R0000001,tel=xxxxx,name=姓名

案例2: 用姓名+电话号码 style=returnMessage,queryword=NB:张三|,tel=xxxx,name=张三 如果出现重名的读者,dp2library会自动用电话号码来进一步缩小范围。strMessage中会返回读者记录的参考ID,倘若用它做后面的绑定操作就具有唯一性了(假定找回密码和绑定是组合在一起的先后两步)。

案例3: 用姓名+证条码号+电话号码。一般读者都记不住自己的证件条码号,这个方法比较不常用: style=returnMessage,queryword=R0000001,tel=xxxxx,name=姓名

changePassword 修改读者密码。对应于dp2library的ChangeReaderPassword() API。

案例1: Operation:resetPassword Patron:R0000001 Item:old=xxxxx,new=xxxxx 注:Item里面的子参数值部分是用URLEncode转义过的,可以存储各种字符。 如果要指定空密码,可以这样:old=,new=xxxx 或者 old=xxxx,new= 如果要让密码子参数为null,可以省略子参数,例如:old=xxxx 表示 new就是null。 如果old子参数为null,表示不用验证旧密码,相当于强制修改的意思。

verifyPassword 校验读者密码,或者获得读者二维码字符串。对应于dp2library的VerifyReaderPassword() API。

案例1: Operation:verifyPassword Patron:R0000001 Item:密码 ResultValue返回1表示密码正确,0表示密码不正确。

案例2: Operation:verifyPassword Patron: !getpatrontempid:R0000001 Item: ResultValue返回1表示成功,-1或0表示不成功。 成功的情况下,ErrorInfo成员里面返回了二维码字符串,形如” PQR:R0000001@00JDURE5FT1JEOOWGJV0R1JXMYI”

注: 如果为Patron参数值为 "!getpatrontempid:" 开头,表示希望返回一个读者证号对应的二维码字符串,这个操作需要具有 getpatrontempid 权限才行

verifyBarcode 校验读者证条码号和册条码号。对应于dp2library的VerifyBarcode() API。

案例1 (校验条码号) Operation:verifyBarcode Style:空,或者 VerifyBarcode。为兼容旧版本dp2capo和dp2library,这里最好用空。 Item:海淀分馆 Patron:R0000001 ResultValue返回 0: 不是合法的条码号 1:合法的读者证条码号 2:合法的册条码号。-1表示一般性错误;-2表示dp2library的library.xml中没有定义VerifyBarcode()脚本函数。 ErrorInfo成员里可能会有报错信息。

案例2 (对条码号进行变换) Operation:verifyBarcode Style:transform或者TransformBarcode Item:海淀分馆 Patron:R0000001 ResultValue返回 0:条码号没有发生变换 1:条码号发生了变换(此时成员PatronBarcode里面返回变换以后的条码号)。-1表示一般性错误;-2表示dp2library的library.xml中没有定义TransformBarcode()脚本函数。 ErrorInfo成员里可能会有报错信息。PatronBarcode成员里返回变换以后的条码号(若ResultValue为1)。

案例3 (检测一个分馆的(读者和册)条码号是否需要变换) Operation:verifyBarcode Style:transform或者TransformBarcode Item:海淀分馆 Patron:?transform ResultValue返回 0:“海淀分馆”的条码号不需要进行变换 1:“海淀分馆”的条码号需要发生变换。-1表示一般性错误;-2表示dp2library的library.xml中没有定义TransformBarcode()脚本函数。 ErrorInfo成员里可能会有报错信息。

Clone this wiki locally