ifish_english/src/main/java/com/ifish/helper/UserHelper.java

981 lines
38 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.ifish.helper;
import com.ifish.API.GwellApi;
import com.ifish.API.Mail;
import com.ifish.API.SendMobile;
import com.ifish.bean.Tbl_Device;
import com.ifish.bean.Tbl_Device_User;
import com.ifish.bean.Tbl_HardWare_Type;
import com.ifish.bean.Tbl_User;
import com.ifish.bean.Tbl_Vender;
import com.ifish.enums.GwellEnum;
import com.ifish.enums.ResultEnum;
import com.ifish.mapper.Tbl_User_Mapper;
import com.ifish.util.IfishUtil;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
/**
*
* @author Administrator
*/
@Component
public class UserHelper implements UserHelperI {
/**
* redis缓存服务器方法接口
*/
@Autowired
private RedisHelperI redisHelperI;
/**
* 所有tbl_user表的操作方法接口
*/
@Autowired
private Tbl_User_Mapper tbl_User_Mapper;
@Autowired
private DeviceHelperI deviceHelperI;
@Autowired
private HardWareTypeHelperI hardWareTypeHelperI;
@Autowired
private RedisKeyHelperI redisKeyHelperI;
@Autowired
private SendMobile sendMobile;
@Autowired
private FastDFSClientI fastDFSClientI;
/**
* 登陆接口
*
* @param user
* @return
*/
@Override
public Object login(Tbl_User user) {
try {
Tbl_User tmpUser = null;
//登陆手机类型为空,返回参数错误
if (StringUtils.isBlank(user.getLoginType())) {
return IfishUtil.returnJson(ResultEnum.error401.getKey(), "");
}
//如果用户手机不为空,进行手机登陆
if (StringUtils.isNotBlank(user.getPhoneNumber())) {
tmpUser = tbl_User_Mapper.getUserByPhoneNumber(user.getPhoneNumber());
return checkUserPassword(tmpUser, user);
} //如果用户邮箱不为空,进行邮箱登陆
else if (StringUtils.isNotBlank(user.getUserEmail())) {
tmpUser = tbl_User_Mapper.getUserByUserEmail(user.getUserEmail());
return checkUserPassword(tmpUser, user);
} //如果用户手机邮箱都为空用户ID不为空则进行游客登陆
else if (user.getUserId() != null && user.getUserId() > 0) {
tmpUser = getUserById(user.getUserId());
return touristLogin(tmpUser);
} else if (StringUtils.isNotBlank(user.getToken())) {
tmpUser = getTbl_UserByToken(user.getToken());
if (tmpUser != null) {
return touristLogin(tmpUser);
} else {
return touristRegister(user.getLoginType());
}
}
//密码不正确
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
} catch (Exception e) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
}
/**
* 手机验证成功后用户注册
*
* @param user
* @return
*/
@Override
public Object registerUserMobile(Tbl_User user) {
if (StringUtils.isBlank(user.getPhoneNumber()) || (user.getUserId() != null && user.getUserId() > 0)) {
return IfishUtil.returnJson(ResultEnum.error401.getKey(), "");
}
//随机生成6位用户名
user.setNickName("鱼友" + IfishUtil.getCharAndNumr(5));
user.setIsRegisterGwell("0");
user.setUserType("1");
Date date = new Date();
user.setCreateTime(date);
user.setPhoneType(user.getLoginType());
user.setUserImg("http://139.196.24.156:83/00/00/" + (new Random().nextInt(7) + 1) + ".png");
user.setUpdateTime(date);
int i = tbl_User_Mapper.insertUserByPhoneNumberAndEmail(user);
Map dataMap = new HashMap();
if (i > 0) {
//注册技威
//4.1未注册技威则注册获取code1code2
Map gwellMap = registUserGWell(user, false);
user = (Tbl_User) gwellMap.get("user");
if (StringUtils.isNotBlank(user.getP2pverifyCode1()) && StringUtils.isNotBlank(user.getP2pverifyCode2()) && StringUtils.isNotBlank(user.getGwellUserid())) {
dataMap.put("P2PVerifyCode1", user.getP2pverifyCode1());
dataMap.put("P2PVerifyCode2", user.getP2pverifyCode2());
dataMap.put("gwellUserID", user.getGwellUserid());
tbl_User_Mapper.updateUser(user);
}
} else {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
//返回给App的数据
dataMap.put("userId", user.getUserId());
dataMap.put("phoneNumber", user.getPhoneNumber());
dataMap.put("userSex", user.getUserSex());
dataMap.put("userImg", user.getUserImg());
dataMap.put("nickName", user.getNickName());
return IfishUtil.returnJson(ResultEnum.success.getKey(), dataMap);
}
/**
* 邮箱用户发送注册链接
*/
@Override
public Object registerByEmail(Tbl_User user) {
try {
if (StringUtils.isBlank(user.getUserEmail()) || StringUtils.isBlank(user.getUserPassword())) {
return IfishUtil.returnJson(ResultEnum.error401.getKey(), "");
} else {
Tbl_User tmpUser = getUserByEmail(user.getUserEmail());
if (tmpUser != null) {
return IfishUtil.returnJson(ResultEnum.warn201.getKey(), "");
}
String md5 = IfishUtil.EncoderByMd5(user.getUserEmail() + user.getUserPassword());
Map map = new HashMap();
map.put("email", user.getUserEmail());
map.put("password", user.getUserPassword());
if (StringUtils.isNotBlank(user.getToken())) {
map.put("token", user.getToken());
}
if (StringUtils.isNotBlank(user.getLoginType())) {
map.put("logintype", user.getLoginType());
}
String key = redisKeyHelperI.getEmailRedisKey(md5);
redisHelperI.setRedis(key, IfishUtil.ObjectToJson(map), 30, TimeUnit.MINUTES);
Mail.sendRegisterCodeTest(user.getUserEmail(), md5);
return IfishUtil.returnJson(ResultEnum.success.getKey(), "");
}
} catch (Exception e) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
}
/**
* 添加邮箱用户
*
* @param md5
* @return
*/
@Override
public String registerEmail(String md5) {
String key = redisKeyHelperI.getEmailRedisKey(md5);
String redisString = redisHelperI.getRedis(key);
if (StringUtils.isBlank(redisString)) {
return "链接超时,请重新注册!";
} else {
Map map = (Map) IfishUtil.JsonToRealMap(redisString);
Tbl_User user = new Tbl_User();
user.setUserEmail(map.get("email").toString());
user.setUserPassword(map.get("password").toString());
if (map.get("token") != null && StringUtils.isNotBlank(map.get("token").toString())) {
user.setToken(map.get("token").toString());
}
if (map.get("logintype") != null && StringUtils.isNotBlank(map.get("logintype").toString())) {
user.setLoginType(map.get("logintype").toString());
user.setPhoneType(map.get("logintype").toString());
}
//随机生成6位用户名
user.setNickName("鱼友" + IfishUtil.getCharAndNumr(5));
user.setIsRegisterGwell("0");
user.setUserType("1");
Date date = new Date();
user.setCreateTime(date);
user.setUserImg("http://139.196.24.156:83/00/00/" + (new Random().nextInt(7) + 1) + ".png");
user.setUpdateTime(date);
int i = tbl_User_Mapper.insertUserByPhoneNumberAndEmail(user);
if (i > 0) {
try {
//注册技威
//4.1未注册技威则注册获取code1code2
Map gwellMap = registUserGWell(user, false);
user = (Tbl_User) gwellMap.get("user");
tbl_User_Mapper.updateUser(user);
} catch (Exception e) {
}
return "注册成功,请用邮箱和密码进行登陆!";
}
}
return "注册失败,请联系管理员!";
}
/**
* 邮箱用户修改密码
*
* @param md5
* @return
*/
@Override
public String updatePasswordEmail(String md5) {
String key = redisKeyHelperI.getEmailUpdatePasswordRedisKey(md5);
String redisString = redisHelperI.getRedis(key);
if (StringUtils.isBlank(redisString)) {
return "链接超时,请重新申请!";
} else {
Map map = (Map) IfishUtil.JsonToRealMap(redisString);
Tbl_User user = getUserByEmail(map.get("email").toString());
if (user == null) {
return "修改失败,请联系管理员!";
}
user.setUserPassword(map.get("password").toString());
Date date = new Date();
user.setUpdateTime(date);
int i = tbl_User_Mapper.updateUser(user);
if (i > 0) {
redisKeyHelperI.deleteRedisByTbl_User(user);
return "修改成功,请用邮箱和新密码进行登陆!";
}
}
return "修改失败,请联系管理员!";
}
/**
* 根据用户ID从缓存中获取用户对象
*
* @param userId
* @return
* @throws Exception
*/
@Override
public Tbl_User getUserById(Integer userId) throws Exception {
Tbl_User tmpUser = null;
String userKey = redisKeyHelperI.getTbl_UserRedisKeyByUserId(userId);
String userString = redisHelperI.getRedis(userKey);
//1.从数据库或缓存中读取用户对象
if (StringUtils.isNotBlank(userString)) {
tmpUser = (Tbl_User) IfishUtil.JsonToBean(userString, Tbl_User.class);
} else {
tmpUser = tbl_User_Mapper.getUserByUserId(userId + "");
if (tmpUser != null && tmpUser.getUserId() > 0) {
redisHelperI.setRedis(userKey, IfishUtil.ObjectToJson(tmpUser));
}
}
return tmpUser;
}
/**
* 游客注册接口
*
* @return
*/
@Override
public Object touristRegister(String loginType) {
Tbl_User user = new Tbl_User();
if (StringUtils.isBlank(loginType)) {
return IfishUtil.returnJson(ResultEnum.error401.getKey(), "");
}
user.setUserType("0");
user.setLoginType(loginType);
user.setCreateTime(new Date());
user.setUserImg("http://139.196.24.156:83/00/00/1.png");
int i = tbl_User_Mapper.insertUserByTourist(user);
Map result = new HashMap();
if (i > 0 && user.getUserId() > 0) {
//4.1未注册技威则注册获取code1code2
Map gwellMap = registUserGWell(user, false);
user = (Tbl_User) gwellMap.get("user");
if (StringUtils.isBlank(user.getP2pverifyCode1()) || StringUtils.isBlank(user.getP2pverifyCode2()) || StringUtils.isBlank(user.getGwellUserid())) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
Integer updateInteger = tbl_User_Mapper.updateUser(user);
//如果修改失败,返回错误信息
if (updateInteger <= 0) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
result.put("userId", user.getUserId());
result.put("P2PVerifyCode1", user.getP2pverifyCode1());
result.put("P2PVerifyCode2", user.getP2pverifyCode2());
result.put("gwellUserID", user.getGwellUserid());
return IfishUtil.returnJson(ResultEnum.success.getKey(), result);
} else {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
}
/**
* 修改用户信息
*
* @param user
* @return
*/
@Override
public Object updateUser(Tbl_User user) {
try {
//用户ID
Integer userId = user.getUserId();
if (userId != null) {
//查找用户信息
Tbl_User curUser = getUserById(userId);
if (curUser != null) {
//是否需要更新
boolean bln = false;
//昵称
String nickName = user.getNickName();
if (StringUtils.isNotBlank(nickName)) {
//敏感词过滤
if (nickName.contains("爱鱼奇") || nickName.contains("官方")) {
return IfishUtil.returnJson(ResultEnum.warn203.getKey(), "");
} else {
curUser.setNickName(nickName);
bln = true;
}
}
//性别
String userSex = user.getUserSex();
if (StringUtils.isNotBlank(userSex)) {
curUser.setUserSex(userSex);
bln = true;
}
String registerId = user.getJiguangUserid();
if (StringUtils.isNotBlank(registerId)) {
curUser.setJiguangUserid(registerId);
bln = true;
}
//有参数变更
if (bln) {
//更新用户信息
curUser.setUpdateTime(new Date());
tbl_User_Mapper.updateUser(user);
redisKeyHelperI.deleteRedisByTbl_User(user);
}
Map userMap = getUserMap(user);
return IfishUtil.returnJson(ResultEnum.success.getKey(), userMap);
} else {
return IfishUtil.returnJson(ResultEnum.warn211.getKey(), "");
}
} else {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
} catch (Exception e) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
}
/**
* 修改用户头像
*
* @param file
* @param userId
* @return
*/
@Override
public Object updateUserImg(MultipartFile file, Integer userId, String path) {
try {
if (file.isEmpty() && StringUtils.isBlank(path)) {
return IfishUtil.returnJson(ResultEnum.warn205.getKey(), "");
}
String img = "";
if (file.isEmpty()) {
img = path;
} else {
img = fastDFSClientI.uploadFileToFastDFS(file);
if (StringUtils.isBlank(img)) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
}
Tbl_User user = getUserById(userId);
user.setUserImg(img);
int i = tbl_User_Mapper.updateUser(user);
if (i > 0) {
redisKeyHelperI.deleteRedisByTbl_User(user);
Map userMap = getUserMap(user);
return IfishUtil.returnJson(ResultEnum.success.getKey(), userMap);
}
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
} catch (Exception e) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
}
/**
* 修改用户手机号码和密码
*
* @param userId
* @param password
* @param phoneNumber
* @return
*/
@Override
public Object updateUserPassword(Integer userId, String password, String phoneNumber, String token) {
try {
if (userId == null || userId == 0) {
return IfishUtil.toJson(ResultEnum.error401.getKey(), "");
}
if (StringUtils.isBlank(password) && StringUtils.isBlank(phoneNumber) && StringUtils.isBlank(token)) {
return IfishUtil.toJson(ResultEnum.error401.getKey(), "");
}
Tbl_User user = getUserById(userId);
if (user == null || user.getUserId() <= 0) {
return IfishUtil.toJson(ResultEnum.error401.getKey(), "");
}
if (StringUtils.isNotBlank(password)) {
user.setUserPassword(password);
}
if (StringUtils.isNotBlank(phoneNumber)) {
user.setPhoneNumber(phoneNumber);
}
if (StringUtils.isNotBlank(token)) {
user.setToken(token);
}
int i = tbl_User_Mapper.updateUser(user);
if (i > 0) {
redisKeyHelperI.deleteRedisByTbl_User(user);
Map userMap = getUserMap(user);
return IfishUtil.returnJson(ResultEnum.success.getKey(), userMap);
}
} catch (Exception e) {
}
return IfishUtil.toJson(ResultEnum.fail101.getKey(), "");
}
/**
* 忘记密码,根据手机号修改密码
*
* @param phoneNumber
* @param password
* @return
*/
@Override
public Object forgetPassword(String phoneNumber, String password) {
try {
if (StringUtils.isBlank(phoneNumber) || StringUtils.isBlank(password)) {
return IfishUtil.toJson(ResultEnum.error401.getKey(), "");
}
Tbl_User user = getUserByPhoneNumber(phoneNumber);
if (user == null || user.getUserId() <= 0) {
return IfishUtil.toJson(ResultEnum.error401.getKey(), "");
}
if (StringUtils.isNotBlank(password)) {
user.setUserPassword(password);
}
int i = tbl_User_Mapper.updateUser(user);
if (i > 0) {
redisKeyHelperI.deleteRedisByTbl_User(user);
return IfishUtil.returnJson(ResultEnum.success.getKey(), "");
}
} catch (Exception e) {
}
return IfishUtil.toJson(ResultEnum.fail101.getKey(), "");
}
/**
* 邮箱账号忘记密码,发送邮件验证
*
* @param email
* @param password
* @return
*/
@Override
public Object forgetPasswordByEmail(String email, String password) {
try {
if (StringUtils.isBlank(email) || StringUtils.isBlank(password)) {
return IfishUtil.returnJson(ResultEnum.error401.getKey(), "");
} else {
Tbl_User tmpUser = getUserByEmail(email);
if (tmpUser == null) {
return IfishUtil.returnJson(ResultEnum.warn201.getKey(), "");
}
String md5 = IfishUtil.EncoderByMd5(email + password);
Map map = new HashMap();
map.put("email", email);
map.put("password", password);
String key = redisKeyHelperI.getEmailUpdatePasswordRedisKey(md5);
redisHelperI.setRedis(key, IfishUtil.ObjectToJson(map), 30, TimeUnit.MINUTES);
Mail.sendUpdatePasswordCodeTest(email, md5);
return IfishUtil.returnJson(ResultEnum.success.getKey(), "");
}
} catch (Exception e) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
}
/**
* 极光是否注册别名成功
*
* @param userId
* @return
*/
@Override
public Object IsRegisterJPush(String userId) {
if (StringUtils.isNotBlank(userId)) {
int i = tbl_User_Mapper.IsRegisterJPush(userId);
if (i > 0) {
return IfishUtil.toJson(ResultEnum.success.getKey(), "");
}
}
return IfishUtil.toJson(ResultEnum.fail101.getKey(), "");
}
/**
* 根据手机号从缓存或数据库中取得用户对象
*
* @param phoneNumber
* @param email
* @return
*/
public Tbl_User getUserByPhoneNumber(String phoneNumber) {
Tbl_User tmpUser = null;
try {
String userKey = redisKeyHelperI.getTbl_UserRedisKeyByPhoneNumber(phoneNumber);
String userString = redisHelperI.getRedis(userKey);
//1.从数据库或缓存中读取用户对象
if (StringUtils.isNotBlank(userString)) {
tmpUser = (Tbl_User) IfishUtil.JsonToBean(userString, Tbl_User.class);
} else {
tmpUser = tbl_User_Mapper.getUserByPhoneNumber(phoneNumber);
if (tmpUser != null && tmpUser.getUserId() > 0) {
redisHelperI.setRedis(userKey, IfishUtil.ObjectToJson(tmpUser));
}
}
} catch (Exception e) {
}
return tmpUser;
}
/**
* 根据邮箱从缓存或数据库中取得用户对象
*
* @param email
* @return
*/
public Tbl_User getUserByEmail(String email) {
Tbl_User tmpUser = null;
try {
String userKey = redisKeyHelperI.getTbl_UserRedisKeyByEmail(email);
String userString = redisHelperI.getRedis(userKey);
//1.从数据库或缓存中读取用户对象
if (StringUtils.isNotBlank(userString)) {
tmpUser = (Tbl_User) IfishUtil.JsonToBean(userString, Tbl_User.class);
} else {
tmpUser = tbl_User_Mapper.getUserByUserEmail(email);
if (tmpUser != null && tmpUser.getUserId() > 0) {
redisHelperI.setRedis(userKey, IfishUtil.ObjectToJson(tmpUser));
}
}
} catch (Exception e) {
}
return tmpUser;
}
/**
* 根据token从缓存或数据库中取得用户对象
*
* @param token
* @return
*/
public Tbl_User getTbl_UserByToken(String token) {
Tbl_User tmpUser = null;
try {
String userKey = redisKeyHelperI.getTbl_UserRedisKeyByToken(token);
String userString = redisHelperI.getRedis(userKey);
//1.从数据库或缓存中读取用户对象
if (StringUtils.isNotBlank(userString)) {
tmpUser = (Tbl_User) IfishUtil.JsonToBean(userString, Tbl_User.class);
} else {
tmpUser = tbl_User_Mapper.getUserByUserToken(token);
if (tmpUser != null && tmpUser.getUserId() > 0) {
redisHelperI.setRedis(userKey, IfishUtil.ObjectToJson(tmpUser));
}
}
} catch (Exception e) {
}
return tmpUser;
}
/**
* 邮箱和手机登陆用户,需要进行密码验证,游客登陆不需要
*
* @param tmpUser
* @param user
* @return
* @throws Exception
*/
private Object checkUserPassword(Tbl_User tmpUser, Tbl_User user) throws Exception {
//2.如果都为空,则没有此用户,返回未注册信息
if (tmpUser == null) {
//用户不存在
return IfishUtil.returnJson(ResultEnum.warn202.getKey(), "");
}
//3.验证密码是否正确
if (tmpUser.getUserPassword().equals(user.getUserPassword())) {
//4.如果密码正确,确认是否更新用户信息
//是否更新
boolean isUpdate = false;
//4.1未注册技威则注册获取code1code2
Map gwellMap = registUserGWell(tmpUser, isUpdate);
tmpUser = (Tbl_User) gwellMap.get("user");
isUpdate = (Boolean) gwellMap.get("isUpdate");
//4.3登陆次数修改
Integer logincount = tbl_User_Mapper.executeLoginUpdate(tmpUser.getUserId(), user.getLoginType());
//修改失败,返回错误信息
if (logincount <= 0) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
//4.4验证是否需要修改技威等信息,如果需要则进行修改
if (isUpdate) {
Integer updateInteger = tbl_User_Mapper.updateUser(tmpUser);
//如果修改失败,返回错误信息
if (updateInteger <= 0) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
redisKeyHelperI.deleteRedisByTbl_User(tmpUser);
}
//4.5 获取用户数据
Map userMap = getUserMap(tmpUser);
//4.8获取用户绑定设备信息和摄像头信息
Map deviceMap = getDeviceList(tmpUser);
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("user", userMap);
dataMap.put("device", deviceMap.get("list"));
dataMap.put("camera", deviceMap.get("list2"));
return IfishUtil.returnJson(ResultEnum.success.getKey(), dataMap);
} else {
//密码不正确
return IfishUtil.returnJson(ResultEnum.warn204.getKey(), "");
}
}
/**
* 游客登陆接口
*
* @param tmpUser
* @return
* @throws Exception
*/
private Object touristLogin(Tbl_User tmpUser) throws Exception {
//2.如果为空,则没有此用户,返回未注册信息
if (tmpUser == null) {
//用户不存在
return IfishUtil.returnJson(ResultEnum.warn202.getKey(), "");
}
//是否更新
boolean isUpdate = false;
//4.1未注册技威则注册获取code1code2
Map gwellMap = registUserGWell(tmpUser, isUpdate);
tmpUser = (Tbl_User) gwellMap.get("user");
isUpdate = (Boolean) gwellMap.get("isUpdate");
//4.3登陆次数修改
Integer logincount = tbl_User_Mapper.executeLoginUpdate(tmpUser.getUserId(), tmpUser.getLoginType());
//修改失败,返回错误信息
if (logincount <= 0) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
//4.4验证是否需要修改技威等信息,如果需要则进行修改
if (isUpdate) {
Integer updateInteger = tbl_User_Mapper.updateUser(tmpUser);
//如果修改失败,返回错误信息
if (updateInteger <= 0) {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
redisKeyHelperI.deleteRedisByTbl_User(tmpUser);
}
//4.5 获取用户数据
Map userMap = getUserMap(tmpUser);
//4.8获取用户绑定设备信息和摄像头信息
Map deviceMap = getDeviceList(tmpUser);
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("user", userMap);
dataMap.put("device", deviceMap.get("list"));
dataMap.put("camera", deviceMap.get("list2"));
return IfishUtil.returnJson(ResultEnum.success.getKey(), dataMap);
}
/**
* 未注册技威则注册获取code1code2
*
* @param tmpUser
* @param isUpdate
* @return
*/
private Map registUserGWell(Tbl_User tmpUser, boolean isUpdate) {
//4.1未注册技威则注册获取code1code2
if (StringUtils.isBlank(tmpUser.getIsRegisterGwell()) || tmpUser.getIsRegisterGwell().equals("0")) {
String code = "";
//如果有手机用手机号注册否则用用户ID注册
if (StringUtils.isBlank(tmpUser.getPhoneNumber())) {
code = tmpUser.getUserId() + "";
} else if (StringUtils.isNotBlank(tmpUser.getPhoneNumber())) {
code = tmpUser.getPhoneNumber();
} else if (StringUtils.isNotBlank(tmpUser.getUserEmail())) {
code = tmpUser.getUserEmail().replace(".com", "").replace(".cn", "");
}
//注册技威
Map<String, String> map = GwellApi.Register(code);
String result = map.get("result");
if (result != null) {
//注册成功
if (result.equals(GwellEnum.success.getKey())) {
String P2PVerifyCode1 = map.get("P2PVerifyCode1");
String P2PVerifyCode2 = map.get("P2PVerifyCode2");
String gwellUserID = map.get("UserID");
tmpUser.setIsRegisterGwell("1");
tmpUser.setP2pverifyCode1(P2PVerifyCode1);
tmpUser.setP2pverifyCode2(P2PVerifyCode2);
tmpUser.setGwellUserid(gwellUserID);
isUpdate = true;
} //已经注册过
else if (GwellEnum.repeat.getKey().equals(result)) {
tmpUser.setIsRegisterGwell("1");
isUpdate = true;
}
}
}//已经注册过技威
else if (tmpUser.getIsRegisterGwell().equals("1")) {
//code1和code2为空则重新登陆获取
String P2PVerifyCode1 = tmpUser.getP2pverifyCode1();
String P2PVerifyCode2 = tmpUser.getP2pverifyCode2();
String gwellUserID = tmpUser.getGwellUserid();
if (P2PVerifyCode1.equals("") || P2PVerifyCode2.equals("") || gwellUserID.equals("")) {
Map<String, String> map = GwellApi.Login(tmpUser.getPhoneNumber());
String result = map.get("result");
//登陆成功
if (result != null && result.equals(GwellEnum.success.getKey())) {
P2PVerifyCode1 = map.get("P2PVerifyCode1");
P2PVerifyCode2 = map.get("P2PVerifyCode2");
gwellUserID = map.get("UserID");
tmpUser.setP2pverifyCode1(P2PVerifyCode1);
tmpUser.setP2pverifyCode2(P2PVerifyCode2);
tmpUser.setGwellUserid(gwellUserID);
isUpdate = true;
}
}
}
Map resultMap = new HashMap();
resultMap.put("user", tmpUser);
resultMap.put("isUpdate", isUpdate);
return resultMap;
}
/**
* 登录成功,返回给App数据
*
* @param tmpUser
* @return
*/
private Map getUserMap(Tbl_User tmpUser) {
//登录成功,返回给App数据
Map<String, Object> userMap = new HashMap<String, Object>();
userMap.put("userId", tmpUser.getUserId().toString());
//如果手机号不为空
if (StringUtils.isNotBlank(tmpUser.getPhoneNumber())) {
userMap.put("phoneNumber", tmpUser.getPhoneNumber());
}
//如果邮箱不为空
if (StringUtils.isNotBlank(tmpUser.getUserEmail())) {
userMap.put("userEmail", tmpUser.getUserEmail());
}
userMap.put("nickName", tmpUser.getNickName());
userMap.put("userSex", tmpUser.getUserSex());
userMap.put("userImg", tmpUser.getUserImg());
userMap.put("P2PVerifyCode1", tmpUser.getP2pverifyCode1());
userMap.put("P2PVerifyCode2", tmpUser.getP2pverifyCode2());
userMap.put("gwellUserID", tmpUser.getGwellUserid());
if (StringUtils.isNotBlank(tmpUser.getJiguangUserid())) {
userMap.put("jiguangUserid", tmpUser.getJiguangUserid());
}
//userMap.put("userType", tmpUser.getUserType());
if (tmpUser.getUpdateTime() != null) {
userMap.put("updateTime", IfishUtil.format(tmpUser.getUpdateTime()));
}
return userMap;
}
/**
* 获取用户绑定设备信息
*
* @param tmpUser
* @return
*/
private Map getDeviceList(Tbl_User tmpUser) throws Exception {
//设备信息
List<Object> list = new ArrayList<Object>();
//摄像头信息
List<Object> list2 = new ArrayList<Object>();
//获取用户拥有设备
List<Tbl_Device_User> deviceUserList = deviceHelperI.getDeviceUsersByUserId(tmpUser.getUserId());
List<Integer> deviceIds = new ArrayList<Integer>();
List<String> cameraIds = new ArrayList<String>();
for (Tbl_Device_User deviceUser : deviceUserList) {
Tbl_Device device = deviceHelperI.getDeviceById(deviceUser.getDeviceId());
if (device.getIsCamera().equals("1")) {
cameraIds.add(device.getCameraId());
list2.add(getCameraInfo(device, deviceUser));
} else {
deviceIds.add(device.getDeviceId());
//封装设备返回信息
list.add(getDeviceInfo(device, deviceUser));
}
}
Map map = new HashMap();
map.put("list", list);
map.put("list2", list2);
return map;
}
/**
* 封装设备返回信息
*
* @param device
* @param deviceUser
* @return
*/
@Override
public Map<String, Object> getDeviceInfo(Tbl_Device device, Tbl_Device_User deviceUser) throws Exception {
Map<String, Object> deviceMap = new HashMap<String, Object>();
deviceMap.put("userId", deviceUser.getUserId());
deviceMap.put("deviceId", deviceUser.getDeviceId());
deviceMap.put("isMaster", deviceUser.getIsMaster());
deviceMap.put("showName", deviceUser.getShowName());
deviceMap.put("macAddress", device.getMacAddress());
deviceMap.put("isBlacklist", device.getIsBlacklist());
deviceMap.put("customIconName", deviceUser.getCustomIconName());
deviceMap.put("customShowName", deviceUser.getCustomShowName());
deviceMap.put("deviceIp", device.getDeviceIp());
deviceMap.put("loginTime", device.getLoginTime());
if (device.getBrandCode() != null && device.getBrandCode().equals("YUEM") && device.getCreateTime().before(IfishUtil.StrToDate("2016-04-26"))) {
//是否显示预警推送
deviceMap.put("isPushWendu", "0");
} else {
//是否显示预警推送
deviceMap.put("isPushWendu", "1");
}
//控制方案
String type = device.getHardwareType();
if (type != null) {
Tbl_HardWare_Type hardwareType = hardWareTypeHelperI.getHardwareTypeByTypeCode(type);
if (hardwareType != null) {
//设备类型
deviceMap.put("type", type);
//有无工作模式
deviceMap.put("isWorkModel", hardwareType.getIsWorkModel());
//控制信息
deviceMap.put("controlAmount", hardwareType.getControlAmount());
deviceMap.put("timerAmount", hardwareType.getTimerAmount());
//背光/柜灯
deviceMap.put("isLightness", hardwareType.getIsLightness());
deviceMap.put("isSarkLamp", hardwareType.getIsSarkLamp());
//自定义图标
deviceMap.put("isCustomIcon", hardwareType.getIsCustomIcon());
deviceMap.put("iconLink", hardwareType.getIconLink());
deviceMap.put("allIconName", hardwareType.getAllIconName());
deviceMap.put("allShowName", hardwareType.getAllShowName());
deviceMap.put("defaultIconName", hardwareType.getDefaultIconName());
deviceMap.put("defaultShowName", hardwareType.getDefaultShowName());
deviceMap.put("updateTime", hardwareType.getUpdateTime());
//换水提醒
deviceMap.put("todayRemind", device.getTodayRemind());
deviceMap.put("waterRemind", device.getWaterRemind());
deviceMap.put("remindDate", device.getRemindDate() != null ? IfishUtil.format1(device.getRemindDate()) : "");
deviceMap.put("remindCycle", device.getRemindCycle() != null ? device.getRemindCycle() : "");
//是否开启离线通知
deviceMap.put("offLine", device.getOffLine());
}
}
//厂家
if (device.getBrandCode() != null) {
//厂家
Tbl_Vender venderList = new Tbl_Vender();
venderList = hardWareTypeHelperI.getVenderListByBrandCode(device.getBrandCode());
deviceMap.put("venderList", venderList);
} else {
//默认爱鱼奇
Tbl_Vender defaultVenderList = new Tbl_Vender();
defaultVenderList = hardWareTypeHelperI.getVenderListByBrandCode("AYQ");
deviceMap.put("venderList", defaultVenderList);
}
return deviceMap;
}
/**
* 封装摄像头返回信息
*
* @param camera
* @param cameraUser
* @param device
* @param deviceUser
* @return
*/
public Map<String, Object> getCameraInfo(Tbl_Device camera, Tbl_Device_User cameraUser) {
Map<String, Object> cameraMap = new HashMap<String, Object>();
cameraMap.put("cameraId", camera.getCameraId());
cameraMap.put("isMaster", cameraUser.getIsMaster());
cameraMap.put("isLook", cameraUser.getIsLook());
cameraMap.put("isActive", StringUtils.isNotBlank(camera.getActiveCode()) ? "1" : "0");
cameraMap.put("showName", cameraUser.getShowName());
return cameraMap;
}
/**
* 发送手机验证码
*
* @param phoneNumber
* @param smsSign
* @param smsTemplate
* @return
*/
public Object sendSecurityCode(String phoneNumber, String smsSign, String smsTemplate) {
Integer code = (int) (Math.random() * 9000 + 1000);
boolean bln = sendMobile.sendSmsNum(phoneNumber, code.toString(), smsSign, smsTemplate);
//发送验证码
if (bln) {
return IfishUtil.returnJson(ResultEnum.success.getKey(), code.toString());
} else {
return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "");
}
}
}