| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 | 
							- package com.iamberry.app.service;
 
- import static com.iamberry.app.config.ImberryConfig.BASE_URL;
 
- import java.text.MessageFormat;
 
- import java.util.Date;
 
- import org.apache.commons.lang3.StringUtils;
 
- import org.slf4j.Logger;
 
- import org.slf4j.LoggerFactory;
 
- import org.springframework.dao.DuplicateKeyException;
 
- import org.springframework.stereotype.Service;
 
- import org.springframework.transaction.annotation.Transactional;
 
- import com.iamberry.app.config.Constants;
 
- import com.iamberry.app.config.ImberryConfig;
 
- import com.iamberry.app.core.dto.RemoteIpInfoDTO;
 
- import com.iamberry.app.core.dto.UserDTO;
 
- import com.iamberry.app.core.entity.User;
 
- import com.iamberry.app.face.UserService;
 
- import com.iamberry.app.tool.util.AES;
 
- import com.iamberry.app.tool.util.HttpUtility;
 
- import com.iamberry.app.tool.util.MD5;
 
- import com.iamberry.app.tool.util.TuyaConnector;
 
- import com.iamberry.app.ulitity.Utility;
 
- /**
 
-  * UserService
 
-  *
 
-  * @author Moon Cheng
 
-  * @date 2016年3月23日 上午11:33:29
 
-  */
 
- @Service
 
