package com.product.mobile.core.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.product.admin.service.SystemButtonsService; import com.product.common.lang.StringUtils; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.service.support.AbstractBaseService; import com.product.mobile.core.config.MobileCoreConst; import com.product.util.BaseUtil; import com.product.util.SystemParamReplace; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; /** * @Author cheng * @Date 2022/3/8 16:33 * @Desc 功能相关 service */ @Service public class SystemFunctionService extends AbstractBaseService { private SystemButtonsService systemButtonsService; @Autowired public SystemFunctionService(SystemButtonsService systemButtonsService) { this.systemButtonsService = systemButtonsService; } /** * 获取当前进入当前页面的按钮和当前页面连接(link) 的按钮 * * @return */ public Object getFunctionButton(FieldSetEntity fse) { String functionUuid = fse.getString("function_uuid"); String buttonUuid = fse.getString("button_uuid"); StringBuilder sql = new StringBuilder(); sql.append(" SELECT "); sql.append(" a.*,JSON_object('face_uuid',c.face_uuid,'flow_title',flow_title,'uuid',c.uuid,'page_type',c.page_type,'tree_data',c.tree_data,'tree_data_type',tree_data_type ,'flow_uuid' ,c.flow_uuid,'page_element_disabled',c.page_element_disabled,'page_name',c.page_name,'from_param_key',c.from_param_key) as current_page, "); sql.append(" ( SELECT table_name FROM product_sys_datamodel_table where uuid =(select table_uuid FROM product_sys_functions b WHERE a.function_uuid = b.uuid and data_type=1) ) table_name "); sql.append(" FROM "); sql.append(" product_sys_function_buttons a "); sql.append(" JOIN product_sys_link b ON b.line_from = a.uuid "); sql.append(" JOIN product_sys_mvc_page c ON c.uuid = b.line_to "); sql.append(" WHERE a.function_uuid=? and a.uuid=? "); FieldSetEntity currentButton = getBaseDao().getFieldSetEntityBySQL(sql.toString(), new Object[]{functionUuid, buttonUuid}, false); if (currentButton != null && !StringUtils.isEmpty(currentButton.getString("params"))) { String params = currentButton.getString("params"); boolean valid = JSON.isValid(params); if (valid) { JSONObject json = JSON.parseObject(params); Iterator var12 = json.entrySet().iterator(); while (var12.hasNext()) { Map.Entry one = (Map.Entry) var12.next(); Object value = one.getValue(); if (value != null) { String val = value.toString(); one.setValue(SystemParamReplace.replaceParams(val, null)); } } currentButton.setValue("params", json.toJSONString()); } } if (currentButton != null && currentButton.getObject("current_page") != null) { currentButton.setValue("current_page", JSON.parseObject(currentButton.getString("current_page"))); } Map map = new HashMap<>(); map.put("currentButton", BaseUtil.fieldSetEntityToJson(currentButton)); DataTableEntity buttonByPage = systemButtonsService.findButtonByPage(fse); return BaseUtil.success(buttonByPage, map); } }