You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

230 lines
7.6 KiB

package com.eco.plugin.xx.zcgjsync.utils;
import com.eco.plugin.xx.zcgjsync.bean.UserEntity;
import com.eco.plugin.xx.zcgjsync.config.PluginSimpleConfig;
import com.eco.plugin.xx.zcgjsync.kit.DepartmentServiceKit;
import com.eco.plugin.xx.zcgjsync.kit.UserServiceKit;
import com.fr.decision.authority.data.User;
import com.fr.decision.webservice.bean.user.UserBean;
import java.util.UUID;
/**
* 机构操作类
*/
public class UserUtils {
private static String success = "S";
private static String fail = "F";
private static String duplicate = "添加用户失败,已存在相同的用户名称";
private static String unknown = "未知异常";
private static String successMsg = "操作成功";
private static String notExist = "您操作的用户不存在";
private static String authFail = "鉴权失败";
public static String operUser(String xml,String token){
PluginSimpleConfig psc = PluginSimpleConfig.getInstance();
UserEntity userEntity = getUserBean(xml);
try {
AuthUtils.auth(token,System.currentTimeMillis(), psc);
} catch (Exception e) {
return getResultXml(userEntity.getID(),fail,authFail+";"+e.getMessage());
}
String operType = userEntity.getFROMOPERTYPE();
UserServiceKit kit = UserServiceKit.getInstance();
//新增或启用
if("1".equals(operType)){
return addUser(userEntity,kit);
}
//修改
if("2".equals(operType)){
return updateUser(userEntity,kit);
}
User user = null;
try {
user = FRUserUtils.getUserByUserName(userEntity.getNO());
} catch (Exception e) {
return getResultXml(userEntity.getID(),fail,unknown+e.getMessage());
}
//停用
if("3".equals(operType)){
try {
FRUserUtils.forbidUser(user.getId(),false);
} catch (Exception e) {
return getResultXml(userEntity.getID(),fail,"停用用户失败");
}
return getResultXml(userEntity.getID(),success,successMsg);
}
//启用
if("4".equals(operType)){
try {
FRUserUtils.forbidUser(user.getId(),true);
} catch (Exception e) {
return getResultXml(userEntity.getID(),fail,"启用用户失败");
}
return getResultXml(userEntity.getID(),success,successMsg);
}
return getResultXml(userEntity.getID(),fail,"未识别的操作类型FROMOPERTYPE:"+operType);
}
/**
* 删除机构
* @param userEntity
* @param kit
* @return
*/
private static String deleteUser(UserEntity userEntity, DepartmentServiceKit kit){
try {
User user = FRUserUtils.getUserByUserName(userEntity.getNO());
if(user == null || Utils.isNullStr(user.getId())){
return getResultXml(userEntity.getID(),fail,notExist);
}
FRUserUtils.deleteUser(user);
} catch (Exception e) {
return getResultXml(userEntity.getID(),fail,unknown+e.getMessage());
}
return getResultXml(userEntity.getID(),success,successMsg);
}
/**
* 修改用户
* @param userEntity
* @param kit
* @return
*/
private static String updateUser(UserEntity userEntity, UserServiceKit kit){
try {
User user = FRUserUtils.getUserByUserName(userEntity.getNO());
if(user == null || Utils.isNullStr(user.getId())){
return getResultXml(userEntity.getID(),fail,notExist);
}
UserBean userBean = userEntityToBean(userEntity);
userBean.setId(user.getId());
kit.editUser(userBean,"");
FRUserUtils.clearUserDepAndPost(user.getId());
FRUserUtils.updateDepartmentPostUsers(userEntity.getIU_LSSJDW_ID(),"",user.getId());
} catch (Exception e) {
return getResultXml(userEntity.getID(),fail,unknown+e.getMessage());
}
return getResultXml(userEntity.getID(),success,successMsg);
}
/**
* 添加用户
* @param userEntity
* @param kit
* @return
*/
private static String addUser(UserEntity userEntity, UserServiceKit kit){
try {
User user = FRUserUtils.getUserByUserName(userEntity.getNO());
if(user != null && !Utils.isNullStr(user.getId())){
return getResultXml(userEntity.getID(),fail,duplicate);
}
UserBean userBean = userEntityToBean(userEntity);
kit.addUser(userBean);
//更新用户状态
String userid = userBean.getId();
FRUserUtils.forbidUser(userid,"1".equals(userEntity.getSTATUS()));
//设置用户组织机构
String orgid = userEntity.getIU_LSSJDW_ID();
if(Utils.isNotNullStr(orgid)){
FRUserUtils.updateDepartmentPostUsers(orgid,"",userid);
}
} catch (Exception e) {
return getResultXml(userEntity.getID(),fail,unknown+e.getMessage());
}
return getResultXml(userEntity.getID(),success,successMsg);
}
/**
*
* @param userEntity
* @return
*/
private static UserBean userEntityToBean(UserEntity userEntity){
UserBean userBean = new UserBean();
userBean.setId(UUID.randomUUID().toString());
userBean.setPassword("sinoma123");
userBean.setUsername(userEntity.getNO());
userBean.setRealName(userEntity.getNAME());
userBean.setEmail(userEntity.getEMAIL());
userBean.setMobile(userEntity.getTELEPHONE());
return userBean;
}
/**
* 获取返回报文
* @param id
* @param status
* @param msg
* @return
*/
private static String getResultXml(String id,String status,String msg){
String resultXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<document>\n" +
" <info>\n" +
" <id>#id</id>\n" +
" <status>#status</status>\n" +
" <type>1</type>\n" +
" <mesg>#msg</mesg>\n" +
" </info>\n" +
"</document>";
return resultXml.replace("#id",id).replace("#status",status).replace("#msg",msg);
}
/**
* 从xml报文解析userBean实体
* @param xmltext
* @return
*/
private static UserEntity getUserBean(String xmltext){
String ID = xmltext.substring(xmltext.indexOf("<ID>")+4,xmltext.indexOf("</ID>"));
String FROMOPERTYPE = xmltext.substring(xmltext.indexOf("<FROMOPERTYPE>")+14,xmltext.indexOf("</FROMOPERTYPE>"));
String STATUS = xmltext.substring(xmltext.indexOf("<STATUS>")+8,xmltext.indexOf("</STATUS>"));
String NAME = xmltext.substring(xmltext.indexOf("<NAME>")+6,xmltext.indexOf("</NAME>"));
String NO = xmltext.substring(xmltext.indexOf("<NO>")+4,xmltext.indexOf("</NO>"));
String EMAIL = xmltext.substring(xmltext.indexOf("<EMAIL>")+7,xmltext.indexOf("</EMAIL>"));
String TELEPHONE = xmltext.substring(xmltext.indexOf("<TELEPHONE>")+11,xmltext.indexOf("</TELEPHONE>"));
String IU_LSSJDW_ID = xmltext.substring(xmltext.indexOf("<IU_LSSJDW_ID>")+14,xmltext.indexOf("</IU_LSSJDW_ID>"));
UserEntity ub = new UserEntity();
ub.setID(ID);
ub.setFROMOPERTYPE(FROMOPERTYPE);
ub.setSTATUS(STATUS);
ub.setNAME(NAME);
ub.setNO(NO);
ub.setEMAIL(EMAIL);
ub.setTELEPHONE(TELEPHONE);
ub.setIU_LSSJDW_ID(IU_LSSJDW_ID);
return ub;
}
}