From beca25818dfd922e885e433eb6f833a383c38614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=93=E7=84=B1?= Date: Sat, 14 Dec 2019 00:06:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E9=AA=8C=E8=AF=81,=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E5=8F=B7=E7=A0=81=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ifish/action/UsersAction.java | 15 +- src/main/java/com/ifish/dto/UserInfoDto.java | 14 ++ .../java/com/ifish/service/UserService.java | 17 +- .../ifish/serviceImpl/UserServiceImpl.java | 185 +++++++++++++++++- 4 files changed, 224 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/ifish/action/UsersAction.java b/src/main/java/com/ifish/action/UsersAction.java index ba8ce35..b8af318 100644 --- a/src/main/java/com/ifish/action/UsersAction.java +++ b/src/main/java/com/ifish/action/UsersAction.java @@ -93,12 +93,21 @@ public class UsersAction { * @param code * @return */ - @RequestMapping(value="/wechatLogin",method=RequestMethod.POST) + @RequestMapping(value="/wechatLogin",method=RequestMethod.GET) public JsonResult wechatLogin(String code) { - return userService.wechatLogin(code); } - + + /** + * 微信登录验证 + * @param unionId + * @return + */ + @RequestMapping(value="/wechatValidate",method=RequestMethod.GET) + public JsonResult wechatValidate(String unionId) { + return userService.wechatValidate(unionId); + } + /** * 更多用户数据 * @param userId diff --git a/src/main/java/com/ifish/dto/UserInfoDto.java b/src/main/java/com/ifish/dto/UserInfoDto.java index 2d7f13b..406ef96 100644 --- a/src/main/java/com/ifish/dto/UserInfoDto.java +++ b/src/main/java/com/ifish/dto/UserInfoDto.java @@ -12,6 +12,12 @@ public class UserInfoDto { * 用户ID */ private Integer userId; + + /** + * 微信unionID + */ + private String unionId; + /** * 手机号码 */ @@ -149,4 +155,12 @@ public class UserInfoDto { public void setSessionID2(String sessionID2) { this.sessionID2 = sessionID2; } + + public String getUnionId() { + return unionId; + } + + public void setUnionId(String unionId) { + this.unionId = unionId; + } } diff --git a/src/main/java/com/ifish/service/UserService.java b/src/main/java/com/ifish/service/UserService.java index b0129ac..c50406b 100644 --- a/src/main/java/com/ifish/service/UserService.java +++ b/src/main/java/com/ifish/service/UserService.java @@ -44,7 +44,22 @@ public interface UserService { * @return */ public JsonResult wechatLogin(String code); - + + /** + * 微信登录验证 + * @param unionId + * @return + */ + public JsonResult wechatValidate(String unionId); + + /** + * 手机号绑定 + * @param unionId + * @param phone + * @return + */ + public JsonResult bindPhone(String unionId, String phone); + /** * 更多用户数据信息 * @param userId diff --git a/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java b/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java index a47f17e..bc36660 100644 --- a/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java +++ b/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java @@ -13,6 +13,7 @@ import java.util.Random; import com.alibaba.fastjson.JSON; import com.ifish.entity.event.QueueEventBody; import com.ifish.entity.event.QueueEventEntity; +import com.ifish.util.StringUtil; import com.ifish.util.WeChatUtils; import org.apache.commons.lang3.StringUtils; import org.hibernate.criterion.Restrictions; @@ -329,13 +330,14 @@ public class UserServiceImpl implements UserService { public JsonResult wechatLogin(String code) { JSONObject wechatUserInfo = WeChatUtils.getWechatUserInfo(code); //微信授权失败 - if (wechatUserInfo == null || wechatUserInfo.size() == 0) { + if (wechatUserInfo == null || wechatUserInfo.size() == 2) { throw new IfishException(ResultEnum.error403); } //用户信息 User user = userDao.findUniqueByProperty(Restrictions.eq("wechatUnionid",wechatUserInfo.getString("unionid"))); if (user == null) { user = new User(); + user.setWechatUnionid(wechatUserInfo.getString("unionid")); user.setPhoneType("wechat"); user.setLoginType("wechat"); user.setIsRegisterGwell(BooleanEnum.NO.getKey()); @@ -379,7 +381,7 @@ public class UserServiceImpl implements UserService { pushList.setPushType(PushTypeEnum.qu_reply.getKey()); pushList.setPushTitle("系统通知"); pushList.setPushContext(msg.toString()); - sendPushQueueMessage(pushList); +// sendPushQueueMessage(pushList); //更新用户注册信息 user.setIsRegisterNetease(BooleanEnum.YES.getKey()); userDao.update(user); @@ -387,16 +389,192 @@ public class UserServiceImpl implements UserService { //更新登陆参数 userDao.executeLoginUpdate(userId,user.getLoginType()); //用户基本信息 - UserInfoDto userInfoDto =getUserInfoDto(user, gwellParam); + UserInfoDto userInfoDto = getUserInfoDto(user, gwellParam); //用户资产信息 UserAssetDto userAssetDto = getUserAssetInfo(userId); //返回json信息 JSONObject json = new JSONObject(); json.put("userInfo", userInfoDto); json.put("userAsset", userAssetDto); + //设备信息 + DeviceInfoDto deviceInfo = getDeviceInfo(user.getUserId()); + /** + * 登录返回信息 + */ + //用户信息 + json.put("user", getUserInfo(user,gwellParam)); + //用户资产 + json.put("userAsset", getUserAssetInfo(userId)); + //金币任务 + json.put("goldTasks", getGoldTaskList(userId)); + + //资讯信息 + json.put("information", cacheService.getInformation()); + //设备信息 + json.put("device", deviceInfo.getDeviceList()); + //摄像头信息 + json.put("camera", getCameraInfo(userId)); + //设备关联摄像头信息 + json.put("deviceCamera", getDeviceCamera(deviceInfo.getDeviceIds())); + //商家信息(自己是商家) + json.put("shopsInfo", getShopsInfo(userId,user.getUserImg())); + //看护商家信息 + json.put("shopsInfo2", getShopsInfo(user.getShopsUserId(),null)); return new JsonResult(ResultEnum.success.getKey(), json); } + @Override + public JsonResult wechatValidate(String unionId) { + if (unionId == null || unionId.length() == 0) { + throw new IfishException(ResultEnum.error401); + } + //用户信息 + User user = userDao.findUniqueByProperty(Restrictions.eq("wechatUnionid",unionId)); + if (user == null) { + throw new IfishException(ResultEnum.fail101); + } + //技威参数 + GwellParamDto gwellParam = getGwellInfo(user.getIsRegisterGwell(), user.getWechatUnionid()); + if(gwellParam!=null){ + user.setIsRegisterGwell(gwellParam.getIsRegisterGwell()); + user.setP2PVerifyCode1(gwellParam.getP2PVerifyCode1()); + user.setP2PVerifyCode2(gwellParam.getP2PVerifyCode2()); + user.setGwellUserID(gwellParam.getUserID()); + } + Integer userId = user.getUserId(); + StringBuffer msg = new StringBuffer(); + msg.append("感谢您使用爱鱼奇,连接智能设备请查看下方说明书,内含操作视频:http://u.eqxiu.com/s/KmmVl87l\n"); + msg.append("摄像头售后:18667812003\n睿芯插排售后:15757401229\n绚多插排售后:18857689069\n松诺插排售后:13392205468"); + //如果当前设备用户未注册 + if (user.getIsRegisterNetease().equals(BooleanEnum.NO.getKey())) { + PushList pushList = new PushList(); + pushList.setUserId(userId); + pushList.setDeviceId(0); + pushList.setPhoneType("ALL"); + pushList.setShowName(""); + pushList.setPushType(PushTypeEnum.qu_reply.getKey()); + pushList.setPushTitle("系统通知"); + pushList.setPushContext(msg.toString()); +// sendPushQueueMessage(pushList); + //更新用户注册信息 + user.setIsRegisterNetease(BooleanEnum.YES.getKey()); + userDao.update(user); + } + //更新登陆参数 + userDao.executeLoginUpdate(userId,user.getLoginType()); + //用户基本信息 + UserInfoDto userInfoDto = getUserInfoDto(user, gwellParam); + //用户资产信息 + UserAssetDto userAssetDto = getUserAssetInfo(userId); + //返回json信息 + JSONObject json = new JSONObject(); + json.put("userInfo", userInfoDto); + json.put("userAsset", userAssetDto); + //设备信息 + DeviceInfoDto deviceInfo = getDeviceInfo(user.getUserId()); + /** + * 登录返回信息 + */ + //用户信息 + json.put("user", getUserInfo(user,gwellParam)); + //用户资产 + json.put("userAsset", getUserAssetInfo(userId)); + //金币任务 + json.put("goldTasks", getGoldTaskList(userId)); + + //资讯信息 + json.put("information", cacheService.getInformation()); + //设备信息 + json.put("device", deviceInfo.getDeviceList()); + //摄像头信息 + json.put("camera", getCameraInfo(userId)); + //设备关联摄像头信息 + json.put("deviceCamera", getDeviceCamera(deviceInfo.getDeviceIds())); + //商家信息(自己是商家) + json.put("shopsInfo", getShopsInfo(userId,user.getUserImg())); + //看护商家信息 + json.put("shopsInfo2", getShopsInfo(user.getShopsUserId(),null)); + return new JsonResult(ResultEnum.success.getKey(), json); + } + + @Override + public JsonResult bindPhone(String unionId, String phone) { + if (unionId == null || phone == null) { + throw new IfishException(ResultEnum.error401); + } + //用户信息 + User userWechat = userDao.findUniqueByProperty(Restrictions.eq("wechatUnionid",unionId)); + if (userWechat == null) { + throw new IfishException(ResultEnum.fail101); + } + User userPhone = userDao.findUniqueByProperty(Restrictions.eq("phoneNumber",unionId)); + if (userPhone == null) { + throw new IfishException(ResultEnum.fail101); + } + List deviceUserListWechat = deviceUserDao.findByProperty(Restrictions.eq("priId.userId", userWechat.getUserId())); + List deviceUserListPhone = deviceUserDao.findByProperty(Restrictions.eq("priId.userId", userPhone.getUserId())); + for(DeviceUser deviceUser:deviceUserListWechat){ + for (DeviceUser devicePhone : deviceUserListPhone) { + //如果 手机账号中存在设备 + if (devicePhone.getPriId().getDeviceId().intValue() == deviceUser.getPriId().getDeviceId().intValue()) { + //当前账号是主控制账号 + if (devicePhone.getIsMaster().equals("1")) { + //删除 微信账号下的设备 + deviceUserDao.delete(deviceUser); + } else { + //修改 手机号账号下的设备为主控设备 + devicePhone.setIsMaster("1"); + deviceUserDao.update(devicePhone); + } + } else { + // 微信账号下绑定的userid改为手机号的userid + DeviceUserId priId = deviceUser.getPriId(); + priId.setUserId(userPhone.getUserId()); + deviceUserDao.update(deviceUser); + } + } + //如果 手机号码账号下不存在设备 则修改微信账号下的设备关联为手机号的userid + if (deviceUserListPhone.size() == 0) { + DeviceUserId priId = deviceUser.getPriId(); + priId.setUserId(userPhone.getUserId()); + deviceUserDao.update(deviceUser); + } + + } + //修改手机账号的微信unionid + userPhone.setWechatUnionid(userWechat.getWechatUnionid()); + userDao.update(userPhone); + + //用户资产信息 + UserAssetDto userAssetDtoWechat = getUserAssetInfo(userWechat.getUserId()); + UserAssetDto userAssetDtoPhone = getUserAssetInfo(userPhone.getUserId()); + //设置经验值 + userAssetDtoPhone.setGoldValue(new BigDecimal(userAssetDtoWechat.getGoldValue().intValue() + userAssetDtoPhone.getGoldValue().intValue())); + if (userAssetDtoPhone.getGoldValue().intValue() <= 0 && userAssetDtoPhone.getGoldValue().intValue() < 7) { + userAssetDtoPhone.setGradeNum(0); + userAssetDtoPhone.setGradeName("小虾米"); + } else if (userAssetDtoPhone.getGoldValue().intValue() <= 7 && userAssetDtoPhone.getGoldValue().intValue() < 70) { + userAssetDtoPhone.setGradeNum(0); + userAssetDtoPhone.setGradeName("小飞鱼"); + } else if (userAssetDtoPhone.getGoldValue().intValue() <= 70 && userAssetDtoPhone.getGoldValue().intValue() < 170) { + userAssetDtoPhone.setGradeNum(1); + userAssetDtoPhone.setGradeName("横行蟹"); + } else if (userAssetDtoPhone.getGoldValue().intValue() <= 170 && userAssetDtoPhone.getGoldValue().intValue() < 370) { + userAssetDtoPhone.setGradeNum(2); + userAssetDtoPhone.setGradeName("海夜叉"); + } else if (userAssetDtoPhone.getGoldValue().intValue() <= 370 && userAssetDtoPhone.getGoldValue().intValue() < 670) { + userAssetDtoPhone.setGradeNum(3); + userAssetDtoPhone.setGradeName("龟丞相"); + } else if (userAssetDtoPhone.getGoldValue().intValue() <= 670 && userAssetDtoPhone.getGoldValue().intValue() < 1070) { + userAssetDtoPhone.setGradeNum(5); + userAssetDtoPhone.setGradeName("小白龙"); + } else if (userAssetDtoPhone.getGoldValue().intValue() <= 1070 && userAssetDtoPhone.getGoldValue().intValue() < 1570) { + userAssetDtoPhone.setGradeNum(7); + userAssetDtoPhone.setGradeName("海龙王"); + } + return wechatValidate(unionId); + } + /** * 更多用户数据信息 */ @@ -1079,6 +1257,7 @@ public class UserServiceImpl implements UserService { dto.setNeteaseToken(user.getNeteaseToken()); dto.setUserType(user.getUserType()); dto.setShopsUserId(user.getShopsUserId()); + dto.setUnionId(user.getWechatUnionid()); return dto; } /**