退款通知
鑫然
心砳
univerify_66068fc356f86
欣然
心乐
系统通知
内容管理助手
晴空万李
太阳鱼
工单助手
内容审核助手
龙泉斋
账户安全助手
莫道设计
余额助理
五色
小可鸭鸭
小可爱
诗雅吖
本页链接:
其他平台分享:
暂没有数据
记录2023年项目进度周期。
请登录之后再进行评论
文章测试
1、新增前端事件save_expert_info()用于保存鉴定师资料的修改请求,同时切换鉴定师的编辑模式。当需要对鉴定师资料进行修改时,可通过此事件发送请求。此事件会进行两个基本的拦截检测。首先,检测页面是否存在元素identify_expert_manage_content,如果不存在则表示用户不在鉴定师管理页面,视为非法请求,阻止该操作。其次,使用xc.is_login来验证用户是否已登录,如果未登录则强制跳转到登录页面。
2、当成功切换到鉴定师资料的编辑模式时,系统会将 update 自定义属性的值更改为 2,以标记当前正处于编辑状态。对应的 save_expert_info 资料保存更新事件会检查该自定义属性的值。如果属性值不等于 2,则会拦截后续操作,并提示用户【未处于编辑模式】。
3、在编辑模式下修改鉴定师资料事件时,会封装一个作用域对象【save】。该事件将从页面中提取以下参数信息并存储到该对象中。首先,通过自定义属性获取鉴定师对象的 author_id。接下来,从编辑表单中获取认证描述信息并将其作为 verify 参数。然后,提取从编辑表单输入的从业经历长文本信息,这部分信息存储在 info 参数中。同时,还会提取资质证书图片,这些图片是公开展示的,将其存储在 image_public 参数中。最后,提取授权合作协议图片,并将其保存在 image_material 参数中。通过这些步骤,确保所有必要的信息都被正确采集到【save】对象中,以供后续处理和存储。
4、在编辑模式下,鉴定师相关的图片处理逻辑如下:首先,通过img[src^="blob"]匹配检查是否存在blob临时图片,如果存在则返回错误,提示【编辑失败:有图片未成功上传!】。接着,匹配xc_publish_images_list元素来确定图片列表是否存在,如果不存在则提示【编辑失败:资质证书图片不能为空】;如果存在,则将该列表通过map函数进行切割存储(多张图片以分号隔开)。最后,匹配identify_expert_awards来确定是否存在,如果不存在则提示【编辑失败:授权合作协议图片不能为空】;如果存在,则将其通过map函数进行切割处理。
5、为了确保编辑操作的安全性和可靠性,前端在进行鉴定师编辑操作时,会执行user.is_security检查。如果该检查结果为false(表明用户设备环境不可靠),系统将返回“编辑失败:环境检测不通过”的错误信息。同时,系统会调用xc_hook_jump_page('security')方法,强制页面跳转至短信安全验证页面,以确保用户操作环境的安全。
6、在完成基础拦截请求后,首先进行环境安全验证、用户操作权限基础拦截、页面请求核验和提交参数验证等一系列安全检查。接下来,鉴定师资料编辑请求将通过ajax方式向服务端发起请求,提交的接口为:save_expert_info,同时携带之前已封装好的save对象数组。根据服务端的处理结果,我们将进行相应的后续页面交互操作。注:为了防止重复操作,系统会调用xc_loading_show显示遮盖层,在接收到服务端返回结果后,遮盖层将会立即关闭以继续用户操作。
7、服务端新增了一个钩子函数:xc_expert_info_update_hook(),它用于在鉴定师资料修改时进行处理。由于鉴定师资料修改会影响到各类缓存,因此需要通过钩子方式来执行相关请求。这个钩子会接收一个包含了需要更新参数信息的数组"update",并根据数组中的字段类型来执行相应的更新操作。钩子的返回值是一个标准的数组结构,其中code=0表示更新成功,code=1表示更新失败,msg字段则用于提供失败的详细信息。需要注意的是,这个钩子函数具有较高的灵活性,能够根据传入的数组进行多种类型的字段更新。
8、鉴定师资料修改钩子,基础拦截事件已完成封装。进入修改业务逻辑前,会依次执行以下检测。1、通过xc_is_login检测用户是否登录,如果用户未登录则提示登录后操作,并通过jump返回login,强制前端发起登录。2、通过xc_is_review('audit_identify_expert')方法检测用户是否具备审核权限,如果不具备则返回【编辑失败:你无权进行操作】。3、通过wpdb构建查询语句,检查xc_expert数据表是否存在鉴定师记录,如果不存在则直接【编辑失败:鉴定师资料不存在】。如果存在则将返回数据表赋值到expert。
9、服务端在处理鉴定师资料修改请求前,会通过xc_is_security检测当前操作者环境是否安全,如果返回false则表明不可靠。此时会返回错误【设备环境不安全,需要短信验证。】。同时附带jump=security的返回,这样前端会自动识别并强制页面跳转到短信安全验证页面。注:鉴定师资料修改涉及到敏感操作,因此需要对环境安全做出对应拦截处理。
10、鉴定师认证描述修改处理流程。1、首先通过isset检测$update['verify']是否存在,如果存在则不需要修改认证标识。2、通过get_user_meta获取鉴定师的认证描述信息,与当前提交的认证描述进行对比,两者不一致才进入修改流程。3、通过xc_is_admin_x检测用户权限,只有前台管理员才可以修改。4、使用mb_strlen获取认证描述字数,如果大于30则拦截提示。5、通过xc_verify_update_hook执行认证更新流程,如果返回code=1则代表失败,会直接返回错误并终止执行。
11、鉴定师从业经历修改处理流程。1、通过isset检测$update['info']是否存在,如果不存在则不需要修改从业经历。2、通过xc_is_html检测是否包含特殊非法字符,如果存在则返回【编辑失败,存在HTML非法字符】。3、使用mb_strlen获取从业经历字数,如果小于20或者大于300则拦截提示【编辑失败:个人从业经历介绍必须在20到300个字符之间。】
12、服务端在处理鉴定师资料修改请求之前,会使用json_decode函数提取数据表中的【info:鉴定师资料】JSON字符串,并将其转换为数组结构。当需要更新这个数组时,在成功执行相关操作后,会将对应的字段数值进行更新。例如,在认证成功修改后,会将这次修改的认证描述更新到info['verify']字段中,最后统一更新数据表。只需关注info数组中的字段变化即可,确保数据的准确性和一致性。
13、xc_upload_media_ok钩子进行了优化处理,现在image变量不仅支持字符串形式的图片列表,还能支持数组结构的图片列表。该方法会通过is_array函数检测变量类型,如果检测到变量不是数组,那么会使用explode函数进行字符串切割处理;如果检测到是数组则直接跳过切割环节,从而提升了方法的灵活性和兼容性。
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
拉黑 举报 打赏 回复486楼
1、宫论图片上传组件中,新增了一个方法:xc_upload_image_html_update(key,key,image_list)。此方法的作用是构建图片上传组件,并插入相应的图片信息。提供的两个变量包括:1、key,用于指定上传场景,每个场景均由后台设定;2、image_list,表示预先写入的图片列表信息。多个图片以;进行隔开。通过这个方法,可以在创建图片组件的时候,代入已有图片。
2、图片上传组件中的image_list变量进行了优化处理,现在支持三种类型的参数传递。首先是数组结构,图片以数组形式传入。函数会通过is_array进行判断,如果是数组,则无需进行拆分处理。其次,支持多图以分号";"隔开的字符串形式,此时会检测字符串中是否包含分号,如果包含则使用explode函数进行切割处理。最后,支持以逗号","隔开的多图传递方式,同样会检测字符串中是否包含逗号,如果包含则进行相应的切割处理。
3、图片组件的 xc_upload_image_html_update 方法已完成封装,整个执行流程如下:首先,通过 empty 检查是否传递了 image_list 参数,如果未传递则跳过后续处理。接着,初始化 $image 变量,并使用 is_array、strpos 和 explode 三个方法对 $image 变量进行封装处理。之后,初始化 $li_image 数组,并遍历 $image 来生成相应的 HTML 片段。最终,输出构造的 li_image_array 作为最终结果。
4、对xc_upload_image_html方法进行了重构和升级。该方法继承了image_list变量,默认情况下该变量为空。如果在构建上传图片场景时需要提前加载几张图片,可以根据具体需求传递image_list变量(即图片来源列表)。一旦传递了该变量,方法将会根据提供的列表提前生成相应的图片列表。
5、服务端在处理鉴定师资料修改模式切换时,会通过require_once方法加载图片上传组件(xc_publish_component_image)。接着,它将通过xc_get_sql方法获取鉴定师的详细资料,如果获取失败,则返回相应的错误信息。一旦成功获取到资料,服务端会使用json_decode方法解析info字段,并从中提取出两个关键字段:image_public(公开图片)和image_material(授权图片)。
6、成功获得info数组字段结构后,会依次进行判断。检测是否存在$info['image_public'],如果存在则通过xc_upload_image_html进行HTML构建体封装,然后将其写入到$result['image_public']。同样的入驻授权材料,也是通过$info['image_material']来进行处理,存在记录的时候,构建HTML,并赋值到 $result['image_material']。
7、update_identify_expert_info 已完成封装,该 API 事件直接写入到接口中,卷少钩子的执行现象。整个执行过程如下:首先,进行安全检测,防止非法或不合理的请求行为,主要的处理方式为 xc_is_review。接着,通过数据库查询,将获取到的结果匹配到 xc_expert。最后,检测是否存在对应的图片,如果存在则通过 xc_upload_image_html 方法进行赋值。
8、修复了在执行资料编辑模式切换时,接口返回“Undefined array key 'author_id'”的错误情况。该错误是由于author_id参数传递缺失导致,前端未能正确通过content捕获到自定义属性造成的。目前已对该问题进行了修复处理。同时,接口增加了一个拦截响应机制,如果post对象中没有author_id或者鉴定师取值失败,系统将返回相应的错误信息,以确保数据传递的完整性和准确性。
9、服务端接口响应处理,在执行鉴定师资料编辑模式切换时,会根据返回结果执行不同的处理逻辑。如果返回code=1则表明服务端拒绝了切换模式,此时会通过xc_msg触发对应错误提示,一般为权限错误问题。如果返回code=0,则表明同意本次切换请求,此时会通过继承的content元素,对鉴定师认证描述、鉴定师从业经历两个表单进行解锁处理(默认是不可编辑,移除限制)。
10、鉴定师资料页面,增加两个类名。【image_public_div:鉴定师公开图片容器类名】、【image_material:鉴定师授权资料图片容器类名】。处于编辑模式下,图片将支持上传、移除。排序三个处理,未处于编辑模式则只能查看。因此需要通过容器来进行元素的变更处理。这样确保切换过程中,可以正确响应。
11、如果服务端返回了【image_public、image_material】两个字段,则代表有图片组件需要进行更新处理。此时会锁定原有的灯箱图片容器,然后通过find和html两个方法进行重置写入服务端返回的html构造体。鉴定师资料页面,将会移除原有的图片灯箱,改为附带原有图片的上传组件。注:实测已完成插入,可以正常编辑和删除图片。
12、图片上传组件构造方法xc_upload_image_html进行优化处理,如果传递了image_list变量,则会在切割完成后通过count来统计数组的图片数量。并创建一个初始化变量number,默认值为空。如果image_list数组存在则将其变更为对应的统计数量。该值会写入到upload_quantity元素位置。默认情况下展示为0/12(12是场景限制图片),如果提供了2个图片则变更为2/12。通过这样的处理,避免始终为0的问题。
13、成功切换到鉴定师编辑模式后,会锁定元素upadte_expert_info位置,并将原有的【编辑】更正为保存,同时移除原有的onclick事件,增加新的onclick事件【save_identify_expert_info】。管理员可以通过点击保存按钮,实现鉴定师的基础资料更新动作。避免一旦认证完成,无法进行资料更新的问题。
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
拉黑 举报 打赏 回复485楼
1、在鉴定师管理页面(identify_expert_manage)中新增了一个名为“info”的容器,用于展示鉴定师的详细认证资料。这个容器包含了鉴定师的认证介绍、从业经历、公开图集,以及入驻审核时提交的材料图片等信息。所有与基本入驻相关的提交材料都将在该容器中展示,方便管理员全面查看和审核鉴定师的资质和背景。这一设计旨在提升审核效率,使得管理员可以更直观、更全面地了解每位鉴定师的认证情况。
2、在进入鉴定师管理页面时,系统首先会读取【expert】数组结构,并使用json_encode方式将info字段的内容提取出来,转化为标注的数组结构,随后将其赋值给info变量。该变量包含了用户审核资料的所有信息,是鉴定师资料容器所需的所有变量参数的重要来源。只要用户认证成功,info变量必然会存在,从而确保可以从中提取到鉴定师所需的各种资料。
3、对于鉴定师资料的【认证描述】和【从业经历】两个内容,在页面上可以通过input表单形式进行处理,并分别绑定对应的类名:expert_manage_verify 和 expert_manage_info。为了在页面上呈现时更清晰明了,可以通过hr标签作为子标题进行分隔展示。这样设计的好处在于便于后续实现编辑功能,同时减少页面加载的复杂度,提高用户体验。在具体实现时,可以考虑如下结构:首先,通过 hr 标签明确标识出【认证描述】和【从业经历】两个部分;接着,在每个分段的下方嵌入 input 表单,并使用相应的类名进行绑定,从而实现数据的灵活性和可编辑性。通过这样的设计,不仅能够使页面结构层次分明,还能方便数据的管理和动态更新。
4、在鉴定师资料容器中会进行if条件判断,首先判断用户资料中是否存在image_public字段。如果该字段存在,意味着鉴定师有公开的图片资源,此时系统会通过调用do_shortcode代码段执行xc_image_list方法,以解析并输出相应的图片地址信息。除了检查公开图片资源外,系统还会进一步判断image_material字段的存在性。如果该字段存在,则意味着用户有提供授权材料图片信息,同样这些图片会通过灯箱形式进行展示,以确保视觉效果和用户体验的统一。
5、对鉴定师认证描述表单和鉴定师从业经历表单应用了disabled属性,以防止用户直接修改这些表单的输入内容。这种设置的目的是通过其他特定事件来控制表单的修改,确保默认情况下表单内容不可被选中和编辑。特别地,为了更好地展示鉴定师的从业经历,我们将从业经历表单中的input类型调整为textarea类型,确保更大的内容容器能够呈现更多详细信息。
6、暂时性移除identify_expert_manage页面中的申请详情容器。这个容器展示了用户在申请时提交的详细资料,而这些信息实际上已经在申请资料页面有所展示,因此这里的重复显示显得多余。此外,这种重复展示对页面的整体输出效果也有所影响。因此,为了优化页面,决定暂时将这一容器移除。未来,计划在内页菜单中加入跳转链接,以便管理员能够方便地访问和查看相关申请详情
7、在鉴定师资料页面的头部右侧新增了一个名为【修改资料】的按钮,绑定事件为update_identify_expert_info()。管理员通过这一事件可以处理对鉴定师资料的修改请求。为确保操作的合法性,该事件内置了基础拦截机制,首先检测当前页面元素中是否存在identify_expert_info。如果未找到该元素,此请求将被视为非法操作,并返回相应的错误信息,以保障系统的安全性和数据一致性。
8、在identify_expert_manage_content元素位置增加两个自定义属性。第一个属性是author_id,代表鉴定师的UID;第二个属性是update_status,表示资料的更新状态,其初始值为1,但在特定情况下可以变更为2。这个自定义属性的主要作用是控制页面资料的修改状态。在执行update_identify_expert_in事件时,这两个自定义属性都会被使用,从而确保相应的资料能够根据需求进行更新和管理。
9、update_identify_expert_info事件处理流程。1、通过xc.login检测用户是否处于登录状态,如果未处于则调用并执行xc_login强制进行页面跳转。2、锁定元素位置【identify_expert_detail_content】,并设置一个作用域变量content进行存储,并通过这个元素提取到自定义属性author_id、upadte两个值。3、使用user.is_admin_x来判断用户是否为管理员,如果不是则返回无权操作。
10、鉴定师资料修改模式切换,涉及到两个问题优化。首先,前端会检测author_id和update字段的存在情况,如果这两个字段不存在,将其视为非法操作,加上之前的拦截判断,进一步防止无权限用户进行操作(通常指未经授权的鉴定师)。其次,在资料切换模式中,通过检测update字段的值进行判断,如果该值不为1,则会触发提示信息,提醒用户当前处于资料修改模式。此机制的设置旨在防止在未确认情况下覆盖已经变更的图片,确保资料修改的真实性和准确性。
11、切换到鉴定师资料修改模式后,首先进行基础拦截验证,验证通过后会触发AJAX请求,将author_id参数发送到服务端进行处理。此次请求的标识为:update_identify_expert_info。服务端接口将对请求进行相应的业务处理,包括进行必要的安全验证。需要注意的是,此AJAX请求之所以被触发,是由于图片组件的默认输出为灯箱模式,而我们需要将其转换为上传模式,这一转换过程必须由后端进行处理。
12、服务端处理鉴定师资料安全效验流程已经完成封装。为了避免钩子过多,此处的业务逻辑不再使用钩子处理,而是直接在接口文件中进行处理。首先,检测 $_POST['author_id'] 是否存在,如果不存在则直接返回错误。其次,通过 xc_is_login 方法获取当前操作用户,如果获取失败则表示用户未登录,返回错误。最后,通过 xc_is_review('audit_identify_expert') 方法验证用户是否具备资料修改权限,如果不具备则返回【操作失败:你无权进行操作】。
13、update_identify_expert_info接口在完成安全校验后,将初始化result为空数组。接着,它会构建一个wpdb查询语句,在xc_expert数据表中查询对应关联的user_id是否存在。如果查询结果表明user_id不存在,接口将返回“没有申请记录”的消息。若user_id存在,则系统会把查询到的结果转化为数组,并从中提取出info字段。该字段包含了申请材料的信息,例如公开图片和授权图片。然后,该字段内容会从JSON格式解析为数组。在随后的处理步骤中,系统将从中提取出图片的地址信息,并根据这些信息构建前端所需要的HTML代码。
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
拉黑 举报 打赏 回复484楼