鉴定助理
退款通知
鑫然
心砳
univerify_66068fc356f86
欣然
心乐
系统通知
内容管理助手
晴空万李
太阳鱼
工单助手
内容审核助手
龙泉斋
账户安全助手
莫道设计
余额助理
五色
小可鸭鸭
小可爱
本页链接:
其他平台分享:
暂没有数据
记录2023年项目进度周期。
请登录之后再进行评论
文章测试
1、在xc_query_identify方法中新增了一个名为“uncache”的变量字段,默认设置为false。当将其设置为true时,本次查询将拒绝使用缓存,强制通过数据库获取最新的有效数据,获取到的数据会更新已有的缓存。在某些特定场景中,数据的敏感性要求较高,通过拒绝缓存的方式确保返回的是真实可靠的信息。
2、在使用 xc_query_identify 查询鉴定订单时,如果将 uncache 设置为 true,且传递的订单号正好是主键ID值,那么在通过 xc_get_sql 发起查询请求时,将会增加一个第三个参数(false)。这一设置表明此次数据查询需要直接通过 wpdb 的原生方法获取数据,而不使用缓存结果,以确保查询结果的实时性和精确性。
3、优化了wpdb查询语句以防止注入风险。在使用wpdb构建查询语句时,通过prepare方法进行SQL查询,从而有效防止SQL注入。同时,将查询方式改为get_row,仅返回第一条记录,从而提升查询性能和效率。此外,表的前缀现在通过$wpdb->prefix动态获取,这使得在后期更新数据表时可以轻松进行一键切换操作。
4、已完成对 xc_query_identify 方法的封装,这一方法将用于未来所有订单类查询的封装处理。其执行逻辑如下:首先,检查给定的 ID 是否为数字。如果是数字,通过主键 ID 进行查询,使用封装的 xc_get_sql 方法来发起数据查询,该方法内置了缓存设计方案。如果缓存被关闭,相同的 xc_get_sql 请求也会被标记为不使用缓存的情况。若 ID 不是数字,则将其视作鉴定编号进行处理。为此,系统会构建一个缓存键名(形式为 query_identify:" . $id),并使用 get_redis_meta 方法检查 Redis 缓存中是否已存在对应的数据。如果缓存中有结果,则进一步判断其内容,如果结果为字符串 "false",则直接返回标记为 false 的结果。对于其他情况,直接返回缓存中的数据。不存在缓存时,系统初始化数据库表名并添加 WordPress 前缀,准备生成 SQL 查询语句以通过鉴定编号查询数据库。查询操作会获取一行结果作为关联数组返回。若查询成功,结果会被缓存至 Redis 中,缓存有效期为一天。若查询失败,则会将结果记为 'false' 缓存至 Redis,防止后续重复查询。
5、function/query.php订单缓存查询脚本库现已集成至宫论核心库中。对于所有使用宫论的项目,这意味着可以直接调用该脚本库的文件和方法,而无需加载任何外部依赖。考虑到订单查询是一个非常关键的环节,后续操作会相当频繁,直接将其继承到核心库中将有效减少频繁引入的麻烦,提升系统性能与操作效率。
6、order_details(鉴定订单页面)基于全新的标准构建,标识命名通过动态化引入实现优化。page-content容器添加了xc_app子类,以明确页面属于APP移动端,从而支持标准组件的集成与监听功能。前端在进行页面交互监听时,可以结合页面标识和content使用,以精准定位和操作元素。此外,该页面还通过is_page方法判断最终页面的位置,提升了页面的响应能力和管理效率。
7、在xc_is_page_open访问拦截钩子处,新增了一项拦截机制。当用户请求访问identify_order_details页面时,将启动xc_query_identify方法检查鉴定订单号是否有对应记录。如果查询结果为不存在(即返回false),系统会立即激活拦截机制,将用户强制重定向至错误页面,并在页面上明显提示【鉴定订单号不存在】。此拦截在页面加载之前便已完成,以确保用户无法访问不存在的鉴定单据页面,从而提升系统的整体安全性与用户体验。
8、为确保鉴定订单列表页面的设计规范明确,使得鉴定师和用户在查看时不会出现功能模块重叠的状况,页面设计需考虑区分两者的不同操作权限。由于该页面既供鉴定师也供用户查看,因此需要根据订单的不同状态(如待鉴定、已鉴定、已退回、已取消)提供相应的操作选项。为此,当用户进入页面时,系统将生成两个变量以明确身份:一个对应鉴定师(expert),另一个则对应申请人(applicant)。如果来访者是鉴定师,则expert变量为true;如果来访者是申请人,则applicant变量为true。页面操作功能的构建将依据这两个变量的状态来判断权限,确保功能模块的操作体验清晰、界限分明,从而避免产生误操作和功能混淆的情况。
9、在订单详情页中新增了一个名为“apply_box”的页面容器,用于展示鉴定申请的基础信息。具体条目包括:鉴定编号(如xxxxxxx)、鉴定栏目(通过key参数鉴权后返回对应分类,如瓷器)、鉴定人(显示站内的昵称信息)、鉴定申请时间(格式为Y-m-d H:i:s)、鉴定状态(根据订单的status字段输出对应内容,例如状态1表示“等待鉴定”)。
10、对鉴定订单表(xc_identify)进行了索引优化处理。首先,将number(鉴品编号字段)设置为主键唯一值,并为其建立单独索引。这是因为许多后续查询都依赖于鉴定编号,为了提升性能,这一优化是十分必要的。其次,将price价格字段的数据类型从varchar(32)调整为decimal(10,2),以便更准确地表示和处理金额,例如2.32元。最后,删除了原有分类索引中的number字段,因为该字段已升级为主键,组合索引已不再需要。
11、新增通用CSS样式规则【box_info】,该样式专用于页面头部容器内容的展示。此前,每次都需要单独编写样式,非常不便,而且这样会导致样式表逐渐变得庞大冗杂。因此,我们引入了一个固定类名,通过此类名统一管理样式。这一新样式将与WeUI组件配合使用,以提升样式美观度,主要用于展示单据和客户信息的基础内容。
12、鉴定订单状态包括以下几种:1. 待鉴定:鉴定订单已完成付款,当前正等待鉴定师进行评估。2. 已完成:鉴定师已对订单完成了鉴定工作。3. 已退回:由于某些原因,鉴定师将订单退回,需进一步处理。4. 已取消:用户在鉴定师开始鉴定前主动取消了申请。5. 鉴定关闭:由于超时、违规操作或其他原因,订单被系统或管理员强制关闭。请注意,状态3和4的订单都会触发退款流程,意味着鉴定订单的关闭,一个是由鉴定师操作关闭,另一个则是由用户操作关闭。
Warning: Trying to access array offset on value of type bool in /www/wwwroot/www.acocoa.com/wp-content/module/public/function/acocoa/function/jinsom.php on line 163
拉黑 举报 打赏 回复524楼
1、在infinite_loading页面监听器中新增了一个作用域变量:infinite_content。该变量用于定位到.page-content. + page_name + _content元素的位置,即页面page-content容器的内部。这一调整是因为许多自定义属性无法通过组件模块直接获取,因此在执行AJAX分页加载请求时,需要使用page-content选择器对页面属性进行调整。为了避免重复调用造成的性能浪费,此次优化提前将选择器结果存储在作用域变量中,实现更加高效的页面操作。
2、在xc_template_infinite_page_html模板组件方法中,新增了一个可选变量:meta数组字段,默认为空数组。该变量用于在特定场景下传递自定义属性。例如,在鉴定师订单列表页中,分页加载时需要传递鉴定师的对象UID;或者在查询已完成退款的支付订单时,需要提供status状态字段进行判断。这些需求都可以通过传递meta数组来实现处理。模板内部会解析meta数组,并将相关属性写入待生成的模板HTML中。
3、安全优化:目前,宫论模板组件中的所有字符串信息都会通过esc_attr方法进行转义处理,以有效防止非法字符或恶意脚本的注入,避免可能导致的恶意执行问题。注意,此优化措施适用于所有模板组件中自定义PHP变量的字符串输出,确保每一处都经过esc_attr进行安全处理,避免非法参数写入的情况出现。
4、在后台新版缩略图配置中,新增了一个场景功能,即藏品鉴定的图片缩略图配置(identify)。用户提交藏品进行鉴定时,上传的图片将默认通过缩略图样式进行呈现。只有当用户点击查看大图或使用灯箱浏览时,才会真正加载原图。这一设计有效地减少了不必要的流量消耗,并显著提升了页面的加载速度。缩略图的样式采用:?imageMogr2/thumbnail/300x。值得注意的是,这种缩略图配置将贯穿整个宫论项目,是实施不可或缺的一部分。
5、新增鉴定订单详情页面:module/xc_identify/order_details.php,页面唯一标识:xc_order_details。该页面是一个关键的功能模块,专用于展示鉴定订单的详细信息。默认情况下,此页面的访问权限仅开放给鉴定师和发起鉴定的用户。根据用户权限的不同,他们在查看页面时获得的信息和可操作的选项也会有所差异。鉴定订单具有多种状态,而每种状态下,不同的用户和鉴定师可以执行的操作选项也各不相同。这也使得页面的设计变得相对复杂,但其对于整体业务流程至关重要。
6、访问鉴定订单详情页时,需要通过GET方式传递两个参数变量:1、id,即鉴定订单数据表的主键id值;2、number,指鉴定编号。这两个变量参数用于识别当前用户访问的鉴定藏品订单的唯一标识。通常,只需根据实际情况传递其中之一即可。如果两个参数都为空,页面将返回错误提示。建议优先使用number来传递变量,以避免对外暴露id。
7、鉴定师订单详情页现在按照新标准构建。首先,页面标识采用动态变量进行传递,所有涉及页面操作的地方均通过page_name变量进行输出。其次,在核心库的脚本加载完成后,会立即加载页面访问事件拦截文件(ajax_page),使用内置方法过滤和屏蔽非法及恶意访问行为。最后,引入模板引擎文件,通过引擎生成和处理订单详情页的模板组件。
8、订单详情页集成【xc_is_page_open】访问拦截钩子,当用户访问订单页面的时候,会判断是否有权限进行访问。判断标准如下。通过id或者number来构建wpdb方法去获取鉴定订单表信息,同时使用xc_is_login获取当前用户ID。并与返回的结果进行进一步对比,如果当前用户不是指定鉴定师、不是发起鉴定用户。则视为无权访问。注:拦截钩子执行的时候需要主动传递id或者number,要不然无法获取到相应参数信息。
9、新增了一个名为 xc_get_identify() 的订单读取方法,该方法专门用于获取鉴定订单的信息。其参数需要传递一个变量ID,这个变量支持输入鉴定编码(number)或鉴定表主键ID,函数内部会利用正则表达式来判断ID的类型。借助 WPDB,该方法能够读取并提取鉴定师订单的详细信息。当信息读取成功时,该方法将返回一个包含相应数据的数组结构;如果读取失败,则返回 false。
10、xc_query_identify方法现已支持缓存设计方案,缓存的键值为:get_identify:(鉴定编号或主键)。该方法首先检查缓存中是否有记录,如果存在则直接返回结果,提高了查询效率和响应速度。如果缓存中没有记录,则通过wpdb查询获取相应记录,并在返回结果之前将其存储到Redis缓存中,缓存有效期为86400秒(1天)。需要注意的是,如果wpdb未能查询到结果,方法会返回false,并将此结果以字符串形式写入缓存。当读取缓存时,会首先判断返回结果是否为字符串'false',如果是,则直接返回false。这种处理方式确保了Redis缓存的结果更为精准可靠。
11、宫论项目新增了脚本库【function/query.php】,此脚本专门负责管理和维护订单查询接口的封装。所有订单类型的查询接口按照统一的封装规则命名为:xc_query_订单类型。例如,淘货订单查询接口为:xc_query_tao,保真阁订单查询接口为:xc_query_bzg。传递的参数将根据不同订单类型进行确定。该脚本的核心目标是实现统一管理,提升后期维护的便利性。鉴于订单查询接口通常涉及复杂的缓存管理机制,实施统一管理显得尤为重要。
12、在xc_query_identify执行结果返回前,会首先进行权限验证。如果当前用户未通过xc_is_login验证登录,则直接返回false。若用户已登录,在读取缓存或从wpdb获取结果时,系统会核实用户身份是否为鉴定师或本人账号。如果以上条件均不满足,也会直接返回false。不过,如果用户是管理员,则会跳过这些拦截措施。通过这一验证机制,确保鉴定订单的返回结果仅对相关当事人可见,增强数据的安全性和隐私保护。
Warning: Trying to access array offset on value of type bool in /www/wwwroot/www.acocoa.com/wp-content/module/public/function/acocoa/function/jinsom.php on line 163
拉黑 举报 打赏 回复523楼
1、修复并解决了“我的鉴定列表”页面的下拉滚动监听问题。在鉴定师向下拖动页面时,现在能够正确检测页面距离底部的距离。如果该距离超过500像素,则会触发下拉的ajax事件,从服务器请求更多数据以填充页面。之前版本使用的是page_content容器来处理监听事件,而在新版中,改用了模板组件,因此需要调整监听器的位置。通过调整后,监听器能够在页面拖动过程中实时计算距离,确保能够正确触发下拉加载功能。
2、宫论分页数据接口统一化标准:默认页数设定为20,无论是首页还是后续的分页数据请求,皆默认返回20条数据。为了防止兼容性问题,现有的分页请求暂时不做调整,依旧按照原先的页数进行数据返回。然而,对于通过模版组件构建的分页请求和下拉数据,一律采用20条的新默认值。需要注意的是,传统的10条返回可能在后续的大屏和折叠屏处理时出现兼容性问题,可能导致无法触发下拉滚动监听。
3、优化了全局页面的下拉滚动监听事件。现在,在监听当前页面(模板组件)的自定义属性page(页数)时,如果发现该属性为0,将自动触发$('.page-content.' + page_name + '_content').trigger('infinite');事件,从而进行数据初始化请求。通过这种方式,即使在模板分页组件场景中未主动传递初始化数据,也能够在用户访问页面时自动完成数据的初始化装填。
4、分页模板组件现已支持【infinite_loading】全局对象的判断处理,该对象负责管理所有AJAX分页请求。对象键值为【infinite_loading[page_name],其中page_name是页面的唯一标识】。当页面符合分页加载请求条件时,对应的键值为true,不符合分页加载请求时则为false。在实现无尽滚动监听时,需要通过判断infinite_loading对象是否符合AJAX请求,以防止无限加载情况的出现,从而避免性能开销的浪费。
5、为了确保首页内容准确展示,分页模板组件的初始化内容的时,首先会通过page_list.empty()方法清空页面原有内容,避免原来的页面内容与新加载的数据叠加。完成清空操作后,在调用trigger('infinite')方法模拟滚动下拉事件,实现页面数据的重新填充。修复了之前未进行内容清理而导致的数据加载错误,避免了新的分页数据被加载到原来默认错误提示的后面。
6、宫论统一分页接口现在已适配(infinite_paging_api)请求,当收到模版组件构建的分页请求,都将转发到这个接口进行处理。该接口需要传递infinite数组对象,必备的参数有【page:页码,表明当前是第几页、key:场景标识,唯一属性】。可选参数有很多,可以根据场景的需求来传参,比如【sort:请求分类、author_id:用户对象】等等。
7、模板分页接口文件现已调整为返回标准的 JSON 数组结构。由于分页场景多样且各自返回的错误不同,所以不适合采用传统方式来返回数据结构(例如,在无数据时直接返回 false)。这种情况下,前端无法有效处理错误码,因此采用数组结构来处理返回结果。具体而言,code=0 表示数据返回成功,html 已经封装好的前端内容字符串(前端可直接插入);code=1 则表示无记录或有错误,msg 字段提供具体的错误信息。
8、考虑到前端解析存在困难,分页接口在返回数据时,即使没有记录或出现错误,也会包含一个HTML字段。这一字段会通过xc_empty进行转换处理。前端只需专注于对code值进行判断,即可接受结果,将分页接口返回的HTML字段直接插入到相应的容器中。这样既减少了前端的解析和处理负担,也使得后续对返回结果的管理和维护更加简便。
9、前端已完成分页组件模板的结果处理。在服务端完成数据请求后,前端会根据返回的code值执行相应的页面逻辑。首先,如果成功获取到分页数据,则会将生成的HTML内容通过append方法插入到页面底部,并将page变量递增1。接着,通过attr方法将当前页数设置为有效值,同时将infinite_loading[page_name]标记为false,以允许继续触发下拉滚动来加载更多数据。其次,如果未能获取到更多的分页数据(code=1),则会将错误信息通过append方法显示在页面底部,并将infinite_loading[page_name]标记为true,以阻止后续的分页滚动加载。
10、新增前端回调钩子:template_infinite_page_callback()。该钩子将继承模板分页组件中的infinite对象属性值,并在服务端成功返回JSON数据包后被触发,无论code状态如何,都会主动触发此事件。目前,该钩子主要执行两个操作:首先,它会关闭加载动画,以完成页面的交互动作;其次,通过empty方法移除list中可能出现的xc_empty错误提示。
11、为优化前端回调钩子的管理,新增了脚本文件(callback.js),唯一标识为(xc_callbac)。该脚本采用延迟加载的方式,在页面完全加载后执行。通过wp_enqueue_script方法,将其加载到宫论项目中,仅供移动APP端使用。值得注意的是,所有回调事件均被整合到此脚本中,以便后续的维护和更新更为便利。此前使用的HOOK脚本方案非常不便,因此进行了这一改进。
12、宫论服务端同样也新增一个回调动作脚本【function/callback.php】该脚本库负责宫论统一钩子的回调处理,命名规范:xc_钩子的名称_hook_callback($result)在设计钩子的时候,如果需要对返回结果进行后续业务交互处理的时候,就集成一个回调动作脚本,在动作脚本中使用websocket+redis,来完成消息转发功能。注:回调动作,必须是已完成状态,并且不支持任何形式的结果返回监听。只是单纯的触发事件。最好采用异步来处理回调行为,避免阻塞钩子的业务进程。
Warning: Trying to access array offset on value of type bool in /www/wwwroot/www.acocoa.com/wp-content/module/public/function/acocoa/function/jinsom.php on line 163
拉黑 举报 打赏 回复522楼