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