server/admin/src/main/resources/application.yml
@@ -12,7 +12,7 @@ spring: profiles: active: dev active: pro # JSON返回配置 jackson: # 默认时区 server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -21,6 +21,13 @@ public static final String RESOURCE_PATH ="RESOURCE_PATH" ; public static final String ROLE_CONFIG ="ROLE_CONFIG" ; public static final String UK_JUMP_URL ="UK_JUMP_URL" ; public static final String IPASS_TOKEN_URL ="IPASS_TOKEN_URL" ; public static final String IPASS_LOGIN_ACCOUNT ="IPASS_LOGIN_ACCOUNT" ; public static final String IPASS_LOGIN_PSD ="IPASS_LOGIN_PSD" ; public static final String IPASS_ZHANQU_URL ="IPASS_ZHANQU_URL" ; public static final String QYWX_CORPID = "QYWX_CORPID"; public static final String QYWX_SECRET = "QYWX_SECRET"; public static final String QYWX_TOKEN = "QYWX_TOKEN"; server/services/src/main/java/com/doumee/core/iPass/IPass.java
@@ -27,7 +27,7 @@ private static String tokenUrl = "https://ipaasuat.zhibang.com:4430/open-api/rest/core/auth/login"; private static String zhanquUrl = "https://ipaasuat.zhibang.com:4430/open-api/mdm/cust-territories-trees/query"; public String getIPassToken() throws IOException { public String getIPassToken(String userName,String password,String tokenUrl) throws IOException { OkHttpClient client = new OkHttpClient().newBuilder() .build(); MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); @@ -55,7 +55,7 @@ public List<ZhanQuVO> getIPassZhanquList() throws IOException { public List<ZhanQuVO> getIPassZhanquList(String userName,String password,String tokenUrl,String zhanquUrl) throws IOException { OkHttpClient client = new OkHttpClient().newBuilder() .build(); MediaType mediaType = MediaType.parse("application/json"); @@ -68,7 +68,7 @@ Request request = new Request.Builder() .url(zhanquUrl) .method("POST", body) .addHeader("identitytoken", getIPassToken()) .addHeader("identitytoken", getIPassToken(userName,password,tokenUrl)) .addHeader("User-Agent", "Apifox/1.0.0 (https://apifox.com)") .addHeader("Content-Type", "application/json") .build(); @@ -86,11 +86,6 @@ } public static void main(String[] args) throws IOException { IPass iPass = new IPass(); iPass.getIPassZhanquList(); } } server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java
@@ -200,8 +200,6 @@ queryWrapper.orderByDesc(Cases::getId); PageData<Cases> result =PageData.from(casesMapper.selectJoinPage(page, Cases.class,queryWrapper)); if(result!=null && result.getRecords()!=null){ String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.CASES_FILES).getCode(); for(Cases cate : result.getRecords()){ initMultifileList(cate); } @@ -216,7 +214,8 @@ find.setObjId(cate.getId()); find.setObjType(Constants.ONE); find.setIsdeleted(Constants.ZERO); List<Multifile> fileList= multifileMapper.selectList(new QueryWrapper<>(find)); List<Multifile> fileList= multifileMapper.selectList(new QueryWrapper<>(find).lambda() .orderByAsc(Multifile::getId)); if(fileList!=null){ for(Multifile f : fileList){ if(StringUtils.isNotBlank(f.getFileurl())){ server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -215,6 +215,8 @@ public List<Category> findList(Category category) { category.setDeleted(Constants.ZERO); QueryWrapper<Category> wrapper = new QueryWrapper<>(category); wrapper.lambda().orderByAsc(Category::getSortnum); wrapper.lambda().orderByAsc(Category::getId); return categoryMapper.selectList(wrapper); } @@ -338,7 +340,11 @@ public void syncZhanQu() throws IOException { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); IPass iPass = new IPass(); List<ZhanQuVO> l = iPass.getIPassZhanquList(); List<ZhanQuVO> l = iPass.getIPassZhanquList(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IPASS_LOGIN_ACCOUNT).getCode(), systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IPASS_LOGIN_PSD).getCode(), systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IPASS_TOKEN_URL).getCode(), systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IPASS_ZHANQU_URL).getCode() ); List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() .eq(Category::getType,Constants.ZERO) .eq(Category::getDeleted,Constants.ZERO) @@ -367,11 +373,11 @@ public Category vaildData(ZhanQuVO zhanQuVO , List<Category> categoryList, LoginUserInfo userInfo) { Category returnData = new Category(); for (Category category:categoryList) { returnData.setUpdateUser(userInfo.getId()); returnData.setUpdateTime(new Date()); if(category.getDetail().equals(zhanQuVO.getNodeCode())){ returnData = category ; returnData.setName(zhanQuVO.getNodeName()); returnData.setUpdateUser(userInfo.getId()); returnData.setUpdateTime(new Date()); return returnData; } } server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -225,7 +225,7 @@ .eq(Objects.nonNull(model.getImportId()),Member::getImportId, model.getImportId()) .eq(Objects.nonNull(model.getStatus()),Member::getStatus, model.getStatus()) .eq(model.getContainDeleted()!=1,Member::getDeleted, Constants.ZERO) .in(Objects.nonNull(model.getLevelId()),"t1.id", model.getLevelId()) .in(Objects.nonNull(model.getLevelId()),"t2.id", model.getLevelId()) .eq(Objects.nonNull(model.getCode()),Member::getCode, model.getCode()) .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ZERO),Member::getFee) .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ONE),Member::getFee) @@ -243,7 +243,7 @@ ) { sql = sql + (StringUtils.isNotBlank(sql)?" or ":"") + " find_in_set( '["+s+"]' , t.FIELD_IDS ) "; } queryWrapper.apply(sql); queryWrapper.apply("("+sql+")"); } @@ -253,18 +253,22 @@ ) { sql = sql + (StringUtils.isNotBlank(sql)?" or ":"") + " find_in_set( '["+s+"]' , t.BUSTYPE_IDS ) "; } queryWrapper.apply(sql); queryWrapper.apply("("+sql+")"); } if (StringUtils.isNotBlank(model.getQueryZQCode())) { Category zhanqu = categoryMapper.selectOne(new QueryWrapper<Category>().lambda() List<Category> zhanquList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() .eq(Category::getDeleted,Constants.ZERO) .eq(Category::getStatus,Constants.ZERO) .eq(Category::getDetail,model.getQueryZQCode()) .apply(" find_in_set(detail,'"+model.getQueryZQCode()+"') ") .last(" limit 1") ); if(Objects.nonNull(zhanqu)){ queryWrapper.apply(" find_in_set( '["+zhanqu.getId()+"]', t.ZHANQU_IDS ) "); if(CollectionUtils.isNotEmpty(zhanquList)){ String sql = ""; for (Category s:zhanquList) { sql = sql + (StringUtils.isNotBlank(sql)?" or ":"") + " find_in_set( '["+s.getId()+"]' , t.ZHANQU_IDS ) "; } queryWrapper.apply("("+sql+")"); } } IPage<Member> memberIPage = memberMapper.selectJoinPage(page, Member.class, queryWrapper); @@ -285,7 +289,9 @@ if(member.getJobYear()!=null){ member.setWorkYears(DateUtil.getCurrentYear( ) - member.getJobYear()+1); } member.setServeNum(Constants.formatIntegerNum(member.getServeNum())); } } return PageData.from(memberIPage); } @@ -373,7 +379,7 @@ .eq(Multifile::getObjId,cases.getId()) .eq(Multifile::getObjType,Constants.ONE) .eq(Multifile::getIsdeleted,Constants.ZERO) .orderByDesc(Multifile::getId) .orderByAsc(Multifile::getId) ); multifileList.forEach(multifile -> { multifile.setUrl(StringUtils.isNotBlank(multifile.getFileurl())?(resourcePath + casePath + multifile.getFileurl()):""); server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -75,7 +75,7 @@ loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); loginLog.setOsInfo(Utils.User_Client.getOS(request)); loginLog.setServerIp(Utils.Server.getIP()); if(StringUtils.equals(projectEnv,"development")){ if(!StringUtils.equals(projectEnv,"development")){ // 校验验证码 try { captchaService.check(dto.getUuid(), dto.getCode()); server/services/src/main/resources/application-pro.yml
@@ -1,16 +1,16 @@ spring: # 数据源配置 datasource: url: jdbc:mysql://192.168.0.211:3306/zbom_dianjiang?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai url: jdbc:mysql://10.200.200.16:3306/zbom_dianjiang?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: Doumee@168 password: Zbom2020@rds driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource redis: # database: 0 host: 127.0.0.1 port: 6379 password: # 志邦家选可以用的redis,这个redisU客也在用 host: 10.200.100.39 port: 20032 password: Zbom_2020@123 timeout: 5000 # 连接池中的最小空闲连接 jackson: time-zone: GMT+8 @@ -57,4 +57,9 @@ # 环境,生产环境production,开发环境development env: production # 模式,testing测试模式 mode: production mode: production dingtalk: clientId: dingy7xdyzffnegiaszo clientSecret: KfjrSYV7YOTRU3VkBBZyPVuop7pd4_Hl5_sPFl8G_uIQuKQ_QbOQBmUHoLjiFn3e server/web/src/main/java/com/doumee/api/web/LoginController.java
@@ -87,7 +87,6 @@ @GetMapping("/ukLogin") public void ukLogin(String tick, Object obj, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginRequestNewParam requestParam = new LoginRequestNewParam(); // UK_ERROR_URL = "http://u.zhibang.com/sso/web/token/error"; String errorUrl =systemDictDataBiz.queryByCode(Constants.ZBOM_PARAM,Constants.ZBOM_UK_ERROR_URL).getCode(); String token = ""; try { @@ -105,30 +104,51 @@ JSONObject userInfo = JSONObject.parseObject(data); log.error("U客登录返回参数:" + userInfo.toString()); WebLoginUserVO loginUserVO = new WebLoginUserVO(); if(StringUtils.isBlank(userInfo.getString("buserPhone"))){ log.error("案例库系统单点登录失败 错误原因获取tick失败:未返回用户唯一信息"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"案例库系统单点登录失败 错误原因获取tick失败:未返回用户唯一信息"); } loginUserVO.setId(userInfo.getString("buserPhone")); if(userInfo.getString("distrcode").isEmpty()){ loginUserVO.setShowFee(Constants.ONE); if(StringUtils.isBlank(userInfo.getString("distrcode"))){ loginUserVO.setShowFee(Constants.ZERO); }else{ JSONArray jsonArray = userInfo.getJSONArray("ukRoles"); this.setLoginShowFee(loginUserVO,jsonArray); if(userInfo.getString("distrcode").isEmpty()){ loginUserVO.setShowFee(Constants.ONE); }else{ if(StringUtils.isBlank(userInfo.getString("ukRoles"))){ loginUserVO.setShowFee(Constants.ZERO); }else{ JSONArray jsonArray = userInfo.getJSONArray("ukRoles"); this.setLoginShowFee(loginUserVO,jsonArray); } } } if(StringUtils.isNotBlank(userInfo.getString("userMarkets"))){ if(!userInfo.getString("userMarkets").isEmpty()){ JSONArray jsonArray = userInfo.getJSONArray("userMarkets"); this.setLoginZhanqu(loginUserVO,jsonArray); } } log.error("web用户信息"+JSONObject.toJSONString(loginUserVO)); token = jwtTokenUtil.generateToken(loginUserVO); } else { log.error("案例库系统单点登录失败 错误原因获取tick失败" + json.getString("message")); response.sendRedirect(errorUrl + "?title=" + enCode("登陆错误") + "&msg="+ enCode(json.getString("message"))); response.sendRedirect(errorUrl + this.getPadStr(errorUrl) + "title=" + enCode("登陆错误") + "&msg="+ enCode(json.getString("message"))); return; } } catch (Exception e) { log.error("ticket接口请求错误:" + e.getMessage()); response.sendRedirect(errorUrl + "?title=" + enCode("登陆错误") + "&msg=" + enCode("系统繁忙,请稍后重试~")); response.sendRedirect(errorUrl + this.getPadStr(errorUrl) +"title=" + enCode("登陆错误") + "&msg=" + enCode("系统繁忙,请稍后重试~")); return; } requestParam.setRediUrl("https://test.doumee.cn/h5/"); log.error("跳转地址跳转信息:" + requestParam.getRediUrl()+"?token="+token); response.sendRedirect(requestParam.getRediUrl()+"?token="+token); requestParam.setRediUrl(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.UK_JUMP_URL).getCode()); log.error("跳转地址跳转信息:" + requestParam.getRediUrl()+this.getPadStr(requestParam.getRediUrl())+"token="+token); response.sendRedirect(requestParam.getRediUrl()+this.getPadStr(requestParam.getRediUrl())+"token="+token); } public String getPadStr(String url) { return url.indexOf("?")>=Constants.ZERO?"&":"?"; } public void setLoginShowFee(WebLoginUserVO loginUserVO,JSONArray jsonArray){ String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode(); @@ -151,6 +171,16 @@ } } public void setLoginZhanqu(WebLoginUserVO loginUserVO,JSONArray jsonArray){ String zhanquCode = ""; for (int i = 0; i < jsonArray.size(); i++) { JSONObject j = jsonArray.getJSONObject(i); zhanquCode = zhanquCode + (StringUtils.isNotBlank(zhanquCode)?",":"") + j.getString("segment1"); } loginUserVO.setZhanqu(zhanquCode); } @ApiOperation("钉钉登录") @PostMapping("/ddLogin") public ApiResponse<WebLoginUserVO> ddLogin(@RequestBody DingLoginDTO dingLoginDTO) throws ApiException { @@ -159,12 +189,12 @@ System.out.println("钉钉授权登录入参:"+JSONObject.toJSONString(dingLoginDTO)); OapiV2UserGetuserinfoResponse.UserGetByCodeResponse response = dingTalk.getDDUserByCode(dingLoginDTO); log.error("钉钉授权登录返参:"+JSONObject.toJSONString(response)); System.out.println("钉钉授权登录返参:"+JSONObject.toJSONString(response)); if(Objects.nonNull(response)){ loginUserVO.setId(response.getUserid()); loginUserVO.setShowFee(Constants.ONE); } loginUserVO.setToken(jwtTokenUtil.generateToken(loginUserVO)); log.error("钉钉授权登录获取token信息返参:"+JSONObject.toJSONString(loginUserVO)); return ApiResponse.success(loginUserVO); } @@ -192,7 +222,6 @@ log.error("分页查询用户信息"+JSONObject.toJSONString(loginUserVO)); pageWrap.getModel().setQueryZQCode(loginUserVO.getZhanqu()); PageData<Member> pageData = memberService.findPage(pageWrap); if(CollectionUtils.isNotEmpty(pageData.getRecords())){ log.error("分页数据信息"+JSONObject.toJSONString(pageData.getRecords())); if(Constants.equalsInteger(Constants.ZERO,loginUserVO.getShowFee())){ server/web/src/main/resources/application.yml
@@ -8,7 +8,7 @@ spring: profiles: active: dev active: pro # JSON返回配置 jackson: # 默认时区