17 前端界面添加显示字段

文章描述了一个场景,其中客户需要在标准产品上增加自定义字段‘总借款金额’,并且该金额根据员工岗位不同有所变化。解决方案是通过业务埋点,定义一个动态接口,由业务组和客开分别实现接口和注入逻辑,以达到客开在原有系统上的功能扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:场景描述

 

如图所示,需求如下:

1.总借款金额:是客开添加字段,不是标准产品字段。

2.总借款金额值:会根据当前人员岗位的不同而发生变化,如:初级员工 2000元,高级员工:5000元

客开需要在标准产品之上,完成上述两个要求。

二 代码现状(我们以伪代码进行讲解)

public class CapLogController extends BaseController { private static final Log LOGGER = CtpLogFactory.getLog(CapLogController.class); ​ @Override public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView("cap4/monitor/capRunningLog"); ​ List<Enums.CapLogType> capLogTypeList = Enums.CapLogType.getLogTypeListByOwnerType(FormConstant.CAPLOG_TYPEOWNER_RUNNING); List<Map<Integer, String>> capLogTypeMapList = new ArrayList<Map<Integer, String>>(); for (Enums.CapLogType capLogType : capLogTypeList) { // 暂时屏蔽掉自定义触发 if (capLogType == Enums.CapLogType.CUSTOMTRIGGER) { continue; } Map<Integer, String> map = new HashMap<Integer, String>(); map.put(capLogType.getKey(), capLogType.getText()); capLogTypeMapList.add(map); } mav.addObject("capLogType", JSONUtil.toJSONString(capLogTypeMapList)); ​ mav.addObject("formId", request.getParameter("formId")); mav.addObject("bizId", request.getParameter("bizId")); mav.addObject("dataId", request.getParameter("dataId")); ​ return mav; } }

三:解决方案:业务埋点

使用场景:通过标准产品经理分析,此业务是通用业务,准备埋点。

第一步:业务组提取需求,埋点:返回结果处理

定义业务接口:

/**
 * 报销业务动态接口
 *
 * @author Lenovo
 */
public interface IReimbursementDynamicInterface extends CapDynamicInterface {
    /**
     * index 界面返回钱,返回结果值修改
     *
     * @return
     */
    String indexBeforeRetrun(ModelAndView mv);
}
  

2.第二步:业务组植入业务点

public class CapLogController extends BaseController { private static final Log LOGGER = CtpLogFactory.getLog(CapLogController.class); /** * 动态bean 上下文 * 必须注入 */ @Inject private DynamicContext dynamicContext; ​ /** * 被植入的对象 * 注入:只是一个属性声明,不能使用@Inject 等注入 */ private IReimbursementDynamicInterface reimbursementDynamicInterface = null; ​ /** * 初始化 */ @PostConstruct public void init() { reimbursementDynamicInterface = dynamicContext.getBean(IReimbursementDynamicInterface.class); } @Override public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView("cap4/monitor/capRunningLog"); ​ List<Enums.CapLogType> capLogTypeList = Enums.CapLogType.getLogTypeListByOwnerType(FormConstant.CAPLOG_TYPEOWNER_RUNNING); List<Map<Integer, String>> capLogTypeMapList = new ArrayList<Map<Integer, String>>(); for (Enums.CapLogType capLogType : capLogTypeList) { // 暂时屏蔽掉自定义触发 if (capLogType == Enums.CapLogType.CUSTOMTRIGGER) { continue; } Map<Integer, String> map = new HashMap<Integer, String>(); map.put(capLogType.getKey(), capLogType.getText()); capLogTypeMapList.add(map); } mav.addObject("capLogType", JSONUtil.toJSONString(capLogTypeMapList)); ​ mav.addObject("formId", request.getParameter("formId")); mav.addObject("bizId", request.getParameter("bizId")); mav.addObject("dataId", request.getParameter("dataId")); ​ //植入动作 if(reimbursementDynamicInterface!=null) {//回调:客开植入动作 reimbursementDynamicInterface.indexBeforeRetrun(mav); } return mav; } }

3.第三步:业务发布部署

4.第四步:客开实现接口

/** * 客开实现接口 * @author mt * @date 2021/4/10 */ public class Reimbursement implements IReimbursementDynamicInterface { ​ ​ /** * index 界面返回钱,返回结果值修改 * * @param mv * @return */ @Override public String indexBeforeRetrun(ModelAndView mv) { long money=0L; //业务处理:给你money 赋值 //money=xxxxx ​ //将返回结果值:赋值给mv mv.addObject("money",money); return null; } }

5.第五步:客开xml 注入bean

6.第六步:客开发布部署

开发完成,注意:此种方式需要平台业务组开发接口

开发完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_GGI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值