| 
					
				 | 
			
			
				@ -1,10 +1,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.healthyhouse.service.user; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.exception.business.ManageException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.constant.LoginInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.dao.UserDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.model.user.User; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.wlyy.HouseUserContant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.security.MD5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.domain.Page; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -16,11 +18,9 @@ import org.springframework.util.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springside.modules.persistence.DynamicSpecifications; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springside.modules.persistence.SearchFilter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.persistence.criteria.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.transaction.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.UUID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @author HZY 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -32,11 +32,11 @@ public class UserService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private UserDao userDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public User findById(String id){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public User findById(String id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return userDao.findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public User findByCode(String code){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public User findByCode(String code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return userDao.findByLoginCode(code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -46,15 +46,16 @@ public class UserService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *  分页获取用户列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 分页获取用户列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param pageSize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws ManageException 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Page<User> userList(Integer page, Integer pageSize, Map<String,String> map,String order)throws ManageException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         order = order == null ? "ASC" :order; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Page<User> userList(Integer page, Integer pageSize, Map<String, String> map, String order) throws ManageException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        order = order == null ? "ASC" : order; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Sort sort = new Sort(Sort.Direction.DESC, "facilityUsedCount"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 分页信息 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -89,40 +90,43 @@ public class UserService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 更改用户状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param id            待删除id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param userCode     修改者code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param status        更改状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param reason        更改状态原因 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param id       待删除id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param userCode 修改者code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param status   更改状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param reason   更改状态原因 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void updateStatus(String id, String userCode,Integer status,String reason) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void updateStatus(String id, String userCode, Integer status, String reason) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        User user = userDao.findByLoginCode(userCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String userName = user.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            User user1 = findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            user1.setActivated(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            user1.setActivatedContent(reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        User user1 = findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        user1.setActivated(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        user1.setActivatedContent(reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (user != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String userName = user.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            user1.setUpdateUserName(userName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            user1.setUpdateUser(userCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            userDao.save(user1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        user1.setUpdateUser(userCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        userDao.save(user1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *  新增/修改用户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param user      用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param userCode  操作者编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 新增/修改用户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param user     用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param userCode 操作者编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws ManageException 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop saveOrUpdate(User user, String userCode) throws ManageException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        User loginUser = userDao.findByLoginCode(userCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(user.getId()==null){//保存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (user.getId() == null) {//保存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //判断登陆账号是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            User user1 = userDao.findByLoginCode(userCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(user1!=null){//登陆账号已存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (user1 != null) {//登陆账号已存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new ManageException("该登陆账号已存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String salt = UUID.randomUUID().toString().replaceAll("-",""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String salt = UUID.randomUUID().toString().replaceAll("-", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            user.setSalt(salt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String password = MD5.GetMD5Code(user.getPassword() + salt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            user.setPassword(password); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -131,8 +135,8 @@ public class UserService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            user.setActivated(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            userDao.save(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getSuccess("保存成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else{//修改 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (loginUser!=null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else {//修改 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (loginUser != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String userName = loginUser.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                user.setUpdateUserName(userName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -142,7 +146,50 @@ public class UserService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void updateFacilityUse(String id, String facilityId) throws ManageException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        User user1 = findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (user1==null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new ManageException("该账号不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        user1.setFacilityUsedCount(user1.getFacilityUsedCount()+1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        userDao.save(user1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //TODO 设施的使用次数更新 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取 用户统计信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Map<String, Long> findUserStatistics() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Long> result = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //用户总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long totalCount = userDao.countAllByUserType(LoginInfo.USER_TYPE_PATIENT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //今日新增数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date start = DateUtil.getDateStart(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date end = DateUtil.getDateEnd(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long newCount = userDao.countAllByCreateTimeBetween(start, end); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //在线用户数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long activeCount = userDao.countAllByActivated(HouseUserContant.activated_active); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //用户设施使用总次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long usePricilityCount = sumFacilityCount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("totalCount",totalCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("newCount",newCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("activeCount",activeCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("activeCount",activeCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 用户使用设施次数总和 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Long sumFacilityCount(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long aLong = userDao.sumFacilityUseCout(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return aLong; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |