From a94cdc7e37b3f480409a97fa350b7054bdd37e6b Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Mon, 21 Aug 2023 18:11:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=81=E9=80=9A=E5=AD=A6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=87=AA=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/entity/config/params/QTXConfigParam.java | 7 ++----- .../organization/service/impl/ConfigServiceImpl.java | 6 ++++-- src/com/engine/organization/web/ConfigController.java | 5 ++++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/com/engine/organization/entity/config/params/QTXConfigParam.java b/src/com/engine/organization/entity/config/params/QTXConfigParam.java index 23498bc7..16823880 100644 --- a/src/com/engine/organization/entity/config/params/QTXConfigParam.java +++ b/src/com/engine/organization/entity/config/params/QTXConfigParam.java @@ -12,14 +12,11 @@ import lombok.*; @Data @Builder @AllArgsConstructor +@NoArgsConstructor @EqualsAndHashCode(callSuper=false) public class QTXConfigParam { - public QTXConfigParam() { - this.type = "1"; - this.domainIndex = "0"; - this.whole = "0"; - } + private String loginId; diff --git a/src/com/engine/organization/service/impl/ConfigServiceImpl.java b/src/com/engine/organization/service/impl/ConfigServiceImpl.java index d893755d..e8165f40 100644 --- a/src/com/engine/organization/service/impl/ConfigServiceImpl.java +++ b/src/com/engine/organization/service/impl/ConfigServiceImpl.java @@ -38,17 +38,19 @@ public class ConfigServiceImpl extends Service implements ConfigService { String enable = bb.getPropValue("qtx_sso_login", "enable"); String userAgent = qtx.getUserAgent(); boolean termianal = MobileTerminalEnum.containsEnumValue(userAgent); + + if (Boolean.parseBoolean(enable)) { QTXConfigPO qtxConfig = getConfigMapper().selectConfigInfo(); String domain = "0".equals(qtx.getDomainIndex()) ? qtxConfig.getUrl() : qtxConfig.getSecondUrl(); String address = termianal ? qtxConfig.getMobileAddress() : qtxConfig.getPcAddress(); String accessKey = URLEncoder.encode(getAccessKey(qtxConfig.getAppSecret()),"utf-8"); - hkUrl = StrUtil.format("{}/{}?accessKey={}&type={}&username={}&whole={}",domain,address,accessKey,qtx.getType(),qtx.getLoginId(),qtx.getWhole()); + hkUrl = StrUtil.format("{}{}?accessKey={}&type={}&username={}&whole={}&domainIndex={}",domain,address,accessKey,qtx.getType(),qtx.getLoginId(),qtx.getWhole(),qtx.getDomainIndex()); }else { String accessKey = URLEncoder.encode(getAccessKey(bb.getPropValue("qtx_sso_login", "app_secret")),"utf-8"); String domain = "0".equals(qtx.getDomainIndex()) ? bb.getPropValue("qtx_sso_login","url") : bb.getPropValue("qtx_sso_login","url1"); String address = termianal ? bb.getPropValue("qtx_sso_login","h5address") : bb.getPropValue("qtx_sso_login","pcaddress"); - hkUrl = StrUtil.format("{}/{}?accessKey={}&type={}&username={}&whole={}",domain,address,accessKey,qtx.getType(),qtx.getLoginId(),qtx.getWhole()); + hkUrl = StrUtil.format("{}{}?accessKey={}&type={}&username={}&whole={}&domainIndex={}",domain,address,accessKey,qtx.getType(),qtx.getLoginId(),qtx.getWhole(),qtx.getDomainIndex()); } return hkUrl; } diff --git a/src/com/engine/organization/web/ConfigController.java b/src/com/engine/organization/web/ConfigController.java index f357e57f..451a2c04 100644 --- a/src/com/engine/organization/web/ConfigController.java +++ b/src/com/engine/organization/web/ConfigController.java @@ -36,7 +36,10 @@ public class ConfigController { public void ssoLogin(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("type") String type,@QueryParam("domainIndex") String domainIndex,@QueryParam("whole") String whole) throws IOException { User user = HrmUserVarify.getUser(request, response); - QTXConfigParam qtxConfigParam = QTXConfigParam.builder().loginId(user.getLoginid()).type(type).domainIndex(domainIndex).whole(whole) + QTXConfigParam qtxConfigParam = QTXConfigParam.builder().loginId(user.getLoginid()) + .type(type == null ? "1" : type) + .domainIndex(domainIndex == null ? "0" : domainIndex) + .whole(whole == null ? "0" : whole) .userAgent(request.getHeader("user-agent")).build(); String url = getConfigService(user).ssoLogin(qtxConfigParam); response.sendRedirect(url); -- 2.40.0.windows.1 From 51dc9537669b7ed8a55fee312bf68ea977288ea9 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Tue, 22 Aug 2023 18:07:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=81=E9=80=9A=E5=AD=A6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/config/dto/EditTableColumns.java | 33 +++++ .../entity/config/dto/EditTableDatas.java | 29 +++++ .../mapper/config/ConfigMapper.java | 20 ++++ .../mapper/config/ConfigMapper.xml | 113 +++++++++++++++++- .../organization/service/ConfigService.java | 21 ++++ .../service/impl/ConfigServiceImpl.java | 67 ++++++++++- .../organization/web/ConfigController.java | 39 +++++- 7 files changed, 314 insertions(+), 8 deletions(-) create mode 100644 src/com/engine/organization/entity/config/dto/EditTableColumns.java create mode 100644 src/com/engine/organization/entity/config/dto/EditTableDatas.java diff --git a/src/com/engine/organization/entity/config/dto/EditTableColumns.java b/src/com/engine/organization/entity/config/dto/EditTableColumns.java new file mode 100644 index 00000000..fc4791f8 --- /dev/null +++ b/src/com/engine/organization/entity/config/dto/EditTableColumns.java @@ -0,0 +1,33 @@ +package com.engine.organization.entity.config.dto; + +import com.api.hrm.bean.FieldItem; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Author liang.cheng + * @Date 2023/8/22 10:48 AM + * @Description: + * @Version 1.0 + */ + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class EditTableColumns { + + private List com; + + private String dataIndex; + + private String key; + + private String title; + + private String width; +} diff --git a/src/com/engine/organization/entity/config/dto/EditTableDatas.java b/src/com/engine/organization/entity/config/dto/EditTableDatas.java new file mode 100644 index 00000000..91ac1e07 --- /dev/null +++ b/src/com/engine/organization/entity/config/dto/EditTableDatas.java @@ -0,0 +1,29 @@ +package com.engine.organization.entity.config.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author liang.cheng + * @Date 2023/8/22 1:44 PM + * @Description: + * @Version 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class EditTableDatas { + + private String appSecret; + + private String url; + + private String pcAddress; + + private String mobileAddress; + + private String secondUrl; +} diff --git a/src/com/engine/organization/mapper/config/ConfigMapper.java b/src/com/engine/organization/mapper/config/ConfigMapper.java index f15a6e66..07c26b5c 100644 --- a/src/com/engine/organization/mapper/config/ConfigMapper.java +++ b/src/com/engine/organization/mapper/config/ConfigMapper.java @@ -2,6 +2,8 @@ package com.engine.organization.mapper.config; import com.engine.organization.entity.config.po.QTXConfigPO; +import org.apache.ibatis.annotations.Param; + /** * 企通学配置Mapper @@ -18,4 +20,22 @@ public interface ConfigMapper { */ QTXConfigPO selectConfigInfo(); + + /** + * @Description: 保存配置信息 + * @Author: liang.cheng + * @Date: 2023/8/22 3:28 PM + * @param: [editTableDatas] + * @return: int + */ + int insertIgnoreNull(QTXConfigPO qtxConfigPO); + + /** + * @Description: 删除 + * @Author: liang.cheng + * @Date: 2023/8/22 3:37 PM + * @param: [] + * @return: void + */ + void deleteAll(); } diff --git a/src/com/engine/organization/mapper/config/ConfigMapper.xml b/src/com/engine/organization/mapper/config/ConfigMapper.xml index 3cb7cf57..c65ebc1b 100644 --- a/src/com/engine/organization/mapper/config/ConfigMapper.xml +++ b/src/com/engine/organization/mapper/config/ConfigMapper.xml @@ -9,7 +9,7 @@ - + @@ -22,7 +22,7 @@ , t.mobile_address , t.second_url , t.creator - , t.create_date + , t.createdate @@ -33,4 +33,113 @@ from JCL_ORG_QTXCONFIG t + + INSERT INTO JCL_ORG_QTXCONFIG + + + app_secret, + + + url, + + + pc_address, + + + mobile_address, + + + second_url, + + + creator, + + + createdate, + + + + + #{appSecret}, + + + #{url}, + + + #{pcAddress}, + + + #{mobileAddress}, + + + #{secondUrl}, + + + #{creator}, + + + #{createDate}, + + + + + + + select JCL_ORG_QTXCONFIG_ID.currval from dual + + INSERT INTO JCL_ORG_QTXCONFIG + + + app_secret, + + + url, + + + pc_address, + + + mobile_address, + + + second_url, + + + creator, + + + createdate, + + + + + #{appSecret}, + + + #{url}, + + + #{pcAddress}, + + + #{mobileAddress}, + + + #{secondUrl}, + + + #{creator}, + + + #{createDate}, + + + + + + + delete from JCL_ORG_QTXCONFIG + + \ No newline at end of file diff --git a/src/com/engine/organization/service/ConfigService.java b/src/com/engine/organization/service/ConfigService.java index 1ee70415..f427ceff 100644 --- a/src/com/engine/organization/service/ConfigService.java +++ b/src/com/engine/organization/service/ConfigService.java @@ -1,8 +1,10 @@ package com.engine.organization.service; import com.engine.organization.entity.config.params.QTXConfigParam; +import com.engine.organization.entity.config.po.QTXConfigPO; import java.io.UnsupportedEncodingException; +import java.util.Map; /** * @Author liang.cheng @@ -20,4 +22,23 @@ public interface ConfigService { * @return: java.lang.String */ String ssoLogin(QTXConfigParam qtxConfigParam) throws UnsupportedEncodingException; + + + /** + * @Description: h获取配置信息 + * @Author: liang.cheng + * @Date: 2023/8/22 10:35 AM + * @param: [] + * @return: java.util.Map + */ + Map selectConfigInfo(); + + /** + * @Description: 保存配置信息 + * @Author: liang.cheng + * @Date: 2023/8/22 3:17 PM + * @param: [qtxConfigPO, isopenconfig] + * @return: void + */ + int saveConfigInfo(QTXConfigPO qtxConfigPO, String isopenconfig); } diff --git a/src/com/engine/organization/service/impl/ConfigServiceImpl.java b/src/com/engine/organization/service/impl/ConfigServiceImpl.java index e8165f40..55e03c4b 100644 --- a/src/com/engine/organization/service/impl/ConfigServiceImpl.java +++ b/src/com/engine/organization/service/impl/ConfigServiceImpl.java @@ -1,13 +1,21 @@ package com.engine.organization.service.impl; import cn.hutool.core.util.StrUtil; +import com.api.hrm.bean.FieldItem; +import com.api.hrm.util.FieldType; import com.engine.core.impl.Service; +import com.engine.organization.entity.config.dto.EditTableColumns; +import com.engine.organization.entity.config.dto.EditTableDatas; import com.engine.organization.entity.config.params.QTXConfigParam; import com.engine.organization.entity.config.po.QTXConfigPO; import com.engine.organization.enums.MobileTerminalEnum; import com.engine.organization.mapper.config.ConfigMapper; import com.engine.organization.service.ConfigService; +import com.engine.organization.util.OrganizationDateUtil; import com.engine.organization.util.db.MapperProxyFactory; +import com.weaver.file.ConfigOperator; +import lombok.SneakyThrows; +import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.codec.binary.Base64; import weaver.general.BaseBean; @@ -17,6 +25,8 @@ import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.util.*; /** * @Author liang.cheng @@ -26,6 +36,8 @@ import java.nio.charset.StandardCharsets; */ public class ConfigServiceImpl extends Service implements ConfigService { + private static final String VALUE_ONE = "1"; + private static ConfigMapper getConfigMapper() { return MapperProxyFactory.getProxy(ConfigMapper.class); } @@ -38,9 +50,7 @@ public class ConfigServiceImpl extends Service implements ConfigService { String enable = bb.getPropValue("qtx_sso_login", "enable"); String userAgent = qtx.getUserAgent(); boolean termianal = MobileTerminalEnum.containsEnumValue(userAgent); - - - if (Boolean.parseBoolean(enable)) { + if (VALUE_ONE.equals(enable)) { QTXConfigPO qtxConfig = getConfigMapper().selectConfigInfo(); String domain = "0".equals(qtx.getDomainIndex()) ? qtxConfig.getUrl() : qtxConfig.getSecondUrl(); String address = termianal ? qtxConfig.getMobileAddress() : qtxConfig.getPcAddress(); @@ -55,6 +65,57 @@ public class ConfigServiceImpl extends Service implements ConfigService { return hkUrl; } + @SneakyThrows + @Override + public Map selectConfigInfo() { + Map map = new HashMap<>(16); + BaseBean bb = new BaseBean(); + List columns = new ArrayList<>(); + columns.add(EditTableColumns.builder().dataIndex("appSecret").key("appSecret").title("密钥").width("20%").build()); + columns.add(EditTableColumns.builder().dataIndex("url").key("url").title("外网").width("20%").build()); + columns.add(EditTableColumns.builder().dataIndex("secondUrl").key("secondUrl").title("内网").width("20%").build()); + columns.add(EditTableColumns.builder().dataIndex("pcAddress").key("pcAddress").title("PC地址").width("20%").build()); + columns.add(EditTableColumns.builder().dataIndex("mobileAddress").key("mobileAddress").title("H5地址").width("20%").build()); + columns.forEach(editTableColumns -> editTableColumns.setCom(getFieldDetailInfo(editTableColumns))); + QTXConfigPO qtxConfigPO = getConfigMapper().selectConfigInfo(); + EditTableDatas datas = new EditTableDatas(); + if (Objects.nonNull(qtxConfigPO)) { + BeanUtils.copyProperties(datas, qtxConfigPO); + } + map.put("isopenconfig",bb.getPropValue("qtx_sso_login","enable")); + map.put("columns",columns); + map.put("datas", Collections.singletonList(datas)); + return map; + } + + @SneakyThrows + @Override + public int saveConfigInfo(QTXConfigPO qtxConfigPO, String isopenconfig) { + ConfigOperator ConfigOperator = new ConfigOperator(); + ConfigOperator.setProp("qtx_sso_login.properties", "enable", isopenconfig); + qtxConfigPO.setCreator(user.getUID()); + qtxConfigPO.setCreateDate(OrganizationDateUtil.getFormatLocalDate(LocalDate.now())); + getConfigMapper().deleteAll(); + return getConfigMapper().insertIgnoreNull(qtxConfigPO); + } + + /** + *表格控件 + * @return + */ + private static List getFieldDetailInfo(EditTableColumns columns) { + List ls = new ArrayList<>(); + FieldItem fieldItem = new FieldItem(); + fieldItem.setKey(columns.getKey()); + fieldItem.setLabel(""); + fieldItem.setType(FieldType.INPUT); + fieldItem.setViewAttr(3); + fieldItem.setWidth(columns.getWidth()); + ls.add(fieldItem); + return ls; + } + + private static String getAccessKey(String appSecret) { String data = System.currentTimeMillis() + "||" + appSecret; String IV = appSecret.substring(appSecret.length() - 16); diff --git a/src/com/engine/organization/web/ConfigController.java b/src/com/engine/organization/web/ConfigController.java index 451a2c04..b9a60a90 100644 --- a/src/com/engine/organization/web/ConfigController.java +++ b/src/com/engine/organization/web/ConfigController.java @@ -1,18 +1,21 @@ package com.engine.organization.web; import com.engine.common.util.ServiceUtil; +import com.engine.organization.entity.config.dto.EditTableDatas; import com.engine.organization.entity.config.params.QTXConfigParam; +import com.engine.organization.entity.config.po.QTXConfigPO; import com.engine.organization.service.ConfigService; import com.engine.organization.service.impl.ConfigServiceImpl; +import com.engine.organization.util.response.ReturnResult; +import com.fasterxml.jackson.databind.ObjectMapper; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.QueryParam; +import javax.ws.rs.*; import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; import java.io.IOException; /** @@ -44,4 +47,34 @@ public class ConfigController { String url = getConfigService(user).ssoLogin(qtxConfigParam); response.sendRedirect(url); } + + + @GET + @Path("/selectConfigInfo") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult selectConfigInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getConfigService(user).selectConfigInfo()); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } + + + @POST + @Path("/saveConfigInfo") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult saveConfigInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + String editTable = request.getParameter("editTable"); + String isopenconfig = request.getParameter("isopenconfig"); + ObjectMapper objectMapper = new ObjectMapper(); + QTXConfigPO qtxConfigPO = objectMapper.readValue(editTable, QTXConfigPO.class); + return ReturnResult.successed(getConfigService(user).saveConfigInfo(qtxConfigPO,isopenconfig)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } } -- 2.40.0.windows.1