LG88888888 3 år sedan
förälder
incheckning
653de851b8
14 ändrade filer med 291 tillägg och 114 borttagningar
  1. 122 46
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java
  2. 5 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  3. 6 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
  4. 22 16
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
  5. 3 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPositionService.java
  6. 4 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
  7. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java
  8. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPositionServiceImpl.java
  9. 1 9
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java
  10. 10 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
  11. 25 37
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/WeixinUserImpl.java
  12. 49 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/UrlData.java
  13. 12 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/WeixinDepart.java
  14. 12 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/WeixinUser.java

+ 122 - 46
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java

@@ -5,6 +5,7 @@ import cn.hutool.crypto.SecureUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.aliyuncs.exceptions.ClientException;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -12,6 +13,8 @@ import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.session.Session;
 import org.apache.shiro.session.mgt.eis.SessionDAO;
 import org.apache.shiro.subject.PrincipalCollection;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
 import org.crazycake.shiro.RedisSessionDAO;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CacheConstant;
@@ -23,6 +26,8 @@ import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.*;
 import org.jeecg.common.util.encryption.EncryptedString;
+import org.jeecg.modules.message.websocket.Chat;
+import org.jeecg.modules.message.websocket.WebSocket;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.model.SysLoginModel;
@@ -30,8 +35,12 @@ import org.jeecg.modules.system.service.ISysDepartService;
 import org.jeecg.modules.system.service.ISysDictService;
 import org.jeecg.modules.system.service.ISysLogService;
 import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecg.modules.system.util.AES;
 import org.jeecg.modules.system.util.RandImageUtil;
+import org.jeecg.modules.system.util.RestTemplateUtil;
 import org.jeecg.modules.system.util.TokenInfo;
+import org.jeecg.modules.system.vo.WeixinUser;
+import org.jeecg.modules.system.vo.WeixinXCX;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -51,6 +60,8 @@ import java.util.*;
 @Api(tags="用户登录")
 @Slf4j
 public class LoginController {
+	@Autowired
+	private RestTemplateUtil restTemplateUtil;
 	@Autowired
 	private ISysUserService sysUserService;
 	@Autowired
@@ -69,6 +80,8 @@ public class LoginController {
 	@Autowired
 	private  SessionDAO sessionDAO;
 
+	@Autowired
+	private WebSocket webSocket;
 
 
 
@@ -153,26 +166,9 @@ public class LoginController {
 	    	//清空用户登录Token缓存
 	    	redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token);
 	    	//清空用户登录Shiro权限缓存
-			//redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId());
+			redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId());
 			//清空用户的缓存信息(包括部门信息),例如sys:cache:user::<username>
-			//redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername()));
-			//清空session缓存
-			List<TokenInfo> taskList = (ArrayList<TokenInfo>) redisUtil.get(sysUser.getId());
-			if (taskList.size()>1){
-				for (TokenInfo t:taskList){
-					if (t.getTokenKey().equals(CommonConstant.PREFIX_USER_TOKEN +token)){
-						taskList.remove(t);
-						System.out.println("销毁session"+t.getSessionId());
-					}
-				}
-				redisUtil.set(sysUser.getId(),taskList);
-			}else{
-				redisUtil.del(sysUser.getId());
-				redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername()));
-				redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId());
-
-			}
-
+			redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername()));
 			//调用shiro的logout
 			SecurityUtils.getSubject().logout();
 
