谢涛
谢涛
# 修改数据记录相关 API 改进 这次也顺便对几个负责修改数据记录的 API 进行了改进。SetBiblioInfo() SetReaderInfo() SetEntities() SetOrders() SetIssues() SetComments()。 ## new 和 change 两种动作之间的异同 早期为修改记录类的 API 都提供了一个 strAction 参数和一个 strRecPath 参数,分别指定要进行的操作,和要修改的记录的路径。 最早的设想场景如下:当 strAction 值为 "new" 时,strRecPath 值为类似“中文图书/?”...
# 修改动作 1) 修改动作,在请求提交的读者 XML 记录中缺乏 barcode 元素 会被当作删除 barcode 元素。保存成功后,观察读者 XML 记录,原有 barcode 记录被删除了 2) 修改动作,在请求提交的读者 XML 记录中缺乏 barcode 元素。例如只包含 name 元素。并在 XML 记录根元素的 dataFields 属性中指明提交的元素 "name",这样 dp2library 就知道不会破坏原有记录的...
# 新创建动作 1) library.xml 中 circulation/@acceptBlankReaderBarcode 可以设置保存读者记录的时候是否接受空证条码号。测试验证功能是否兑现(即根据接受和不接受两种情况,各制造 barcode 是否为空两种场景进行测试) 2) 创建读者记录时,会强制对证条码号进行查重。制造重复 barcode 的其它记录进行测试验证。 3) 路径为空的时候,会自动选择第一个读者库追加创建记录。 4) 创建读者记录时,对显示名 (displayName) 会进行查重。和 barcode 查重类似。 也检查显示名和证条码号之间的重复。也检查工作人员账户名和显示名之间的重复。 5) 创建读者记录时,请求所提交的读者 XML 记录中如果包含流通信息元素,比如 borrows 等,软件会过滤掉这些元素然后才真正写入新记录。 6) 当前用户只能在自己管辖的分馆内的读者库中创建新记录...
# 删除动作 1) 测试账户具备 setreaderinfo 权限时的删除功能。应当可以删除任意读者记录。这里又细分以下情形: 1.1) 工作人员账户,注意如果是分馆身份,则只能删除自己管辖的分馆的读者库的记录。如果是总馆身份,可以删除总馆和任意分馆的读者库的记录。 1.2) 读者身份,无法删除任何读者记录。即便是读者自己的读者记录也不能删除。 1.3) 凡是有流通信息的读者记录都无法删除。 2) 测试账户只有 setreaderinfo:xxx 权限时的删除功能。又细分以下情形: 2.1) 如果 xxx 中不包含 r_delete,则无法删除读者记录。 2.2) 如果 xxx 中包含了 r_delete,则具备删除读者记录的可能。还要看拟删除的读者记录中实际存在的元素,是否正好在当前用户可修改的元素范围内,在范围内才允许删除。(注: borrows libraryCode 等系统负责维护的元素,不在上述检查范围之内) 3)...
# 管理员代理读者登录 在不知道读者账户的密码的前提下,可以用一个权限足够的管理员账户,代表读者进行登录。登录后看起来和读者平时自己登录没有什么区别。 一般登录需要二元信息:用户名+密码。而管理员代理读者登录时需要三元信息:读者用户名+管理员用户名+管理员密码。其中“读者用户名”包括读者证条码号、姓名、身份证号等等可用的途径。 下面是一个样例代码片段: ``` string strUserName = "CN:B5C57074"; // 这里是一个读者的 CardNumber,即绑定的副卡卡号。可用的前缀可参考相关文档 string strParameters = "index=-1,type=reader,simulate=yes,libraryCode=" + LoginControl.GetLibraryCodeParam(strLibraryCode) + ",client=dp2OPAC|" + OpacApplication.ClientVersion; string strPassword = app.ManagerUserName + "," +...
# 登录时获得 dp2library Token 有一些场合需要尽量避免存储和传递类似用户名、密码这样的敏感信息,可以使用(登录成功后) dp2library token 来代替。当前端需要重新登录的时候,用以前登录成功时获得的 token 来进行登录即可。 下面是一段样例代码,示范了如何在登录时获得 dp2library token 字符串。 ``` long lRet = channel.Login(strUserName, strPassword, strParameters + ",gettoken=day", out strError); if (lRet == 1) {...
# 用先前得到的 dp2library token 登录 dp2library token 代表了一个已经成功登录的用户身份,可以用它代替用用户名和密码来进行登录。注意 token 是有有效期的,分为 day month year 三种有效期。过了有效期 token 就失效了,需要重新获得 token。 ``` string strUserName = "R0000001"; // 这是一个读者的证条码号。token 登录只允许使用读者证条码号 string strParameters = "index=-1,type=reader,simulate=yes,libraryCode=" +...
# dp2OPAC login.aspx 利用 token 登录 最新版 dp2OPAC 的 login.aspx 支持使用 token 字符串进行登录。例如: ``` http://localhost:8081/dp2OPAC/login.aspx?action=tokenlogin&id=R0000001&redirect=searchbiblio.aspx&token=GKOfRJsoxd63VNoRE0yxsCPfrFw|||20210203 ``` 其中 id 参数定义了读者证条码号,token 参数定义了 token 字符串,redirect 参数定义了登录后要跳转到的页面。 注意 URL 中的 token 参数内容要先用 UrlEncode() 函数转义处理
# 书目栏目中脚本的使用方法 输出新书通报模块为书目栏目提供了 javascript 脚本定制的能力。 ## 环境变量 书目栏目的 javascript 脚本,可以使用环境在调用前准备好的下列变量: biblio 书目记录。类型为 MarcRecord。 syntax MARC 格式。类型为 string。值为 "unimarc" 和 "usmarc" 之一。 result 预先取出的当前栏目内容。类型为 string。 host 宿主对象。类型为 ScriptHost。 脚本中可以创建一个名为 message 的...
# 册栏目中的脚本使用方法 ## 环境变量 书目栏目的 javascript 脚本,可以使用环境在调用前准备好的下列变量: item 册记录。类型为 XDoc。 result 预先取出的当前栏目内容。类型为 string。 host 宿主对象。类型为 ScriptHost。 脚本中可以创建一个名为 message 的 string 类型的变量,脚本返回后,宿主通过它可以得知脚本意图传递的错误信息。 脚本举例: ## 对宿主已经准备好的内容进行修改 脚本如下: ``` result = "(" +...