diff --git a/src/main/java/com/ifish/API/Mail.java b/src/main/java/com/ifish/API/Mail.java index 37aafd0..8710135 100644 --- a/src/main/java/com/ifish/API/Mail.java +++ b/src/main/java/com/ifish/API/Mail.java @@ -5,6 +5,7 @@ */ package com.ifish.API; +import java.util.Date; import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; @@ -15,8 +16,12 @@ import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; +import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; /** * @@ -38,6 +43,8 @@ public class Mail { //private static String to = "fun@ifish7.com"; private static String to = "help@ifish7.com"; private static Logger log = LoggerFactory.getLogger(Mail.class); + private static HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + private static String registerEmail = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/api" + request.getContextPath() + "/registerEmail?md5="; /** * Constructor @@ -69,7 +76,7 @@ public class Mail { * 创建MIME邮件对象 * * @return - */ + */ public boolean createMimeMessage() { try { session = Session.getDefaultInstance(props, null); //获得邮件会话对象 @@ -203,4 +210,114 @@ public class Mail { } return true; } + + /** + * 发送邮箱验证码 + * + * @param email + * @return + */ + public static String sendRegisterCode(String email) { + Mail theMail = new Mail(smtp); + + if (!theMail.setSubject("邮箱注册验证码")) { + return ""; + } + if (!theMail.setFrom(from)) { + return ""; + } + if (!theMail.setTo(to)) { + return ""; + } + Integer code = (int) (Math.random() * 9000 + 1000); + if (!theMail.setBody(code + "")) { + return ""; + } + if (!theMail.sendOut()) { + return ""; + } + return code + ""; + } + + /** + * 发送邮箱注册链接 + * + * @param email 发送目标邮箱 + * @param value 发送有效时间验证 + * @return + */ + public static boolean sendRegisterCodeTest(String email, String value) { + try { + // 1. 创建参数配置, 用于连接邮件服务器的参数配置 + Properties props = new Properties(); // 参数配置 + props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求) + props.setProperty("mail.smtp.host", smtp); // 发件人的邮箱的 SMTP 服务器地址 + props.setProperty("mail.smtp.auth", "true"); // 需要请求认证 + + // PS: 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 (为了提高安全性, 邮箱支持SSL连接, 也可以自己开启), + // 如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 SSL 安全连接” 等错误, + // 打开下面 /* ... */ 之间的注释代码, 开启 SSL 安全连接。 + /* + // SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接, + // 需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助, + // QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看) + final String smtpPort = "465"; + props.setProperty("mail.smtp.port", smtpPort); + props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + props.setProperty("mail.smtp.socketFactory.fallback", "false"); + props.setProperty("mail.smtp.socketFactory.port", smtpPort); + */ + // 2. 根据配置创建会话对象, 用于和邮件服务器交互 + Session session = Session.getDefaultInstance(props); + session.setDebug(true); // 设置为debug模式, 可以查看详细的发送 log + // 3. 创建一封邮件 + MimeMessage message = createMimeMessage(session, email, value); + // 4. 根据 Session 获取邮件传输对象 + Transport transport = session.getTransport(); + + // 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错 + // + // PS_01: 成败的判断关键在此一句, 如果连接服务器失败, 都会在控制台输出相应失败原因的 log, + // 仔细查看失败原因, 有些邮箱服务器会返回错误码或查看错误类型的链接, 根据给出的错误 + // 类型到对应邮件服务器的帮助网站上查看具体失败原因。 + // + // PS_02: 连接失败的原因通常为以下几点, 仔细检查代码: + // (1) 邮箱没有开启 SMTP 服务; + // (2) 邮箱密码错误, 例如某些邮箱开启了独立密码; + // (3) 邮箱服务器要求必须要使用 SSL 安全连接; + // (4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务; + // (5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。 + // + // PS_03: 仔细看log, 认真看log, 看懂log, 错误原因都在log已说明。 + transport.connect(username, password); + // 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人 + transport.sendMessage(message, message.getAllRecipients()); + // 7. 关闭连接 + transport.close(); + return true; + } catch (Exception e) { + String a = e.getMessage(); + } + return false; + } + + public static MimeMessage createMimeMessage(Session session, String receiveMail, String value) throws Exception { + // 1. 创建一封邮件 + MimeMessage message = new MimeMessage(session); + // 2. From: 发件人 + message.setFrom(new InternetAddress(from, "爱鱼奇", "UTF-8")); + // 3. To: 收件人(可以增加多个收件人、抄送、密送) + message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "XX用户", "UTF-8")); + // 4. Subject: 邮件主题 + message.setSubject("注册链接", "UTF-8"); + // 5. Content: 邮件正文(可以使用html标签) + String content = "您的注册链接为:" + registerEmail + value + " ,请在半小时内进行激活!"; + message.setContent(content, "text/html;charset=UTF-8"); + // 6. 设置发件时间 + message.setSentDate(new Date()); + // 7. 保存设置 + message.saveChanges(); + + return message; + } } diff --git a/src/main/java/com/ifish/bean/Tbl_Live_Room.java b/src/main/java/com/ifish/bean/Tbl_Live_Room.java index 707a9b7..dc05973 100644 --- a/src/main/java/com/ifish/bean/Tbl_Live_Room.java +++ b/src/main/java/com/ifish/bean/Tbl_Live_Room.java @@ -24,7 +24,7 @@ public class Tbl_Live_Room implements java.io.Serializable { /** * 版本号 */ - private static final long serialVersionUID = 4271035874866910990L; + private static final long serialVersionUID = -9036392996642877776L; /** * 直播间Id @@ -42,7 +42,7 @@ public class Tbl_Live_Room implements java.io.Serializable { /** * 摄像头ID */ - @Column(name = "camera_id", nullable = true, length = 20) + @Column(name = "camera_id", nullable = false, length = 20) private String cameraId; /** @@ -87,22 +87,9 @@ public class Tbl_Live_Room implements java.io.Serializable { private Date createTime; /** - * 是否推荐 - */ - @Column(name = "is_tuijian", nullable = false, length = 1) - private Integer isTuijian; - - /** - * 推荐排序 - */ - @Column(name = "tuijian_num", nullable = true, length = 10) - private Integer tuijianNum; - - /** - * 首次分享 - */ - @Column(name = "first_share", nullable = false, length = 1) - private Integer firstShare; + * */ + @Column(name = "update_time", nullable = true) + private Date updateTime; /** * 获取直播间Id @@ -286,56 +273,21 @@ public class Tbl_Live_Room implements java.io.Serializable { } /** - * 获取是否推荐 + * 获取 * - * @return 是否推荐 + * @return */ - public Integer getIsTuijian() { - return this.isTuijian; + public Date getUpdateTime() { + return this.updateTime; } /** - * 设置是否推荐 + * 设置 * - * @param isTuijian 是否推荐 - */ - public void setIsTuijian(Integer isTuijian) { - this.isTuijian = isTuijian; - } - - /** - * 获取推荐排序 + * @param updateTime * - * @return 推荐排序 */ - public Integer getTuijianNum() { - return this.tuijianNum; - } - - /** - * 设置推荐排序 - * - * @param tuijianNum 推荐排序 - */ - public void setTuijianNum(Integer tuijianNum) { - this.tuijianNum = tuijianNum; - } - - /** - * 获取首次分享 - * - * @return 首次分享 - */ - public Integer getFirstShare() { - return this.firstShare; - } - - /** - * 设置首次分享 - * - * @param firstShare 首次分享 - */ - public void setFirstShare(Integer firstShare) { - this.firstShare = firstShare; + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; } } diff --git a/src/main/java/com/ifish/bean/Tbl_User.java b/src/main/java/com/ifish/bean/Tbl_User.java index 57cb9af..cea1ae5 100644 --- a/src/main/java/com/ifish/bean/Tbl_User.java +++ b/src/main/java/com/ifish/bean/Tbl_User.java @@ -24,7 +24,7 @@ public class Tbl_User implements java.io.Serializable { /** * 版本号 */ - private static final long serialVersionUID = -3293426131332327827L; + private static final long serialVersionUID = 1916426418064460350L; /** * 用户Id @@ -147,6 +147,11 @@ public class Tbl_User implements java.io.Serializable { @Column(name = "jiguang_userid", nullable = true, length = 50) private String jiguangUserid; + /** + * */ + @Column(name = "token", nullable = true, length = 50) + private String token; + /** * 经度 */ @@ -519,6 +524,25 @@ public class Tbl_User implements java.io.Serializable { this.jiguangUserid = jiguangUserid; } + /** + * 获取 + * + * @return + */ + public String getToken() { + return this.token; + } + + /** + * 设置 + * + * @param token + * + */ + public void setToken(String token) { + this.token = token; + } + /** * 获取经度 * diff --git a/src/main/java/com/ifish/controller/LiveRoom.java b/src/main/java/com/ifish/controller/LiveRoom.java index 84fe61f..cec105b 100644 --- a/src/main/java/com/ifish/controller/LiveRoom.java +++ b/src/main/java/com/ifish/controller/LiveRoom.java @@ -108,9 +108,9 @@ public class LiveRoom { * @return */ @RequestMapping(value = "/liveRoom/v3/getLiveRoomInfo.do", method = RequestMethod.GET) - public Object getLiveRoomInfo(Integer userId) { + public Object getLiveRoomInfo(Integer roomId) { try { - return liveRoomHelperI.getLiveRoomInfo(userId); + return liveRoomHelperI.getLiveRoomInfo(roomId); } catch (Exception e) { } return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); diff --git a/src/main/java/com/ifish/controller/Login.java b/src/main/java/com/ifish/controller/Login.java index 5c2940c..75bc6b2 100644 --- a/src/main/java/com/ifish/controller/Login.java +++ b/src/main/java/com/ifish/controller/Login.java @@ -9,11 +9,12 @@ import com.ifish.bean.Tbl_User; import com.ifish.enums.ResultEnum; import com.ifish.helper.UserHelperI; import com.ifish.util.IfishUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; /** * @@ -31,27 +32,11 @@ public class Login { * @param user * @return */ - @RequestMapping(value = "/userLogin.do", method = RequestMethod.GET) + @RequestMapping(value = "/userLogin.do", method = RequestMethod.POST) public Object userLogin(Tbl_User user) { return userHelperI.login(user); } - /** - * 发送手机验证码 - * - * @param sendType - * @param phoneNumber - * @return - */ - @RequestMapping("/getSecurityCode.do") - public Object getSecurityCode(String sendType, String phoneNumber) { - try { - return userHelperI.getSecurityCode(sendType, phoneNumber); - } catch (Exception e) { - } - return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); - } - /** * 手机注册 * @@ -60,14 +45,42 @@ public class Login { */ @RequestMapping(value = "/registerByMobile", method = RequestMethod.GET) public Object registerByMobile(Tbl_User user) { - return userHelperI.registerByMobile(user); + return userHelperI.registerUserMobile(user); } - @RequestMapping(value = "/registerByEmail", method = RequestMethod.GET) + /** + * 修改用户信息发送邮件验证 + * + * @param user + * @return + */ + @RequestMapping(value = "/updateUserEmail", method = RequestMethod.POST) + public Object updateUserEmail(Tbl_User user) { + return null; + } + + /** + * 发送邮件验证 + * + * @param user + * @return + */ + @RequestMapping(value = "/registerByEmail", method = RequestMethod.POST) public Object registerByEmail(Tbl_User user) { return userHelperI.registerByEmail(user); } + /** + * 添加邮箱用户 + * + * @param md5 + * @return + */ + @RequestMapping(value = "/registerEmail", method = RequestMethod.GET) + public Object registerEmailUser(String md5) { + return userHelperI.registerEmail(md5); + } + /** * 游客注册 * @@ -78,4 +91,27 @@ public class Login { return userHelperI.touristRegister(); } + /** + * 修改用户属性 + * + * @param user + * @return + */ + @RequestMapping(value = "/updateInfo.do", method = RequestMethod.POST) + public Object updateUser(Tbl_User user) { + return userHelperI.updateUser(user); + } + + /** + * 修改用户头像 + * + * @param userId + * @param file + * @return + */ + @RequestMapping(value = "/updateUserImg", method = RequestMethod.POST) + public Object updateUserImg(Integer userId, MultipartFile file, String path) { + return userHelperI.updateUserImg(file, userId, path); + } + } diff --git a/src/main/java/com/ifish/helper/LiveRoomHelper.java b/src/main/java/com/ifish/helper/LiveRoomHelper.java index 5f6685c..42bd7d0 100644 --- a/src/main/java/com/ifish/helper/LiveRoomHelper.java +++ b/src/main/java/com/ifish/helper/LiveRoomHelper.java @@ -103,7 +103,6 @@ public class LiveRoomHelper implements LiveRoomHelperI { } //新增直播间 liveRoom.setCreateTime(new Date()); - liveRoom.setFirstShare(0); liveRoom.setPopularityValue(0); int i = tbl_Live_Room_Mapper.insertLiveRoom(liveRoom); if (i > 0) { @@ -146,27 +145,6 @@ public class LiveRoomHelper implements LiveRoomHelperI { return live_Room; } - /** - * 根据用户ID获取直播间详情 - * - * @param roomId - * @return - */ - public Tbl_Live_Room getLive_RoomByUserId(Integer userId) throws Exception { - Tbl_Live_Room live_Room = null; - String key = redisKeyHelperI.getTbl_Live_RoomRedisKeyByUserId(userId); - String redisString = redisHelperI.getRedis(key); - if (StringUtils.isNotBlank(redisString)) { - live_Room = (Tbl_Live_Room) IfishUtil.JsonToBean(redisString, Tbl_Live_Room.class); - } else { - live_Room = tbl_Live_Room_Mapper.getLive_RoomByUserId(userId); - if (live_Room != null && live_Room.getRoomId() > 0) { - redisHelperI.setRedis(key, IfishUtil.ObjectToJson(live_Room)); - } - } - return live_Room; - } - /** * 根据房间ID查询直播间 * @@ -346,14 +324,13 @@ public class LiveRoomHelper implements LiveRoomHelperI { * @return */ @Override - public Object getLiveRoomInfo(Integer userId) { + public Object getLiveRoomInfo(Integer roomId) { try { - if (userId != null) { + if (roomId != null) { //查找直播间信息 - Tbl_Live_Room curLiveRoom = getLive_RoomByUserId(userId); + Tbl_Live_Room curLiveRoom = getLive_RoomById(roomId); if (curLiveRoom != null) { Map map = new HashMap(); - Integer roomId = curLiveRoom.getRoomId(); map.put("roomId", roomId); map.put("userId", curLiveRoom.getUserId()); map.put("roomName", curLiveRoom.getRoomName()); @@ -361,6 +338,7 @@ public class LiveRoomHelper implements LiveRoomHelperI { map.put("popularityValue", curLiveRoom.getPopularityValue()); map.put("roomStatus", curLiveRoom.getRoomStatus()); map.put("roomImg", curLiveRoom.getRoomImg()); + map.put("createTime", curLiveRoom.getCreateTime()); return IfishUtil.toJson(ResultEnum.success.getKey(), map); } } diff --git a/src/main/java/com/ifish/helper/LiveRoomHelperI.java b/src/main/java/com/ifish/helper/LiveRoomHelperI.java index 14f14b0..160afa1 100644 --- a/src/main/java/com/ifish/helper/LiveRoomHelperI.java +++ b/src/main/java/com/ifish/helper/LiveRoomHelperI.java @@ -55,7 +55,7 @@ public interface LiveRoomHelperI { * @param userId * @return */ - Object getLiveRoomInfo(Integer userId); + Object getLiveRoomInfo(Integer rommId); /** * 根据条件查询直播间列表 diff --git a/src/main/java/com/ifish/helper/RedisKeyHelper.java b/src/main/java/com/ifish/helper/RedisKeyHelper.java index e2e78f7..a3e2cf7 100644 --- a/src/main/java/com/ifish/helper/RedisKeyHelper.java +++ b/src/main/java/com/ifish/helper/RedisKeyHelper.java @@ -36,6 +36,17 @@ public class RedisKeyHelper implements RedisKeyHelperI { return RedisKey.USER_PHONE + phoneNumber; } + /** + * 根据token获取tbl_user用户信息的redis缓存key键值 + * + * @param token + * @return + */ + @Override + public String getTbl_UserRedisKeyByToken(String token) { + return RedisKey.USER_TOKEN + token; + } + /** * 根据Email获取Tbl_User用户信息的Redis缓存key键值 * @@ -239,6 +250,17 @@ public class RedisKeyHelper implements RedisKeyHelperI { return RedisKey.PUSHLIST_PUSHID + pushId; } + /** + * 根据MD5值获取redis缓存key键值 + * + * @param md5 + * @return + */ + @Override + public String getEmailRedisKey(String md5) { + return RedisKey.EMAIL_REGIESTER + md5; + } + /** * 删除redis中某个设备详情Tbl_Device的缓存 * @@ -299,6 +321,15 @@ public class RedisKeyHelper implements RedisKeyHelperI { if (tbl_User.getUserId() != null && tbl_User.getUserId() > 0) { redisHelperI.deleteRedis(getTbl_UserRedisKeyByUserId(tbl_User.getUserId())); } + if (StringUtils.isNotBlank(tbl_User.getUserEmail())) { + redisHelperI.deleteRedis(getTbl_UserRedisKeyByEmail(tbl_User.getUserEmail())); + } + if (StringUtils.isNotBlank(tbl_User.getPhoneNumber())) { + redisHelperI.deleteRedis(getTbl_UserRedisKeyByPhoneNumber(tbl_User.getPhoneNumber())); + } + if (StringUtils.isNotBlank(tbl_User.getToken())) { + redisHelperI.deleteRedis(getTbl_UserRedisKeyByToken(tbl_User.getToken())); + } } /** diff --git a/src/main/java/com/ifish/helper/RedisKeyHelperI.java b/src/main/java/com/ifish/helper/RedisKeyHelperI.java index f3202ca..04c2967 100644 --- a/src/main/java/com/ifish/helper/RedisKeyHelperI.java +++ b/src/main/java/com/ifish/helper/RedisKeyHelperI.java @@ -17,6 +17,14 @@ import com.ifish.bean.Tbl_User; */ public interface RedisKeyHelperI { + /** + * 根据token获取tbl_user用户信息的redis缓存key键值 + * + * @param token + * @return + */ + public String getTbl_UserRedisKeyByToken(String token); + /** * 根据userId获取Tbl_User用户信息的Redis缓存key键值 * @@ -173,6 +181,14 @@ public interface RedisKeyHelperI { */ public String getTbl_Push_List_RedisByPushId(Integer pushId); + /** + * 根据MD5值获取redis缓存key键值 + * + * @param md5 + * @return + */ + public String getEmailRedisKey(String md5); + /** * 删除redis中某个设备详情的缓存 * diff --git a/src/main/java/com/ifish/helper/UserHelper.java b/src/main/java/com/ifish/helper/UserHelper.java index da39030..d3d202e 100644 --- a/src/main/java/com/ifish/helper/UserHelper.java +++ b/src/main/java/com/ifish/helper/UserHelper.java @@ -6,6 +6,7 @@ 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; @@ -17,10 +18,7 @@ import com.ifish.enums.ResultEnum; import com.ifish.enums.SendTypeEnum; import com.ifish.enums.SmsSignEnum; import com.ifish.enums.SmsTemplateEnum; -import com.ifish.enums.SubDirectoryEnum; -import com.ifish.mapper.Tbl_Hardware_Type_Mapper; import com.ifish.mapper.Tbl_User_Mapper; -import com.ifish.util.IfishFilePath; import com.ifish.util.IfishUtil; import java.util.ArrayList; import java.util.Date; @@ -28,9 +26,11 @@ 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; /** * @@ -63,6 +63,9 @@ public class UserHelper implements UserHelperI { @Autowired private SendMobile sendMobile; + @Autowired + private FastDFSClientI fastDFSClientI; + /** * 登陆接口 * @@ -85,6 +88,13 @@ public class UserHelper implements UserHelperI { 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(); + } } //密码不正确 return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); @@ -94,112 +104,191 @@ public class UserHelper implements UserHelperI { } /** - * 手机用户注册 + * 手机验证成功后用户注册 * * @param user * @return */ @Override - public Object registerByMobile(Tbl_User user) { + public Object registerUserMobile(Tbl_User user) { + if (StringUtils.isBlank(user.getPhoneNumber()) || 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.setUserImg("default/" + (new Random().nextInt(7) + 1) + ".png"); + user.setUserImg("http://139.196.24.156:83/00/00/" + (new Random().nextInt(7) + 1) + ".png"); user.setUpdateTime(date); - - //注册技威 - //4.1未注册技威,则注册获取code1,code2 - 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(), ""); - } - - try { - saveUserToRedis(user); - } catch (Exception e) { - } - //注册云信 -// Map neteaseMap = neteaseIM.createAccid(user.getUserId().toString(), user.getNickName(), IfishFilePath.getPath(SubDirectoryEnum.headImage, user.getUserImg()), ""); -// if (neteaseMap != null) { -// String code = neteaseMap.get("code"); -// if (code.equals(NeteaseEnum.status200.getKey())) { -// user.setIsRegisterNetease(BooleanEnum.YES.getKey()); -// user.setNeteaseToken(neteaseMap.get("token")); -// } else if (code.equals(NeteaseEnum.status414.getKey())) { -// user.setIsRegisterNetease(BooleanEnum.YES.getKey()); -// } -// this.userDao.update(user); -// } - //发送云信消息 -// User imUser = this.userDao.findUniqueByProperty(Restrictions.eq("phoneNumber", IfishFilePath.netease_phone)); -// if (imUser != null) { -// neteaseIM.sendMsg(imUser.getUserId().toString(), user.getUserId().toString(), "感谢您使用爱鱼奇,连接智能设备请查看下方说明书,内含操作视频:http://u.eqxiu.com/s/KmmVl87l \n摄像头售后:021-54131006\n睿芯插排售后:18658232626\n绚多插排售后:18857689069\n松诺插排售后:13392205468", ""); -// } - //返回给App的数据 + int i = tbl_User_Mapper.insertUserByPhoneNumberAndEmail(user); Map dataMap = new HashMap(); - dataMap.put("userId", user.getUserId().toString()); - dataMap.put("nickName", user.getNickName()); - dataMap.put("updateTime", IfishUtil.format(user.getUpdateTime())); + if (i > 0) { + + //注册技威 + //4.1未注册技威,则注册获取code1,code2 + 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("P2PVerifyCode1", user.getP2pverifyCode1()); - dataMap.put("P2PVerifyCode2", user.getP2pverifyCode2()); - dataMap.put("gwellUserID", user.getGwellUserid()); + 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); } /** - * 邮箱用户注册 - * - * @param user - * @return + * 邮箱用户发送注册链接 */ @Override public Object registerByEmail(Tbl_User user) { - return null; - } - - /** - * 根据类型和手机号,发送验证码 - * - * @param sendType - * @param phoneNumber - * @return - */ - @Override - public Object getSecurityCode(String sendType, String phoneNumber) { - Tbl_User user = getUserByPhoneNumber(phoneNumber); - if (sendType.equals(SendTypeEnum.register.getKey())) { - if (user != null) { - //手机号注册过,发送错误码 - return IfishUtil.returnJson(ResultEnum.warn201.getKey(), ""); + try { + if (StringUtils.isBlank(user.getUserEmail()) || StringUtils.isBlank(user.getUserPassword())) { + return IfishUtil.returnJson(ResultEnum.error401.getKey(), ""); } else { - //手机未被注册,获取验证码 - return sendSecurityCode(phoneNumber, SmsSignEnum.sign4.getValue(), SmsTemplateEnum.SMS_720018.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()); + } + 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(), ""); } - } //找回密码 - else if (sendType.equals(SendTypeEnum.findpwd.getKey())) { - if (user != null) { - //手机号存在,获取验证码 - return sendSecurityCode(phoneNumber, SmsSignEnum.sign5.getValue(), SmsTemplateEnum.SMS_720021.getKey()); - } else { - //手机号不存在,发送错误码 - return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); - } - } else { - //未知操作,返回错误码 - return IfishUtil.returnJson(ResultEnum.warn203.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()); + } + //随机生成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未注册技威,则注册获取code1,code2 + Map gwellMap = registUserGWell(user, false); + user = (Tbl_User) gwellMap.get("user"); + tbl_User_Mapper.updateUser(user); + } catch (Exception e) { + } + return "注册成功,请用邮箱和密码进行登陆!"; + } + } + return "注册失败,请联系管理员!"; + } + +// /** +// * 根据类型和手机号,发送验证码 +// * +// * @param sendType +// * @param phoneNumber +// * @return +// */ +// @Override +// +// public Object getSecurityCodeByPhoneNumber(String sendType, String phoneNumber) { +// Tbl_User user = getUserByPhoneNumber(phoneNumber); +// if (sendType.equals(SendTypeEnum.register.getKey())) { +// if (user != null) { +// //手机号注册过,发送错误码 +// return IfishUtil.returnJson(ResultEnum.warn201.getKey(), ""); +// } else { +// //手机未被注册,获取验证码 +// return sendSecurityCode(phoneNumber, SmsSignEnum.sign4.getValue(), SmsTemplateEnum.SMS_720018.getKey()); +// } +// } //找回密码 +// else if (sendType.equals(SendTypeEnum.findpwd.getKey())) { +// if (user != null) { +// //手机号存在,获取验证码 +// return sendSecurityCode(phoneNumber, SmsSignEnum.sign5.getValue(), SmsTemplateEnum.SMS_720021.getKey()); +// } else { +// //手机号不存在,发送错误码 +// return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); +// } +// } else { +// //未知操作,返回错误码 +// return IfishUtil.returnJson(ResultEnum.warn203.getKey(), ""); +// } +// } +// /** +// * 根据类型和邮件地址,发送验证码 +// * +// * @param sendType +// * @param phoneNumber +// * @return +// */ +// @Override +// public Object getSecurityCodeByEmail(String sendType, String Email) { +// Tbl_User user = getUserByEmail(Email); +// if (sendType.equals(SendTypeEnum.register.getKey())) { +// if (user != null) { +// //邮箱注册过,发送错误码 +// return IfishUtil.returnJson(ResultEnum.warn201.getKey(), ""); +// } else { +// //邮箱未被注册,获取验证码 +//// String code = Mail.sendRegisterCodeTest(Email); +//// if (StringUtils.isNotBlank(code)) { +//// return IfishUtil.returnJson(ResultEnum.success.getKey(),""); +//// } +// } +// } //找回密码 +// else if (sendType.equals(SendTypeEnum.findpwd.getKey())) { +// if (user != null) { +// //手机号存在,获取验证码 +// String code = Mail.sendRegisterCode(Email); +// return IfishUtil.returnJson(ResultEnum.success.getKey(), code.toString()); +// } else { +// //手机号不存在,发送错误码 +// return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); +// } +// } else { +// //未知操作,返回错误码 +// return IfishUtil.returnJson(ResultEnum.warn203.getKey(), ""); +// } +// return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); +// } /** * 根据用户ID从缓存中获取用户对象 * @@ -217,7 +306,9 @@ public class UserHelper implements UserHelperI { tmpUser = (Tbl_User) IfishUtil.JsonToBean(userString, Tbl_User.class); } else { tmpUser = tbl_User_Mapper.getUserByUserId(userId + ""); - saveUserToRedis(tmpUser); + if (tmpUser != null && tmpUser.getUserId() > 0) { + redisHelperI.setRedis(userKey, IfishUtil.ObjectToJson(tmpUser)); + } } return tmpUser; } @@ -231,7 +322,7 @@ public class UserHelper implements UserHelperI { public Object touristRegister() { Tbl_User user = new Tbl_User(); user.setUserType("0"); - int i = tbl_User_Mapper.insertUser(user); + int i = tbl_User_Mapper.insertUserByTourist(user); Map result = new HashMap(); if (i > 0 && user.getUserId() > 0) { //4.1未注册技威,则注册获取code1,code2 @@ -245,12 +336,6 @@ public class UserHelper implements UserHelperI { if (updateInteger <= 0) { return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); } - - try { - saveUserToRedis(user); - } catch (Exception e) { - } - result.put("userId", user.getUserId()); result.put("P2PVerifyCode1", user.getP2pverifyCode1()); result.put("P2PVerifyCode2", user.getP2pverifyCode2()); @@ -261,9 +346,96 @@ public class UserHelper implements UserHelperI { } } + @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; + } + + //有参数变更 + 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 phoneNumber * @param email * @return */ @@ -277,7 +449,9 @@ public class UserHelper implements UserHelperI { tmpUser = (Tbl_User) IfishUtil.JsonToBean(userString, Tbl_User.class); } else { tmpUser = tbl_User_Mapper.getUserByPhoneNumber(phoneNumber); - saveUserToRedis(tmpUser); + if (tmpUser != null && tmpUser.getUserId() > 0) { + redisHelperI.setRedis(userKey, IfishUtil.ObjectToJson(tmpUser)); + } } } catch (Exception e) { } @@ -300,7 +474,34 @@ public class UserHelper implements UserHelperI { tmpUser = (Tbl_User) IfishUtil.JsonToBean(userString, Tbl_User.class); } else { tmpUser = tbl_User_Mapper.getUserByUserEmail(email); - saveUserToRedis(tmpUser); + 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) { } @@ -346,7 +547,7 @@ public class UserHelper implements UserHelperI { if (updateInteger <= 0) { return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); } - saveUserToRedis(tmpUser); + redisKeyHelperI.deleteRedisByTbl_User(tmpUser); } //4.5 获取用户数据 @@ -393,7 +594,7 @@ public class UserHelper implements UserHelperI { if (updateInteger <= 0) { return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); } - saveUserToRedis(tmpUser); + redisKeyHelperI.deleteRedisByTbl_User(tmpUser); } //4.5 获取用户数据 @@ -631,16 +832,6 @@ public class UserHelper implements UserHelperI { return cameraMap; } - /** - * 将用户对象保存至redis缓存中,有效期1天 - * - * @param user - */ - private void saveUserToRedis(Tbl_User user) throws Exception { - String key = redisKeyHelperI.getTbl_UserRedisKeyByUserId(user.getUserId()); - redisHelperI.setRedis(key, IfishUtil.ObjectToJson(user)); - } - /** * 发送手机验证码 * @@ -659,4 +850,5 @@ public class UserHelper implements UserHelperI { return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); } } + } diff --git a/src/main/java/com/ifish/helper/UserHelperI.java b/src/main/java/com/ifish/helper/UserHelperI.java index ecd2c72..dd6947b 100644 --- a/src/main/java/com/ifish/helper/UserHelperI.java +++ b/src/main/java/com/ifish/helper/UserHelperI.java @@ -9,6 +9,7 @@ import com.ifish.bean.Tbl_Device; import com.ifish.bean.Tbl_Device_User; import com.ifish.bean.Tbl_User; import java.util.Map; +import org.springframework.web.multipart.MultipartFile; /** * @@ -51,15 +52,15 @@ public interface UserHelperI { public Map getDeviceInfo(Tbl_Device device, Tbl_Device_User deviceUser) throws Exception; /** - * 手机用户注册 + * 手机邮箱用户注册 * * @param user * @return */ - public Object registerByMobile(Tbl_User user); + public Object registerUserMobile(Tbl_User user); /** - * 邮箱用户注册 + * 邮箱用户发送注册链接 * * @param user * @return @@ -67,12 +68,44 @@ public interface UserHelperI { public Object registerByEmail(Tbl_User user); /** - * 根据类型和手机号,发送验证码 + * 添加邮箱用户 * - * @param sendType - * @param phoneNumber + * @param md5 * @return */ - public Object getSecurityCode(String sendType, String phoneNumber); + public String registerEmail(String md5); + +// /** +// * 根据类型和手机号,发送验证码 +// * +// * @param sendType +// * @param phoneNumber +// * @return +// */ +// public Object getSecurityCodeByPhoneNumber(String sendType, String phoneNumber); +// /** +// * 根据类型和邮件地址,发送验证码 +// * +// * @param sendType +// * @param phoneNumber +// * @return +// */ +// public Object getSecurityCodeByEmail(String sendType, String Email); + /** + * 修改用户属性 + * + * @param user + * @return + */ + public Object updateUser(Tbl_User user); + + /** + * 修改用户头像 + * + * @param file + * @param userId + * @return + */ + public Object updateUserImg(MultipartFile file, Integer userId, String path); } diff --git a/src/main/java/com/ifish/mapper/Tbl_Live_Room_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Live_Room_Mapper.java index 15854bc..440ff78 100644 --- a/src/main/java/com/ifish/mapper/Tbl_Live_Room_Mapper.java +++ b/src/main/java/com/ifish/mapper/Tbl_Live_Room_Mapper.java @@ -28,8 +28,8 @@ public interface Tbl_Live_Room_Mapper { /** * 建立一个直播间 */ - @Insert("INSERT INTO tbl_live_room (user_id,camera_id,room_name,room_desc,room_status,popularity_value,create_time,is_tuijian,tuijian_num,first_share,room_Img) VALUES(" - + "#{liveroom.userId},#{liveroom.cameraId},#{liveroom.roomName},#{liveroom.roomDesc},#{liveroom.roomStatus},#{liveroom.popularityValue},now(),#{liveroom.isTuijian},#{liveroom.tuijianNum},#{liveroom.firstShare},#{liveroom.roomImg})") + @Insert("INSERT INTO tbl_live_room (user_id,camera_id,room_name,room_desc,room_status,popularity_value,create_time,room_Img) VALUES(" + + "#{liveroom.userId},#{liveroom.cameraId},#{liveroom.roomName},#{liveroom.roomDesc},#{liveroom.roomStatus},#{liveroom.popularityValue},now(),#{liveroom.roomImg})") @SelectKey(statement = "select @@IDENTITY as room_id", keyProperty = "liveroom.roomId", keyColumn = "room_id", before = false, resultType = int.class) Integer insertLiveRoom(@Param("liveroom") Tbl_Live_Room liveRoom); @@ -43,15 +43,6 @@ public interface Tbl_Live_Room_Mapper { @SelectKey(statement = "select @@IDENTITY as message_id", keyProperty = "livemessage.messageId", keyColumn = "message_id", before = false, resultType = int.class) Integer insertLiveMessage(@Param("livemessage") Tbl_Live_Message live_Message); - /** - * 根据用户ID查询直播间(每个用户只有一个直播间) - * - * @param UserId - * @return - */ - @Select("SELECT room_id,user_id,camera_id,room_name,room_desc,room_status,popularity_value,is_tuijian,tuijian_num,first_share,room_Img,zanNum FROM TBL_LIVE_ROOM WHERE user_id = #{userid}") - Tbl_Live_Room getLive_RoomByUserId(@Param("userid") Integer UserId); - /** * 查询直播间总赞数 * @@ -97,7 +88,7 @@ public interface Tbl_Live_Room_Mapper { * @param roomid * @return */ - @Select("SELECT ROOM_ID,USER_ID,CAMERA_ID,ROOM_NAME,ROOM_DESC,ROOM_STATUS,POPULARITY_VALUE,CREATE_TIME,IS_TUIJIAN,TUIJIAN_NUM,FIRST_SHARE,room_Img,zanNum FROM TBL_LIVE_ROOM WHERE ROOM_ID = #{roomid}") + @Select("SELECT ROOM_ID,USER_ID,CAMERA_ID,ROOM_NAME,ROOM_DESC,ROOM_STATUS,POPULARITY_VALUE,CREATE_TIME,UPDATE_TIME,room_Img,zanNum FROM TBL_LIVE_ROOM WHERE ROOM_ID = #{roomid}") Tbl_Live_Room getTbl_Live_RoomById(@Param("roomid") Integer roomid); /** @@ -107,15 +98,18 @@ public interface Tbl_Live_Room_Mapper { * @param FirstResult * @return */ - @Select("select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,l.create_time AS createTime," - + "td.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,l.room_Img AS roomImg," - + "(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays,count(lm.message_id) AS pinglunNum,l.zanNum " - + "from tbl_user u " - + "LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " - + "LEFT JOIN tbl_device td ON c.device_id = td.device_id " - + "LEFT JOIN tbl_live_room l ON u.user_id=l.user_id " - + "LEFT JOIN tbl_live_message lm ON l.room_id = lm.room_id " - + "where td.is_camera = '1' ORDER BY l.create_time DESC LIMIT ${first},${pagesize}") + @Select(" select a.roomId,a.userId,a.userType,a.nickName,a.userImg,a.loginTime,a.createTime,a.cameraId,a.roomName,a.roomDesc,a.popularityValue,a.roomImg,a.numberDays,a.zanNum,count(*) as pinglunNum from (" + + " SELECT l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,l.create_time AS createTime," + + " td.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,l.room_Img AS roomImg," + + " (TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays,l.zanNum,b.message_id" + + " from tbl_user u" + + " LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " + + " LEFT JOIN tbl_device td ON c.device_id = td.device_id" + + " LEFT JOIN tbl_live_room l ON u.user_id=l.user_id and l.camera_id = td.camera_id" + + " LEFT JOIN tbl_live_message b ON l.room_id = b.room_id" + + " where c.is_live='1' AND l.room_status='1' ) as a" + + " GROUP BY a.roomId,a.userId,a.userType,a.nickName,a.userImg,a.loginTime,a.createTime,a.cameraId,a.roomName,a.roomDesc,a.popularityValue,a.roomImg,a.numberDays,a.zanNum" + + " ORDER BY a.createTime DESC LIMIT ${first},${pagesize}") List getLiveRoomListByCreateTime(@Param("pagesize") Integer pageSize, @Param("first") Integer FirstResult); /** @@ -125,15 +119,18 @@ public interface Tbl_Live_Room_Mapper { * @param FirstResult * @return */ - @Select("select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,l.create_time AS createTime," - + "td.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,l.room_Img AS roomImg," - + "(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays,count(lm.message_id) AS pinglunNum,l.zanNum " - + "from tbl_user u " - + "LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " - + "LEFT JOIN tbl_device td ON c.device_id = td.device_id " - + "LEFT JOIN tbl_live_room l ON u.user_id=l.user_id " - + "LEFT JOIN tbl_live_message lm ON l.room_id = lm.room_id " - + "where td.is_camera = '1' ORDER BY l.popularity_value DESC LIMIT ${first},${pagesize}") + @Select(" select a.roomId,a.userId,a.userType,a.nickName,a.userImg,a.loginTime,a.createTime,a.cameraId,a.roomName,a.roomDesc,a.popularityValue,a.roomImg,a.numberDays,a.zanNum,count(*) as pinglunNum from (" + + " SELECT l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,l.create_time AS createTime," + + " td.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,l.room_Img AS roomImg," + + " (TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays,l.zanNum,b.message_id" + + " from tbl_user u" + + " LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " + + " LEFT JOIN tbl_device td ON c.device_id = td.device_id" + + " LEFT JOIN tbl_live_room l ON u.user_id=l.user_id and l.camera_id = td.camera_id" + + " LEFT JOIN tbl_live_message b ON l.room_id = b.room_id" + + " where c.is_live='1' AND l.room_status='1' ) as a" + + " GROUP BY a.roomId,a.userId,a.userType,a.nickName,a.userImg,a.loginTime,a.createTime,a.cameraId,a.roomName,a.roomDesc,a.popularityValue,a.roomImg,a.numberDays,a.zanNum" + + " ORDER BY a.popularityValue DESC LIMIT ${first},${pagesize}") List getLiveRoomListByRenqi(@Param("pagesize") Integer pageSize, @Param("first") Integer FirstResult); /** @@ -141,11 +138,12 @@ public interface Tbl_Live_Room_Mapper { * * @return */ - @Select("select count(1) from tbl_user u " - + "LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " - + "LEFT JOIN tbl_device td ON c.device_id = td.device_id " - + "LEFT JOIN tbl_live_room l ON u.user_id=l.user_id " - + "where td.is_camera = '1'") + @Select("SELECT COUNT(1)" + + " from tbl_user u" + + " LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " + + " LEFT JOIN tbl_device td ON c.device_id = td.device_id" + + " LEFT JOIN tbl_live_room l ON u.user_id=l.user_id and l.camera_id = td.camera_id" + + " where c.is_live='1' AND l.room_status='1'") Integer getLiveRoomListCount(); /** diff --git a/src/main/java/com/ifish/mapper/Tbl_Live_Room_MapperSql.java b/src/main/java/com/ifish/mapper/Tbl_Live_Room_MapperSql.java index b09d80e..455eb3e 100644 --- a/src/main/java/com/ifish/mapper/Tbl_Live_Room_MapperSql.java +++ b/src/main/java/com/ifish/mapper/Tbl_Live_Room_MapperSql.java @@ -29,9 +29,6 @@ public class Tbl_Live_Room_MapperSql { if (StringUtils.isNotBlank(live_Room.getCameraId())) { sb.append("camera_id = #{live.cameraId}, "); } - if (live_Room.getFirstShare() != null && live_Room.getFirstShare() >= 0) { - sb.append("first_share = #{live.firstShare}, "); - } if (StringUtils.isNotBlank(live_Room.getRoomDesc())) { sb.append("room_desc = #{live.roomDesc}, "); } @@ -44,15 +41,9 @@ public class Tbl_Live_Room_MapperSql { if (StringUtils.isNotBlank(live_Room.getRoomStatus())) { sb.append("room_status = #{live.roomStatus}, "); } - if (live_Room.getIsTuijian() != null && live_Room.getIsTuijian() >= 0) { - sb.append("is_tuijian = #{live.isTuijian}, "); - } if (live_Room.getPopularityValue() != null && live_Room.getPopularityValue() >= 0) { sb.append("popularity_value = #{live.popularityValue}, "); } - if (live_Room.getTuijianNum() != null && live_Room.getTuijianNum() >= 0) { - sb.append("tuijian_num = #{live.tuijianNum}, "); - } if (live_Room.getZanNum() != null && live_Room.getZanNum() >= 0) { sb.append("zanNum = #{live.zanNum}, "); } diff --git a/src/main/java/com/ifish/mapper/Tbl_User_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_User_Mapper.java index 78c77b3..1fe3e63 100644 --- a/src/main/java/com/ifish/mapper/Tbl_User_Mapper.java +++ b/src/main/java/com/ifish/mapper/Tbl_User_Mapper.java @@ -6,6 +6,7 @@ package com.ifish.mapper; import com.ifish.bean.Tbl_User; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.InsertProvider; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -25,7 +26,7 @@ public interface Tbl_User_Mapper { * @return */ @Select("select user_id,nick_name,user_password,phone_number,user_email,user_type,user_img,user_sex,login_count,update_time,login_time,create_time,login_type,remarks,address,P2PVerify_code1,P2PVerify_code2," - + "gwell_userID,is_register_gwell,jiguang_userID,longitude,latitude from tbl_user where phone_number=#{phoneNumber}") + + "gwell_userID,is_register_gwell,jiguang_userID,token,longitude,latitude from tbl_user where phone_number=#{phoneNumber}") Tbl_User getUserByPhoneNumber(@Param("phoneNumber") String phoneNumber); /** @@ -35,9 +36,19 @@ public interface Tbl_User_Mapper { * @return */ @Select("select user_id,nick_name,user_password,phone_number,user_email,user_type,user_img,user_sex,login_count,update_time,login_time,create_time,login_type,remarks,address,P2PVerify_code1,P2PVerify_code2," - + "gwell_userID,is_register_gwell,jiguang_userID,longitude,latitude from tbl_user where user_email=#{user_email}") + + "gwell_userID,is_register_gwell,jiguang_userID,token,longitude,latitude from tbl_user where user_email=#{user_email}") Tbl_User getUserByUserEmail(@Param("user_email") String userEmail); + /** + * 根据用户token获取用户对象 + * + * @param userid + * @return + */ + @Select("select user_id,nick_name,user_password,phone_number,user_email,user_type,user_img,user_sex,login_count,update_time,login_time,create_time,login_type,remarks,address,P2PVerify_code1,P2PVerify_code2," + + "gwell_userID,is_register_gwell,jiguang_userID,token,longitude,latitude from tbl_user where token=#{token}") + Tbl_User getUserByUserToken(@Param("token") String token); + /** * 根据用户ID获取用户对象 * @@ -45,7 +56,7 @@ public interface Tbl_User_Mapper { * @return */ @Select("select user_id,nick_name,user_password,phone_number,user_email,user_type,user_img,user_sex,login_count,update_time,login_time,create_time,login_type,remarks,address,P2PVerify_code1,P2PVerify_code2," - + "gwell_userID,is_register_gwell,jiguang_userID,longitude,latitude from tbl_user where user_id=#{userid}") + + "gwell_userID,is_register_gwell,jiguang_userID,token,longitude,latitude from tbl_user where user_id=#{userid}") Tbl_User getUserByUserId(@Param("userid") String userid); /** @@ -68,12 +79,25 @@ public interface Tbl_User_Mapper { Integer updateUser(@Param("user") Tbl_User user); /** - * 注册用户 + * 游客注册用户 * * @param user * @return */ - @InsertProvider(type = Tbl_User_MapperSql.class, method = "registerUser") + @InsertProvider(type = Tbl_User_MapperSql.class, method = "registerUserByTourist") @SelectKey(statement = "select @@IDENTITY as user_id", keyProperty = "user.userId", keyColumn = "userId", before = false, resultType = int.class) - Integer insertUser(@Param("user") Tbl_User user); + Integer insertUserByTourist(@Param("user") Tbl_User user); + + /** + * 手机邮箱注册用户 + * + * @param user + * @return + */ + @Insert("INSERT INTO tbl_user (`nick_name`, `user_password`, `phone_number`, `user_email`, `user_type`, `user_img`, `user_sex`, `login_count`, `update_time`, `login_time`, `create_time`, `login_type`, `remarks`, `address`, `P2PVerify_code1`, `P2PVerify_code2`, `gwell_userID`, `is_register_gwell`, `jiguang_userID`,`token`, `longitude`, `latitude`) " + + "VALUES (#{user.nickName},#{user.userPassword},#{user.phoneNumber},#{user.userEmail},#{user.userType},#{user.userImg},#{user.userSex},#{user.loginCount},#{user.updateTime},#{user.loginTime}," + + "#{user.createTime},#{user.loginType},#{user.remarks},#{user.address},#{user.p2pverifyCode1},#{user.p2pverifyCode2},#{user.gwellUserid},#{user.isRegisterGwell},#{user.jiguangUserid}," + + "#{user.token},#{user.longitude},#{userlatitude})") + @SelectKey(statement = "select @@IDENTITY as user_id", keyProperty = "user.userId", keyColumn = "userId", before = false, resultType = int.class) + Integer insertUserByPhoneNumberAndEmail(@Param("user") Tbl_User user); } diff --git a/src/main/java/com/ifish/mapper/Tbl_User_MapperSql.java b/src/main/java/com/ifish/mapper/Tbl_User_MapperSql.java index a161bd1..a52af0c 100644 --- a/src/main/java/com/ifish/mapper/Tbl_User_MapperSql.java +++ b/src/main/java/com/ifish/mapper/Tbl_User_MapperSql.java @@ -85,10 +85,10 @@ public class Tbl_User_MapperSql { * @param user * @return */ - public String registerUser(@Param("user") Tbl_User user) { + public String registerUserByTourist(@Param("user") Tbl_User user) { StringBuilder sb = new StringBuilder(); - sb.append("INSERT tbl_user (user_type) value ('0')"); + sb.append("INSERT tbl_user (user_type,token) value ('0',#{user.token})"); return sb.toString(); } diff --git a/src/main/java/com/ifish/util/IfishUtil.java b/src/main/java/com/ifish/util/IfishUtil.java index 652a678..b515c0e 100644 --- a/src/main/java/com/ifish/util/IfishUtil.java +++ b/src/main/java/com/ifish/util/IfishUtil.java @@ -10,6 +10,8 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -21,6 +23,7 @@ import java.util.Map; import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang3.StringUtils; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.JavaType; import org.springframework.web.multipart.MultipartFile; @@ -309,6 +312,13 @@ public class IfishUtil { if (value.equals("")) { map.put("data", null); } else { + if (value.getClass().equals(HashMap.class)) { + Map map1 = (Map) value; + if (map1.get("total") != null && StringUtils.isNotBlank(map1.get("total").toString())) { + map.put("total", map1.get("total")); + map1.remove("total"); + } + } map.put("data", value); } return map; @@ -467,4 +477,18 @@ public class IfishUtil { String os = System.getProperty("os.name");//获取当前操作系统 return os.toLowerCase().startsWith("win"); } + + public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException { + + byte[] bs = MessageDigest.getInstance("MD5").digest(str.getBytes()); + StringBuilder sb = new StringBuilder(40); + for (byte x : bs) { + if ((x & 0xff) >> 4 == 0) { + sb.append("0").append(Integer.toHexString(x & 0xff)); + } else { + sb.append(Integer.toHexString(x & 0xff)); + } + } + return sb.toString(); + } } diff --git a/src/main/java/com/ifish/util/RedisKey.java b/src/main/java/com/ifish/util/RedisKey.java index 6b45329..0bc4124 100644 --- a/src/main/java/com/ifish/util/RedisKey.java +++ b/src/main/java/com/ifish/util/RedisKey.java @@ -25,6 +25,11 @@ public class RedisKey { */ public static final String USER_EMAIL = "userE:ema_"; + /** + * 用户缓存前缀,以token进行存储 + */ + public static final String USER_TOKEN = "userE:to_"; + /** * 设备用户关系缓存前缀,以设备ID和用户ID进行存储 */ @@ -104,4 +109,9 @@ public class RedisKey { * 推送信息表缓存前缀,以推送Id进行存储 */ public static final String PUSHLIST_PUSHID = "pushlistE:id_"; + + /** + * 邮箱验证有效缓存key + */ + public static final String EMAIL_REGIESTER = "emailkeyE:"; } diff --git a/src/main/webapp/WEB-INF/lib/activation-1.1.1.jar b/src/main/webapp/WEB-INF/lib/activation-1.1.1.jar new file mode 100644 index 0000000..1b703ab Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/activation-1.1.1.jar differ diff --git a/src/main/webapp/WEB-INF/lib/mail-1.4.1.jar b/src/main/webapp/WEB-INF/lib/mail-1.4.1.jar new file mode 100644 index 0000000..1d15e79 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/mail-1.4.1.jar differ diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 822712e..3475e87 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -9,9 +9,5 @@

访问正常!

-
- - -