@@ -464,7 +460,7 @@ public class LoginController {
 	 * @throws Exception
 	 */
 	@RequestMapping(value = "/mLogin", method = RequestMethod.POST)
-	public Result<JSONObject> mLogin(@RequestBody SysLoginModel sysLoginModel, HttpSession session) throws Exception {
+	public Result<JSONObject> mLogin(@RequestBody SysLoginModel sysLoginModel, HttpSession session,HttpServletRequest request) throws Exception {
 		Result<JSONObject> result = new Result<JSONObject>();
 		String username = sysLoginModel.getUsername();
 		String password = sysLoginModel.getPassword();
@@ -516,32 +512,6 @@ public class LoginController {
 		List<TokenInfo>list=new ArrayList<>();
 		TokenInfo tokenInfo=new TokenInfo();
 		baseCommonService.addLog("用户名: " + username + ",登录成功[移动端]!", CommonConstant.LOG_TYPE_1, null);
-		Collection<Session> activeSessions = sessionDAO.getActiveSessions();
-		if (!redisUtil.hasKey(sysUser.getId())){
-			tokenInfo.setTokenKey(CommonConstant.PREFIX_USER_TOKEN + token);
-			tokenInfo.setSessionId(session.getId());
-
-			list.add(tokenInfo);
-			redisUtil.set(sysUser.getId(),list);
-
-
-		}else {
-			List<TokenInfo> taskList = (ArrayList<TokenInfo>) redisUtil.get(sysUser.getId());
-			if (taskList.size() ==2) {
-				TokenInfo tokenInfo1 = taskList.get(0);
-				taskList.remove(0);
-				redisUtil.del(tokenInfo1.getTokenKey());
-				tokenInfo.setTokenKey(CommonConstant.PREFIX_USER_TOKEN + token);
-				tokenInfo.setSessionId(session.getId());
-				taskList.add(tokenInfo);
-				redisUtil.set(sysUser.getId(), taskList);
-			} else {
-				tokenInfo.setTokenKey(CommonConstant.PREFIX_USER_TOKEN + token);
-				tokenInfo.setSessionId(session.getId());
-				taskList.add(tokenInfo);
-				redisUtil.set(sysUser.getId(), taskList);
-			}
-		}
 		return result;
 	}
 
@@ -565,5 +535,111 @@ public class LoginController {
 		}
 		return Result.ok();
 	}
+	@RequestMapping(value = "/chatConter")
+	public List<Chat> chatConter(String chatId){
+		String sendUserno = chatId.split("[|]")[1];
+		String userid=chatId.split("[|]")[0];
+		List<Chat> taskList =null;
+		if (redisUtil.hasKey(sendUserno+userid)){
+			taskList=(ArrayList<Chat>)redisUtil.get(sendUserno+userid);
+		}else {
+			taskList=(ArrayList<Chat>)redisUtil.get(userid+sendUserno);
+		}
+		return taskList;
+	}
+
+
+
+
+	/**
+	 * 小程序登录
+	 * @param sysLoginModel
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/xcxLogin", method = RequestMethod.POST)
+	public Result<JSONObject> xcxLogin(@RequestBody SysLoginModel sysLoginModel) throws Exception {
+		Result<JSONObject> result = new Result<JSONObject>();
+		String username = sysLoginModel.getUsername();
+		String password = sysLoginModel.getPassword();
+
+		//1. 校验用户是否有效
+		SysUser sysUser = sysUserService.getUserByName(username);
+		result = sysUserService.checkUserIsEffective(sysUser);
+		if(!result.isSuccess()) {
+			return result;
+		}
+
+		//2. 校验用户名或密码是否正确
+		String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt());
+		String syspassword = sysUser.getPassword();
+		if (!syspassword.equals(userpassword)) {
+			result.error500("用户名或密码错误");
+			return result;
+		}
+
+		String orgCode = sysUser.getOrgCode();
+		if(oConvertUtils.isEmpty(orgCode)) {
+			//如果当前用户无选择部门 查看部门关联信息
+			List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId());
+			if (departs == null || departs.size() == 0) {
+				result.error500("用户暂未归属部门,不可登录!");
+				return result;
+			}
+			orgCode = departs.get(0).getOrgCode();
+			sysUser.setOrgCode(orgCode);
+			this.sysUserService.updateUserDepart(username, orgCode);
+		}
+		JSONObject obj = new JSONObject();
+		//用户登录信息
+		obj.put("userInfo", sysUser);
+
+		// 生成token
+		String token = JwtUtil.sign(username, syspassword);
+		// 设置超时时间
+		redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token);
+		redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME*2 / 1000);
+
+		//token 信息
+		obj.put("token", token);
+		result.setResult(obj);
+		result.setSuccess(true);
+		result.setCode(200);
+		baseCommonService.addLog("用户名: " + username + ",登录成功[小程序]!", CommonConstant.LOG_TYPE_1, null);
+
+
+		return result;
+	}
+
+
+	/**
+	 * 小程序微信快捷登录
+	 * @param sysLoginModel
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "/kjLogin", method = RequestMethod.POST)
+	public Result<JSONObject> kjLogin(@RequestBody WeixinXCX weixinXCX) throws Exception {
+		Result<JSONObject> result = new Result<JSONObject>();
+		JSONObject obj = new JSONObject();
+		String tokenUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code";
+		tokenUrl = tokenUrl.replace("APPID","wx4a24204875735130").replace("SECRET","09316748df749be5f0232c0b280a0f8f").replace("JSCODE", weixinXCX.getCode());
+		ObjectMapper mapper = new ObjectMapper();
+		WeixinXCX weixinXCX1 = mapper.readValue(restTemplateUtil.doGet(tokenUrl).getBody(), new TypeReference<WeixinXCX>() {
+		});
+		String phoneNumber = null;
+
+		cn.hutool.json.JSONObject userencryptedData = AES.wxDecrypt(weixinXCX.getEncryptedData(),weixinXCX1.getSession_key(),weixinXCX.getIv());
+		if (StringUtils.isNotBlank((String) userencryptedData.get("phoneNumber"))){
+			phoneNumber = (String) userencryptedData.get("phoneNumber");
+		}
+		SysUser sysUser = sysUserService.getUserByPhone(phoneNumber);
+		result = sysUserService.checkUserIsEffective(sysUser);
+		if(!result.isSuccess()) {
+			return result;
+		}
+		userInfo(sysUser, result);
+		return result;
+	}
 
 }

+ 5 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -377,8 +377,11 @@ public class SysUserController {
         String  str = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"));
         Vacation vacations = vacationMapper.queryList(id, "1");
         Vacation vacationst = vacationMapper.queryList(id, "4");
-        if(vacationst!=null){
-            vacations.setLeaveDate(vacationst.getAvailableDay());
+        if(null!=vacationst&&!vacationst.equals("")){
+            if (vacations!=null){
+                vacations.setLeaveDate(vacationst.getAvailableDay());
+
+            }
         }
        
         String querymoth = attendanceService.querymoth(id, str);

+ 6 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java

@@ -179,4 +179,10 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 	int editUser(@Param("id")String id,@Param("avat")String avat);
 
 	 int  student(@Param("list") List<Student> list);
+
+	 //根据id查询所有用户(删除,未删除)
+	 SysUser getOnes(@Param("id")String id);
+
+	 //根据用户id删除部门中间表数据
+	 int delUserByUserID(@Param("userid")String userid);
 }

+ 22 - 16
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml

@@ -150,8 +150,14 @@
 	<delete id="deleteLogicDeleted">
 		DELETE FROM sys_user WHERE del_flag = 1 AND id IN (${userIds})
 	</delete>
+	<delete id="delUserByUserID">
+		delete from sys_user_depart where 1=1
+	<if test="userid!=null and ''!=userid">
+		and user_id=#{userid}
+	</if>
+	</delete>
 
-    <!-- 更新空字符串为null -->
+	<!-- 更新空字符串为null -->
     <update id="updateNullByEmptyString">
         UPDATE sys_user SET ${fieldName} = NULL WHERE ${fieldName} = ''
     </update>
@@ -191,11 +197,11 @@
 	<select id="departCount" resultType="org.jeecg.modules.system.entity.SysUser">
 			select a.id as 'departId',b.orgCodeTxt as 'orgCodeTxt',b.count as 'count' from sys_depart a
 		right join (
-		select d.depart_name as 'orgCodeTxt' ,count(ud.user_id) as 'count' from sys_depart d
+		select d.depart_name as 'orgCodeTxt' ,count(s.id) as 'count' from sys_depart d
 		left join sys_user_depart ud
 		on d.id=ud.dep_id
 		left join sys_user s
-		on ud.user_id=s.id where 1=1
+		on ud.user_id=s.id and s.del_flag=0 where d.del_flag=0
 		<if test="departName!=null and ''!=departName">
 			and d.depart_name like concat(concat('%',#{departName}),'%')
 		</if>
@@ -210,22 +216,14 @@ on a.depart_name=b.orgCodeTxt
 		select id as 'id',depart_name as 'departName' from sys_depart where parent_id=''
 	</select>
 	<select id="departUser" resultType="org.jeecg.modules.system.entity.SysUser">
-		select d.depart_name as'orgCodeTxt',
-		s.id as'id',s.username as'username',s.realname as'realname',
-		p.name as'post',s.avatar as 'avatar'
-		from sys_user_depart ud
-		left join sys_depart d
-		on d.id = ud.dep_id
-		left join sys_user s
-		on ud.user_id=s.id
-		left join sys_position p
-		on s.post=p.code
-		where 1=1
+		select c.depart_name as'orgCodeTxt', a.id as'id',a.username as'username',a.realname as'realname', d.name as'post',a.avatar as 'avatar'
+		from sys_user a left join  sys_user_depart  b on a.id=b.user_id left join sys_depart c on b.dep_id=c.id  left
+		join sys_position d on a.post=d.code where a.del_flag='0' and   c.del_flag='0'
 		<if test="departId!=null and ''!=departId">
-		 and 	d.id=#{departId}
+			and 	c.id=#{departId}
 		</if>
 		<if test="name!=null and ''!=name">
-		 and	s.realname like concat(concat('%',#{name}),'%')
+			and	a.realname like concat(concat('%',#{name}),'%')
 		</if>
 	</select>
 	<select id="queryTeamUser" resultType="org.jeecg.modules.system.entity.SysUser">
@@ -267,4 +265,12 @@ on a.depart_name=b.orgCodeTxt
 			 and  user_id=#{userid}
 		 </if>
 	</select>
+	<select id="getOnes" resultType="org.jeecg.modules.system.entity.SysUser">
+		SELECT id,username,realname,password,salt,avatar,birthday,sex,email,phone,org_code,status,del_flag,work_no,post,telephone,create_by,create_time,update_by,update_time,activiti_sync,user_identity,depart_ids,rel_tenant_ids,client_id,eg_name,birth_date,entry_date,urgent_name,urgent_phone
+		FROM sys_user
+		WHERE 1=1
+		<if test="id!=null and ''!=id">
+		 and 	id=#{id}
+		</if>
+	</select>
 </mapper>

+ 3 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPositionService.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.system.entity.SysPosition;
 
 /**
@@ -10,5 +11,7 @@ import org.jeecg.modules.system.entity.SysPosition;
  * @Version: V1.0
  */
 public interface ISysPositionService extends IService<SysPosition> {
+    //根据获取企业微信的职位名称查询对应code值
+    String getOne(String name);
 
 }

+ 4 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -282,6 +282,10 @@ public interface ISysUserService extends IService<SysUser> {
 //查询部门id
 List<String>  departIds(String userid);
 
+	//根据id查询所有用户(删除,未删除)
+	SysUser getOnes(String id);
 
+	//根据用户id删除部门中间表数据
+	int delUserByUserID(String userid);
 
 }

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java

@@ -467,7 +467,7 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
 	public Boolean saveDepart(SysDepart sysDepart) {
 		SysDepart byId = super.getById(sysDepart.getId());
 		if (byId!=null){
-			return	super.updateById(sysDepart);
+			return	super.updateById(byId);
 		}else {
 			return	super.save(sysDepart);
 		}

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPositionServiceImpl.java

@@ -1,9 +1,12 @@
 package org.jeecg.modules.system.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.util.PasswordUtil;
 import org.jeecg.modules.system.entity.SysPosition;
 import org.jeecg.modules.system.mapper.SysPositionMapper;
 import org.jeecg.modules.system.service.ISysPositionService;
+import org.jeecg.modules.system.util.UrlData;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -14,5 +17,21 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class SysPositionServiceImpl extends ServiceImpl<SysPositionMapper, SysPosition> implements ISysPositionService {
+    @Autowired
+    private  SysPositionMapper positionMapper;
 
+    @Override
+    public String getOne(String name) {
+        String one = positionMapper.getOne(name);
+        if (one!=null&&!one.equals("")){
+            return one;
+        }else{
+            SysPosition position=new SysPosition();
+            position.setName(name);
+            position.setCode(UrlData.getPingYin(name));
+            boolean save = super.save(position);
+            return UrlData.getPingYin(name);
+        }
+
+    }
 }

+ 1 - 9
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java

@@ -133,15 +133,7 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S
 
 	@Override
 	public Boolean saveUserDepart(SysUserDepart sysUserDepart) {
-		SysUserDepart one = sysUserDepartMapper.getOne(sysUserDepart.getUserId(), sysUserDepart.getDepId());
-		if (one!=null){
-			sysUserDepart.setId(one.getId());
-			return	super.updateById(sysUserDepart);
-		}else {
-			return	super.save(sysUserDepart);
-		}
-
-
+		return	super.save(sysUserDepart);
 	}
 
 	@Override

+ 10 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -499,7 +499,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	//企业微信接口拉取数据增加用户方法
 	@Override
 	public Boolean add(SysUser sysUser) {
-		SysUser byId = super.getById(sysUser.getId());
+		SysUser byId = this.getOnes(sysUser.getId());
 		if (byId!=null &&!byId.equals("")){
 			return super.updateById(sysUser);
 		}else {
@@ -512,7 +512,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 			// 密码加密加盐
 			String salt = oConvertUtils.randomGen(8);
 			sysUser.setSalt(salt);
-			sysUser.setUsername(UrlData.getPinYinFirst(sysUser.getRealname()));
+			sysUser.setUsername(UrlData.getPingYin(sysUser.getRealname()));
 			String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), sysUser.getPassword(), salt);
 			sysUser.setPassword(passwordEncode);
 			return this.save(sysUser);
@@ -531,7 +531,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		return userMapper.departIds(userid);
 	}
 
+	@Override
+	public SysUser getOnes(String id) {
+		return userMapper.getOnes(id);
+	}
 
+	@Override
+	public int delUserByUserID(String userid) {
+		return userMapper.delUserByUserID(userid);
+	}
 
 
 }

+ 25 - 37
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/WeixinUserImpl.java

@@ -69,13 +69,14 @@ public class WeixinUserImpl implements IWeixinUserService{
     @Autowired
     private SysPositionMapper sysPositionMapper;
 
+    @Autowired
+    private  ISysPositionService positionService;
+
     @Autowired
     private RedisUtil redisUtil;
 
     @Override
     public Map<String, Object> pullData() throws IOException {
-        int depCount = 0;//拉取企业微信部门数据成功的数量
-        int depErrCount = 0;//拉取企业微信部门数据失败的数量
         int userCount = 0;//拉取企业微信用户数据成功的数量
         int userErrCount = 0;//拉取企业微信用户数据失败的数量
         String msg = "";//返回结果码
@@ -119,12 +120,6 @@ public class WeixinUserImpl implements IWeixinUserService{
                     sysDepart.setCreateTime(new Date());
                     sysDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
                     Boolean aBoolean = sysDepartService.saveDepart(sysDepart);
-                    if (aBoolean) {
-                        userCount++;
-                    } else {
-                        userErrCount++;
-                    }
-
                 }
             }
             msg = errcode;
@@ -153,13 +148,21 @@ public class WeixinUserImpl implements IWeixinUserService{
                     sysUser.setStatus(1);
                     sysUser.setCreateTime(new Date());
                     if (!"".equals(ls.getPosition())&&ls.getPosition()!=null){
-                        String one = sysPositionMapper.getOne(ls.getPosition());
+                        String one = positionService.getOne(ls.getPosition());
                         if (!"".equals(one)&&one!=null){
                             sysUser.setPost(one);
                         }
                     }
+                    String userIden="1";
+                    if (ls.getIs_leader_in_dept()!=null&&ls.getIs_leader_in_dept().length>0){
+                        if (ls.getIs_leader_in_dept()[0].equals("1")||ls.getIs_leader_in_dept()[0]=="1"){
+                            userIden="2";
+                        }
+                    }
+                    sysUser.setUserIdentity(Integer.parseInt(userIden));
                     String[] department = ls.getDepartment();
                     if (department.length > 0) {
+                        sysUserService.delUserByUserID(ls.getUserid());
                         for (String depId : department) {
                             SysUserDepart sysUserDepart = new SysUserDepart();
                             sysUserDepart.setUserId(ls.getUserid());
@@ -193,10 +196,9 @@ public class WeixinUserImpl implements IWeixinUserService{
     @Override
     public Map<String, Object> synchronizationWeixin(String id, String type, String typeGo) throws IOException, InterruptedException {
         long startTime = System.currentTimeMillis(); // 获取开始时间
-        int count = 0;//同步到企业微信数据成功的数量
-        int errCount = 0;//同步到企业微信数据失败的数量
-        List<Future<String>> l = new ArrayList<Future<String>>();
-       ExecutorService es = Executors.newFixedThreadPool(20);
+        //int count = 0;//同步到企业微信数据成功的数量
+       // int errCount = 0;//同步到企业微信数据失败的数量
+        String msg="";
         Map<String, Object> map = Maps.newHashMap();
         try{
             SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
@@ -223,22 +225,15 @@ public class WeixinUserImpl implements IWeixinUserService{
                     idents.add(userIdent);
                 }
             }
-/*
-           new Thread(new Test(sysUserService,ls.getId(),ls.getRealname(),ls.getEgName(),ls.getPhone(),userDepart,ls.getPost(),ls.getSex().toString(),ls.getEmail(),ls.getTelephone(),ls.getStatus().toString(),idents)).start();
-*/
-/*Test test = new Test(sysUserService,ls.getId(),ls.getRealname(),ls.getEgName(),ls.getPhone(),userDepart,ls.getPost(),ls.getSex().toString(),ls.getEmail(),ls.getTelephone(),ls.getStatus().toString(),idents);
-pool.submit(test);*/
-                    resultList.add(es.submit(new FatureTest(sysUserService,ls.getId(),ls.getRealname(),ls.getEgName(),ls.getPhone(),userDepart,ls.getPost(),ls.getSex().toString(),ls.getEmail(),ls.getTelephone(),ls.getStatus().toString(),idents,c)));
-                    idents=new ArrayList<>();
-            /*   String postName = "";
-            if (ls.getPost() == null || ls.getPost().equals("")) {
-                postName = "";
-            } else {
+//                    resultList.add(es.submit(new FatureTest(sysUserService,ls.getId(),ls.getRealname(),ls.getEgName(),ls.getPhone(),userDepart,ls.getPost(),ls.getSex().toString(),ls.getEmail(),ls.getTelephone(),ls.getStatus().toString(),idents,c)));
+//                    idents=new ArrayList<>();
+               String postName = "";
+            if (ls.getPost() != null&&!ls.getPost().equals("")) {
                 postName = sysUserService.getPostName(ls.getPost());
             }
             params.put("userid", ls.getId());
             params.put("name", ls.getRealname());
-            params.put("alias", ls.getEgName());
+           // params.put("alias", ls.getEgName());
             params.put("mobile", ls.getPhone());
             params.put("department", userDepart);
             params.put("position", postName);
@@ -246,9 +241,7 @@ pool.submit(test);*/
             params.put("email", ls.getEmail());
             params.put("telephone", ls.getTelephone());
             params.put("enable", ls.getStatus());
-
             params.put("is_leader_in_dept", idents);
-
             String createDeptUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=" + token + "&userid=" + ls.getId();
             String res = MyHttpUtils.httpPutRequestWithJson(createDeptUrl, headers, null);
             Map mapTypes = null;
@@ -266,24 +259,20 @@ pool.submit(test);*/
             idents=new ArrayList<>();
             mapTypes = JSON.parseObject(s);
             errcode = mapTypes.get("errcode").toString();
-            if (errcode.equals("0")) {
-                count++;
-            } else {
-                errCount++;
-            }*/
         }
-                c.await();
             }
-            /*pool.shutdown();*/
+            msg="ok";
         }catch (Exception e){
+            msg="err";
             e.printStackTrace();
+
         }
         long endTime = System.currentTimeMillis(); // 获取结束时间
         Double st = (endTime - startTime) / 1000.0;
         String s = st.toString();
         Datatb datatb = new Datatb();
         String state = "1";
-        if (errCount == 0) {
+        if (msg.equals("ok")) {
             state = "0";
         }
         datatb.setState(state);
@@ -294,8 +283,7 @@ pool.submit(test);*/
         datatb.setTime(s);
         datatbService.saveData(datatb);
         System.out.println("程序总运行时间: " + (endTime - startTime) / 1000.0 + "s" + (endTime - startTime));
-        map.put("count", count);
-        map.put("errcount", errCount);
+        map.put("msg", msg);
         return map;
 
     }

+ 49 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/UrlData.java

@@ -3,6 +3,11 @@ package org.jeecg.modules.system.util;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
@@ -82,7 +87,6 @@ public class UrlData {
     }
     //获取返回的结果集并把access_token取出来
     protected static String toAuth(String Get_Token_Url) throws IOException {
-
         CloseableHttpClient aDefault = HttpClients.createDefault();
         HttpGet  httpGet = new HttpGet(Get_Token_Url);
         CloseableHttpResponse response = aDefault.execute(httpGet);
@@ -116,6 +120,50 @@ public class UrlData {
         return convert;
     }
 
+    public static String getPingYin(String src) {
+        char[] t1 = null;
+
+        t1 = src.toCharArray();
+
+        String[] t2 = new String[t1.length];
+
+        HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
+
+        t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+
+        t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+
+        t3.setVCharType(HanyuPinyinVCharType.WITH_V);
+
+        String t4 = "";
+
+        int t0 = t1.length;
+
+        try {
+            for (int i = 0; i < t0; i++) {
+        // 判断是否为汉字字符
+
+                if (java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
+                    t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
 
+                    t4 += t2[0];
+
+                } else {
+                    t4 += java.lang.Character.toString(t1[i]);
+
+                }
+
+            }
+
+            return t4;
+
+        } catch (BadHanyuPinyinOutputFormatCombination e1) {
+            e1.printStackTrace();
+
+        }
+
+        return t4;
+
+    }
 
 }

+ 12 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/WeixinDepart.java

@@ -1,5 +1,8 @@
 package org.jeecg.modules.system.vo;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class WeixinDepart {
 
     private  String errcode;//返回码
@@ -16,6 +19,15 @@ public class WeixinDepart {
 
     private  String order;//排序
 
+    private List<Object>department_leader=new ArrayList<>();
+
+    public List<Object> getDepartment_leader() {
+        return department_leader;
+    }
+
+    public void setDepartment_leader(List<Object> department_leader) {
+        this.department_leader = department_leader;
+    }
 
     public WeixinDepart(){
 

+ 12 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/WeixinUser.java

@@ -1,5 +1,8 @@
 package org.jeecg.modules.system.vo;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class WeixinUser<extattr> {
     private  String errcode;//返回码
     private  String errmsg;//对返回码的文本描述内容
@@ -28,6 +31,15 @@ public class WeixinUser<extattr> {
     private  String []external_attr;
     private  String external_corp_name;
     private  String open_userid;
+    private List<Object> direct_leader=new ArrayList<>();
+
+    public List<Object> getDirect_leader() {
+        return direct_leader;
+    }
+
+    public void setDirect_leader(List<Object> direct_leader) {
+        this.direct_leader = direct_leader;
+    }
 
     public String getOpen_userid() {
         return open_userid;