- public class UserServiceImpl extends BaseService implements UserService {
 
- 	
 
- 	private Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
 
- 	/**
 
- 	 * register
 
- 	 *
 
- 	 * @author Moon Cheng
 
- 	 * @param phone 电话号码
 
- 	 * @param password 密码
 
- 	 * @param ip ip地址
 
- 	 * @return User Information
 
- 	 */
 
- 	@Transactional
 
- 	public User register(String phone, String password, String ip) {
 
- 		String areacode = StringUtils.substringBefore(phone, ","); 
 
- 		phone = StringUtils.substringAfter(phone, ",");
 
- 		User user = new User(phone, MD5.md5(password), new Date(), Constants.USER_ACTIVE);
 
- 		
 
- 		user.setDisplay_name("Iamberry");
 
- 		user.setStatus_(Constants.USER_ACTIVE);
 
- 		user.setBaby_dob(Utility.formatStringToDate("yyyy-MM-dd", "1970-1-1"));
 
- 		RemoteIpInfoDTO dto = getLocation(ip);
 
- 		if (dto != null) {
 
- 			try {
 
- 				user.setLocation(dto.getCity());
 
- 			} catch (Exception e) {
 
- 				user.setLocation("未知");
 
- 			}
 
- 		}
 
- 		user.setCountry_code(areacode);
 
- 		user.setCreated_on(new Date());
 
- 		userMapper.insertUser(user);
 
- 		String token = getEncToken(user.getId());
 
- 		userMapper.updateUserToken(token, user.getId());
 
- 		user.setToken(token);
 
- 		user.setPassword(null);
 
- 		return user;
 
- 	}
 
- 	/**
 
- 	 * thirdPartBindingPhone
 
- 	 * @param phone
 
- 	 * @param openId
 
- 	 * @return
 
- 	 */
 
- 	public User thirdPartBindingPhone(String phone, String openId) {
 
- 		User user = userMapper.selectUserByExtOpenId(openId);
 
- 		if (user == null) {
 
- 			return null;
 
- 		}
 
- 		
 
- 		String areacode = StringUtils.substringBefore(phone, ",");
 
- 		phone = StringUtils.substringAfter(phone, ",");
 
- 		
 
- 		try {
 
- 			int status = userMapper.updateUserNameAndCountry(phone,areacode, user.getId());
 
- 			if (status > 0) {
 
- 				
 
- 				user.setUsername(phone);
 
- 				user.setPassword(null);
 
- 			} else {
 
- 				return null;
 
- 			}
 
- 			return user;
 
- 		} catch (DuplicateKeyException e) { // 报错,触发数据库唯一约束错误,系统捕获,而后对获取数据重头再来
 
- 			user.setPassword("EXTIES");
 
- 			logger.info("userinfo:" + user.toString());
 
- 			return user;
 
- 		}
 
- 	}
 
- 	/**
 
- 	 * findById
 
- 	 * @param id
 
- 	 * @return User
 
- 	 */
 
- 	public User findById(Long id) {
 
- 		User user = userMapper.selectUserById(id);
 
- 		user.setPassword(null);
 
- 		return user;
 
- 	}
 
- 	/**
 
- 	 * login
 
- 	 *
 
- 	 * @param phone
 
- 	 * @param password
 
- 	 * @param userAgent
 
- 	 * @return
 
- 	 */
 
- 	public Object login(String phone, String password) {
 
- 		User user = userMapper.selectUserByUsername(phone);
 
- 		if (user == null) {
 
- 			return -1;
 
- 		}
 
- 		user = userMapper.validateUser(phone, MD5.md5(password));
 
- 		if (user == null) {
 
- 			return -2;
 
- 		}
 
- 		if (Constants.USER_INACTIVE.equals(user.getStatus_())) {
 
- 			return -3;
 
- 		}
 
- 		String token = getEncToken(user.getId());
 
- 		userMapper.updateUserToken(token, user.getId());
 
- 		user.setToken(token);
 
- 		user.setPassword(null);
 
- 		return tuyaConnect(user);
 
- 	}
 
- 	/**
 
- 	 * thirdPartLogin
 
- 	 *
 
- 	 * @param openId
 
- 	 * @param extType
 
- 	 * @param extName
 
- 	 * @param extPicture
 
- 	 * @return
 
- 	 */
 
- 	public User thirdPartLogin(String openId, String extType, String extName, String extPicture, String ip) {
 
- 		
 
- 		User user = userMapper.selectUserByExtOpenId(openId);
 
- 		if (user == null) {
 
- 			user = new User(openId, MD5.md5(String.valueOf(System.currentTimeMillis())), new Date(), Constants.USER_ACTIVE);
 
- 			user.setExt_open_id(openId);
 
- 			user.setExt_type(extType);
 
- 			user.setBaby_dob(Utility.formatStringToDate("yyyy-MM-dd", "1970-1-1"));
 
- 			user.setIs_perfect_user(1);//是否完善用户信息 1.未完善。2.已完善
 
- 			user.setDisplay_name(extName.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", "*"));
 
- 			RemoteIpInfoDTO dto = getLocation(ip);
 
- 			if (dto != null) {
 
- 				user.setLocation(dto.getCity());
 
- 			}
 
- 			//user.setCountry_code(areacode);
 
- 			user.setDisplay_picture(extPicture);
 
- 			userMapper.insertUser(user);
 
- 		}
 
- 		String token = getEncToken(user.getId());
 
- 		userMapper.updateUserToken(token, user.getId());
 
- 		user.setToken(token);
 
- 		user.setPassword(null);
 
- 		return user;
 
- 	}
 
- 	/**
 
- 	 * updateUserInfo
 
- 	 *
 
- 	 * @param user
 
- 	 * @param token
 
- 	 * @return
 
- 	 */
 
- 	public User updateUserInfo(User user, String token) {
 
- 		User userInfo = validateUserToken(token);
 
- 		if (userInfo == null) {
 
- 			return null;
 
- 		}
 
- 		user.setId(userInfo.getId());
 
- 		userMapper.updateUser(user);
 
- 		user = userMapper.selectUserById(user.getId());
 
- 		user.setPassword(null);
 
- 		return user;
 
- 	}
 
- 	/**
 
- 	 * updateDisplayPicture
 
- 	 *
 
- 	 * @author Moon Cheng
 
- 	 * @param base64
 
- 	 * @param token
 
- 	 * @return
 
- 	 */
 
- 	public String updateDisplayPicture(String imageURL, String token) {
 
- 		User userInfo = validateUserToken(token);
 
- 		if (userInfo == null) {
 
- 			return null;
 
- 		}
 
- 		/*if (userMapper.updateUserAvator(userInfo.getId(), base64) < 1) {
 
- 			userMapper.insertUserAvator(userInfo.getId(), base64);
 
- 		}*/
 
- 	
 
- 		// final String BASE_URL = "http://localhost/imberry-api";
 
- 		int status = userMapper.updateDisplayPicture(imageURL, userInfo.getId());
 
- 		if (status < 1) {
 
- 			return "";
 
- 		}
 
- 		return imageURL;
 
- 	}
 
- 	/**
 
- 	 * changePhone
 
- 	 *
 
- 	 * @author Moon Cheng
 
- 	 * @param phone
 
- 	 * @param token
 
- 	 * @return
 
- 	 */
 
- 	public User changePhone(String phone, String token) {
 
- 		User userInfo = validateUserToken(token);
 
- 		if (userInfo == null) {
 
- 			return null;
 
- 		}
 
- 		userMapper.updateUserName(phone, userInfo.getId());
 
- 		userInfo = userMapper.selectUserById(userInfo.getId());
 
- 		userInfo.setPassword(null);
 
- 		return userInfo;
 
- 	}
 
- 	/**
 
- 	 * resetPassWord
 
- 	 *
 
- 	 * @param oldPassword
 
- 	 * @param newPassword
 
- 	 * @param token
 
- 	 * @return
 
- 	 */
 
- 	public int changePassword(String oldPassword, String newPassword, String token) {
 
- 		int status = -1;
 
- 		User userInfo = validateUserToken(token);
 
- 		if (userInfo == null) {
 
- 			return -1;
 
- 		}
 
- 		User user = userMapper.validateUser(userInfo.getUsername(), MD5.md5(oldPassword));
 
- 		if (user == null) {
 
- 			return 0;
 
- 		}
 
- 		status = userMapper.changePassword(user.getId(), MD5.md5(newPassword));
 
- 		return status;
 
- 	}
 
- 	/**
 
- 	 * changePassWord
 
- 	 *
 
- 	 * @param username,
 
- 	 *            newPassword
 
- 	 * @param session
 
- 	 * @return int
 
- 	 */
 
- 	public int resetPassWord(String username, String newPassword) {
 
- 		int status = 0;
 
- 		User user = userMapper.selectUserByUsername(username);
 
- 		if (user == null) {
 
- 			return -3;
 
- 		}
 
- 		status = userMapper.changePassword(user.getId(), MD5.md5(newPassword));
 
- 		return status;
 
- 	}
 
- 	public UserDTO tuyaConnect(User user) {
 
- 		UserDTO userInfo = new UserDTO(user.getId(), user.getUsername(), user.getPassword(), user.getToken(), user.getDisplay_name(),
 
- 				user.getDisplay_picture(), user.getCreated_on(), user.getExt_open_id(), user.getExt_name(), user.getExt_type(),
 
- 				user.getLocation(), user.getBaby_nickname(), user.getBaby_dob(), user.getBaby_gender(), user.getStatus_());
 
- 		userInfo.setPassword(null);
 
- 		userInfo.setCountry_code(user.getCountry_code());
 
- 		userInfo.setIs_perfect_user(user.getIs_perfect_user());
 
- 		try {
 
- 			userInfo.setEncryptUsername(AES.encrypt(user.getUsername()));
 
- 		} catch (Exception e) {
 
- 			e.printStackTrace();
 
- 		}
 
- 		userInfo.setUserCode("iamberry123");
 
- 		// Tuya connection
 
- 		TuyaConnector.TuyaSyncConnect(user.getCountry_code()+","+userInfo.getEncryptUsername(), userInfo.getUserCode());
 
- 		return userInfo;
 
- 	}
 
- 	/**
 
- 	 * getStartPage
 
- 	 *
 
- 	 * @return String
 
- 	 */
 
- 	public String getStartPage() {
 
- 		return userMapper.selectConfig("start_page");
 
- 	}
 
- 	/**
 
- 	 * getLocation
 
- 	 *
 
- 	 * @param ip
 
- 	 * @return String
 
- 	 */
 
- 	public RemoteIpInfoDTO getLocation(String ip) {
 
- 		RemoteIpInfoDTO remoteIpInfoDTO = new RemoteIpInfoDTO();
 
- //		if (ip.indexOf(",") != -1) {
 
- //			ip = ip.split(",")[0];
 
- //		}
 
- //		logger.info("IP为:" + ip);
 
- //		try {
 
- //			String result = HttpUtility.httpsGet(MessageFormat.format(ImberryConfig.SINA_IP_URL, ip));
 
- //			remoteIpInfoDTO = mapper.readValue(result, RemoteIpInfoDTO.class);
 
- //		} catch (Exception e) {
 
- //		}
 
- 		return remoteIpInfoDTO;
 
- 	}
 
- 	/**
 
- 	 * getApkVersion
 
- 	 *
 
- 	 * @return
 
- 	 */
 
- 	public String getApkVersion(){
 
- 		return userMapper.selectConfig("apk_version");
 
- 	}
 
- 	@Override
 
- 	public String selectUserAvator(Long id) {
 
- 		// TODO Auto-generated method stub
 
- 		return userMapper.selectUserAvator(id);
 
- 	}
 
- 	@Override
 
- 	public User selectUserByUsername(String username) {
 
- 		// TODO Auto-generated method stub
 
- 		return userMapper.selectUserByUsername(username);
 
- 	}
 
- }
 
 
  |