From 8439887c903fa52560af52b40e12a1baa8a123d3 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期三, 05 七月 2023 10:27:43 +0800
Subject: [PATCH] 代码合并
---
ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java | 106 ++
ycl-common/src/main/java/com/ycl/service/depart/impl/DepartManagerServiceImpl.java | 11
ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java | 2
ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java | 209 +++++
ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java | 6
ycl-platform/src/main/java/com/ycl/vo/NewAddressBookVO.java | 19
ycl-common/src/main/java/com/ycl/entity/user/UmsRole.java | 2
ycl-platform/pom.xml | 7
ycl-platform/src/main/java/com/ycl/vo/casePool/ViolationsVO.java | 8
ycl-platform/src/main/java/com/ycl/vo/AddressBookVO.java | 27
ycl-platform/src/main/java/com/ycl/dto/casePool/ViolationParam.java | 9
ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java | 24
ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 24
ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml | 17
ycl-platform/src/main/resources/mapper/BookRemarkMapper.xml | 47 +
ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java | 90 ++
ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java | 105 ++
ycl-platform/src/main/java/com/ycl/config/DingConfig.java | 32
ycl-platform/src/main/java/com/ycl/service/ding/impl/DingServiceImpl.java | 199 +++++
ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java | 99 ++
ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java | 3
ycl-platform/src/main/java/com/ycl/service/auth/AuthService.java | 12
ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java | 10
ycl-platform/src/main/java/com/ycl/entity/caseHandler/DispatchInfo.java | 8
ycl-platform/src/main/java/com/ycl/dto/casePool/IllegalBuildingParam.java | 25
ycl-common/src/main/java/com/ycl/service/user/UmsAdminService.java | 3
ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java | 2
ycl-common/src/main/java/com/ycl/entity/depart/UmsDepart.java | 10
ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java | 618 ++++++++++++++++
ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java | 8
ycl-platform/src/main/java/com/ycl/service/ding/impl/BookRemarkServiceImpl.java | 47 +
ycl-platform/src/main/java/com/ycl/service/resources/IImageResourcesService.java | 9
ycl-platform/src/main/java/com/ycl/entity/dingding/DingUserInfo.java | 111 ++
ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java | 5
ycl-common/src/main/java/com/ycl/service/user/UmsRoleService.java | 4
ycl-common/src/main/java/com/ycl/service/depart/IDepartManagerService.java | 10
ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCaseDetail.java | 1
ycl-platform/src/main/java/com/ycl/entity/ding/BookRemark.java | 58 +
ycl-platform/src/main/java/com/ycl/mapper/ding/BookRemarkMapper.java | 19
ycl-platform/src/main/java/com/ycl/service/ding/DingService.java | 20
ycl-platform/src/main/java/com/ycl/entity/cockpitManage/TeamIndex.java | 1
ycl-platform/src/main/java/com/ycl/common/dingding/DingEncodeUtil.java | 30
ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java | 43
ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java | 3
ycl-platform/src/main/java/com/ycl/service/auth/impl/AuthService.java | 90 ++
ycl-platform/src/main/java/com/ycl/service/ding/BookRemarkService.java | 26
ycl-platform/src/main/java/com/ycl/service/resources/impl/ImageResourcesServiceImpl.java | 22
ycl-platform/src/main/java/com/ycl/vo/ContactVO.java | 37
48 files changed, 2,234 insertions(+), 44 deletions(-)
diff --git a/ycl-common/src/main/java/com/ycl/entity/depart/UmsDepart.java b/ycl-common/src/main/java/com/ycl/entity/depart/UmsDepart.java
index a120182..0ea8787 100644
--- a/ycl-common/src/main/java/com/ycl/entity/depart/UmsDepart.java
+++ b/ycl-common/src/main/java/com/ycl/entity/depart/UmsDepart.java
@@ -32,8 +32,14 @@
@TableId(value = "id", type = IdType.AUTO)
private Long id;
+ @ApiModelProperty("閮ㄩ棬缂栫爜")
+ private String code;
+
@ApiModelProperty("閮ㄩ棬鍚嶇О")
private String departName;
+
+ @ApiModelProperty("鎺掑簭")
+ private Integer sort;
@ApiModelProperty("閮ㄩ棬鎻忚堪")
private String departDes;
@@ -64,4 +70,8 @@
@TableField(exist = false)
private List<DepartUserDTO> departUserDTOS;
+ @TableField(exist = false)
+ private Boolean end;
+
+
}
diff --git a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
index 79ef1cd..39505fe 100644
--- a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
+++ b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
@@ -98,6 +98,9 @@
@ApiModelProperty(value = "鎵嬫満鍙风爜")
private String mobile;
+ @ApiModelProperty(value = "搴旂敤+鐢ㄦ埛鍞�旀爣璇�")
+ private String openid;
+
@ApiModelProperty(value = "鏄惁涓虹綉鏍肩鐞嗗憳锛�0->涓嶆槸锛�1->鏄�")
private Integer isGrid;
diff --git a/ycl-common/src/main/java/com/ycl/entity/user/UmsRole.java b/ycl-common/src/main/java/com/ycl/entity/user/UmsRole.java
index 4129a88..bf60e0c 100644
--- a/ycl-common/src/main/java/com/ycl/entity/user/UmsRole.java
+++ b/ycl-common/src/main/java/com/ycl/entity/user/UmsRole.java
@@ -53,6 +53,8 @@
private Integer sort;
+ private String code;
+
@ApiModelProperty(value = "瑙掕壊绫诲瀷鏂囨湰")
@TableField(exist = false)
private String typeText;
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/IDepartManagerService.java b/ycl-common/src/main/java/com/ycl/service/depart/IDepartManagerService.java
index 0b85a8c..655539c 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/IDepartManagerService.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/IDepartManagerService.java
@@ -4,6 +4,9 @@
import com.ycl.entity.depart.DepartManager;
import org.apache.ibatis.annotations.Param;
+import java.util.Collection;
+import java.util.List;
+
/**
* <p>
* 鏈嶅姟绫�
@@ -15,4 +18,11 @@
public interface IDepartManagerService extends IService<DepartManager> {
void deleteByDepartId(Long departId);
+
+ /**
+ * 鏌ヨ閮ㄩ棬鐨勫憳宸d
+ * @param deptId
+ * @return
+ */
+ Collection<Long> getByDeptId(Long deptId);
}
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/impl/DepartManagerServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/depart/impl/DepartManagerServiceImpl.java
index cd95e3d..4391977 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/impl/DepartManagerServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/impl/DepartManagerServiceImpl.java
@@ -7,6 +7,10 @@
import com.ycl.service.depart.IDepartManagerService;
import org.springframework.stereotype.Service;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
/**
* <p>
* 鏈嶅姟瀹炵幇绫�
@@ -24,4 +28,11 @@
queryWrapper.eq(DepartManager::getDepartId, departId);
baseMapper.delete(queryWrapper);
}
+
+ @Override
+ public Collection<Long> getByDeptId(Long deptId) {
+ LambdaQueryWrapper<DepartManager> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(DepartManager::getDepartId, deptId);
+ return baseMapper.selectList(queryWrapper).stream().map(DepartManager::getUserId).collect(Collectors.toSet());
+ }
}
diff --git a/ycl-common/src/main/java/com/ycl/service/user/UmsAdminService.java b/ycl-common/src/main/java/com/ycl/service/user/UmsAdminService.java
index 9fc5d34..11450dd 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/UmsAdminService.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/UmsAdminService.java
@@ -40,6 +40,8 @@
*/
String login(String username,String password);
+ String getOAuthToken(String username);
+
/**
* 鍒锋柊token鐨勫姛鑳�
* @param oldToken 鏃х殑token
@@ -118,4 +120,5 @@
List<UmsAdmin> getDepartUser(Long departId);
String getTargetTo(String ids, String sendType);
+ UmsAdmin getByOpenid(String openid);
}
diff --git a/ycl-common/src/main/java/com/ycl/service/user/UmsRoleService.java b/ycl-common/src/main/java/com/ycl/service/user/UmsRoleService.java
index 02a3f4c..e7c46e0 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/UmsRoleService.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/UmsRoleService.java
@@ -9,6 +9,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
+import java.util.Map;
/**
* 鍚庡彴瑙掕壊绠$悊Service
@@ -35,6 +36,9 @@
*/
List<UmsMenuNode> getMenuList(Long adminId);
+
+ List<UmsRole> getRoleListByCodes(List<String> codes);
+
/**
* 鑾峰彇瑙掕壊鐩稿叧鑿滃崟
*/
diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
index 868fadd..b2daa9f 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
@@ -298,6 +298,25 @@
}
return token;
}
+
+ @Override
+ public String getOAuthToken(String username) {
+ String token = null;
+ //瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫�
+ try {
+ AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username);
+ UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+ //鏍规嵁鐢ㄦ埛id锛岀敤鎴峰鍚�
+ token = jwtTokenUtil.generateToken(userDetails.getUserId(), userDetails.getUsername());
+ redisService.set(RedisKey.PLATFORM_TOKEN_KEY.concat(username), token, LiveTimeMillisecond.s7200.time);
+// updateLoginTimeByUsername(username);
+ //insertLoginLog(username);
+ } catch (AuthenticationException e) {
+ LOGGER.warn("鐧诲綍寮傚父:{}", e.getMessage());
+ }
+ return token;
+ }
/**
* 娣诲姞鐧诲綍璁板綍
@@ -596,5 +615,10 @@
return str;
}
+ @Override
+ public UmsAdmin getByOpenid(String openid) {
+ LambdaQueryWrapper<UmsAdmin> wrapper = new LambdaQueryWrapper<UmsAdmin>().eq(UmsAdmin::getOpenid, openid).last("limit 1");
+ return baseMapper.selectOne(wrapper);
+ }
}
diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java
index 70971e2..9f060c4 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java
@@ -101,6 +101,12 @@
@Override
+ public List<UmsRole> getRoleListByCodes(List<String> codes) {
+ LambdaQueryWrapper<UmsRole> wrapper = new LambdaQueryWrapper<UmsRole>().in(UmsRole::getCode, codes);
+ return baseMapper.selectList(wrapper);
+ }
+
+ @Override
public List<UmsMenu> listMenu(Long roleId) {
return umsMenuMapper.getMenuListByRoleId(roleId);
}
diff --git a/ycl-platform/pom.xml b/ycl-platform/pom.xml
index 78d280f..67a9c94 100644
--- a/ycl-platform/pom.xml
+++ b/ycl-platform/pom.xml
@@ -36,6 +36,13 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>com.alibaba.xxpt</groupId>
+ <artifactId>zwdd</artifactId>
+ <version>1.2.0</version>
+ <scope>system</scope>
+ <systemPath>${project.basedir}/src/main/resources/libs/zwdd-sdk-java-1.2.0.jar</systemPath>
+ </dependency>
</dependencies>
<!-- <build>-->
diff --git a/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java b/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java
new file mode 100644
index 0000000..f6c7ff1
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java
@@ -0,0 +1,90 @@
+package com.ycl.common.constant;
+/**
+ * ding 闇�瑕佺殑甯搁噺
+ */
+public interface DingConst {
+ /**
+ * appkey
+ */
+ String APP_KEY = ""; //姝e紡
+ /**
+ * secretKey
+ */
+ String SECRET_KEY = ""; //姝e紡
+
+ /*******鎺ュ彛********/
+ /**
+ * 瓒呯绉熸埛id
+ */
+// String TENANT_ID = "50245108";//娴嬭瘯
+ // String TENANT_ID = "196729"; //姝e紡
+
+ /**
+ * 閽� 鍩熷悕
+ */
+// String DOMAIN_NAME = "openplatform.dg-work.cn";// 娴嬭瘯锛氫笓鏈夐拤閽�
+ String DOMAIN_NAME = "openplatform-pro.ding.zj.gov.cn";// 姝e紡锛氭禉鏀块拤
+ /**
+ * 閽� 璇锋眰鍗忚
+ */
+ String PROTOCAL = "https";
+
+ /**
+ * TOKEN 鑾峰彇鎺ュ彛
+ */
+ String GET_TOKEN = "/gettoken.json";
+ /**
+ * TOKEN 鑾峰彇鎺ュ彛
+ */
+ String GET_TIKER = "/get_jsapi_token.json";
+
+ /**
+ * 鑾峰彇鐢ㄦ埛淇℃伅鎺ュ彛
+ */
+ String GET_USER_INFO = "/rpc/oauth2/dingtalk_app_user.json";
+ /**
+ * 鏍规嵁鍛樺伐Code鏌ヨ璇︽儏
+ */
+ String GET_EMP_BY_CODE = "/mozi/employee/getEmployeeByCode";
+
+ /**
+ * 鑾峰彇閫氳褰曟潈闄愯寖鍥�
+ */
+ String GET_BOOK_AUTH = "/auth/scopesV2";
+
+ /**
+ * 鍒嗛〉鑾峰彇涓嬧紑绾х粍缁� Code 鍒楄〃
+ */
+ String POST_ORG_PAGE_CODE_LIST = "/mozi/organization/pageSubOrganizationCodes";
+
+ /**
+ * 鎵归噺鏍规嵁缁勭粐Code鏌ヨ璇︽儏
+ */
+ String POST_ORG_DETIAL_CODE_BATTH = "/mozi/organization/listOrganizationsByCodes";
+
+ /**
+ * 鏌ヨ缁勭粐涓嬩汉鍛樿鎯�
+ */
+ String POST_PERSON_INFO_BY_ORG_CODE = "/mozi/organization/pageOrganizationEmployeePositions";
+
+ /**
+ * 鏌ヨ鍛樺伐浠昏亴
+ */
+ String POST_STAFF_APPOINTMENT = "/mozi/employee/listEmployeePositionsByEmployeeCode";
+
+ /**
+ * 鏍规嵁缁勭粐Code鏌ヨ璇︽儏
+ */
+ String POST_ORG_BY_CODE = "/mozi/organization/getOrganizationByCode";
+
+ /**
+ * 鍙戦�佸伐浣滄秷鎭�氱煡
+ */
+ String POST_SEND_NOTIFY = "/message/workNotification";
+
+ /**
+ * 鍙戦�乨ing 宸ヤ綔娑堟伅閾炬帴
+ */
+ String SEND_DING_WORK_LINK = "dingtalkind://dingtalkclient/page/link?url=";
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java b/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java
new file mode 100644
index 0000000..fd00a02
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java
@@ -0,0 +1,618 @@
+package com.ycl.common.dingding;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.log.Log;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.xxpt.gateway.shared.api.request.OapiMoziOrganizationListOrganizationsByCodesRequest;
+import com.alibaba.xxpt.gateway.shared.api.request.OapiMoziOrganizationPageOrganizationEmployeePositionsRequest;
+import com.alibaba.xxpt.gateway.shared.api.request.OapiMoziOrganizationPageSubOrganizationCodesRequest;
+import com.alibaba.xxpt.gateway.shared.api.response.OapiMoziOrganizationListOrganizationsByCodesResponse;
+import com.alibaba.xxpt.gateway.shared.api.response.OapiMoziOrganizationPageOrganizationEmployeePositionsResponse;
+import com.alibaba.xxpt.gateway.shared.api.response.OapiMoziOrganizationPageSubOrganizationCodesResponse;
+import com.alibaba.xxpt.gateway.shared.client.http.*;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ycl.config.DingConfig;
+import com.ycl.entity.depart.UmsDepart;
+import com.ycl.entity.dingding.DingUserInfo;
+import com.ycl.entity.user.UmsRole;
+import com.ycl.exception.ApiException;
+import com.ycl.service.depart.UmsDepartService;
+import com.ycl.service.user.UmsRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+import static com.ycl.common.constant.DingConst.*;
+
+
+/**
+ * Ding 鑾峰彇鎺ュ彛api鐩稿叧
+ *
+ * @author cjx
+ */
+@Component
+public class DingCommon {
+
+ private static final Log log = Log.get();
+
+ @Autowired
+ private StringRedisTemplate redisTemplate;
+ @Resource
+ private ExecutableClient executableClient;
+ @Autowired
+ private UmsDepartService umsDepartService;
+
+
+ /**
+ * 鑾峰彇鐢ㄦ埛淇℃伅
+ *
+ * @param code 涓存椂鎺堟潈鐮� 鍓嶅彴鑾峰彇
+ * @return
+ */
+ public DingUserInfo getDingUserInfo(String code) {
+// 鍒ゆ柇ding 淇℃伅鏄惁瀛樺湪
+ boolean hasDing = redisTemplate.hasKey("ding");
+ if (hasDing) {
+ String dingStr = redisTemplate.opsForValue().get("ding");
+ JSONObject dingObj = JSONObject.parseObject(dingStr);
+ String getToken = dingObj.getString("token");
+ if (ObjectUtil.isEmpty(code) || ObjectUtil.isEmpty(getToken)) {
+ throw new ApiException("鐧诲綍寮傚父");
+ }
+ //鑾峰彇鐢ㄦ埛淇℃伅
+ PostClient postClient = executableClient.newPostClient(GET_USER_INFO);
+ postClient.addParameter("access_token", getToken); //token
+ postClient.addParameter("auth_code", code);//涓存椂鎺堟潈鐮�
+ String apiResult = postClient.post();
+ JSONObject resObj = parsingJson(apiResult);
+ if (null != resObj) {
+ resObj = resObj.getJSONObject("data");
+ redisTemplate.opsForValue().set("realmId", resObj.getString("realmId"));
+ JSONObject empCodeObj = getEmpByCode(resObj.getString("employeeCode"), resObj.getString("realmId"));
+ if (ObjectUtil.isNotEmpty(empCodeObj)) {
+ resObj.putAll(empCodeObj);
+ }
+ DingUserInfo dingUserInfo = BeanUtil.toBean(resObj, DingUserInfo.class);
+ String accId = DingEncodeUtil.getMD5(resObj.getString("employeeCode").getBytes());
+ dingUserInfo.setUserId(Long.parseLong(accId));
+ dingUserInfo.setAccountId(resObj.getLong("accountId"));
+ return dingUserInfo;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鏍规嵁鍛樺伐Code鏌ヨ璇︽儏
+ *
+ * @param employeeCode 鍛樺伐code鍒楄〃
+ * @param TENANT_ID 绉熸埛id
+ * @return
+ */
+ public JSONObject getEmpByCode(String employeeCode, String tenantId) {
+ //鑾峰彇鐢ㄦ埛淇℃伅
+ PostClient postClient = executableClient.newPostClient(GET_EMP_BY_CODE);
+ postClient.addParameter("employeeCode", employeeCode);
+ postClient.addParameter("tenantId", tenantId);
+ String apiResult = postClient.post();
+ JSONObject resObj = parsingJson(apiResult);
+ if (null != resObj) {
+ resObj = resObj.getJSONObject("data");
+ } else {
+ resObj = null;
+ }
+ return resObj;
+ }
+
+ /**
+ * 鍙戦�佹枃鏈秷鎭�
+ *
+ * @param receiverIds 鎺ユ敹浜虹敤鎴稩D(accountId)锛� 澶氫釜浜烘椂浣跨敤鍗婅閫楀彿鍒嗛殧锛�
+ * @param content 娑堟伅锛屾渶濂�500瀛椾互鍐�
+ * @return
+ */
+ public JSONObject sendDingMsgStr(String receiverIds, String content) {
+ //鑾峰彇鐢ㄦ埛淇℃伅
+ PostClient postClient = executableClient.newPostClient(POST_SEND_NOTIFY);
+ postClient.addParameter("receiverIds", receiverIds);
+ postClient.addParameter("tenantId", dingConfig.getTenantId());
+ postClient.addParameter("msg", getJsonStringText(content));
+ String apiResult = postClient.post();
+ JSONObject resObj = parsingJson(apiResult);
+ if (null != resObj) {
+ resObj = resObj.getJSONObject("data");
+ }
+ return resObj;
+ }
+
+ /**
+ * 鍙戦�侀摼鎺ユ秷鎭�
+ *
+ * @param receiverIds 鎺ユ敹浜虹敤鎴稩D(accountId)锛� 澶氫釜浜烘椂浣跨敤鍗婅閫楀彿鍒嗛殧锛�
+ * @param content 娑堟伅锛屾渶濂�500瀛椾互鍐�
+ * @param title 娑堟伅鏍囬
+ * @param picUrl 鍥剧墖鍦板潃
+ * @param urlLink 閾炬帴璺宠浆璺緞
+ * @return
+ */
+ public JSONObject sendDingMsgLink(String receiverIds, String title, String urlLink, String content, String picUrl) {
+ //鑾峰彇鐢ㄦ埛淇℃伅
+ PostClient postClient = executableClient.newPostClient(POST_SEND_NOTIFY);
+ postClient.addParameter("receiverIds", receiverIds);
+ postClient.addParameter("tenantId", dingConfig.getTenantId());
+ postClient.addParameter("msg", getJsonStringLink(urlLink, picUrl, title, content));
+ String apiResult = postClient.post();
+ JSONObject resObj = parsingJson(apiResult);
+ return resObj;
+ }
+
+ public JSONObject sendDingMsgCardLink(String receiverIds, String title, String urlLink, String pcUrlLink, String content) {
+ //鑾峰彇鐢ㄦ埛淇℃伅
+ PostClient postClient = executableClient.newPostClient(POST_SEND_NOTIFY);
+ postClient.addParameter("receiverIds", receiverIds);
+ postClient.addParameter("tenantId", dingConfig.getTenantId());
+ postClient.addParameter("bizMsgId", StrUtil.uuid());
+ postClient.addParameter("msg", getJsonStringCardLink(urlLink, pcUrlLink, title, content));
+
+ String apiResult = postClient.post();
+ JSONObject resObj = parsingJson(apiResult);
+ return resObj;
+ }
+
+ @Resource
+ private DingConfig dingConfig;
+
+ /**
+ * 鑾峰彇閫氳褰曟潈闄愯寖鍥�
+ */
+ public JSONObject getBookAuthority() {
+ //鑾峰彇鐢ㄦ埛淇℃伅
+ GetClient postClient = executableClient.newGetClient(GET_BOOK_AUTH);
+ postClient.addParameter("tenantId", dingConfig.getTenantId());
+ String apiResult = postClient.get();
+ JSONObject resObj = parsingJson(apiResult);
+ return resObj;
+ }
+
+ /**
+ * 鏌ヨ鍏ㄩ儴閮ㄩ棬淇℃伅
+ *
+ * @return
+ */
+ public List<UmsDepart> getOrgInfo(JSONArray deptTopArr) {
+ List<UmsDepart> orgList = new ArrayList<>();
+ //鑾峰彇鍏ㄩ儴閮ㄩ棬code
+ //JSONObject topObj = getBookAuthority();
+ //椤剁骇閮ㄩ棬id
+ // JSONArray deptTopArr = topObj.getJSONArray("deptVisibleScopes");
+ //鏍规嵁鍒嗛〉鑾峰彇涓嬧紑绾х粍缁� Code 鍒楄〃 涓�灞備竴灞傝幏鍙栫粍缁� Code 鍒楄〃
+ String topCode = deptTopArr.getString(0);
+ orgNameList.add(topCode);
+ getPageOrgCode(topCode);
+ //鏍规嵁code鏌ヨ缁勭粐璇︽儏
+ JSONArray resDept = getOrgDetailByCodeList(orgNameList);
+ //瑙f瀽涓虹郴缁熺粍缁囩粨鏋勫疄浣撶被
+ for (int i = 0; i < resDept.size(); i++) {
+ JSONObject orgObj = resDept.getJSONObject(i);
+ UmsDepart depart = new UmsDepart();
+ //鏈骇code缂栫爜
+ String code = orgObj.getString("organizationCode");
+ //鐖剁骇code缂栫爜
+ String pcode = orgObj.getString("parentCode");
+ //鏈骇鍚嶇О
+ String name = orgObj.getString("organizationName");
+ //鎺掑簭
+ Integer sort = orgObj.getInteger("displayOrder");
+ code = DingEncodeUtil.getMD5(code.getBytes());
+ pcode = DingEncodeUtil.getMD5(pcode.getBytes());
+ depart.setParentId(Long.parseLong(pcode));
+ depart.setId(Long.parseLong(code));
+ depart.setCode(orgObj.getString("organizationCode"));
+ depart.setDepartName(name);
+ depart.setSort(sort);
+ orgList.add(depart);
+ }
+ orgNameList = new ArrayList<>();
+ return orgList;
+ }
+
+ /**
+ * 鏍规嵁缁勭粐code 鏌ヨ 閫氳褰曚汉鍛樹俊鎭�
+ * <p>
+ * // * @return
+ * //
+ */
+ public Set<DingUserInfo> getPersonInfoByOrgCode() {
+ LambdaQueryWrapper<UmsDepart> orgLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ orgLambdaQueryWrapper.select(UmsDepart::getCode);
+ orgLambdaQueryWrapper.likeRight(UmsDepart::getCode, "GO_");
+ List<UmsDepart> orgList = umsDepartService.list(orgLambdaQueryWrapper);
+ Set<DingUserInfo> dingUserInfoList = new HashSet<>();
+ for (UmsDepart org : orgList) {
+ if (ObjectUtil.isNotEmpty(org.getCode())) {
+ IntelligentGetClient intelligentGetClient = executableClient.newIntelligentGetClient(POST_PERSON_INFO_BY_ORG_CODE);
+ OapiMoziOrganizationPageOrganizationEmployeePositionsRequest orgOptions = new OapiMoziOrganizationPageOrganizationEmployeePositionsRequest();
+ //鏄惁璇锋眰鎬绘暟锛岄粯璁ゆ槸false
+// orgOptions.setReturnTotalSize(true);
+ //鍒嗛〉澶у皬锛岄粯璁ゆ槸20锛屾渶澶�100
+ orgOptions.setPageSize(100);
+ //鍛樺伐鐘舵�侊紝A涓烘湁鏁堬紝F涓烘棤鏁堬紝榛樿鏄墍鏈�
+ orgOptions.setEmployeeStatus("A");
+ //缁勭粐code
+ orgOptions.setOrganizationCode(org.getCode());
+ //璇锋眰璧峰椤碉紝榛樿鏄�1
+// orgOptions.setPageNo(1);
+ //绉熸埛id
+ orgOptions.setTenantId(Long.valueOf(dingConfig.getTenantId()));
+ //page椤�
+ Integer page = 0;
+ //鏄惁鏈変笅涓�椤�
+ boolean isHasPage;
+ do {
+ isHasPage = false;
+ page++;
+// postClient.addParameter("pageNo", page.toString());
+// String apiResult = postClient.post();
+ orgOptions.setPageNo(page);
+ OapiMoziOrganizationPageOrganizationEmployeePositionsResponse apiResult = intelligentGetClient.get(orgOptions);
+ JSONObject resObj = parsingJson(JSON.toJSONString(apiResult));
+ if (null != resObj) {
+ if (resObj.containsKey("data")) {
+ JSONArray dataArr = resObj.getJSONArray("data");
+ for (int i = 0; i < dataArr.size(); i++) {
+ //浜哄憳淇℃伅
+ JSONObject data = dataArr.getJSONObject(i);
+// String empName = data.getString("employeeName");
+ String employeeCode = data.getString("employeeCode");
+ //鏍规嵁鍛樺伐code 鑾峰彇鍛樺伐璇︽儏
+ DingUserInfo dingUserInfo = getEmpInfoByCode(employeeCode);
+ if (ObjectUtil.isNotEmpty(dingUserInfo)) {
+ dingUserInfoList.add(dingUserInfo);
+ }
+ }
+ isHasPage = true;
+ }
+ }
+ //瑙f瀽鏁版嵁锛屽垽鏂槸鍚︾户缁煡璇笅涓�椤�
+ } while (isHasPage);
+ }
+ }
+ JSONArray arr = new JSONArray(Collections.singletonList(dingUserInfoList));
+ redisTemplate.opsForValue().set("userJsonList", arr.toJSONString());
+ return dingUserInfoList;
+ }
+
+ @Resource
+ UmsRoleService userRoleService;
+
+ /**
+ * 鏍规嵁鍛樺伐code 鑾峰彇鍛樺伐璇︽儏
+ *
+ * @param employeeCode 鍛樺伐code
+ * @return 閽夐拤鐢ㄦ埛浣撶郴瀹炰綋瀵硅薄
+ */
+ public DingUserInfo getEmpInfoByCode(String employeeCode) {
+ if (ObjectUtil.isNotEmpty(employeeCode)) {
+ //鏍规嵁鍛樺伐code鑾峰彇鍛樺伐璇︾粏淇℃伅
+ JSONObject empCodeObj = getEmpByCode(employeeCode, dingConfig.getTenantId());
+ if (ObjectUtil.isNotEmpty(empCodeObj)) {
+ empCodeObj.put("userId", DingEncodeUtil.getMD5(employeeCode.getBytes()));
+ //鏌ヨ浠昏亴
+ JSONArray jobArr = getStaffAppointment(employeeCode);
+ assert jobArr != null;
+ //涓存椂淇濆瓨浠昏亴鐨刬ds锛堢郴缁熺殑鐢ㄦ埛浣撶郴锛�
+ List<Long> posIds = new ArrayList<>();
+ //鐢ㄦ埛瑙掕壊code
+ List<String> roleCodeList = new ArrayList<>();
+ for (int j = 0; j < jobArr.size(); j++) {
+ JSONObject jobPos = jobArr.getJSONObject(j);
+ //鏄惁涓昏亴
+ Boolean isMain = jobPos.getBoolean("mainJob");
+ if (isMain) {
+ JSONObject holdapost = jobArr.getJSONObject(0);
+ String orgCode = holdapost.getString("organizationCode");
+ if (StrUtil.isNotBlank(orgCode)) {
+ JSONObject orgDetail = getOrgDetailByCode(orgCode);
+ if (null != orgDetail) {
+ String orgId = orgDetail.getString("organizationCode");
+ String orgName = orgDetail.getString("organizationName");
+ orgId = DingEncodeUtil.getMD5(orgId.getBytes());
+ empCodeObj.put("orgId", orgId);
+ empCodeObj.put("orgName", orgName);
+ }
+ }
+ }
+ //鑱屼綅淇℃伅
+ String posName = jobPos.getString("govEmpPosJob");
+ if (StrUtil.isBlank(posName)) {
+ posName = "鏈~鍐欒亴浣嶅悕绉�";
+ }
+ //瑙掕壊
+ String roleCode = jobPos.getString("empPosEmployeeRoleCode");
+ roleCodeList.add(roleCode);
+ String code = DingEncodeUtil.getMD5(posName.getBytes());
+ //鏌ヨ鏄惁鏈夐噸澶嶇殑
+ LambdaQueryWrapper<UmsRole> posLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ // posLambdaQueryWrapper.eq(UmsRole::getCode, code);
+ posLambdaQueryWrapper.eq(UmsRole::getName, posName);
+ posLambdaQueryWrapper.last("LIMIT 1");
+ UmsRole posOne = userRoleService.getOne(posLambdaQueryWrapper);
+ //浠昏亴鍚嶇О涓嶅瓨鍦紝鑷姩娣诲姞
+ if (ObjectUtil.isEmpty(posOne)) {
+ posOne = new UmsRole();
+ posOne.setSort(100);
+ posOne.setName(posName);
+ posOne.setCode(code);
+ posOne.setStatus(1);
+ userRoleService.save(posOne);
+ }else {
+ posOne.setCode(code);
+ userRoleService.updateById(posOne);
+ }
+ posIds.add(posOne.getId());
+ }
+ //杞崲涓哄疄浣撶被
+ DingUserInfo dingUserInfo = BeanUtil.toBean(empCodeObj, DingUserInfo.class);
+ Long orgId = dingUserInfo.getOrgId();
+ if (ObjectUtil.isNotEmpty(orgId)) {
+ dingUserInfo.setPosIdList(posIds);
+ dingUserInfo.setRoleCodeList(roleCodeList);
+ }
+ return dingUserInfo;
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * 鏍规嵁鍛樺伐Code鑾峰彇鍛樺伐鐨勪换鑱�
+ */
+ private JSONArray getStaffAppointment(String empCode) {
+ PostClient postClient = executableClient.newPostClient(POST_STAFF_APPOINTMENT);
+ postClient.addParameter("tenantId", dingConfig.getTenantId());
+ postClient.addParameter("employeeCode", empCode);
+ String apiResult = postClient.post();
+ JSONObject dataObj = parsingJson(apiResult);
+ if (null != dataObj) {
+ return dataObj.getJSONArray("data");
+ }
+ return null;
+ }
+
+ /**
+ * 鏍规嵁缁勭粐code鑾峰彇缁勭粐璇︽儏
+ */
+ private JSONObject getOrgDetailByCode(String orgCode) {
+ PostClient postClient = executableClient.newPostClient(POST_ORG_BY_CODE);
+ postClient.addParameter("tenantId", dingConfig.getTenantId());
+ postClient.addParameter("organizationCode", orgCode);
+ String apiResult = postClient.post();
+ JSONObject dataObj = parsingJson(apiResult);
+ if (null != dataObj) {
+ return dataObj.getJSONObject("data");
+ }
+ return dataObj;
+ }
+
+
+ /**
+ * 鎵归噺鏍规嵁缁勭粐Code鏌ヨ璇︽儏
+ */
+ private JSONArray getOrgDetailByCodeList(List<String> codeList) {
+ JSONArray resultArr = new JSONArray();
+ if (ObjectUtil.isNotEmpty(codeList)) {
+ int codeIndexSize = codeList.size() % 100 == 0 ? codeList.size() / 100 : codeList.size() / 100 + 1;
+ List<String> result;
+ int start = 0;
+ int end = 0;
+ for (int i = 1; i <= codeIndexSize; i++) {
+ if (codeList.size() >= 100) {
+ end += 100;
+ if (i == codeIndexSize) {
+ end = codeList.size();
+ }
+ result = codeList.subList(start, end);
+ start = end;
+ } else {
+ result = codeList;
+ }
+ //executableClient淇濊瘉鍗曚緥
+ IntelligentPostClient intelligentPostClient = executableClient.newIntelligentPostClient(POST_ORG_DETIAL_CODE_BATTH);
+ OapiMoziOrganizationListOrganizationsByCodesRequest oapiMoziOrganizationListOrganizationsByCodesRequest = new OapiMoziOrganizationListOrganizationsByCodesRequest();
+ oapiMoziOrganizationListOrganizationsByCodesRequest.setOrganizationCodes(result);
+ oapiMoziOrganizationListOrganizationsByCodesRequest.setTenantId(Long.parseLong(dingConfig.getTenantId()));
+ //鑾峰彇缁撴灉
+ OapiMoziOrganizationListOrganizationsByCodesResponse apiResult = intelligentPostClient.post(oapiMoziOrganizationListOrganizationsByCodesRequest);
+ if (apiResult.getSuccess()) {
+ JSONArray obj = JSONArray.parseArray(apiResult.getContent().getData());
+ resultArr.addAll(obj);
+ }
+ }
+ }
+ return resultArr;
+ }
+
+ /**
+ * 鏍规嵁鍒嗛〉鑾峰彇涓嬧紑绾х粍缁� Code 鍒楄〃
+ *
+ * @return
+ */
+ private List<String> orgNameList = new ArrayList<>();
+
+ /**
+ * 鍒嗛〉鑾峰彇涓嬧紑绾х粍缁� Code 鍒楄〃
+ *
+ * @param partCode
+ */
+ private void getPageOrgCode(String partCode) {
+ //涓存椂瀛樻斁褰撳墠缁勭粐
+ List<String> currTempOrgList = new ArrayList<>();
+// PostClient postClient = executableClient.newPostClient(POST_ORG_PAGE_CODE_LIST);
+// postClient.addParameter("tenantId", TENANT_ID);
+// postClient.addParameter("organizationCode", partCode);
+ //鍙煡璇㈡湁鏁堟暟鎹�
+// postClient.addParameter("status", "A");
+// postClient.addParameter("pageSize", "100");
+ IntelligentGetClient intelligentGetClient = executableClient.newIntelligentGetClient(POST_ORG_PAGE_CODE_LIST);
+ OapiMoziOrganizationPageSubOrganizationCodesRequest options = new OapiMoziOrganizationPageSubOrganizationCodesRequest();
+// options.setReturnTotalSize(true);
+ options.setOrganizationCode(partCode);
+ options.setPageSize(100);
+ options.setStatus("A");
+ options.setTenantId(Long.valueOf(dingConfig.getTenantId()));
+ //page椤�
+ Integer page = 0;
+ //鏄惁鏈変笅涓�椤�
+ boolean isHasPage;
+ do {
+ isHasPage = false;
+ page++;
+// postClient.addParameter("pageNo", page.toString());
+// String apiResult = postClient.post();
+ options.setPageNo(page);
+ OapiMoziOrganizationPageSubOrganizationCodesResponse apiResult = intelligentGetClient.get(options);
+ JSONObject resObj = parsingJson(JSON.toJSONString(apiResult));
+ if (null != resObj) {
+ if (resObj.containsKey("data")) {
+ JSONArray dataArr = resObj.getJSONArray("data");
+ for (int i = 0; i < dataArr.size(); i++) {
+ String deptCode = dataArr.getString(i);
+ currTempOrgList.add(deptCode);
+ orgNameList.add(deptCode);
+ }
+ isHasPage = true;
+ }
+ }
+ //瑙f瀽鏁版嵁锛屽垽鏂槸鍚︾户缁煡璇笅涓�椤�
+ } while (isHasPage);
+ for (String str : currTempOrgList) {
+ getPageOrgCode(str);
+ }
+ }
+
+
+ /**
+ * 瑙f瀽杩斿洖鍊�
+ *
+ * @param apiResult
+ */
+ private JSONObject parsingJson(String apiResult) {
+ try {
+ if (ObjectUtil.isNotNull(apiResult)) {
+ JSONObject resJson = JSONObject.parseObject(apiResult);
+ if (resJson.getBoolean("success")) {
+ JSONObject data = resJson.getJSONObject("content");
+ if (ObjectUtil.isNotEmpty(data)) {
+ return data;
+ }
+ } else if (!ObjectUtil.equals("OPF-B001-05-16-0006", resJson.getString("bizErrorCode"))) {
+ log.error("DING_ERROR锛�" + resJson.toJSONString());
+ return resJson;
+ }
+ }
+ } catch (Exception e) {
+ redisTemplate.opsForValue().set("error_" + System.currentTimeMillis(), apiResult, 10, TimeUnit.MINUTES);
+ return null;
+ }
+ return null;
+ }
+
+
+ /**
+ * 鎷兼帴瑕佸彂閫佺殑娑堟伅 鏂囨湰娑堟伅
+ * json瀵硅薄 蹇呴』 {"msgtype":"text","text":{"content":"娑堟伅鍐呭"}}
+ * 娑堟伅鍐呭锛岀洰鍓嶆敮鎸侊細鏂囨湰娑堟伅锛歵ext, 閾炬帴娑堟伅锛歭ink, OA娑堟伅锛歰a, 鍗$墖娑堟伅锛歛ction_card銆傛渶闀夸笉瓒呰繃2048涓瓧鑺�
+ *
+ * @param content
+ */
+ private String getJsonStringText(String content) {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("msgtype", "text");//娑堟伅绫诲瀷锛屾鏃跺浐瀹氫负锛歵ext
+ JSONObject text = new JSONObject();
+ text.put("content", content);//娑堟伅鍐呭锛屽缓璁�500瀛楃浠ュ唴
+ jsonObject.put("text", text);
+ String jsonStr = JSONObject.toJSONString(jsonObject);
+ return jsonStr;
+ }
+
+ /**
+ * 鎷兼帴瑕佸彂閫佺殑娑堟伅 閾炬帴娑堟伅
+ *
+ * @param messageUrl 娑堟伅鐐瑰嚮閾炬帴鍦板潃锛屽綋鍙戦�佹秷鎭负灏忕▼搴忔椂鏀寔灏忕▼搴忚烦杞摼鎺�
+ * @param picUrl 鍥剧墖鍦板潃
+ * @param title 娑堟伅鏍囬锛屽缓璁�100瀛楃浠ュ唴
+ * @param text 娑堟伅鎻忚堪锛屽缓璁�500瀛楃浠ュ唴
+ */
+ private String getJsonStringLink(String messageUrl, String picUrl, String title, String text) {
+ JSONObject jsonObject = new JSONObject();
+ //娑堟伅绫诲瀷锛屾鏃跺浐瀹氫负锛歵ext
+ jsonObject.put("msgtype", "link");
+ JSONObject link = new JSONObject();
+ link.put("messageUrl", messageUrl);
+ link.put("picUrl", picUrl);
+ link.put("title", title);
+ link.put("text", text);
+ jsonObject.put("link", link);
+ String jsonStr = JSONObject.toJSONString(jsonObject);
+ return jsonStr;
+ }
+
+ /**
+ * 鎷兼帴瑕佸彂閫佺殑娑堟伅 鍗$墖閾炬帴娑堟伅
+ *
+ * @param messageUrl 娑堟伅鐐瑰嚮閾炬帴鍦板潃锛屽綋鍙戦�佹秷鎭负灏忕▼搴忔椂鏀寔灏忕▼搴忚烦杞摼鎺�
+ * @param title 娑堟伅鏍囬锛屽缓璁�100瀛楃浠ュ唴
+ * @param text 娑堟伅鎻忚堪锛屽缓璁�500瀛楃浠ュ唴
+ */
+ private String getJsonStringCardLink(String messageUrl, String messagePcUrl, String title, String text) {
+ JSONObject jsonObject = new JSONObject();
+ //娑堟伅绫诲瀷锛屾鏃跺浐瀹氫负锛歵ext
+ jsonObject.put("msgtype", "action_card");
+ JSONObject link = new JSONObject();
+ link.put("title", title);
+ link.put("markdown", text);
+ link.put("single_title", "鏌ョ湅璇︽儏");
+ link.put("single_url", messageUrl);
+ link.put("single_pc_url", messagePcUrl);
+ jsonObject.put("action_card", link);
+ String jsonStr = JSONObject.toJSONString(jsonObject);
+ return jsonStr;
+ }
+//
+// /**
+// * 涓嬭浇鍛樺伐澶村儚
+// *
+// * @param mediaId 濯掍綋澶村儚id
+// */
+// public void downloadEmployeeAvatar(String mediaId) {
+// try {
+// String api = "/media/download";
+// GetClient getClient = executableClient.newGetClient(api);
+// //璁剧疆鍙傛暟
+// String dingStr = redisTemplate.opsForValue().get("ding");
+// JSONObject dingObj = JSONObject.parseObject(dingStr);
+// String getToken = dingObj.getString("token");
+// getClient.addParameter("access_token", getToken);
+// getClient.addParameter("media_id", mediaId.replace("$", ""));
+// CloseableHttpResponse response = getClient.getB();
+// //璋冪敤API
+// String fileName = mediaId + ".jpg";
+// String path = ConstantContextHolder.getSysConfig("SNOWY_FILE_UPLOAD_PATH_FOR_WINDOWS", String.class, null) + "/Avatar/";
+// File voice = new File(path + fileName);
+// FileUtil.writeFromStream(response.getEntity().getContent(), voice);
+// } catch (Exception e) {
+// log.error("DING_ERROR锛�" + e.getMessage());
+// System.out.println(e);
+// }
+// }
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/common/dingding/DingEncodeUtil.java b/ycl-platform/src/main/java/com/ycl/common/dingding/DingEncodeUtil.java
new file mode 100644
index 0000000..4219da4
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/dingding/DingEncodeUtil.java
@@ -0,0 +1,30 @@
+package com.ycl.common.dingding;
+
+import java.security.MessageDigest;
+
+/**
+ * 瀛楃鍔犲瘑杞箟
+ */
+public class DingEncodeUtil {
+ public static String getMD5(byte[] source) {
+ String s = null;
+ char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
+ try {
+ MessageDigest md = MessageDigest.getInstance("MD5");
+ md.update(source);
+ byte[] tmp = md.digest();
+ char[] str = new char[16];
+ int k = 0;
+ for (int i = 0; i < 16; i++) {
+ byte byte0 = tmp[i];
+ //鍙彇楂樹綅
+ str[k++] = hexDigits[(byte0 >>> 4 & 0xf) % 10];
+ }
+ // 鎹㈠悗鐨勭粨鏋滆浆鎹负瀛楃涓�
+ s = new String(str);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return s;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/config/DingConfig.java b/ycl-platform/src/main/java/com/ycl/config/DingConfig.java
new file mode 100644
index 0000000..88630e5
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/config/DingConfig.java
@@ -0,0 +1,32 @@
+package com.ycl.config;
+
+import com.alibaba.xxpt.gateway.shared.client.http.ExecutableClient;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import static com.ycl.common.constant.DingConst.*;
+
+@Data
+@Component
+@ConfigurationProperties("zzding")
+public class DingConfig {
+ private String appKey;
+ private String appSecret;
+ private String domainName;
+ private String protocal;
+ private String tenantId;
+
+ @Bean
+ public ExecutableClient executableClient() {
+ ExecutableClient executableClient = ExecutableClient.getInstance();
+ executableClient.setAccessKey(appKey);
+ executableClient.setSecretKey(appSecret);
+ executableClient.setDomainName(domainName);
+ executableClient.setProtocal(protocal);
+ //executableClient瑕佸崟渚嬶紝骞朵笖浣跨敤鍓嶈鍒濆鍖栵紝鍙渶瑕佸垵濮嬪寲涓�娆�
+ executableClient.init();
+ return executableClient;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java b/ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java
index cc301dc..4922fec 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java
@@ -1,5 +1,6 @@
package com.ycl.controller.caseHandler;
+import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -20,11 +21,13 @@
import com.ycl.entity.caseHandler.BaseCaseDetail;
import com.ycl.entity.caseHandler.DisposeRecord;
import com.ycl.entity.resources.ImageResources;
+import com.ycl.entity.resources.VideoResources;
import com.ycl.service.caseHandler.IBaseCaseService;
import com.ycl.service.caseHandler.IDisposeRecordService;
import com.ycl.service.caseHandler.IIllegalBuildingService;
import com.ycl.service.caseHandler.IViolationsService;
import com.ycl.service.resources.IImageResourcesService;
+import com.ycl.service.resources.IVideoResourcesService;
import com.ycl.utils.EasyExcelUtils;
import com.ycl.vo.casePool.QueryForViolationVO;
import io.swagger.annotations.Api;
@@ -72,6 +75,9 @@
@Autowired
IImageResourcesService iImageResourcesService;
+
+ @Autowired
+ IVideoResourcesService iVideoResourcesService;
@Autowired
@@ -233,19 +239,34 @@
baseCase.setAlarmTime(LocalDateTime.parse(violationParam.getAlarmTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
baseCase.setCreateTime(LocalDateTime.now());
baseCaseService.save(baseCase);
- JSONArray arr = JSON.parseArray(baseCase.getPic());
+ // JSONArray arr = JSON.parseArray(baseCase.getPic());
AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- for (int i = 0; i < arr.size(); i++) {
- ImageResources imageResources = new ImageResources();
- imageResources.setType("01");
- imageResources.setBelongToId(baseCase.getId());
- imageResources.setUrl(arr.getString(i));
- imageResources.setCreateTime(LocalDateTime.now());
- imageResources.setCreateUser(user.getUserId());
- iImageResourcesService.save(imageResources);
+ if (CollUtil.isNotEmpty(violationParam.getImageUrls())) {
+ for (int i = 0; i < violationParam.getImageUrls().size(); i++) {
+ ImageResources imageResources = new ImageResources();
+ imageResources.setType("01");
+ imageResources.setBelongToId(baseCase.getId());
+ imageResources.setUrl(violationParam.getImageUrls().get(i));
+ imageResources.setCreateTime(LocalDateTime.now());
+ imageResources.setCreateUser(user.getUserId());
+ iImageResourcesService.save(imageResources);
+ }
}
+ if (CollUtil.isNotEmpty(violationParam.getVideoUrls())) {
+ VideoResources videoResources = new VideoResources();
+ videoResources.setCreateTime(LocalDateTime.now());
+ videoResources.setType("1");
+ videoResources.setCreateUser(user.getUserId());
+ videoResources.setBelongToId(baseCase.getId().intValue());
+ StringBuilder sb1 = new StringBuilder("");
+ violationParam.getImageUrls().forEach(item -> {
+ sb1.append(",").append(item);
+ });
+ videoResources.setUrl(sb1.substring(1, sb1.length() - 1));
+ iVideoResourcesService.save(videoResources);
+ }
return CommonResult.success(baseCaseService.saveViolationCase(violationParam, baseCase.getId()));
}
@@ -269,6 +290,49 @@
baseCase.setAlarmTime(LocalDateTime.parse(illegalBuildingParam.getAlarmTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
baseCase.setCreateTime(LocalDateTime.now());
baseCaseService.save(baseCase);
+
+ // if (CollUtil.isNotEmpty(illegalBuildingParam.getImageUrls())) {
+ // ImageResources imageResources = new ImageResources();
+ // imageResources.setCreateTime(LocalDateTime.now());
+ // imageResources.setType("1");
+ // AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ // imageResources.setCreateUser(user.getUserId());
+ // imageResources.setBelongToId(baseCase.getId());
+ // StringBuilder sb1 = new StringBuilder("");
+ // illegalBuildingParam.getImageUrls().forEach(item -> {
+ // sb1.append(",").append(item);
+ // });
+ // imageResources.setUrl(sb1.substring(1, sb1.length() - 1));
+ // imageResourcesService.save(imageResources);
+ // }
+
+ AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ if (CollUtil.isNotEmpty(illegalBuildingParam.getImageUrls())) {
+ for (int i = 0; i < illegalBuildingParam.getImageUrls().size(); i++) {
+ ImageResources imageResources = new ImageResources();
+ imageResources.setType("01");
+ imageResources.setBelongToId(baseCase.getId());
+ imageResources.setUrl(illegalBuildingParam.getImageUrls().get(i));
+ imageResources.setCreateTime(LocalDateTime.now());
+ imageResources.setCreateUser(user.getUserId());
+ iImageResourcesService.save(imageResources);
+ }
+ }
+
+ if (CollUtil.isNotEmpty(illegalBuildingParam.getVideoUrls())) {
+ VideoResources videoResources = new VideoResources();
+ videoResources.setCreateTime(LocalDateTime.now());
+ videoResources.setType("01");
+ user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ videoResources.setCreateUser(user.getUserId());
+ videoResources.setBelongToId(baseCase.getId().intValue());
+ StringBuilder sb2 = new StringBuilder("");
+ illegalBuildingParam.getImageUrls().forEach(item -> {
+ sb2.append(",").append(item);
+ });
+ videoResources.setUrl(sb2.substring(1, sb2.length() - 1));
+ iVideoResourcesService.save(videoResources);
+ }
return CommonResult.success(baseCaseService.saveIllegalBuildingCase(illegalBuildingParam, baseCase.getId()));
}
@@ -363,7 +427,7 @@
Integer state = iDisposeRecordService
.list(new LambdaQueryWrapper<DisposeRecord>()
.eq(DisposeRecord::getBaseCaseId, caseId).
- orderByDesc(DisposeRecord::getCreateTime)).get(firstNum).getState();
+ orderByDesc(DisposeRecord::getCreateTime)).get(firstNum).getState();
return CommonResult.success(baseCaseService
.update(new LambdaUpdateWrapper<BaseCase>()
.eq(BaseCase::getId, caseId)
@@ -380,15 +444,18 @@
@ApiOperation(value = "鏌ヨ妗堝嵎")
@GetMapping("/query_case")
- public CommonResult queryCase(@RequestParam Integer pageSize,
- @RequestParam Integer current,
- @RequestParam(required = false) String number,
- @RequestParam(required = false) Integer communityId,
- @RequestParam(required = false) Integer categories,
- @RequestParam(required = false) String startTime,
- @RequestParam(required = false) String endTime,
- @RequestParam(required = false) String site) {
- return CommonResult.success(baseCaseService.selectPage(new Page<BaseCase>().setCurrent(current).setSize(pageSize), number, communityId, categories, startTime, endTime, site));
+ public CommonResult<Page<BaseCase>> queryCase(@RequestParam Integer pageSize,
+ @RequestParam Integer current,
+ @RequestParam(required = false) String number,
+ @RequestParam(required = false) Integer communityId,
+ @RequestParam(required = false) Integer categories,
+ @RequestParam(required = false) String startTime,
+ @RequestParam(required = false) String endTime,
+ @RequestParam(required = false) Integer state,
+ @RequestParam(required = false) Integer time,
+ @RequestParam(required = false) Integer streetId,
+ @RequestParam(required = false) String site) {
+ return CommonResult.success(baseCaseService.selectPage(new Page<BaseCase>().setCurrent(current).setSize(pageSize), number, communityId, categories, startTime, endTime, site, state, streetId, time));
}
@GetMapping("/query_for_violation")
diff --git a/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java b/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java
new file mode 100644
index 0000000..2110dbf
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java
@@ -0,0 +1,99 @@
+package com.ycl.controller.dingding;
+
+import com.ycl.api.CommonResult;
+import com.ycl.bo.AdminUserDetails;
+import com.ycl.common.dingding.DingCommon;
+import com.ycl.controller.BaseController;
+import com.ycl.entity.dingding.DingUserInfo;
+import com.ycl.service.auth.AuthService;
+import com.ycl.service.ding.BookRemarkService;
+import com.ycl.service.ding.DingService;
+import com.ycl.vo.AddressBookVO;
+import com.ycl.vo.NewAddressBookVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/ding")
+@Api(tags = "閽夐拤")
+public class DingController extends BaseController {
+
+ @Autowired
+ private DingCommon dingCommon;
+ @Value("${jwt.tokenHead}")
+ private String tokenHead;
+ /**
+ * DING 鍏嶇櫥
+ * 鏍规嵁涓存椂鎺堟潈鐮佸拰access_token鑾峰彇鐢ㄦ埛淇℃伅
+ *
+ * @author cjx
+ */
+
+ @Autowired
+ private AuthService authService;
+
+ @Autowired
+ private DingService dingService;
+
+ @Autowired
+ private BookRemarkService bookRemarkService;
+
+ @ApiOperation(value = "鏍规嵁閽夐拤鎺堟潈鐮佽幏鍙杢oken")
+ @GetMapping("/dingLogin")
+ public CommonResult<Map> dingLogin(@RequestParam String code) {
+ HashMap<String, Object> map = new HashMap<>();
+ //鑾峰彇鐢ㄦ埛淇℃伅
+ DingUserInfo dingUser = dingCommon.getDingUserInfo(code);
+ //鎸塪ing鐧诲綍
+ String token = authService.dingLogin(dingUser);
+ map.put("token", token);
+ map.put("tokenHead", tokenHead);
+ map.put("accountId", dingUser.getAccountId());
+ return CommonResult.success(map);
+ }
+
+ @ApiOperation(value = "閫氳褰�")
+ @GetMapping("/addressBook")
+ public CommonResult<List<AddressBookVO>> getAddressBook() {
+ AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+
+ return CommonResult.success(dingService.getAddressBook(user.getUserId()));
+ }
+
+
+ @ApiOperation(value = "閫氳褰曢�掑綊")
+ @GetMapping("/addressBookById")
+ public CommonResult<List<AddressBookVO>> getAddressBook(@RequestParam("id") Long id) {
+ AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return CommonResult.success(dingService.getAddressBookByParentId(id, user.getUserId()));
+ }
+
+
+
+
+ @ApiOperation(value = "閫氳褰曢�掑綊")
+ @GetMapping("/getDddressBook")
+ public CommonResult<NewAddressBookVO> getNewAddressBook(@RequestParam("id") Long id) {
+ AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return CommonResult.success(dingService.getAddressBookById(id, user.getUserId()));
+ }
+
+
+
+ @ApiOperation(value = "淇敼閫氳褰曞娉�")
+ @PutMapping("/remark")
+ public CommonResult updateRemark(@RequestParam("userId") Long userId, @RequestParam("remark") String remark) {
+ AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return CommonResult.success(bookRemarkService.updateRemark(user, userId, remark));
+ }
+
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java b/ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java
index 46cb904..5e40526 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java
@@ -2,10 +2,12 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.annotation.LogSave;
import com.ycl.api.CommonResult;
import com.ycl.bo.AdminUserDetails;
import com.ycl.dto.message.MessageParam;
+import com.ycl.entity.caseHandler.BaseCase;
import com.ycl.entity.message.Message;
import com.ycl.mapper.user.UmsAdminMapper;
import com.ycl.service.message.IMessageService;
@@ -110,6 +112,14 @@
return CommonResult.failed();
}
+ @ApiOperation(value = "鏌ヨ鎴戠殑娑堟伅")
+ @GetMapping("/queryMyMessage")
+ public CommonResult<Page<Message>> queryMyMessage(@RequestParam Integer pageSize,
+ @RequestParam Integer current){
+ AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return CommonResult.success(iMessageService.queryMyMessage(new Page<Message>().setCurrent(current).setSize(pageSize), user.getUserId()));
+ }
+
@ApiOperation("娑堟伅宸叉煡鐪�")
@PostMapping("/modification_batch")
diff --git a/ycl-platform/src/main/java/com/ycl/dto/casePool/IllegalBuildingParam.java b/ycl-platform/src/main/java/com/ycl/dto/casePool/IllegalBuildingParam.java
index 750f380..553090f 100644
--- a/ycl-platform/src/main/java/com/ycl/dto/casePool/IllegalBuildingParam.java
+++ b/ycl-platform/src/main/java/com/ycl/dto/casePool/IllegalBuildingParam.java
@@ -8,6 +8,7 @@
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
+import java.util.List;
@Data
@ApiModel(value = "娣诲姞杩濆缓妗堜欢")
@@ -24,12 +25,14 @@
/**
* 鎶ヨ鏃堕棿
*/
+ @ApiModelProperty(value = "鎶ヨ鏃堕棿")
@TableField("alarm_time")
private String alarmTime;
/**
* 璋冨害鏃堕檺
*/
+ @ApiModelProperty(value = "璋冨害鏃堕檺")
@TableField("limit_time")
private String limitTime;
@@ -39,6 +42,13 @@
@ApiModelProperty(value = "鎵�灞炵ぞ鍖�")
@NotNull(message = "涓嶅厑璁告墍灞炵ぞ鍖轰负绌�")
private Integer communityId;
+
+ /**
+ * 鎵�灞炶閬�
+ */
+ @ApiModelProperty(value = "鎵�灞炶閬�")
+ @NotNull(message = "涓嶅厑璁告墍灞炶閬撲负绌�")
+ private Integer streetId;
/**
@@ -65,22 +75,22 @@
/**
* 褰撲簨浜鸿仈绯荤數璇�
*/
- @ApiModelProperty(value = "浜嬪彂鍦扮偣")
- @NotBlank(message = "涓嶅厑璁镐簨鍙戝湴鐐逛负绌�")
+ @ApiModelProperty(value = "褰撲簨浜鸿仈绯荤數璇�")
+ @NotBlank(message = "涓嶅厑璁稿綋浜嬩汉鑱旂郴鐢佃瘽")
private String partyPhone;
/**
* 韬唤璇佹闈�
*/
@ApiModelProperty(value = "韬唤璇佹闈�")
- @NotBlank(message = "涓嶅厑璁歌韩浠借瘉姝i潰涓虹┖")
+ // @NotBlank(message = "涓嶅厑璁歌韩浠借瘉姝i潰涓虹┖")
private String positive;
/**
* 韬唤璇佸弽闈�
*/
@ApiModelProperty(value = "韬唤璇佸弽闈�")
- @NotBlank(message = "涓嶅厑璁歌韩浠借瘉鍙嶉潰涓虹┖")
+ // @NotBlank(message = "涓嶅厑璁歌韩浠借瘉鍙嶉潰涓虹┖")
private String negative;
/**
@@ -124,4 +134,11 @@
@ApiModelProperty(value = "杩濆缓鏉愭枡")
@NotBlank(message = "涓嶅厑璁歌繚寤烘潗鏂欎负绌�")
private String materials;
+
+
+ @ApiModelProperty(value = "鍥剧墖")
+ private List<String> imageUrls;
+
+ @ApiModelProperty(value = "瑙嗛")
+ private List<String> videoUrls;
}
diff --git a/ycl-platform/src/main/java/com/ycl/dto/casePool/ViolationParam.java b/ycl-platform/src/main/java/com/ycl/dto/casePool/ViolationParam.java
index db538f0..949eaae 100644
--- a/ycl-platform/src/main/java/com/ycl/dto/casePool/ViolationParam.java
+++ b/ycl-platform/src/main/java/com/ycl/dto/casePool/ViolationParam.java
@@ -8,6 +8,7 @@
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
+import java.util.List;
@Data
@ApiModel(value = "娣诲姞杩濊妗堜欢")
@@ -27,12 +28,14 @@
/**
* 鎶ヨ鏃堕棿
*/
+ @ApiModelProperty(value = "鎶ヨ鏃堕棿")
@TableField("alarm_time")
private String alarmTime;
/**
* 璋冨害鏃堕檺
*/
+ @ApiModelProperty(value = "璋冨害鏃堕檺")
@TableField("limit_time")
private String limitTime;
@@ -123,11 +126,9 @@
@ApiModelProperty(value = "韬唤璇佸彿鐮�")
private String informantIdCard;
-
@ApiModelProperty(value = "鍥剧墖")
- private String pic;
-
+ private List<String> imageUrls;
@ApiModelProperty(value = "瑙嗛")
- private String media;
+ private List<String> videoUrls;
}
diff --git a/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java b/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java
index 18a22b4..fe4001a 100644
--- a/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java
+++ b/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCase.java
@@ -184,6 +184,14 @@
@ApiModelProperty(value = "甯傚钩鍙扮紪鐮�")
private String taskCode;
+
+ /**
+ * 甯傚钩鍙扮紪鐮�
+ */
+ @TableField("pic")
+ @ApiModelProperty(value = "妗堜欢涓婃姤鍥剧墖")
+ private String url;
+
/**
* 缁撴潫鏃堕棿
*/
diff --git a/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCaseDetail.java b/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCaseDetail.java
index 53c07ac..3c90cc1 100644
--- a/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCaseDetail.java
+++ b/ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCaseDetail.java
@@ -3,6 +3,7 @@
import com.ycl.vo.casePool.CurrentSitVo;
import com.ycl.vo.casePool.FilesPictureVo;
import com.ycl.vo.casePool.HandlePassVo;
+import com.ycl.vo.casePool.ProblemProVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/ycl-platform/src/main/java/com/ycl/entity/caseHandler/DispatchInfo.java b/ycl-platform/src/main/java/com/ycl/entity/caseHandler/DispatchInfo.java
index bc3a179..de1900b 100644
--- a/ycl-platform/src/main/java/com/ycl/entity/caseHandler/DispatchInfo.java
+++ b/ycl-platform/src/main/java/com/ycl/entity/caseHandler/DispatchInfo.java
@@ -10,6 +10,7 @@
import lombok.EqualsAndHashCode;
import java.io.Serializable;
+import java.time.LocalDateTime;
import java.util.Date;
/**
@@ -82,6 +83,13 @@
@TableField("dispose_date")
@ApiModelProperty(value = "璋冨害闄愭椂")
private Date disposeDate;
+
+ /**
+ * 闄愬埗鏃堕檺
+ */
+ @TableField("limit_time")
+ @ApiModelProperty(value = "璋冨害鏃堕檺")
+ private LocalDateTime limitTime;
/**
* 娲鹃仯鎰忚
*/
diff --git a/ycl-platform/src/main/java/com/ycl/entity/cockpitManage/TeamIndex.java b/ycl-platform/src/main/java/com/ycl/entity/cockpitManage/TeamIndex.java
index 0f3b569..9f15fc2 100644
--- a/ycl-platform/src/main/java/com/ycl/entity/cockpitManage/TeamIndex.java
+++ b/ycl-platform/src/main/java/com/ycl/entity/cockpitManage/TeamIndex.java
@@ -22,6 +22,7 @@
*/
@Data
@EqualsAndHashCode(callSuper = false)
+@TableName("ums_team_construction")
public class TeamIndex extends TeamConstruction implements Serializable {
private Double stepTimely;
diff --git a/ycl-platform/src/main/java/com/ycl/entity/ding/BookRemark.java b/ycl-platform/src/main/java/com/ycl/entity/ding/BookRemark.java
new file mode 100644
index 0000000..886783b
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/entity/ding/BookRemark.java
@@ -0,0 +1,58 @@
+package com.ycl.entity.ding;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * 鍚庡彴鐢ㄦ埛琛�
+ */
+@Schema(description="鍚庡彴鐢ㄦ埛琛�")
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(value = "ums_book_remark")
+public class BookRemark implements Serializable {
+ @TableId(value = "id", type = IdType.INPUT)
+ @Schema(description="")
+ private Long id;
+
+ /**
+ * 鐢ㄦ埛id
+ */
+ @TableField(value = "user_id")
+ @Schema(description="鐢ㄦ埛id")
+ private Long userId;
+
+ /**
+ * 澶囨敞浜篿d
+ */
+ @TableField(value = "remark_user_id")
+ @Schema(description="澶囨敞浜篿d")
+ private Long remarkUserId;
+
+ /**
+ * 澶囨敞鍐呭
+ */
+ @TableField(value = "remark")
+ @Schema(description="澶囨敞鍐呭")
+ private String remark;
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String COL_ID = "id";
+
+ public static final String COL_USER_ID = "user_id";
+
+ public static final String COL_REMARK_USER_ID = "remark_user_id";
+
+ public static final String COL_REMARK = "remark";
+}
\ No newline at end of file
diff --git a/ycl-platform/src/main/java/com/ycl/entity/dingding/DingUserInfo.java b/ycl-platform/src/main/java/com/ycl/entity/dingding/DingUserInfo.java
new file mode 100644
index 0000000..3f30892
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/entity/dingding/DingUserInfo.java
@@ -0,0 +1,111 @@
+package com.ycl.entity.dingding;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>閽夐拤鐢ㄦ埛淇℃伅</p>
+ *
+ * @author: cjx
+ * @Date: 2021/8/19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DingUserInfo implements Serializable {
+ /**
+ * 璐﹀彿鍚�
+ */
+ private String account;
+ /**
+ * 璐﹀彿ID
+ */
+ private Long userId;
+
+ private Long accountId;
+ /**
+ * 搴旂敤鍚�
+ */
+ private String clientId;
+ /**
+ * 绉熸埛涓嬩汉鍛樼紪鐮�
+ */
+ private String employeeCode;
+ /**
+ * 濮撳悕
+ */
+ private String employeeName;
+
+ /**
+ * 澶村儚
+ */
+ private String govEmpAvatar;
+
+ /**
+ * 浜哄憳鎬у埆 Code
+ */
+ private Integer empGender;
+ /**
+ * 璐﹀彿绫诲瀷
+ */
+ private String namespace;
+ /**
+ * 鏄电О
+ */
+ private String nickNameCn;
+ /**
+ * 绉熸埛id
+ */
+ private Long realmId;
+ /**
+ * 绉熸埛鍚嶇О
+ */
+ private String realmName;
+ /**
+ * 绉熸埛+鐢ㄦ埛鍞�旀爣璇�
+ */
+ private String tenantUserId;
+ /**
+ * 搴旂敤+鐢ㄦ埛鍞�旀爣璇�
+ */
+ private String openid;
+
+ /**
+ * 鏀挎不闈㈣矊
+ */
+ private String empPoliticalStatusCode;
+ /**
+ * 鑱岀骇
+ */
+ private String empJobLevelCode;
+ /**
+ * 浜哄憳缂栧埗Code
+ */
+ private String empBudgetedPostCode;
+
+ /**
+ * 缁勭粐id
+ */
+ private Long orgId;
+ /**
+ * 缁勭粐鍚嶇О
+ */
+ private String orgName;
+
+ /**
+ * 闄勫睘鏈烘瀯id鍜岄檮灞炶亴浣峣d闆嗗悎
+ */
+// private List<Dict> extIds;
+
+ /**
+ * 鑱屼綅id闆嗗悎
+ */
+ private List<Long> posIdList;
+
+ /**
+ * 瑙掕壊code闆嗗悎
+ */
+ private List<String> roleCodeList;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java
index a5d9330..4b64c17 100644
--- a/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java
+++ b/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java
@@ -14,6 +14,7 @@
import com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO;
import org.apache.ibatis.annotations.Param;
+import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@@ -32,7 +33,7 @@
BaseCase selectCondMap(Map map);
- Page<BaseCase> selectBaseCasePage(Page<BaseCase> page, @Param("code") String number, @Param("streetId") Integer streetId, @Param("categories") Integer categories, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("site") String site);
+ Page<BaseCase> selectBaseCasePage(Page<BaseCase> page, @Param("code") String number, @Param("communityId") Integer communityId, @Param("categories") Integer categories, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime, @Param("site") String site, @Param("state") Integer state, @Param("streetId")Integer streetId);
Page<QueryForViolationVO> selectViolationPage(Page<QueryForViolationVO> setCurrent, @Param(value = "queryForViolationParam") QueryForViolationParam queryForViolationParam);
diff --git a/ycl-platform/src/main/java/com/ycl/mapper/ding/BookRemarkMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/ding/BookRemarkMapper.java
new file mode 100644
index 0000000..5be3146
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/mapper/ding/BookRemarkMapper.java
@@ -0,0 +1,19 @@
+package com.ycl.mapper.ding;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.entity.ding.BookRemark;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BookRemarkMapper extends BaseMapper<BookRemark> {
+ List<BookRemark> getAllByUserId(Long userId);
+
+ int updateRemark(@Param("remark") String remark, @Param("id") Long id);
+
+ BookRemark findByUserIdAndRemarkUserId(@Param("userId") Long userId, @Param("remarkUserId") Long remarkUserId);
+
+
+}
\ No newline at end of file
diff --git a/ycl-platform/src/main/java/com/ycl/service/auth/AuthService.java b/ycl-platform/src/main/java/com/ycl/service/auth/AuthService.java
new file mode 100644
index 0000000..74ed2e1
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/auth/AuthService.java
@@ -0,0 +1,12 @@
+package com.ycl.service.auth;
+
+import com.ycl.entity.dingding.DingUserInfo;
+
+public interface AuthService {
+ /**
+ * 閽夐拤鐧诲綍
+ * @param dingUser
+ * @return
+ */
+ String dingLogin(DingUserInfo dingUser);
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/auth/impl/AuthService.java b/ycl-platform/src/main/java/com/ycl/service/auth/impl/AuthService.java
new file mode 100644
index 0000000..811aebb
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/auth/impl/AuthService.java
@@ -0,0 +1,90 @@
+package com.ycl.service.auth.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.ycl.common.dingding.DingCommon;
+import com.ycl.entity.depart.UmsDepart;
+import com.ycl.entity.dingding.DingUserInfo;
+import com.ycl.entity.user.UmsAdmin;
+import com.ycl.entity.user.UmsDepartManage;
+import com.ycl.exception.ApiException;
+import com.ycl.service.depart.UmsDepartService;
+import com.ycl.service.user.UmsAdminService;
+import com.ycl.service.user.UmsDepartManageService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Objects;
+
+@Slf4j
+@Service
+public class AuthService implements com.ycl.service.auth.AuthService {
+
+ @Autowired
+ private UmsAdminService adminService;
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+ @Autowired
+ private UmsDepartService departService;
+ @Autowired
+ private DingCommon dingCommon;
+ @Autowired
+ private UmsDepartManageService departManageService;
+
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public String dingLogin(DingUserInfo dingUserInfo) {
+ String openid = dingUserInfo.getOpenid(); //openid
+ UmsAdmin dingUser = adminService.getByOpenid(openid); //鏍规嵁openid鏌ヨ
+ UmsAdmin byId = adminService.getById(dingUserInfo.getUserId());
+ String token = null;
+ if (ObjectUtil.isNotEmpty(dingUser)) { //閽夐拤宸茬粦瀹�
+ token = adminService.getOAuthToken(dingUser.getUsername()); //璋冪敤绯荤粺鐧诲綍鎺ュ彛
+ } else if (Objects.nonNull(byId)) {
+ byId.setOpenid(openid);
+ adminService.updateById(byId);
+ token = adminService.getOAuthToken(byId.getUsername()); //璋冪敤绯荤粺鐧诲綍鎺ュ彛
+ } else { //閽夐拤鏈粦瀹�
+ //鎸夌収id鏌ヨ
+ UmsAdmin userParam = new UmsAdmin();
+ userParam.setId(dingUserInfo.getUserId());
+ userParam.setNickName(dingUserInfo.getNickNameCn()); //鏄电О
+ userParam.setUsername(dingUserInfo.getEmployeeName()); //濮撳悕
+ userParam.setSex(dingUserInfo.getEmpGender().byteValue()); //鎬у埆
+ userParam.setOpenid(openid); //openid
+ userParam.setIsDy(Byte.parseByte("0"));
+ userParam.setMobile("");
+ String encodePassword = passwordEncoder.encode("123456");
+ userParam.setPassword(encodePassword); //瀵嗙爜
+ userParam.setStatus(1); //鐘舵��
+ adminService.save(userParam);
+ dingCommon.getEmpInfoByCode(dingUserInfo.getEmployeeCode());
+ //鏌ヨ閮ㄩ棬鏄惁瀛樺湪锛�
+ UmsDepart depart = departService.getById(dingUserInfo.getOrgId());
+ //鍛樺伐淇℃伅锛屽叧鑱旂粍缁�
+ if (Objects.nonNull(depart)) {
+ UmsDepartManage departManage = new UmsDepartManage();
+ departManage.setDepartId(depart.getId());
+ departManage.setUserId(dingUserInfo.getUserId());
+ departManage.setIsLeader(0);
+ departManageService.save(departManage);
+ }
+ //鏍规嵁openid鏌ヨ
+ dingUser = adminService.getByOpenid(openid);
+ if (ObjectUtil.isEmpty(dingUser)) {
+ log.info("銆恆uth鐢ㄦ埛璁よ瘉锛氥�慱AUTH_DING_USER_" + JSONObject.toJSONString(userParam));
+ throw new ApiException("auth鐢ㄦ埛璁よ瘉澶辫触");
+ }
+ token = null;
+ //閽夐拤宸茬粦瀹�
+ if (ObjectUtil.isNotEmpty(dingUser)) {
+ token = adminService.getOAuthToken(dingUser.getUsername()); //璋冪敤绯荤粺鐧诲綍鎺ュ彛
+ }
+ }
+ return token;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
index 36dc778..6288ec9 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
@@ -63,7 +63,8 @@
void endCase(Long caseId, String result, String opinion);
- Page<BaseCase> selectPage(Page<BaseCase> setSize, String number, Integer streetId, Integer categories, String startTime, String endTime, String site);
+ Page<BaseCase> selectPage(Page<BaseCase> setSize, String number, Integer communityId, Integer categories, String startTime, String endTime, String site, Integer state, Integer streetId, Integer time);
+
Page<QueryForViolationVO> selectViolation(QueryForViolationParam queryForViolationParam);
@@ -90,4 +91,4 @@
List<DelayVO> selectDelayList();
Map<String, Object> statistics();
-}
\ No newline at end of file
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
index 64011a0..684cf46 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
@@ -1,5 +1,6 @@
package com.ycl.service.caseHandler.impl;
+import cn.hutool.core.collection.CollUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -32,6 +33,7 @@
import com.ycl.service.caseHandler.IBaseCaseService;
import com.ycl.service.caseHandler.IDispatchHandleService;
import com.ycl.service.caseHandler.IViolationsService;
+import com.ycl.service.resources.IImageResourcesService;
import com.ycl.service.video.IVideoAlarmReportService;
import com.ycl.vo.casePool.*;
import com.ycl.vo.cockpit.enforcementEvents.DelayVO;
@@ -50,10 +52,8 @@
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* <p>
@@ -126,7 +126,8 @@
@Resource
IBaseCaseService baseCaseService;
-
+ @Autowired
+ IImageResourcesService imageResourcesService;
@Override
public String uploadEvent(Long caseId) {
@@ -397,11 +398,39 @@
disposeRecordMapper.update(disposeRecord, updateWrapper);
}
+
@Override
- public Page<BaseCase> selectPage(Page<BaseCase> page, String number, Integer streetId, Integer categories, String startTime, String endTime, String site) {
- return baseCaseMapper.selectBaseCasePage(page, number, streetId, categories, startTime, endTime, site);
+ public Page<BaseCase> selectPage(Page<BaseCase> page, String number, Integer communityId, Integer categories, String startTime, String endTime, String site, Integer state, Integer streetId, Integer time) {
+ LocalDateTime start = null;
+ LocalDateTime end = null;
+ LocalDateTime now = LocalDateTime.now();
+ if (Objects.nonNull(time) && time == 0) {
+ end = now;
+ start = now.plusWeeks(1);
+
+ }
+ if (Objects.nonNull(time) && time == 1) {
+ end = now;
+ start = now.plusMonths(1);
+
+ }
+ if (Objects.nonNull(time) && time == 2) {
+ end = now;
+ start = now.plusMonths(3);
+ }
+ Page<BaseCase> baseCasePage = baseCaseMapper.selectBaseCasePage(page, number, communityId, categories, start, end, site, state, streetId);
+ if (Objects.isNull(baseCasePage) && CollUtil.isNotEmpty(baseCasePage.getRecords())) {
+ List<BaseCase> records = baseCasePage.getRecords();
+ Set<Long> caseIds = records.stream().map(BaseCase::getId).collect(Collectors.toSet());
+ Map<Long, String> urlMap = imageResourcesService.getUrlMap(caseIds, "01");
+ records.stream().forEach(item -> {
+ item.setUrl(urlMap.get(item.getId()));
+ });
+ }
+ return baseCasePage;
}
+
@Override
public Page<QueryForViolationVO> selectViolation(QueryForViolationParam queryForViolationParam) {
return baseCaseMapper.selectViolationPage(
diff --git a/ycl-platform/src/main/java/com/ycl/service/ding/BookRemarkService.java b/ycl-platform/src/main/java/com/ycl/service/ding/BookRemarkService.java
new file mode 100644
index 0000000..0a0370e
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/ding/BookRemarkService.java
@@ -0,0 +1,26 @@
+package com.ycl.service.ding;
+
+import com.ycl.bo.AdminUserDetails;
+import com.ycl.entity.ding.BookRemark;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+public interface BookRemarkService extends IService<BookRemark>{
+
+ /**
+ * 淇敼澶囨敞
+ * @param user
+ * @param userId
+ * @param remark
+ * @return
+ */
+ Boolean updateRemark(AdminUserDetails user, Long userId, String remark);
+
+ /**
+ * 鏌ヨ鐢ㄦ埛鎵�鏈夎仈绯诲娉�
+ * @param userId
+ * @return
+ */
+ Map<Long,String> findByUserId(Long userId);
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/ding/DingService.java b/ycl-platform/src/main/java/com/ycl/service/ding/DingService.java
new file mode 100644
index 0000000..68fc818
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/ding/DingService.java
@@ -0,0 +1,20 @@
+package com.ycl.service.ding;
+
+import com.ycl.vo.AddressBookVO;
+import com.ycl.vo.NewAddressBookVO;
+
+import java.util.List;
+
+public interface DingService {
+
+ /**
+ * 鏌ヨ閫氳褰�
+ *
+ * @return
+ */
+ List<AddressBookVO> getAddressBook(Long userId);
+
+ List<AddressBookVO> getAddressBookByParentId(Long id, Long userId);
+
+ NewAddressBookVO getAddressBookById(Long id, Long userId);
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/ding/impl/BookRemarkServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/ding/impl/BookRemarkServiceImpl.java
new file mode 100644
index 0000000..65fa6c1
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/ding/impl/BookRemarkServiceImpl.java
@@ -0,0 +1,47 @@
+package com.ycl.service.ding.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.ycl.bo.AdminUserDetails;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.entity.ding.BookRemark;
+import com.ycl.mapper.ding.BookRemarkMapper;
+import com.ycl.service.ding.BookRemarkService;
+
+@Service
+public class BookRemarkServiceImpl extends ServiceImpl<BookRemarkMapper, BookRemark> implements BookRemarkService {
+
+
+ @Override
+ public Boolean updateRemark(AdminUserDetails user, Long userId, String remark) {
+ //瀛樺湪淇敼 娌℃湁 灏变繚瀛�
+ BookRemark bookRemark = baseMapper.findByUserIdAndRemarkUserId(user.getUserId(), userId);
+ if (Objects.nonNull(bookRemark)) {
+ return baseMapper.updateRemark(remark, bookRemark.getId()) > 0;
+
+ }
+ BookRemark remark1 = new BookRemark();
+ remark1.setRemark(remark);
+ remark1.setRemarkUserId(userId);
+ remark1.setUserId(user.getUserId());
+ return save(remark1);
+ }
+
+
+ @Override
+ public Map<Long, String> findByUserId(Long userId) {
+ List<BookRemark> list = baseMapper.getAllByUserId(userId);
+ if (CollUtil.isEmpty(list)) {
+ return new HashMap<>();
+ }
+ return list.stream().collect(Collectors.toMap(BookRemark::getRemarkUserId, BookRemark::getRemark));
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/ding/impl/DingServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/ding/impl/DingServiceImpl.java
new file mode 100644
index 0000000..b9c2eed
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/ding/impl/DingServiceImpl.java
@@ -0,0 +1,199 @@
+package com.ycl.service.ding.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ycl.entity.depart.UmsDepart;
+import com.ycl.entity.user.UmsAdmin;
+import com.ycl.entity.user.UmsAdminRoleRelation;
+import com.ycl.entity.user.UmsRole;
+import com.ycl.service.depart.IDepartManagerService;
+import com.ycl.service.depart.UmsDepartService;
+import com.ycl.service.ding.BookRemarkService;
+import com.ycl.service.ding.DingService;
+import com.ycl.service.user.UmsAdminRoleRelationService;
+import com.ycl.service.user.UmsAdminService;
+import com.ycl.service.user.UmsRoleService;
+import com.ycl.vo.AddressBookVO;
+import com.ycl.vo.ContactVO;
+import com.ycl.vo.NewAddressBookVO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Service
+@Slf4j
+public class DingServiceImpl implements DingService {
+
+ @Autowired
+ private UmsDepartService departService;
+ @Autowired
+ private IDepartManagerService departManagerService;
+
+ @Autowired
+ private UmsAdminService umsAdminService;
+
+ @Autowired
+ private UmsRoleService umsRoleService;
+
+ @Autowired
+ private UmsAdminRoleRelationService umsAdminRoleRelationService;
+
+ @Autowired
+ private BookRemarkService bookRemarkService;
+
+ @Override
+ public List<AddressBookVO> getAddressBook(Long userId) {
+ List<UmsAdmin> users = umsAdminService.list();
+ Map<Long, UmsAdmin> userMap = users.stream().collect(Collectors.toMap(UmsAdmin::getId, Function.identity()));
+ List<AddressBookVO> addressBookVOS = new ArrayList<>();
+
+ List<UmsDepart> list = departService.list(new QueryWrapper<UmsDepart>().lambda().eq(UmsDepart::getStatus, 1).eq(UmsDepart::getIsDeleted, 0));
+ //鏌ヨ澶囨敞淇℃伅
+ Map<Long, String> remarkMap = bookRemarkService.findByUserId(userId);
+ list.forEach(item -> {
+ //鏋勫缓閮ㄩ棬淇℃伅
+ extracted(userMap, addressBookVOS, item, remarkMap);
+ });
+ log.info(JSON.toJSONString(addressBookVOS));
+
+ return buildTreeUseStream(addressBookVOS, 0);
+ }
+
+ @Override
+ public List<AddressBookVO> getAddressBookByParentId(Long id, Long userId) {
+ List<UmsAdmin> users = umsAdminService.list();
+ Map<Long, UmsAdmin> userMap = users.stream().collect(Collectors.toMap(UmsAdmin::getId, Function.identity()));
+ List<AddressBookVO> addressBookVOS = new ArrayList<>();
+
+ List<UmsDepart> list = departService.list(new QueryWrapper<UmsDepart>().lambda().eq(UmsDepart::getStatus, 1).eq(UmsDepart::getParentId, id).eq(UmsDepart::getIsDeleted, 0));
+ //鏌ヨ澶囨敞淇℃伅
+ Map<Long, String> remarkMap = bookRemarkService.findByUserId(userId);
+ list.forEach(item -> {
+ //鏋勫缓閮ㄩ棬淇℃伅
+ extracted(userMap, addressBookVOS, item, remarkMap);
+ });
+ log.info(JSON.toJSONString(addressBookVOS));
+
+ return addressBookVOS;
+ }
+
+ @Override
+ public NewAddressBookVO getAddressBookById(Long id, Long userId) {
+ List<UmsAdmin> users = umsAdminService.list();
+ Map<Long, UmsAdmin> userMap = users.stream().collect(Collectors.toMap(UmsAdmin::getId, Function.identity()));
+ NewAddressBookVO newAddressBookVO = new NewAddressBookVO();
+ List<UmsDepart> departs = departService.list(new QueryWrapper<UmsDepart>().lambda().eq(UmsDepart::getStatus, 1).eq(UmsDepart::getParentId, id).eq(UmsDepart::getIsDeleted, 0));
+ Set<Long> deptIds = departs.stream().map(UmsDepart::getParentId).collect(Collectors.toSet());
+ //閮ㄩ棬淇℃伅
+ newAddressBookVO.setDeparts(departs);
+ Map<Long, String> remarkMap = bookRemarkService.findByUserId(userId);
+ Collection<Long> userIds = departManagerService.getByDeptId(id);
+ ArrayList<ContactVO> contacts = new ArrayList<>();
+ //瑙掕壊淇℃伅
+ List<UmsAdminRoleRelation> list = umsAdminRoleRelationService.list();
+ Map<Long, List<UmsAdminRoleRelation>> rolesMap = list.stream().collect(Collectors.groupingBy(UmsAdminRoleRelation::getAdminId));
+ Map<Long, String> roleName = umsRoleService.list().stream().filter(o -> o.getStatus() == 1).collect(Collectors.toMap(UmsRole::getId, UmsRole::getName));
+ //鏋勫缓鐢ㄦ埛淇℃伅
+ if (CollUtil.isNotEmpty(userIds)) {
+ userIds.forEach(u -> {
+ UmsAdmin admin = userMap.get(u);
+ if (Objects.nonNull(admin)) {
+ ContactVO contactVO = new ContactVO();
+ contactVO.setUserId(admin.getId());
+ contactVO.setSex(admin.getSex());
+ contactVO.setUsername(admin.getUsername());
+ contactVO.setNickName(admin.getNickName());
+ contactVO.setIcon(admin.getIcon());
+ contactVO.setMobile(admin.getMobile());
+ contactVO.setRemark(remarkMap.get(admin.getId()));
+ //娣诲姞鐢ㄦ埛瑙掕壊淇℃伅
+ List<UmsAdminRoleRelation> roleRelations = rolesMap.get(admin.getId());
+ if (CollUtil.isNotEmpty(roleRelations)) {
+ ArrayList<String> roles = new ArrayList<>();
+ Set<Long> roleId = roleRelations.stream().map(UmsAdminRoleRelation::getRoleId).collect(Collectors.toSet());
+ for (Long o : roleId) {
+ String s = roleName.get(o);
+ if (StringUtils.isNotBlank(s)) {
+ roles.add(s);
+ }
+ }
+ contactVO.setRoles(roles);
+ }
+ contacts.add(contactVO);
+ }
+ });
+ newAddressBookVO.setContacts(contacts);
+ }
+ return newAddressBookVO;
+ }
+
+ // 浣跨敤stream娴佽浆鎹�
+ public static List<AddressBookVO> buildTreeUseStream(List<AddressBookVO> treeList, long id) {
+ List<AddressBookVO> list = treeList.stream()
+ //杩囨护鐖惰妭鐐逛笌浼犻�掔殑id鐩稿悓鐨凾reeNode瀵硅薄
+ .filter(treeNode -> treeNode.getParentId() == id)
+ .map(treeNode -> {
+ //閫掑綊璁剧疆瀛╁瓙鑺傜偣
+ treeNode.setChildren(buildTreeUseStream(treeList, treeNode.getDeptId()));
+ return treeNode;
+ })
+ .collect(Collectors.toList());
+ return list;
+ }
+
+
+ private void extracted(Map<Long, UmsAdmin> userMap, List<AddressBookVO> addressBookVOS, UmsDepart depart, Map<Long, String> remarkMap) {
+
+
+ AddressBookVO books = new AddressBookVO();
+ books.setDeptId(depart.getId());
+ books.setParentId(depart.getParentId());
+ books.setDeptName(depart.getDepartName());
+ books.setDeptCode(depart.getCode());
+ ArrayList<ContactVO> contacts = new ArrayList<>();
+ Collection<Long> userIds = departManagerService.getByDeptId(depart.getId());
+ //瑙掕壊淇℃伅
+ List<UmsAdminRoleRelation> list = umsAdminRoleRelationService.list();
+ Map<Long, List<UmsAdminRoleRelation>> rolesMap = list.stream().collect(Collectors.groupingBy(UmsAdminRoleRelation::getAdminId));
+ Map<Long, String> roleName = umsRoleService.list().stream().filter(o -> o.getStatus() == 1).collect(Collectors.toMap(UmsRole::getId, UmsRole::getName));
+ //鏋勫缓鐢ㄦ埛淇℃伅
+ if (CollUtil.isNotEmpty(userIds)) {
+ userIds.forEach(u -> {
+ UmsAdmin admin = userMap.get(u);
+ if (Objects.nonNull(admin)) {
+ ContactVO contactVO = new ContactVO();
+ contactVO.setUserId(admin.getId());
+ contactVO.setSex(admin.getSex());
+ contactVO.setUsername(admin.getUsername());
+ contactVO.setNickName(admin.getNickName());
+ contactVO.setIcon(admin.getIcon());
+ contactVO.setMobile(admin.getMobile());
+ contactVO.setRemark(remarkMap.get(admin.getId()));
+ //娣诲姞鐢ㄦ埛瑙掕壊淇℃伅
+ List<UmsAdminRoleRelation> roleRelations = rolesMap.get(admin.getId());
+ if (CollUtil.isNotEmpty(roleRelations)) {
+ ArrayList<String> roles = new ArrayList<>();
+ Set<Long> roleId = roleRelations.stream().map(UmsAdminRoleRelation::getRoleId).collect(Collectors.toSet());
+ for (Long id : roleId) {
+ String s = roleName.get(id);
+ if (StringUtils.isNotBlank(s)) {
+ roles.add(s);
+ }
+ }
+ contactVO.setRoles(roles);
+ }
+ contacts.add(contactVO);
+ }
+ });
+ books.setContacts(contacts);
+ }
+ addressBookVOS.add(books);
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java b/ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java
index 2554885..3b21fe6 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/IMessageService.java
@@ -25,4 +25,6 @@
Boolean deleteMessages(List<Long> ids);
void sendMessageByPhone(Message message);
+
+ Page<Message> queryMyMessage(Page<Message> setSize, Long userId);
}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
index 6c5e7e1..3a3f391 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/impl/MessageServiceImpl.java
@@ -1,6 +1,8 @@
package com.ycl.service.message.impl;
+import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -254,6 +256,28 @@
}
@Override
+ public Page<Message> queryMyMessage(Page<Message> page, Long userId) {
+ List<Message> list = list();
+ ArrayList<Long> ids = new ArrayList<>();
+ list.forEach(item -> {
+ String targetTo = item.getTargetTo();
+ if (StringUtils.isNotBlank(targetTo)) {
+ String[] split = targetTo.split(",");
+ for (String s : split) {
+ if (userId.equals(Long.getLong(s))) {
+ ids.add(item.getId());
+ break;
+ }
+ }
+ }
+ });
+ if (CollUtil.isEmpty(ids)) {
+ return new Page<>();
+ }
+ return baseMapper.selectPage(page, new QueryWrapper<Message>().lambda().in(Message::getId, ids));
+ }
+
+ @Override
public Boolean deleteMessages(List<Long> ids) {
LambdaQueryWrapper<Message> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(Message::getId, ids).or().in(Message::getParentId, ids);
diff --git a/ycl-platform/src/main/java/com/ycl/service/resources/IImageResourcesService.java b/ycl-platform/src/main/java/com/ycl/service/resources/IImageResourcesService.java
index 50c8b58..02289a5 100644
--- a/ycl-platform/src/main/java/com/ycl/service/resources/IImageResourcesService.java
+++ b/ycl-platform/src/main/java/com/ycl/service/resources/IImageResourcesService.java
@@ -1,13 +1,17 @@
package com.ycl.service.resources;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.entity.resources.ImageResources;
import com.ycl.vo.resources.MediaVO;
+import java.util.Collection;
+import java.util.Map;
+
/**
* <p>
- * 鏈嶅姟绫�
+ * 鏈嶅姟绫�
* </p>
*
* @author lyq
@@ -16,4 +20,7 @@
public interface IImageResourcesService extends IService<ImageResources> {
Page<MediaVO> selectImages(String type, String startTime, String endTime, Long size, Long current);
+
+
+ Map<Long, String> getUrlMap(Collection<Long> ids, String type);
}
diff --git a/ycl-platform/src/main/java/com/ycl/service/resources/impl/ImageResourcesServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/resources/impl/ImageResourcesServiceImpl.java
index 663bacf..bdd3c93 100644
--- a/ycl-platform/src/main/java/com/ycl/service/resources/impl/ImageResourcesServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/resources/impl/ImageResourcesServiceImpl.java
@@ -1,6 +1,9 @@
package com.ycl.service.resources.impl;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.entity.resources.ImageResources;
@@ -10,6 +13,11 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* <p>
@@ -30,6 +38,18 @@
Page<MediaVO> imagesVOPage = new Page<>();
imagesVOPage.setCurrent(current);
imagesVOPage.setSize(size);
- return imageResourcesMapper.selectImagePage(imagesVOPage,type,startTime,endTime);
+ return imageResourcesMapper.selectImagePage(imagesVOPage, type, startTime, endTime);
}
+
+ @Override
+ public Map<Long, String> getUrlMap(Collection<Long> ids, String type) {
+ LambdaQueryWrapper<ImageResources> wrapper = new QueryWrapper<ImageResources>().lambda().in(ImageResources::getBelongToId, ids).eq(ImageResources::getType, type);
+ List<ImageResources> list = imageResourcesMapper.selectList(wrapper);
+ if (CollUtil.isEmpty(list)) {
+ return new HashMap<>();
+
+ }
+ return list.stream().collect(Collectors.toMap(ImageResources::getBelongToId, ImageResources::getUrl, (v1, v2) -> v1));
+ }
+
}
diff --git a/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java b/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java
new file mode 100644
index 0000000..b33b59d
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java
@@ -0,0 +1,106 @@
+package com.ycl.timer;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.xxpt.gateway.shared.client.http.ExecutableClient;
+import com.alibaba.xxpt.gateway.shared.client.http.GetClient;
+import com.alibaba.xxpt.gateway.shared.client.http.PostClient;
+import com.ycl.config.DingConfig;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.concurrent.TimeUnit;
+
+import static com.ycl.common.constant.DingConst.GET_TIKER;
+import static com.ycl.common.constant.DingConst.GET_TOKEN;
+
+/**
+ * 鑾峰彇閽夐拤 token
+ */
+@Slf4j
+@Component
+public class GetDingToken implements ApplicationListener<ContextRefreshedEvent> {
+ private static GetClient getTokenClient;
+ @Autowired
+ private StringRedisTemplate redisTemplate;
+
+ @Resource
+ private ExecutableClient executableClient;
+
+ @Resource
+ private DingConfig dingConfig;
+
+
+ private String getToken() {
+ //璋冪敤API
+ getTokenClient = executableClient.newGetClient(GET_TOKEN);
+ //璁剧疆鍙傛暟
+ getTokenClient.addParameter("appkey", dingConfig.getAppKey());
+ getTokenClient.addParameter("appsecret", dingConfig.getAppSecret());
+ String apiResult = getTokenClient.get();
+ return parsingResult(apiResult);
+ }
+
+ private String getTiker(String accToken) {
+ //璋冪敤API
+ PostClient postClient = executableClient.newPostClient(GET_TIKER);
+ //璁剧疆鍙傛暟
+ if (ObjectUtil.isNotNull(accToken)) {
+ postClient.addParameter("accessToken", accToken);
+ postClient.addParameter("appkey", dingConfig.getAppKey());
+ postClient.addParameter("appsecret", dingConfig.getAppSecret());
+ String apiResult = postClient.post();
+ return parsingResult(apiResult);
+ }
+ return null;
+ }
+
+ /**
+ * 瑙f瀽杩斿洖token
+ *
+ * @param apiResult
+ * @return
+ */
+ private static String parsingResult(String apiResult) {
+ if (ObjectUtil.isNotNull(apiResult)) {
+ JSONObject resJson = JSONObject.parseObject(apiResult);
+ if (resJson.getBoolean("success")) {
+ JSONObject content = resJson.getJSONObject("content");
+ if (content.getBoolean("success")) {
+ JSONObject dataObj = content.getJSONObject("data");
+ String accessToken = dataObj.getString("accessToken");
+ return accessToken;
+ }
+ } else {
+ log.error(resJson.toJSONString());
+ }
+ }
+ return null;
+ }
+
+
+ @Override
+ public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
+ if (contextRefreshedEvent.getApplicationContext().getParent() == null) {
+ runAction();
+ }
+ }
+ @Scheduled(cron ="0 0/2 * * * ? ")
+ public void runAction() {
+ // //gettoken
+ // String getToken = getToken();
+ // //jsApi
+ // String jsapiToken = getTiker(getToken);
+ // //瀛樺偍鍒皉edis
+ // JSONObject dingObj = new JSONObject();
+ // dingObj.put("token", getToken);
+ // dingObj.put("jsApiTiker", jsapiToken);
+ // redisTemplate.opsForValue().set("ding", dingObj.toJSONString(), 2L, TimeUnit.HOURS);
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java b/ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java
new file mode 100644
index 0000000..92d2be9
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java
@@ -0,0 +1,209 @@
+package com.ycl.timer;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.TimeInterval;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.common.dingding.DingCommon;
+import com.ycl.entity.depart.UmsDepart;
+import com.ycl.entity.dingding.DingUserInfo;
+import com.ycl.entity.user.UmsAdmin;
+import com.ycl.entity.user.UmsAdminRoleRelation;
+import com.ycl.entity.user.UmsDepartManage;
+import com.ycl.entity.user.UmsRole;
+import com.ycl.service.depart.UmsDepartService;
+import com.ycl.service.user.UmsAdminRoleRelationService;
+import com.ycl.service.user.UmsAdminService;
+import com.ycl.service.user.UmsDepartManageService;
+import com.ycl.service.user.UmsRoleService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+
+@Slf4j
+@Component
+public class GetDingUserOrgTimer implements ApplicationRunner, ApplicationListener<ContextRefreshedEvent> {
+
+ @Autowired
+ private DingCommon dingCommon;
+
+ private static final String TAG = "銆愭禉鏀块拤銆戠敤鎴蜂綋绯伙細";
+ protected Thread.UncaughtExceptionHandler handler = (t, e) -> log.error("ding token parse events has an error", e);
+
+
+ @Override
+ public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
+ // if (contextRefreshedEvent.getApplicationContext().getParent() == null) {
+ // Thread thread = new Thread(this::run);
+ // thread.setUncaughtExceptionHandler(handler);
+ // thread.start();
+ // }
+ }
+
+ @Autowired
+ private UmsDepartService umsDepartService;
+ @Autowired
+ private UmsAdminService umsAdminService;
+ @Autowired
+ private UmsDepartManageService departManageService;
+ @Autowired
+ private UmsRoleService roleService;
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+ @Autowired
+ private UmsAdminRoleRelationService umsAdminRoleRelationService;
+
+ // @Scheduled(cron = "0 0 00 * * ?")
+ @Transactional(rollbackFor = Exception.class)
+ public void run() {
+ //鑾峰彇鍏ㄩ儴閮ㄩ棬code
+ JSONObject topObj = dingCommon.getBookAuthority();
+ //椤剁骇閮ㄩ棬id
+ JSONArray deptTopArr = topObj.getJSONArray("deptVisibleScopes");
+ List<UmsDepart> dingOrgList = dingCommon.getOrgInfo(deptTopArr);
+ //鏌ヨ鏁版嵁搴撲腑鐨勯儴闂�
+ List<UmsDepart> dataOrgList = umsDepartService.list();
+ Iterator<UmsDepart> removeIterOrg = dingOrgList.iterator();
+ while (removeIterOrg.hasNext()) {
+ UmsDepart dingOrg = removeIterOrg.next();
+ if (dingOrg.getCode().equals(deptTopArr.getString(0))) {
+ dingOrg.setParentId(0L);
+ }
+ //鍒ゆ柇
+ for (UmsDepart org : dataOrgList) {
+ if (ObjectUtil.equals(org.getId(), dingOrg.getId()) && ObjectUtil.equals(org.getDepartName(), dingOrg.getDepartName()) && ObjectUtil.equals(org.getParentId(), dingOrg.getParentId())) {
+ removeIterOrg.remove();
+ }
+ }
+ }
+ //姝ゆ椂 dingOrgList 涓墿涓嬬殑灏辨槸鏂扮殑缁勭粐鏈烘瀯浜嗐��
+ dingOrgList.forEach(dingOrg -> {
+ if (dingOrg.getCode().equals(deptTopArr.getString(0))) {
+ dingOrg.setParentId(0L);
+ }
+ //umsDepartService.fillPids(dingOrg);
+ dingOrg.setStatus((short) 1);
+ umsDepartService.saveOrUpdate(dingOrg);
+ });
+
+ log.info(TAG + "update organization size " + dingOrgList.size());
+ TimeInterval timer = DateUtil.timer();
+ /**
+ // * 鏍规嵁缁勭粐code 鏌ヨ 閫氳褰曚汉鍛樹俊鎭�
+ // */
+ Set<DingUserInfo> dingList = dingCommon.getPersonInfoByOrgCode();
+ //鏌ヨ鎵�鏈夌敤鎴�
+ List<UmsAdmin> userList = umsAdminService.list();
+ //鏌ヨ鐢ㄦ埛缁勭粐鍏宠仈琛�
+ List<UmsDepartManage> empOrgList = departManageService.list();
+ Iterator<DingUserInfo> iterator = dingList.iterator();
+ while (iterator.hasNext()) {
+ DingUserInfo dingUserInfo = iterator.next();
+ //鍒ゆ柇鐢ㄦ埛鏄惁瀛樺湪锛岃緭鍑烘柊鐢ㄦ埛
+ for (UmsAdmin user : userList) {
+ //鍒ゆ柇濮撳悕
+ if (ObjectUtil.equals(user.getId(), dingUserInfo.getUserId()) ) {
+ iterator.remove();
+ //鍒ゆ柇缁勭粐
+// for (UmsDepartManage emp : empOrgList) {
+// if (ObjectUtil.equals(user.getId(), emp.getUserId()) && ObjectUtil.equals(dingUserInfo.getOrgId(), emp.getDepartId())) {
+// iterator.remove();
+// break;
+// }
+// }
+ }
+ }
+ }
+ ArrayList<UmsAdminRoleRelation> relations = new ArrayList<>();
+ log.info(TAG + " elapsed time:" + timer.interval());
+ for (DingUserInfo dingUserInfo : dingList) {
+ //1.娣诲姞鐢ㄦ埛
+ UmsAdmin user = new UmsAdmin();
+ //璐﹀彿
+ user.setUsername(dingUserInfo.getEmployeeName());
+ //鏄电О
+ if (StringUtils.isNotBlank(dingUserInfo.getNickNameCn())) {
+ user.setNickName(dingUserInfo.getNickNameCn());
+ } else {
+ user.setNickName(dingUserInfo.getEmployeeName());
+ }
+ //code
+ //澶村儚
+ user.setIcon(dingUserInfo.getGovEmpAvatar());
+ //濮撳悕
+ //鎬у埆
+ user.setSex(dingUserInfo.getEmpGender().byteValue());
+ //瀵嗙爜 鑾峰彇鍒濆瀵嗙爜
+ //灏嗗瘑鐮佽繘琛屽姞瀵嗘搷浣�
+ String encodePassword = passwordEncoder.encode("123456");
+ user.setPassword(encodePassword);
+ user.setIsDy(Byte.parseByte("0"));
+ user.setMobile("");
+ user.setOpenid(dingUserInfo.getOpenid());
+ //id
+ user.setId(dingUserInfo.getUserId());
+ //鐘舵�佷负鍋滅敤锛堜笉鍙敤鐘舵�侊級鐐瑰嚮鐧诲綍鍚庢墠鑳戒娇鐢�
+ user.setStatus(1);
+ umsAdminService.save(user);
+ //鍛樺伐淇℃伅锛屽叧鑱旂粍缁�
+ UmsDepartManage departManage = new UmsDepartManage();
+ departManage.setDepartId(dingUserInfo.getOrgId());
+ departManage.setIsLeader(0);
+ departManage.setUserId(dingUserInfo.getUserId());
+ departManageService.saveOrUpdate(departManage);
+ //瑙掕壊淇℃伅
+ List<String> roleCode = dingUserInfo.getRoleCodeList();
+ if (CollectionUtils.isNotEmpty(roleCode)) {
+ List<UmsRole> roleList = roleService.getRoleListByCodes(roleCode);
+ roleList.forEach(item -> {
+ UmsAdminRoleRelation relation = new UmsAdminRoleRelation();
+ relation.setAdminId(dingUserInfo.getUserId());
+ relation.setRoleId(item.getId());
+ relations.add(relation);
+ });
+ }
+ }
+ if (CollUtil.isNotEmpty(relations)) {
+ umsAdminRoleRelationService.saveBatch(relations, IService.DEFAULT_BATCH_SIZE);
+ }
+ log.info(TAG + "update user size " + dingList.size());
+// getEmployeeAvatar();
+ }
+
+ /**
+ * 鑾峰彇鐢ㄦ埛澶村儚
+ */
+ private void getEmployeeAvatar() {
+// List<SysUser> users = sysUserService.list();
+// for (SysUser user : users) {
+// String mediaId = user.getDingAvatar();
+// if (StrUtil.isNotBlank(mediaId)) {
+// dingCommon.downloadEmployeeAvatar(mediaId);
+// }
+// }
+ }
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ // run();
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java b/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java
index bd4f1df..37cc520 100644
--- a/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java
+++ b/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java
@@ -50,7 +50,7 @@
sb.append("&pageSize=");
sb.append(params.getPageSize());
}
- // result = MD5Util.md5Encrypt32Lower(sb.toString());
+ result = MD5Util.md5Encrypt32Lower(sb.toString());
// if (!params.getSign().equals(result)) {
// throw new ApiException(ResultCode.SIGN_ERROR);
// }
diff --git a/ycl-platform/src/main/java/com/ycl/vo/AddressBookVO.java b/ycl-platform/src/main/java/com/ycl/vo/AddressBookVO.java
new file mode 100644
index 0000000..0eadeed
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/vo/AddressBookVO.java
@@ -0,0 +1,27 @@
+package com.ycl.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("閫氳褰�")
+public class AddressBookVO {
+
+
+ @ApiModelProperty("鐖剁骇id,榛樿0")
+ private Long parentId;
+ @ApiModelProperty("閮ㄩ棬id")
+ private Long deptId;
+ @ApiModelProperty("閮ㄩ棬code")
+ private String deptCode;
+ @ApiModelProperty("閮ㄩ棬鍚嶇О")
+ private String deptName;
+ @ApiModelProperty("閮ㄩ棬涓嬭仈绯讳汉")
+ private List<ContactVO> contacts;
+ @ApiModelProperty("瀛愰泦")
+ private List<AddressBookVO> children;
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/vo/ContactVO.java b/ycl-platform/src/main/java/com/ycl/vo/ContactVO.java
new file mode 100644
index 0000000..deb282e
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/vo/ContactVO.java
@@ -0,0 +1,37 @@
+package com.ycl.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("鑱旂郴浜�")
+public class ContactVO {
+ @ApiModelProperty(value = "userId")
+ private Long userId;
+
+ @ApiModelProperty(value = "鐢ㄦ埛濮撳悕")
+ private String username;
+
+ @ApiModelProperty(value = "澶村儚")
+ private String icon;
+
+ @ApiModelProperty(value = "鐪熷疄濮撳悕")
+ private String nickName;
+
+
+ @ApiModelProperty(value = "鎬у埆")
+ private Byte sex;
+
+ @ApiModelProperty(value = "鎵嬫満鍙风爜")
+ private String mobile;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "瑙掕壊鍒楄〃")
+ private List<String> roles;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/vo/NewAddressBookVO.java b/ycl-platform/src/main/java/com/ycl/vo/NewAddressBookVO.java
new file mode 100644
index 0000000..c4e7225
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/vo/NewAddressBookVO.java
@@ -0,0 +1,19 @@
+package com.ycl.vo;
+
+import com.ycl.entity.depart.UmsDepart;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("閫氳褰�")
+public class NewAddressBookVO {
+
+ @ApiModelProperty("閮ㄩ棬")
+ private List<UmsDepart> departs;
+ @ApiModelProperty("閮ㄩ棬涓嬭仈绯讳汉")
+ private List<ContactVO> contacts;
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/vo/casePool/ViolationsVO.java b/ycl-platform/src/main/java/com/ycl/vo/casePool/ViolationsVO.java
index a519604..3ad1d4c 100644
--- a/ycl-platform/src/main/java/com/ycl/vo/casePool/ViolationsVO.java
+++ b/ycl-platform/src/main/java/com/ycl/vo/casePool/ViolationsVO.java
@@ -117,6 +117,14 @@
@ApiModelProperty(value = "瑙嗛鐐逛綅")
private Integer videoPointId;
+
+ /**
+ * 璋冨害鏃堕檺
+ */
+ @ApiModelProperty(value = "璋冨害鏃堕檺")
+ @TableField("limit_time")
+ private String limitTime;
+
/**
* 澶х被鏂囨湰
*/
diff --git a/ycl-platform/src/main/resources/mapper/BookRemarkMapper.xml b/ycl-platform/src/main/resources/mapper/BookRemarkMapper.xml
new file mode 100644
index 0000000..95ffec3
--- /dev/null
+++ b/ycl-platform/src/main/resources/mapper/BookRemarkMapper.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ycl.mapper.ding.BookRemarkMapper">
+ <resultMap id="BaseResultMap" type="com.ycl.entity.ding.BookRemark">
+ <!--@mbg.generated-->
+ <!--@Table ums_book_remark-->
+ <id column="id" jdbcType="BIGINT" property="id"/>
+ <result column="user_id" jdbcType="BIGINT" property="userId"/>
+ <result column="remark_user_id" jdbcType="BIGINT" property="remarkUserId"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ </resultMap>
+ <sql id="Base_Column_List">
+ <!--@mbg.generated-->
+ id,
+ user_id,
+ remark_user_id,
+ remark
+ </sql>
+ <!--auto generated by MybatisCodeHelper on 2023-06-09-->
+ <update id="updateRemark">
+ update ums_book_remark
+ <set>
+ <if test="remark != null">
+ remark= #{remark,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=BIGINT}
+ </update>
+
+ <!--auto generated by MybatisCodeHelper on 2023-06-09-->
+ <select id="getAllByUserId" resultType="com.ycl.entity.ding.BookRemark">
+ select
+ <include refid="Base_Column_List"/>
+ from ums_book_remark
+ where user_id = #{userid,jdbcType=BIGINT}
+ </select>
+
+ <!--auto generated by MybatisCodeHelper on 2023-06-09-->
+ <select id="findByUserIdAndRemarkUserId" resultType="com.ycl.entity.ding.BookRemark">
+ select
+ <include refid="Base_Column_List"/>
+ from ums_book_remark
+ where user_id = #{userId,jdbcType=BIGINT}
+ and remark_user_id = #{remarkUserId,jdbcType=BIGINT}
+ limit 1
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
index 664393c..ed746d4 100644
--- a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
+++ b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
@@ -162,16 +162,25 @@
<if test="categories != null">
t1.category = #{categories}
</if>
- <if test="streetId != null">
- and t1.community_id = #{streetId}
+ <if test="communityId != null">
+ and t1.community_id = #{communityId}
+ </if>
+ <if test=" streetId != null">
+ and t1.street_id = #{streetId}
</if>
<if test="code != null and code !=''">
and t1.code like concat('%',#{code},'%')
</if>
- <if test="site != null and site!=''">
+ <if test="code != null and code !=''">
+ and t1.code like concat('%',#{code},'%')
+ </if>
+ <if test="state != null and state!=''">
+ and t1.state =#{state}
+ </if>
+ <if test="site != null and site!=''">
and t1.site like concat('%',#{site},'%')
</if>
- <if test="startTime !='' and endTime !='' and startTime!=null and endTime !=null">
+ <if test="startTime!=null and endTime !=null">
and t1.create_time between #{startTime} and #{endTime}
</if>
</where>
--
Gitblit v1.8.0