提交 28d11c8d authored 作者: 孙于凯's avatar 孙于凯

feat:新增浙政钉

上级 81d1c5de
...@@ -108,28 +108,32 @@ public class Sm4Util { ...@@ -108,28 +108,32 @@ public class Sm4Util {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
/** // /**
* SM4算法目前只支持128位(即密钥16字节) // * SM4算法目前只支持128位(即密钥16字节)
*/ // */
String key = "nXwqj7JVe@czbD4E"; // String key = "nXwqj7JVe@czbD4E";
System.out.println("key:" + key); // System.out.println("key:" + key);
String data = "dasdsadsadqwefdsfdf热瓦甫企鹅我访问否dqfwq"; // String data = "dasdsadsadqwefdsfdf热瓦甫企鹅我访问否dqfwq";
//
/** // /**
* 加密 // * 加密
*/ // */
byte[] encrypt = Sm4Util.encrypt(data.getBytes("UTF-8"), key.getBytes("UTF-8")); // byte[] encrypt = Sm4Util.encrypt(data.getBytes("UTF-8"), key.getBytes("UTF-8"));
//转换为标准的Base64字符串 // //转换为标准的Base64字符串
String encryptStr = Base64.encodeBase64String(encrypt); // String encryptStr = Base64.encodeBase64String(encrypt);
System.out.println("加密:" + encryptStr); // System.out.println("加密:" + encryptStr);
//
/** // /**
* 解密 // * 解密
*/ // */
byte[] decryptBytes = Base64.decodeBase64(encryptStr); // byte[] decryptBytes = Base64.decodeBase64(encryptStr);
byte[] decrypt = Sm4Util.decrypt(decryptBytes, key.getBytes("UTF-8")); // byte[] decrypt = Sm4Util.decrypt(decryptBytes, key.getBytes("UTF-8"));
String decryptStr = new String(decrypt); // String decryptStr = new String(decrypt);
System.out.println("解密:" + decryptStr); // System.out.println("解密:" + decryptStr);
String decrypt = decrypt("No3E5a0/73I+/TMJZ43eVQ==", KEY);
System.out.println(decrypt);
} }
......
...@@ -23,5 +23,10 @@ ...@@ -23,5 +23,10 @@
<artifactId>zydd-misc</artifactId> <artifactId>zydd-misc</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>zydd-user</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -3,15 +3,14 @@ package com.tykj.zydd.pickup.controller; ...@@ -3,15 +3,14 @@ package com.tykj.zydd.pickup.controller;
import com.tykj.zydd.misc.swagger.AutoDocument; import com.tykj.zydd.misc.swagger.AutoDocument;
import com.tykj.zydd.pickup.entity.PickUp; import com.tykj.zydd.pickup.entity.PickUp;
import com.tykj.zydd.pickup.entity.dto.NotificationDTO;
import com.tykj.zydd.pickup.entity.dto.PickUpDTO; import com.tykj.zydd.pickup.entity.dto.PickUpDTO;
import com.tykj.zydd.pickup.entity.vo.NotificationVO;
import com.tykj.zydd.pickup.service.PickUpService; import com.tykj.zydd.pickup.service.PickUpService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
...@@ -31,4 +30,16 @@ public class PickUpController { ...@@ -31,4 +30,16 @@ public class PickUpController {
public List<PickUp> getListPickUp(@RequestBody PickUpDTO pickUpDTO){ public List<PickUp> getListPickUp(@RequestBody PickUpDTO pickUpDTO){
return pickUpService.getListPickUp(pickUpDTO); return pickUpService.getListPickUp(pickUpDTO);
} }
@PostMapping ("/getNotificationList")
@ApiOperation(value = "传入接收单位获取该单位下的通知人员")
public List<NotificationVO> getNotificationList(@RequestParam List<String> unitName){
return pickUpService.getNotificationList(unitName);
}
@PostMapping ("/notification")
@ApiOperation(value = "发送消息通知 ")
public void notification(@RequestBody List<NotificationDTO> notificationDTOList){
pickUpService.notification(notificationDTOList);
}
} }
...@@ -2,13 +2,12 @@ package com.tykj.zydd.pickup.controller; ...@@ -2,13 +2,12 @@ package com.tykj.zydd.pickup.controller;
import com.tykj.zydd.misc.swagger.AutoDocument; import com.tykj.zydd.misc.swagger.AutoDocument;
import com.tykj.zydd.pickup.entity.Template; import com.tykj.zydd.pickup.entity.Template;
import com.tykj.zydd.pickup.entity.dto.TemplateDTO;
import com.tykj.zydd.pickup.service.TemplateService; import com.tykj.zydd.pickup.service.TemplateService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
...@@ -25,9 +24,15 @@ public class TemplateController { ...@@ -25,9 +24,15 @@ public class TemplateController {
@PostMapping("/getListTemplate") @GetMapping("/getListTemplate")
@ApiOperation(value = "后台查询模板") @ApiOperation(value = "查询模板")
public List<Template> getListTemplate(String organizationCode){ public List<Template> getListTemplate(){
return templateService.getListTemplate(organizationCode); return templateService.getListTemplate();
}
@PostMapping("/addOrUpdate")
@ApiOperation(value = "修改或者添加模板")
public void addOrUpdate(@RequestBody TemplateDTO templateDTO){
templateService.saveTemplate(templateDTO);
} }
} }
...@@ -39,6 +39,9 @@ public class PickUp extends BaseEntity{ ...@@ -39,6 +39,9 @@ public class PickUp extends BaseEntity{
@ApiModelProperty(value = "接收电话") @ApiModelProperty(value = "接收电话")
private String toUnitPhone; private String toUnitPhone;
@ApiModelProperty(value = "状态") @ApiModelProperty(value = "状态 0成功 1失败")
private Integer status; private Integer status;
@ApiModelProperty("所属单位")
private String organizationCode;
} }
package com.tykj.zydd.pickup.entity.dto;
import com.tykj.zydd.pickup.entity.Template;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class ManualOperationDTO {
@ApiModelProperty("收电序号")
private String telegramNumber;
@ApiModelProperty("收电单位")
private List<String> unitList;
@ApiModelProperty("模板列表")
private Template template;
}
package com.tykj.zydd.pickup.entity.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class NotificationDTO {
@ApiModelProperty("接收单位")
private String toUnitName;
@ApiModelProperty("联系人")
private String user;
@ApiModelProperty("发送内容")
private String content;
}
...@@ -6,6 +6,8 @@ import lombok.Data; ...@@ -6,6 +6,8 @@ import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
@Data @Data
public class PickUpDTO { public class PickUpDTO {
@ApiModelProperty("时间") @ApiModelProperty("时间")
...@@ -18,9 +20,7 @@ public class PickUpDTO { ...@@ -18,9 +20,7 @@ public class PickUpDTO {
// @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") // @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
// private LocalDateTime endTime; // private LocalDateTime endTime;
@ApiModelProperty("通知单位") @ApiModelProperty("接收单位")
private String fromUnitName; private String toUnitName;
@ApiModelProperty("单位code")
private String organizationCode;
} }
package com.tykj.zydd.pickup.entity.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TemplateDTO {
@ApiModelProperty(value = "模板id")
private Integer id;
@ApiModelProperty(value = "模板名称")
private String templateName;
@ApiModelProperty(value = "模板内容")
private String content;
@ApiModelProperty(value = "单位id")
private String organizationCode;
}
package com.tykj.zydd.pickup.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.catalina.User;
import java.util.List;
@Data
public class NotificationVO {
@ApiModelProperty("单位")
private String UnitName;
@ApiModelProperty("钉钉id")
private List<UserVO> userVOS;
}
package com.tykj.zydd.pickup.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class UserVO {
@ApiModelProperty("联系人姓名")
private String UserName;
@ApiModelProperty("钉钉id")
private String accountId;
}
...@@ -3,7 +3,10 @@ package com.tykj.zydd.pickup.service; ...@@ -3,7 +3,10 @@ package com.tykj.zydd.pickup.service;
import com.tykj.zydd.pickup.entity.PickUp; import com.tykj.zydd.pickup.entity.PickUp;
import com.tykj.zydd.pickup.entity.dto.ManualOperationDTO;
import com.tykj.zydd.pickup.entity.dto.NotificationDTO;
import com.tykj.zydd.pickup.entity.dto.PickUpDTO; import com.tykj.zydd.pickup.entity.dto.PickUpDTO;
import com.tykj.zydd.pickup.entity.vo.NotificationVO;
import java.util.List; import java.util.List;
...@@ -17,5 +20,16 @@ public interface PickUpService { ...@@ -17,5 +20,16 @@ public interface PickUpService {
/** /**
* 手动添加记录 * 手动添加记录
*/ */
PickUp addPickUp(); void addPickUp(ManualOperationDTO manualOperationDTO);
/**
* 根据前端传入的单位进行查询 所属单位跟联系人
*/
List<NotificationVO> getNotificationList(List<String> unitName);
/**
* 扫码通知
*/
void notification(List<NotificationDTO> notificationDTOList);
} }
package com.tykj.zydd.pickup.service; package com.tykj.zydd.pickup.service;
import com.tykj.zydd.pickup.entity.Template; import com.tykj.zydd.pickup.entity.Template;
import com.tykj.zydd.pickup.entity.dto.TemplateDTO;
import java.util.List; import java.util.List;
...@@ -9,8 +10,13 @@ public interface TemplateService { ...@@ -9,8 +10,13 @@ public interface TemplateService {
/** /**
* 通知模板后台查看 * 通知模板后台查看
*/ */
List<Template> getListTemplate(String organizationCode); List<Template> getListTemplate();
/**
* 添加或者修改模板
*/
void saveTemplate(TemplateDTO templateDTO);
void saveTemplate();
} }
...@@ -2,14 +2,38 @@ package com.tykj.zydd.pickup.service.impl; ...@@ -2,14 +2,38 @@ package com.tykj.zydd.pickup.service.impl;
import com.github.wenhao.jpa.PredicateBuilder; import com.github.wenhao.jpa.PredicateBuilder;
import com.github.wenhao.jpa.Specifications; import com.github.wenhao.jpa.Specifications;
import com.tykj.zydd.misc.exception.ApiException;
import com.tykj.zydd.pickup.dao.PickUpDAO; import com.tykj.zydd.pickup.dao.PickUpDAO;
import com.tykj.zydd.pickup.entity.PickUp; import com.tykj.zydd.pickup.entity.PickUp;
import com.tykj.zydd.pickup.entity.dto.ManualOperationDTO;
import com.tykj.zydd.pickup.entity.dto.NotificationDTO;
import com.tykj.zydd.pickup.entity.dto.PickUpDTO; import com.tykj.zydd.pickup.entity.dto.PickUpDTO;
import com.tykj.zydd.pickup.entity.vo.NotificationVO;
import com.tykj.zydd.pickup.entity.vo.UserVO;
import com.tykj.zydd.pickup.service.PickUpService; import com.tykj.zydd.pickup.service.PickUpService;
import com.tykj.zydd.user.dao.KxAdminDao;
import com.tykj.zydd.user.dao.SpecificUnitDao;
import com.tykj.zydd.user.dao.SpecificUserDao;
import com.tykj.zydd.user.dao.SpecificUserMessageDao;
import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.entity.SpecificUnit;
import com.tykj.zydd.user.entity.SpecificUser;
import com.tykj.zydd.user.entity.SpecificUserMessage;
import com.tykj.zydd.user.entity.dto.SendWorkMessageDTO;
import com.tykj.zydd.user.service.ZyddUserService;
import com.tykj.zydd.user.utils.UserUtils;
import org.apache.catalina.User;
import org.apache.tomcat.jni.Local;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.rmi.CORBA.Util;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
public class PickUpServiceImpl implements PickUpService { public class PickUpServiceImpl implements PickUpService {
...@@ -18,20 +42,130 @@ public class PickUpServiceImpl implements PickUpService { ...@@ -18,20 +42,130 @@ public class PickUpServiceImpl implements PickUpService {
@Resource @Resource
private PickUpDAO pickUpDAO; private PickUpDAO pickUpDAO;
@Resource
private SpecificUnitDao specificUnitDao;
@Resource
private SpecificUserMessageDao specificUserMessageDao;
@Resource
private SpecificUserDao specificUserDao;
@Resource
private KxAdminDao kxAdminDao;
@Resource
private ZyddUserService zyddUserService;
@Resource
private UserUtils userUtils;
@Override @Override
public List<PickUp> getListPickUp(PickUpDTO pickUpDTO) { public List<PickUp> getListPickUp(PickUpDTO pickUpDTO) {
PredicateBuilder<PickUp> predicateBuilder = Specifications.and(); PredicateBuilder<PickUp> predicateBuilder = Specifications.and();
// predicateBuilder.ge(pickUpDTO.getStartTime() != null, "notificationTime", pickUpDTO.getStartTime()); KxAdmin currentUser = userUtils.getCurrentUser();
// predicateBuilder.le(pickUpDTO.getEndTime() != null, "notificationTime", pickUpDTO.getEndTime()); predicateBuilder.eq("organizationCode", currentUser.getOrganizationCode());
predicateBuilder.eq(pickUpDTO.getTime()!=null,"notificationTime",pickUpDTO.getTime()); predicateBuilder.eq(pickUpDTO.getToUnitName() != null, "toUnitName", pickUpDTO.getToUnitName());
predicateBuilder.eq(pickUpDTO.getFromUnitName() != null, "fromUnitName", pickUpDTO.getFromUnitName()); if (pickUpDTO.getTime() != null) {
LocalDateTime time = pickUpDTO.getTime();
LocalDateTime startOfDay = time.toLocalDate().atStartOfDay();
LocalDateTime endOfDay = time.toLocalDate().atTime(LocalTime.MAX);
predicateBuilder.ge("notificationTime", startOfDay);
predicateBuilder.le("notificationTime", endOfDay);
}
return pickUpDAO.findAll(predicateBuilder.build()); return pickUpDAO.findAll(predicateBuilder.build());
} }
@Override @Override
public PickUp addPickUp() { public void addPickUp(ManualOperationDTO manualOperationDTO) {
return null; List<String> unitList = manualOperationDTO.getUnitList();
KxAdmin currentUser = userUtils.getCurrentUser();
for (String unit : unitList) {
PickUp pickUp = new PickUp();
pickUp.setToUnitName(unit);
LocalDateTime now = LocalDateTime.now();
pickUp.setNotificationTime(now);
pickUp.setFromUnitName(currentUser.getOrganizationName());
pickUp.setFromUser(currentUser.getUsername());
pickUp.setToUnitName(unit);
}
}
@Override
public List<NotificationVO> getNotificationList(List<String> unitName) {
List<NotificationVO> rs = new ArrayList<>();
List<SpecificUser> userAll = specificUserDao.findAll();
List<SpecificUnit> all = specificUnitDao.findAll();
List<SpecificUserMessage> userMessageAll = specificUserMessageDao.findAll();
List<KxAdmin> kxAdmins = kxAdminDao.findAll();
for (String s : unitName) {
NotificationVO vo = new NotificationVO();
List<UserVO> userVOS = new ArrayList<>();
vo.setUnitName(s);
//查找详细信息获取单位code
SpecificUnit specificUnit = all.stream().filter(a -> a.getOrganizationName().equals(s)).findFirst().orElse(new SpecificUnit());
//根据code查询该单位下的人员id
List<Integer> collect = userMessageAll.stream().filter(a -> a.getOrganizationCode().equals(specificUnit.getOrganizationCode()) && a.getEnable() == 0)
.map(SpecificUserMessage::getUserId)
.collect(Collectors.toList());
for (Integer integer : collect) {
UserVO userVO = new UserVO();
SpecificUser specificUser = userAll.stream().filter(a -> a.getId().equals(integer)).findFirst().orElse(new SpecificUser());
userVO.setUserName(specificUser.getEmployeeName());
KxAdmin kxAdmin = kxAdmins.stream().filter(a -> a.getUsername().equals(specificUser.getEmployeeName())).findFirst().orElse(new KxAdmin());
if (kxAdmin.getAccount() == null) {
throw new ApiException(specificUser.getEmployeeName() + "该用户没有从钉钉免登请先从钉钉登入");
}
userVO.setAccountId(kxAdmin.getAccount());
userVOS.add(userVO);
}
vo.setUserVOS(userVOS);
rs.add(vo);
}
return rs;
}
@Override
public void notification(List<NotificationDTO> notificationDTOList) {
for (NotificationDTO notificationDTO : notificationDTOList) {
KxAdmin byUserName = kxAdminDao.findByUsername(notificationDTO.getUser());
SpecificUser byEmployeeName = specificUserDao.findByEmployeeName(notificationDTO.getUser());
SpecificUserMessage byUserId = specificUserMessageDao.findByUserId(byEmployeeName.getId());
KxAdmin currentUser = userUtils.getCurrentUser();
if (byUserId.getEnable() == 1) {
PickUp pickUp = new PickUp();
LocalDateTime now = LocalDateTime.now();
pickUp.setNotificationTime(now);
pickUp.setFromUnitName(currentUser.getOrganizationName());
pickUp.setFromUser(currentUser.getUsername());
pickUp.setToUnitUser(notificationDTO.getUser());
pickUp.setToUnitName(notificationDTO.getToUnitName());
pickUp.setStatus(1);
pickUp.setOrganizationCode(currentUser.getOrganizationCode());
pickUpDAO.save(pickUp);
throw new ApiException("该用户为被启用");
}
SendWorkMessageDTO sendWorkMessageDTO = new SendWorkMessageDTO();
sendWorkMessageDTO.setContent(notificationDTO.getContent());
sendWorkMessageDTO.setReceiverIds(byUserName.getAccount());
boolean flag = zyddUserService.sendWorkMessage(sendWorkMessageDTO);
PickUp pickUp = new PickUp();
LocalDateTime now = LocalDateTime.now();
pickUp.setNotificationTime(now);
pickUp.setFromUnitName(currentUser.getOrganizationName());
pickUp.setFromUser(currentUser.getUsername());
pickUp.setToUnitUser(notificationDTO.getUser());
pickUp.setToUnitName(notificationDTO.getToUnitName());
if (flag) {
pickUp.setStatus(0);
} else {
pickUp.setStatus(1);
}
pickUp.setOrganizationCode(currentUser.getOrganizationCode());
pickUpDAO.save(pickUp);
}
} }
} }
...@@ -4,11 +4,18 @@ import com.github.wenhao.jpa.PredicateBuilder; ...@@ -4,11 +4,18 @@ import com.github.wenhao.jpa.PredicateBuilder;
import com.github.wenhao.jpa.Specifications; import com.github.wenhao.jpa.Specifications;
import com.tykj.zydd.pickup.dao.TemplateDAO; import com.tykj.zydd.pickup.dao.TemplateDAO;
import com.tykj.zydd.pickup.entity.Template; import com.tykj.zydd.pickup.entity.Template;
import com.tykj.zydd.pickup.entity.dto.TemplateDTO;
import com.tykj.zydd.pickup.service.PickUpService; import com.tykj.zydd.pickup.service.PickUpService;
import com.tykj.zydd.pickup.service.TemplateService; import com.tykj.zydd.pickup.service.TemplateService;
import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.entity.SpecificUnit;
import com.tykj.zydd.user.security.SecurityUser;
import com.tykj.zydd.user.utils.UserUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
...@@ -17,19 +24,32 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -17,19 +24,32 @@ public class TemplateServiceImpl implements TemplateService {
@Resource @Resource
private TemplateDAO templateDAO; private TemplateDAO templateDAO;
@Resource
private UserUtils userUtils;
@Override @Override
public List<Template> getListTemplate(String organizationCode) { public List<Template> getListTemplate() {
KxAdmin currentUser = userUtils.getCurrentUser();
PredicateBuilder<Template> predicateBuilder = Specifications.and(); PredicateBuilder<Template> predicateBuilder = Specifications.and();
predicateBuilder.eq("organizationCode",organizationCode); predicateBuilder.eq("organizationCode",currentUser.getOrganizationCode());
return templateDAO.findAll(predicateBuilder.build()); return templateDAO.findAll(predicateBuilder.build());
} }
@Override @Override
public void saveTemplate() { public void saveTemplate(TemplateDTO templateDTO) {
if(templateDTO.getId()!=null){
Template template = templateDAO.findById(templateDTO.getId()).get();
BeanUtils.copyProperties(templateDTO, template, "createTime");
templateDAO.save(template);
}else {
Template template=new Template();
BeanUtils.copyProperties(templateDTO, template);
templateDAO.save(template);
}
} }
} }
server.port=8080 server.port=8111
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/zzd?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false spring.datasource.url=jdbc:mysql://localhost:3306/zzd?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root spring.datasource.username=root
......
...@@ -4,8 +4,10 @@ spring.datasource.url=jdbc:mysql://localhost:3306/zzd?serverTimezone=Asia/Shangh ...@@ -4,8 +4,10 @@ spring.datasource.url=jdbc:mysql://localhost:3306/zzd?serverTimezone=Asia/Shangh
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=root spring.datasource.password=root
app.key=TZSTZFS-g8v0wtN9hHb65p18iE7bya app.key=TZSTZFS01-Vf6J5033x86tFVR3ey63
app.secret=hinRj2U4URX7533EJDKv0pk21ODNjfDYVxWrG36j app.secret=M8e13kbbz0N4uYCuS3E9fLR7hBM914cBSZ6TgRUj
domainName=openplatform-pro.ding.zj.gov.cn domainName=openplatform-pro.ding.zj.gov.cn
\ No newline at end of file
tenantId=196729
\ No newline at end of file
...@@ -16,4 +16,21 @@ app.secret=6N6UUvtbig6HgKbM1m3NgY8kmb7kuy2R4qL5889T ...@@ -16,4 +16,21 @@ app.secret=6N6UUvtbig6HgKbM1m3NgY8kmb7kuy2R4qL5889T
domainName=openplatform.dg-work.cn domainName=openplatform.dg-work.cn
tenantId=50355510 tenantId=50355510
\ No newline at end of file
#redis连接配置
spring.redis.host=122.51.246.117
spring.redis.password=tykj@2022
spring.redis.port=6379
spring.redis.database=15
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
## 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
## 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=20
## 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=2
## 连接超时时间(毫秒)
spring.redis.timeout=1800000
\ No newline at end of file
package com.tykj.zydd.user.contorller; package com.tykj.zydd.user.contorller;
import com.tykj.zydd.user.entity.KxAdmin; import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.entity.vo.UserMessageVO;
import com.tykj.zydd.user.entity.vo.admin.LoginSystemVO; import com.tykj.zydd.user.entity.vo.admin.LoginSystemVO;
import com.tykj.zydd.user.entity.vo.admin.RegisterVO; import com.tykj.zydd.user.entity.vo.admin.RegisterVO;
import com.tykj.zydd.misc.aop.Timer; import com.tykj.zydd.misc.aop.Timer;
...@@ -42,6 +43,14 @@ public class KxAdminController { ...@@ -42,6 +43,14 @@ public class KxAdminController {
return ResponseEntity.ok(kxAdminService.loginBySystem(loginSystemVO)); return ResponseEntity.ok(kxAdminService.loginBySystem(loginSystemVO));
} }
@PostMapping("/loginByUserMessageVO")
@ApiOperation(value = "模拟浙政钉登录接口")
public UserMessageVO loginByUserMessageVO(@RequestBody LoginSystemVO loginSystemVO){
return kxAdminService.loginByUserMessageVO(loginSystemVO);
}
// @GetMapping("/login") // @GetMapping("/login")
// @ApiOperation(value = "外部系统登录接口",notes = "外部系统登录接口") // @ApiOperation(value = "外部系统登录接口",notes = "外部系统登录接口")
// @Timer(desc = "外部系统登录接口") // @Timer(desc = "外部系统登录接口")
......
...@@ -4,6 +4,7 @@ import com.alibaba.xxpt.gateway.shared.api.request.OapiMessageWorkNotificationRe ...@@ -4,6 +4,7 @@ import com.alibaba.xxpt.gateway.shared.api.request.OapiMessageWorkNotificationRe
import com.alibaba.xxpt.gateway.shared.api.response.*; import com.alibaba.xxpt.gateway.shared.api.response.*;
import com.alibaba.xxpt.gateway.shared.client.http.IntelligentGetClient; import com.alibaba.xxpt.gateway.shared.client.http.IntelligentGetClient;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.tykj.zydd.user.entity.dto.SendWorkMessageDTO;
import com.tykj.zydd.user.entity.vo.UserMessageVO; import com.tykj.zydd.user.entity.vo.UserMessageVO;
import com.tykj.zydd.user.init.AppKeyInit; import com.tykj.zydd.user.init.AppKeyInit;
import com.tykj.zydd.misc.swagger.AutoDocument; import com.tykj.zydd.misc.swagger.AutoDocument;
...@@ -86,16 +87,16 @@ public class UserController { ...@@ -86,16 +87,16 @@ public class UserController {
} }
@ApiOperation(value = "发送工作通知") @ApiOperation(value = "发送工作通知")
@GetMapping("/sendWorkMessage") @PostMapping ("/sendWorkMessage")
public OapiMessageWorkNotificationResponse sendWorkMessage(String receiverIds){ public void sendWorkMessage(@RequestBody SendWorkMessageDTO sendWorkMessageDTO){
return zyddUserService.sendWorkMessage(receiverIds); zyddUserService.sendWorkMessage(sendWorkMessageDTO);
} }
@ApiOperation(value = "测试") @ApiOperation(value = "拉取部门人员信息入库")
@GetMapping("/cacheUnit") @GetMapping("/cacheUnit")
public void test(){ public void test(){
zyddUserService.cacheUnit(); zyddUserService.cacheUnit();
......
...@@ -8,6 +8,8 @@ import com.tykj.zydd.user.entity.vo.UnitVO; ...@@ -8,6 +8,8 @@ import com.tykj.zydd.user.entity.vo.UnitVO;
import com.tykj.zydd.user.entity.vo.UserResultVO; import com.tykj.zydd.user.entity.vo.UserResultVO;
import com.tykj.zydd.user.service.UserDataService; import com.tykj.zydd.user.service.UserDataService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
...@@ -30,20 +32,33 @@ public class UserDataController { ...@@ -30,20 +32,33 @@ public class UserDataController {
private UserDataService userDataService; private UserDataService userDataService;
@ApiOperation(value = "获取市单位") // @ApiOperation(value = "获取单位")
// @GetMapping("/getUnitList")
// public List<UnitMunicipalVO> getUnitList(){
// return userDataService.getUnitList();
// }
@ApiOperation(value = "获取单位(市级 登录信息level为0)")
@GetMapping("/getUnitList") @GetMapping("/getUnitList")
public List<UnitMunicipalVO> getUnitList(String organizationName){ public List<UnitMunicipalVO> getUnitList(){
return userDataService.getUnitList(organizationName); return userDataService.getUnitList();
} }
@ApiOperation(value = "获取区单位") @ApiOperation(value = "获取区单位")
@GetMapping("/getUnitVOList") @GetMapping("/getUnitVOList")
public List<DistrictUnitVO> getUnitVOList(String organizationName){ public List<DistrictUnitVO> getUnitVOList(String organizationCode){
return userDataService.getUnitVOList(organizationName); return userDataService.getUnitVOList(organizationCode);
} }
@ApiOperation(value = "根据单位code获取人员") @ApiOperation(value = "根据单位code获取人员")
@GetMapping("/getUserList") @GetMapping("/getUserList")
@ApiImplicitParams({
@ApiImplicitParam(name = "organizationCode", value = "单位code", dataType = "String"),
@ApiImplicitParam(name = "employeeName", value = "姓名", dataType = "String"),
@ApiImplicitParam(name = "enable", value = "是否可用", dataType = "Integer")})
public List<UserResultVO> getUserList(String organizationCode,String employeeName,Integer enable){ public List<UserResultVO> getUserList(String organizationCode,String employeeName,Integer enable){
return userDataService.getUserList(organizationCode,employeeName,enable); return userDataService.getUserList(organizationCode,employeeName,enable);
} }
......
...@@ -15,4 +15,6 @@ public interface KxAdminDao extends JpaRepository<KxAdmin,Integer>, JpaSpecifica ...@@ -15,4 +15,6 @@ public interface KxAdminDao extends JpaRepository<KxAdmin,Integer>, JpaSpecifica
KxAdmin findByAccount(String account); KxAdmin findByAccount(String account);
KxAdmin findBySystemUserId(String systemUserId); KxAdmin findBySystemUserId(String systemUserId);
KxAdmin findByUsername(String userName);
} }
...@@ -12,4 +12,13 @@ public interface SpecificUserDao extends JpaRepository<SpecificUser,Integer>, J ...@@ -12,4 +12,13 @@ public interface SpecificUserDao extends JpaRepository<SpecificUser,Integer>, J
*/ */
SpecificUser findFirstByEmployeeCode(String employeeCode); SpecificUser findFirstByEmployeeCode(String employeeCode);
/**
* 根据人员姓名查询信息
* @param employeeName
* @return
*/
SpecificUser findByEmployeeName(String employeeName);
} }
...@@ -9,6 +9,8 @@ import org.springframework.data.jpa.repository.Query; ...@@ -9,6 +9,8 @@ import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
public interface SpecificUserMessageDao extends JpaRepository<SpecificUserMessage,Integer>, JpaSpecificationExecutor<SpecificUserMessage> { public interface SpecificUserMessageDao extends JpaRepository<SpecificUserMessage,Integer>, JpaSpecificationExecutor<SpecificUserMessage> {
/** /**
...@@ -23,4 +25,15 @@ public interface SpecificUserMessageDao extends JpaRepository<SpecificUserMessag ...@@ -23,4 +25,15 @@ public interface SpecificUserMessageDao extends JpaRepository<SpecificUserMessag
@Query("update SpecificUserMessage s set s.enable = :enable where s.userId = :id") @Query("update SpecificUserMessage s set s.enable = :enable where s.userId = :id")
@Transactional @Transactional
void updateEnable(@Param("id") int id,@Param("enable") int enable); void updateEnable(@Param("id") int id,@Param("enable") int enable);
/**
* 根据单位code查询可用人员
*/
List<SpecificUserMessage> findAllByOrganizationCodeAndEnable(String organizationCode,Integer enable);
/**
* 根据关联字段查询信息
*/
SpecificUserMessage findByUserId(Integer userId);
} }
...@@ -59,4 +59,12 @@ public class KxAdmin extends BaseEntity { ...@@ -59,4 +59,12 @@ public class KxAdmin extends BaseEntity {
@Convert(converter = Sm4AttributeConverter.class) @Convert(converter = Sm4AttributeConverter.class)
private String username; private String username;
@ApiModelProperty("所属单位")
private String organizationCode;
@ApiModelProperty("单位名称")
private String organizationName;
@ApiModelProperty("是否是市级账号 0代表是 1代表不是")
private Integer level;
} }
package com.tykj.zydd.user.entity.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class SendWorkMessageDTO {
@ApiModelProperty("钉钉用户id")
private String receiverIds;
@ApiModelProperty("输入内容")
private String content;
}
...@@ -47,6 +47,12 @@ public class UserMessageVO { ...@@ -47,6 +47,12 @@ public class UserMessageVO {
@ApiModelProperty("租户id") @ApiModelProperty("租户id")
private Integer realmId; private Integer realmId;
@ApiModelProperty("部门编码") @ApiModelProperty("单位编码")
private String organizationCode; private String organizationCode;
@ApiModelProperty("单位名称")
private String organizationName;
@ApiModelProperty("是否是市级账号 0代表是 1代表不是")
private Integer level;
} }
package com.tykj.zydd.user.security; package com.tykj.zydd.user.security;
import com.tykj.zydd.misc.exception.ApiException;
import com.tykj.zydd.user.dao.KxAdminDao; import com.tykj.zydd.user.dao.KxAdminDao;
import com.tykj.zydd.user.entity.KxAdmin; import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.entity.dto.UserInfo; import com.tykj.zydd.user.entity.dto.UserInfo;
...@@ -31,20 +32,19 @@ public class MyUserDetailsServiceImpl implements UserDetailsService { ...@@ -31,20 +32,19 @@ public class MyUserDetailsServiceImpl implements UserDetailsService {
String[] split = username.split("Ǵ"); String[] split = username.split("Ǵ");
// 获取ID // 获取ID
String userId = split[1]; String userId = split[1];
UserInfo userInfo = new UserInfo(); // UserInfo userInfo = new UserInfo();
if ("0".equals(split[0])){ if ("0".equals(split[0])){
//说明是管理员登录 //说明是管理员登录
KxAdmin kxAdmin = kxAdminDao.findByAccount(userId); KxAdmin kxAdmin = kxAdminDao.findByAccount(userId);
if (kxAdmin == null){ if (kxAdmin == null) {
throw new UsernameNotFoundException("用户不存在"); throw new ApiException("用户不存在");
} }
BeanUtils.copyProperties(kxAdmin,userInfo); securityUser.setKxAdmin(kxAdmin);
securityUser.setCurrentUserInfo(userInfo);
securityUser.setUsername(kxAdmin.getUsername()); securityUser.setUsername(kxAdmin.getUsername());
securityUser.setAccount(kxAdmin.getAccount( )); securityUser.setAccount(kxAdmin.getAccount( ));
securityUser.setPassword(kxAdmin.getPassword()); securityUser.setPassword(kxAdmin.getPassword());
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(securityUser, SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(securityUser,
securityUser.getCurrentUserInfo().getPassword(),securityUser.getAuthorities())); securityUser.getKxAdmin().getPassword(),securityUser.getAuthorities()));
return securityUser; return securityUser;
}else { }else {
//说明是普通用户登录 //说明是普通用户登录
......
...@@ -55,7 +55,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -55,7 +55,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.sessionCreationPolicy(SessionCreationPolicy.STATELESS) .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and() .and()
.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll() .authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers("/admin/register","/admin/loginSystem").permitAll() .antMatchers("/admin/register","/admin/loginSystem","/admin/loginByUserMessageVO").permitAll()
//grace/app //grace/app
.antMatchers("/grace/app/**","/activity/app/**","/record/app/**","/science/ip/**","/admin/login", .antMatchers("/grace/app/**","/activity/app/**","/record/app/**","/science/ip/**","/admin/login",
"/user/getUserMessage","/user/getAccessToken").permitAll() "/user/getUserMessage","/user/getAccessToken").permitAll()
......
package com.tykj.zydd.user.security; package com.tykj.zydd.user.security;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.entity.KxPermissions; import com.tykj.zydd.user.entity.KxPermissions;
import com.tykj.zydd.user.entity.KxRole; import com.tykj.zydd.user.entity.KxRole;
import com.tykj.zydd.user.entity.KxUnit; import com.tykj.zydd.user.entity.KxUnit;
...@@ -24,12 +25,6 @@ public class SecurityUser implements UserDetails { ...@@ -24,12 +25,6 @@ public class SecurityUser implements UserDetails {
private String token; private String token;
private List<KxRole> kxRoleList;
private List<KxPermissions> permissions;
private List<KxUnit> kxUnits;
private String username; private String username;
private String account; private String account;
...@@ -37,15 +32,12 @@ public class SecurityUser implements UserDetails { ...@@ -37,15 +32,12 @@ public class SecurityUser implements UserDetails {
@Transient @Transient
private String password; private String password;
private UserInfo currentUserInfo;
private KxAdmin kxAdmin;
public SecurityUser() { public SecurityUser() {
} }
public SecurityUser(UserInfo currentUserInfo) {
this.currentUserInfo = currentUserInfo;
}
......
...@@ -2,6 +2,7 @@ package com.tykj.zydd.user.service; ...@@ -2,6 +2,7 @@ package com.tykj.zydd.user.service;
import com.tykj.zydd.user.entity.KxAdmin; import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.entity.vo.UserMessageVO;
import com.tykj.zydd.user.entity.vo.admin.LoginSystemVO; import com.tykj.zydd.user.entity.vo.admin.LoginSystemVO;
import com.tykj.zydd.user.entity.vo.admin.RegisterVO; import com.tykj.zydd.user.entity.vo.admin.RegisterVO;
import com.tykj.zydd.user.security.SecurityUser; import com.tykj.zydd.user.security.SecurityUser;
...@@ -26,6 +27,11 @@ public interface KxAdminService { ...@@ -26,6 +27,11 @@ public interface KxAdminService {
*/ */
KxAdmin registeredBySystem(RegisterVO registerVO); KxAdmin registeredBySystem(RegisterVO registerVO);
/**
* 模拟登陆
*/
UserMessageVO loginByUserMessageVO(LoginSystemVO loginSystemVO);
// /** // /**
// * 从外部系统登录咖啡馆 // * 从外部系统登录咖啡馆
// * @param code // * @param code
......
...@@ -8,15 +8,15 @@ import com.tykj.zydd.user.entity.vo.UserResultVO; ...@@ -8,15 +8,15 @@ import com.tykj.zydd.user.entity.vo.UserResultVO;
import java.util.List; import java.util.List;
public interface UserDataService { public interface UserDataService {
/** // /**
* 获取市级单位列表 // * 获取市级单位列表
*/ // */
List<UnitMunicipalVO> getUnitList(String organizationName); // List<UnitMunicipalVO> getUnitList();
/** /**
* 获取区级单位列表 * 获取区级单位列表
*/ */
List<DistrictUnitVO> getUnitVOList(String organizationName); List<DistrictUnitVO> getUnitVOList(String organizationCode);
/** /**
* 根据单位code查询员工 * 根据单位code查询员工
...@@ -32,4 +32,10 @@ public interface UserDataService { ...@@ -32,4 +32,10 @@ public interface UserDataService {
* 获取所有单位的信息 * 获取所有单位的信息
*/ */
List<SpecificUnit> getAllUnit(); List<SpecificUnit> getAllUnit();
/**
* 获取市级单位列表
*/
List<UnitMunicipalVO> getUnitList();
} }
...@@ -3,6 +3,7 @@ package com.tykj.zydd.user.service; ...@@ -3,6 +3,7 @@ package com.tykj.zydd.user.service;
import com.alibaba.xxpt.gateway.shared.api.response.*; import com.alibaba.xxpt.gateway.shared.api.response.*;
import com.alibaba.xxpt.gateway.shared.client.http.IntelligentGetClient; import com.alibaba.xxpt.gateway.shared.client.http.IntelligentGetClient;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.tykj.zydd.user.entity.dto.SendWorkMessageDTO;
import com.tykj.zydd.user.entity.vo.UserMessageVO; import com.tykj.zydd.user.entity.vo.UserMessageVO;
import java.util.List; import java.util.List;
...@@ -50,7 +51,7 @@ public interface ZyddUserService { ...@@ -50,7 +51,7 @@ public interface ZyddUserService {
/** /**
* 发送工作通知 * 发送工作通知
*/ */
OapiMessageWorkNotificationResponse sendWorkMessage(String receiverIds); boolean sendWorkMessage(SendWorkMessageDTO sendWorkMessageDTO);
/** /**
* 更新单位 * 更新单位
......
...@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.tykj.zydd.user.dao.KxAdminDao; import com.tykj.zydd.user.dao.KxAdminDao;
import com.tykj.zydd.user.entity.KxAdmin; import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.entity.dto.SystemUserVO; import com.tykj.zydd.user.entity.dto.SystemUserVO;
import com.tykj.zydd.user.entity.vo.UserMessageVO;
import com.tykj.zydd.user.entity.vo.admin.LoginSystemVO; import com.tykj.zydd.user.entity.vo.admin.LoginSystemVO;
import com.tykj.zydd.user.entity.vo.admin.RegisterVO; import com.tykj.zydd.user.entity.vo.admin.RegisterVO;
import com.tykj.zydd.user.jwt.JwtTokenProvider; import com.tykj.zydd.user.jwt.JwtTokenProvider;
...@@ -59,15 +60,16 @@ public class KxAdminServiceImpl implements KxAdminService { ...@@ -59,15 +60,16 @@ public class KxAdminServiceImpl implements KxAdminService {
String account = loginSystemVO.getAccount(); String account = loginSystemVO.getAccount();
String password = loginSystemVO.getPassword(); String password = loginSystemVO.getPassword();
KxAdmin kxAdmin = kxAdminDao.findByAccount(account); KxAdmin kxAdmin = kxAdminDao.findByAccount(account);
SecurityUser userDetails = (SecurityUser) myUserDetailsServiceImpl.loadUserByUsername("0" + "Ǵ" + kxAdmin.getId()); SecurityUser userDetails = (SecurityUser) myUserDetailsServiceImpl.loadUserByUsername("0" + "Ǵ" + kxAdmin.getAccount());
// 验证密码 // 验证密码
boolean verify = Sm3Util.verify(password+kxAdmin.getSalt(), userDetails.getPassword()); boolean verify = Sm3Util.verify(password+kxAdmin.getSalt(), userDetails.getPassword());
if (!verify) { if (!verify) {
throw new ApiException("密码错误"); throw new ApiException("密码错误");
} }
//生成token //生成token
String token = jwtTokenProvider.createToken(kxAdmin.getId()+"", "0"); String token = jwtTokenProvider.createToken(kxAdmin.getAccount()+"", "0");
userDetails.setToken(token); userDetails.setToken(token);
userDetails.setKxAdmin(kxAdmin);
stringRedisTemplate.opsForValue().set(RedisKeyConstants.TOKEN+token, JSON.toJSONString(userDetails)); stringRedisTemplate.opsForValue().set(RedisKeyConstants.TOKEN+token, JSON.toJSONString(userDetails));
stringRedisTemplate.expire(RedisKeyConstants.TOKEN+token, RedisTimeConstants.TOKEN_TIME, TimeUnit.MINUTES); stringRedisTemplate.expire(RedisKeyConstants.TOKEN+token, RedisTimeConstants.TOKEN_TIME, TimeUnit.MINUTES);
return userDetails; return userDetails;
...@@ -92,6 +94,33 @@ public class KxAdminServiceImpl implements KxAdminService { ...@@ -92,6 +94,33 @@ public class KxAdminServiceImpl implements KxAdminService {
return kxAdminDao.save(kxAdmin); return kxAdminDao.save(kxAdmin);
} }
@Override
public UserMessageVO loginByUserMessageVO(LoginSystemVO loginSystemVO) {
UserMessageVO vo=new UserMessageVO();
String account = loginSystemVO.getAccount();
String password = loginSystemVO.getPassword();
KxAdmin kxAdmin = kxAdminDao.findByAccount(account);
vo.setAccountId(Integer.valueOf(kxAdmin.getAccount()));
vo.setLastName(kxAdmin.getUsername());
vo.setOrganizationName(kxAdmin.getOrganizationName());
vo.setOrganizationCode(kxAdmin.getOrganizationCode());
vo.setLevel(kxAdmin.getLevel());
SecurityUser userDetails = (SecurityUser) myUserDetailsServiceImpl.loadUserByUsername("0" + "Ǵ" + kxAdmin.getAccount());
// 验证密码
boolean verify = Sm3Util.verify(password+kxAdmin.getSalt(), userDetails.getPassword());
if (!verify) {
throw new ApiException("密码错误");
}
//生成token
String token = jwtTokenProvider.createToken(kxAdmin.getAccount()+"", "0");
vo.setToken(token);
userDetails.setToken(token);
userDetails.setKxAdmin(kxAdmin);
stringRedisTemplate.opsForValue().set(RedisKeyConstants.TOKEN+token, JSON.toJSONString(userDetails));
stringRedisTemplate.expire(RedisKeyConstants.TOKEN+token, RedisTimeConstants.TOKEN_TIME, TimeUnit.MINUTES);
return vo;
}
// @Override // @Override
// @Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
// public SecurityUser login(String code) { // public SecurityUser login(String code) {
......
...@@ -4,6 +4,7 @@ import com.tykj.zydd.misc.util.BeanCopyUtil; ...@@ -4,6 +4,7 @@ import com.tykj.zydd.misc.util.BeanCopyUtil;
import com.tykj.zydd.user.dao.SpecificUnitDao; import com.tykj.zydd.user.dao.SpecificUnitDao;
import com.tykj.zydd.user.dao.SpecificUserDao; import com.tykj.zydd.user.dao.SpecificUserDao;
import com.tykj.zydd.user.dao.SpecificUserMessageDao; import com.tykj.zydd.user.dao.SpecificUserMessageDao;
import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.entity.SpecificUnit; import com.tykj.zydd.user.entity.SpecificUnit;
import com.tykj.zydd.user.entity.SpecificUser; import com.tykj.zydd.user.entity.SpecificUser;
import com.tykj.zydd.user.entity.SpecificUserMessage; import com.tykj.zydd.user.entity.SpecificUserMessage;
...@@ -11,6 +12,7 @@ import com.tykj.zydd.user.entity.vo.*; ...@@ -11,6 +12,7 @@ import com.tykj.zydd.user.entity.vo.*;
import com.tykj.zydd.user.enums.AreaEnum; import com.tykj.zydd.user.enums.AreaEnum;
import com.tykj.zydd.user.service.KxAdminService; import com.tykj.zydd.user.service.KxAdminService;
import com.tykj.zydd.user.service.UserDataService; import com.tykj.zydd.user.service.UserDataService;
import com.tykj.zydd.user.utils.UserUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -23,6 +25,7 @@ import java.util.Map; ...@@ -23,6 +25,7 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service @Service
public class UserDataServiceImpl implements UserDataService { public class UserDataServiceImpl implements UserDataService {
...@@ -36,16 +39,17 @@ public class UserDataServiceImpl implements UserDataService { ...@@ -36,16 +39,17 @@ public class UserDataServiceImpl implements UserDataService {
@Resource @Resource
private SpecificUserMessageDao specificUserMessageDao; private SpecificUserMessageDao specificUserMessageDao;
@Resource
private UserUtils userUtils;
@Override @Override
public List<UnitMunicipalVO> getUnitList(String organizationName) { public List<UnitMunicipalVO> getUnitList() {
List<SpecificUnit> allByLevel; List<SpecificUnit> allByLevel;
if (StringUtils.isEmpty(organizationName)) { // if (StringUtils.isEmpty(organizationName)) {
allByLevel = specificUnitDao.findAllByLevel(1); allByLevel = specificUnitDao.findAllByLevel(1);
} else { // } else {
allByLevel = specificUnitDao.findFirstByOrganizationNameAndLevel(organizationName, 1); // allByLevel = specificUnitDao.findFirstByOrganizationNameAndLevel(organizationName, 1);
} // }
List<UnitMunicipalVO> rs=new ArrayList<>(); List<UnitMunicipalVO> rs=new ArrayList<>();
allByLevel.forEach(item->{ allByLevel.forEach(item->{
UnitMunicipalVO vo=new UnitMunicipalVO(); UnitMunicipalVO vo=new UnitMunicipalVO();
...@@ -55,16 +59,31 @@ public class UserDataServiceImpl implements UserDataService { ...@@ -55,16 +59,31 @@ public class UserDataServiceImpl implements UserDataService {
return rs; return rs;
} }
// @Override
// public List<UnitMunicipalVO> getUnitList() {
// KxAdmin currentUser = userUtils.getCurrentUser();
// List<SpecificUnit> all = specificUnitDao.findAll();
// Stream<SpecificUnit> specificUnitStream = all.stream().filter(a -> a.getOrganizationCode().equals(currentUser.getOrganizationCode()) || a.getParentCode().equals(currentUser.getOrganizationCode()));
// List<UnitMunicipalVO> rs=new ArrayList<>();
// specificUnitStream.forEach(item->{
// UnitMunicipalVO vo=new UnitMunicipalVO();
// BeanUtils.copyProperties(item,vo);
// rs.add(vo);
// });
// return rs;
// }
@Override @Override
public List<DistrictUnitVO> getUnitVOList(String organizationName) { public List<DistrictUnitVO> getUnitVOList(String organizationCode) {
List<SpecificUnit> allByLevel; List<SpecificUnit> allByLevel = specificUnitDao.findAllByLevel(2);
if (StringUtils.isEmpty(organizationName)) { List<SpecificUnit> specificUnits;
allByLevel = specificUnitDao.findAllByLevel(2); if (organizationCode!=null){
} else { specificUnits = allByLevel.stream().filter(a -> a.getOrganizationCode().equals(organizationCode) || a.getParentCode().equals(organizationCode)).collect(Collectors.toList());
allByLevel = specificUnitDao.findFirstByOrganizationNameAndLevel(organizationName, 2); }else {
specificUnits = new ArrayList<>(allByLevel);
} }
List<DistrictUnitVO> rs=new ArrayList<>(); List<DistrictUnitVO> rs=new ArrayList<>();
Map<String, List<SpecificUnit>> groupedUnits = allByLevel.stream() Map<String, List<SpecificUnit>> groupedUnits = specificUnits.stream()
.collect(Collectors.groupingBy(SpecificUnit::getDivisionCode)); .collect(Collectors.groupingBy(SpecificUnit::getDivisionCode));
for (Map.Entry<String, List<SpecificUnit>> entry : groupedUnits.entrySet()) { for (Map.Entry<String, List<SpecificUnit>> entry : groupedUnits.entrySet()) {
String divisionCode = entry.getKey().substring(0,6); String divisionCode = entry.getKey().substring(0,6);
......
...@@ -21,6 +21,7 @@ import com.tykj.zydd.user.dao.SpecificUnitDao; ...@@ -21,6 +21,7 @@ import com.tykj.zydd.user.dao.SpecificUnitDao;
import com.tykj.zydd.user.dao.SpecificUserDao; import com.tykj.zydd.user.dao.SpecificUserDao;
import com.tykj.zydd.user.dao.SpecificUserMessageDao; import com.tykj.zydd.user.dao.SpecificUserMessageDao;
import com.tykj.zydd.user.entity.*; import com.tykj.zydd.user.entity.*;
import com.tykj.zydd.user.entity.dto.SendWorkMessageDTO;
import com.tykj.zydd.user.entity.dto.SpecificUnitDTO; import com.tykj.zydd.user.entity.dto.SpecificUnitDTO;
import com.tykj.zydd.user.entity.vo.SpecificUserVO; import com.tykj.zydd.user.entity.vo.SpecificUserVO;
import com.tykj.zydd.user.entity.vo.UserMessageVO; import com.tykj.zydd.user.entity.vo.UserMessageVO;
...@@ -31,6 +32,7 @@ import com.tykj.zydd.user.jwt.JwtTokenProvider; ...@@ -31,6 +32,7 @@ import com.tykj.zydd.user.jwt.JwtTokenProvider;
import com.tykj.zydd.user.service.KxAdminService; import com.tykj.zydd.user.service.KxAdminService;
import com.tykj.zydd.user.service.ZyddUserService; import com.tykj.zydd.user.service.ZyddUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.hibernate.sql.Select;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -107,19 +109,29 @@ public class ZyddUserServiceImpl implements ZyddUserService { ...@@ -107,19 +109,29 @@ public class ZyddUserServiceImpl implements ZyddUserService {
Object data = contentObj.get("data"); Object data = contentObj.get("data");
UserMessageVO userMessageVO = JSON.parseObject(data + "", UserMessageVO.class); UserMessageVO userMessageVO = JSON.parseObject(data + "", UserMessageVO.class);
KxAdmin byAccount = kxAdminDao.findByAccount(userMessageVO.getAccountId() + ""); KxAdmin byAccount = kxAdminDao.findByAccount(userMessageVO.getAccountId() + "");
//获取用户所属单位
String userUnitCode = getUserUnitCode(userMessageVO.getEmployeeCode());
userMessageVO.setOrganizationCode(userUnitCode);
String lastName = userMessageVO.getLastName();
SpecificUnit organizationName = specificUnitDao.findFirstByOrganizationCode(userUnitCode);
userMessageVO.setOrganizationName(organizationName.getOrganizationName());
String intelligent = getIntelligent();
if (userUnitCode.equals(intelligent)){
userMessageVO.setLevel(0);
}else {
userMessageVO.setLevel(1);
}
if (byAccount==null){ if (byAccount==null){
registeredBySystem(userMessageVO.getAccountId()+""); registeredBySystem(userMessageVO.getAccountId()+"",userUnitCode,lastName,organizationName.getOrganizationName(),userMessageVO.getLevel());
} }
String token = jwtTokenProvider.createToken(userMessageVO.getAccountId()+"","0"); String token = jwtTokenProvider.createToken(userMessageVO.getAccountId()+"","0");
stringRedisTemplate.opsForValue().set(RedisKeyConstants.TOKEN+token, JSON.toJSONString(userMessageVO)); stringRedisTemplate.opsForValue().set(RedisKeyConstants.TOKEN+token, JSON.toJSONString(userMessageVO));
stringRedisTemplate.expire(RedisKeyConstants.TOKEN+token, RedisTimeConstants.TOKEN_TIME, TimeUnit.MINUTES); stringRedisTemplate.expire(RedisKeyConstants.TOKEN+token, RedisTimeConstants.TOKEN_TIME, TimeUnit.MINUTES);
userMessageVO.setToken(token); userMessageVO.setToken(token);
userMessageVO.setOrganizationCode(getUserUnitCode(userMessageVO.getEmployeeCode()));
return userMessageVO; return userMessageVO;
} }
//一人一个单位 //一人一个单位
public String getUserUnitCode(String employeeCode){ public String getUserUnitCode(String employeeCode){
String intelligent = getIntelligent(); String intelligent = getIntelligent();
OapiMoziOrganizationPageOrganizationEmployeePositionsResponse specificUser = getUser(intelligent); OapiMoziOrganizationPageOrganizationEmployeePositionsResponse specificUser = getUser(intelligent);
...@@ -136,12 +148,15 @@ public class ZyddUserServiceImpl implements ZyddUserService { ...@@ -136,12 +148,15 @@ public class ZyddUserServiceImpl implements ZyddUserService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public KxAdmin registeredBySystem(String accountId) { public KxAdmin registeredBySystem(String accountId,String organizationCode,String lastName,String organizationName,Integer level) {
String account = accountId; String account = accountId;
String password = "123456"; String password = "123456";
KxAdmin kxAdmin = new KxAdmin(); KxAdmin kxAdmin = new KxAdmin();
kxAdmin.setAccount(account); kxAdmin.setAccount(account);
kxAdmin.setPassword(password); kxAdmin.setPassword(password);
kxAdmin.setUsername(lastName);
kxAdmin.setLevel(level);
kxAdmin.setOrganizationName(organizationName);
KxAdmin byAccount = kxAdminDao.findByAccount(account); KxAdmin byAccount = kxAdminDao.findByAccount(account);
if (byAccount != null){ if (byAccount != null){
throw new ApiException("账号已存在"); throw new ApiException("账号已存在");
...@@ -150,6 +165,7 @@ public class ZyddUserServiceImpl implements ZyddUserService { ...@@ -150,6 +165,7 @@ public class ZyddUserServiceImpl implements ZyddUserService {
kxAdmin.setSalt(salt); kxAdmin.setSalt(salt);
kxAdmin.setPassword(Sm3Util.encrypt(password+salt)); kxAdmin.setPassword(Sm3Util.encrypt(password+salt));
kxAdmin.setOrigin("0"); kxAdmin.setOrigin("0");
kxAdmin.setOrganizationCode(organizationCode);
return kxAdminDao.save(kxAdmin); return kxAdminDao.save(kxAdmin);
} }
...@@ -237,7 +253,7 @@ public class ZyddUserServiceImpl implements ZyddUserService { ...@@ -237,7 +253,7 @@ public class ZyddUserServiceImpl implements ZyddUserService {
BeanUtils.copyProperties(specificUnitDTO, specificUnit); BeanUtils.copyProperties(specificUnitDTO, specificUnit);
if (specificUnit.getDivisionCode()!=null){ if (specificUnit.getDivisionCode()!=null){
String divisionCode = specificUnit.getDivisionCode().substring(0, 6); String divisionCode = specificUnit.getDivisionCode().substring(0, 6);
specificUnit.setLevel(divisionCode.equals(AreaEnum.TZS_AREA.getCode()) ? 1 : 2); specificUnit.setLevel(divisionCode.equals(AreaEnum.CS_HZ.getCode()) ? 1 : 2);
} }
rs.add(specificUnit); rs.add(specificUnit);
} }
...@@ -324,19 +340,19 @@ public class ZyddUserServiceImpl implements ZyddUserService { ...@@ -324,19 +340,19 @@ public class ZyddUserServiceImpl implements ZyddUserService {
} }
return apiResult; return apiResult;
} }
@Value("${url}")
private String url;
@Override @Override
public OapiMessageWorkNotificationResponse sendWorkMessage(String receiverIds) { public boolean sendWorkMessage(SendWorkMessageDTO sendWorkMessageDTO) {
//executableClient保证单例 //executableClient保证单例
IntelligentGetClient intelligentGetClient = appKeyInit.getExecutableClient().newIntelligentGetClient("/message/workNotification"); IntelligentGetClient intelligentGetClient = appKeyInit.getExecutableClient().newIntelligentGetClient("/message/workNotification");
OapiMessageWorkNotificationRequest oapiMessageWorkNotificationRequest = new OapiMessageWorkNotificationRequest(); OapiMessageWorkNotificationRequest oapiMessageWorkNotificationRequest = new OapiMessageWorkNotificationRequest();
//接收者的部门id列表 //接收者的部门id列表
oapiMessageWorkNotificationRequest.setOrganizationCodes(""); oapiMessageWorkNotificationRequest.setOrganizationCodes("");
//接收人用户ID //接收人用户ID
oapiMessageWorkNotificationRequest.setReceiverIds(receiverIds); oapiMessageWorkNotificationRequest.setReceiverIds(sendWorkMessageDTO.getReceiverIds());
//租户ID //租户ID
oapiMessageWorkNotificationRequest.setTenantId("50355510"); oapiMessageWorkNotificationRequest.setTenantId(tenantId+"");
//业务消息id //业务消息id
Random random=new Random(); Random random=new Random();
oapiMessageWorkNotificationRequest.setBizMsgId(random.nextInt()+""); oapiMessageWorkNotificationRequest.setBizMsgId(random.nextInt()+"");
...@@ -345,11 +361,10 @@ public class ZyddUserServiceImpl implements ZyddUserService { ...@@ -345,11 +361,10 @@ public class ZyddUserServiceImpl implements ZyddUserService {
" \"msgtype\": \"action_card\",\n" + " \"msgtype\": \"action_card\",\n" +
" \"action_card\": {\n" + " \"action_card\": {\n" +
" \"title\": \"工作通知发送\",\n" + " \"title\": \"工作通知发送\",\n" +
" \"markdown\": \"测试内容 你好\",\n" + " \"markdown\": \"" + sendWorkMessageDTO.getContent() + "\",\n" +
" \"btn_orientation\": \"1\",\n" + " \"btn_orientation\": \"1\",\n" +
" \"btn_json_list\": [\n" + " \"btn_json_list\": [\n" +
" {\n" + " {\n" +
// " \"title\": \"\",\n" +
" \"action_url\": \" \"\n" + " \"action_url\": \" \"\n" +
" }\n" + " }\n" +
" ]\n" + " ]\n" +
...@@ -361,8 +376,9 @@ public class ZyddUserServiceImpl implements ZyddUserService { ...@@ -361,8 +376,9 @@ public class ZyddUserServiceImpl implements ZyddUserService {
OapiMessageWorkNotificationResponse apiResult = intelligentGetClient.get(oapiMessageWorkNotificationRequest); OapiMessageWorkNotificationResponse apiResult = intelligentGetClient.get(oapiMessageWorkNotificationRequest);
if (!apiResult.getSuccess()){ if (!apiResult.getSuccess()){
log.error("获取信息为:"+JSONObject.toJSONString(apiResult)); log.error("获取信息为:"+JSONObject.toJSONString(apiResult));
return false;
} }
return apiResult; return true;
} }
@Override @Override
......
package com.tykj.zydd.user.utils;
import com.tykj.zydd.misc.util.SpringUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import java.util.Optional;
@Configuration
public class UserIDAuditorBean implements AuditorAware<Integer> {
/**
* 自动填充id
* @return
*/
@Override
public Optional<Integer> getCurrentAuditor() {
//获取当前用户Id并返回
UserUtils userUtils = SpringUtils.getBean("userUtils");
Integer userId = null;
if (userUtils != null) {
userId = userUtils.getCurrentUserId();
}
if (userId != null) {
return Optional.of(userId);
} else {
return Optional.empty();
}
}
}
package com.tykj.zydd.user.utils;
import cn.hutool.core.util.ObjectUtil;
import com.tykj.zydd.user.entity.KxAdmin;
import com.tykj.zydd.user.security.SecurityUser;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
@Component
public class UserUtils {
public static String ANONYMOUS_USER_STRING = "anonymousUser";
public SecurityUser getAuthentication(){
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null) {
Object userObject = authentication.getPrincipal();
if (ANONYMOUS_USER_STRING.equals(userObject)) {
return null;
}
if (userObject instanceof SecurityUser) {
return (SecurityUser) userObject;
} else {
return null;
}
} else {
return null;
}
}
public Integer getCurrentUserId() {
SecurityUser authentication = getAuthentication();
if (authentication != null) {
return authentication.getKxAdmin().getId();
} else {
return null;
}
}
public KxAdmin getCurrentUser() {
SecurityUser authentication = getAuthentication();
if (authentication != null) {
return authentication.getKxAdmin();
} else {
throw new UsernameNotFoundException("当前无用户信息");
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论